Scribble at 2022-11-14 13:00:04 Last modified: 2022-11-17 00:14:27

いま当サイトでは数式を表示するのに KaTeX を導入しているのだけれど、数週間ほど使ってみた感想としては、どうも挙動に信頼性がなくて不愉快だ。ここ数日間は組合せ論の2ページ目を書いているのだが、同じページで場所ごとに "$ i $ ... $ i $" というインラインのマクロが変換されたり無視されたりする。僕はセパレータの定義を書き換えて "$ i $ ... $ i $"(敢えて文字を分割してマクロとして扱われないように書いていることに注意)をインライン用、"$ d $ ... $ d $" をディスプレイ用(つまり改行して単独の式として表示するモード)に定義しなおしているのだが、これも理由はディフォールトの「$$」が機能しなかったからなのだ。インライン用として定義しているのに、どうしても改行してしまう。(念のため書いておくが、僕はちゃんとドキュメントは読んでカスタマイズしているので、$ と $$ の定義の順番が重要だというポイントはわきまえている。そんな凡ミスで起きているトラブルではない。)

ちなみに「$」は定義からわざと外している。ディフォールトでただのドルマークをインライン用のセパレータとして定義しているのが気に入らないからだ。そんなことしたら「$20」という金額の表示はどうなるのか。終端のセパレータがない状態で、「$20」以降は全て数式として処理されるのか。シンタクスの仕様として、あまりにもバカげてる。マクロの定義が優先で、ごくありふれた金額表示の表記をエスケープしないといけないなんて、たかが表示ライブラリの分際で本文に対して失礼だろう。

ということで、いまセパレータの定義をやりなおすかどうか検討しているのだが、もちろんこれにもリスクがある。いまはいい。まだ KaTeX を使ってマクロを書いているページが1つや2つだからだ。でも、これが何十ページも書いた後だと、ソース・コードも全てセパレータを置換しなくてはならなくなる。でも、ドルマークなんてもともと違う用途で使われている記号なのだから、単純に全文置換すると危険であることは明白だ。よって、バカみたいな手作業がかかる。どうしてライブラリの定義一つのために、人間様が無駄な工数を使わなくてはいけないのか。まったく、こんな作業は人類の叡智を進展させるために 0.00000001mm の役にも立たない徒労や愚行であろう。

ということで、やはりこの手の数式表示のライブラリをウェブ・ページに導入するのは止めた方がいいんじゃないかという気がする。画像で数式やテキストを表示するというのは編集に手間がかかるのは確かだが、現在は SVG で出力すればページの拡大・縮小にも対応できる。別に動的に数式を書き換える必要なんて当サイトにはないのだし、いったん決まれば SVG のデータとして固定すればいい。

この場合に問題があるのは、やはりページのファイル・サイズ合計が肥大化することである。たとえば、"x * y" なんて単純な表現を SVG ファイルとして出力するだけでも3キロバイトていどを使う。SVG はトークン(出現事例)ごとにコードを記入しなくてはいけないから、「~を a とすると、a は~」のような文章で出現する「a」は、どちらも同じコードを記入することとなり、記号を気軽に使うと急速にページのファイル・サイズが肥大化してゆく。しかし、だからといって日本語の代名詞で可能な限りカバーするといった人為的で不自然な技巧を駆使するのも、第一に煩わしいし、第二に不自然な文体を強要される不愉快さが残る。ファイル・サイズなんていう本質とは関係のない事情のせいで、文章を代名詞だらけの不自然な文体で書かなくてはいけないなどと、ばかばかしいにもほどがある。

ということで、ひとまず変則的な表記になるが、現状ではちゃんと動作しているセパレータに変更している。ディスプレイ・モードが「$」を二つ並べる。そして、インライン・モードは「(」と「)」を直に並べる記法とした。「( )」なんて(わざとスペースを入れている)、ねらーでもなければ使わない表現だろう。

  1. もっと新しいノート <<
  2. >> もっと古いノート

冒頭に戻る


※ 以下の SNS 共有ボタンは JavaScript を使っておらず、ボタンを押すまでは SNS サイトと全く通信しません。

Twitter Facebook