katex のキーワードハイライト ($~$) を変更する

  • 私はかなり前から tex を、katex を使用して xyzzy で書いています。katex-mode のデフォルトの設定だと、$ と $ で囲まれた範囲の文字列は xyzzy の「キーワード 2」 に設定されている色で表示されることになりますね。これは便利な面もあるのですが、その範囲ではタイプミスをしても分からない、ということがあります。katex では、tex のキーワードがまた別の色で表示されることになっているので、タイプミスをするとその色にならず、タイプミスをしたということが分かることが多いのですが、$$ の範囲ではキーワード 2 の色になってしまうので、タイプミスをしても分からないのです。
  • そこで、私は最近、$$ の範囲の文字列全てをキーワード 2 の色にするのではなく、$ と $ だけをその色にするようにしました。そのように設定する為にどのように書いたかを、以下で紹介します。
  • 私はなにも、lisp がちゃんと分かっているわけではないので、ちゃんと説明することは出来ませんが、自分の .xyzzy ファイルに次のように書けばよいようです。
;;;katex の sample.tex を見て記述。$$ で囲まれた箇所を色づけするのを停止し、代わりに $ だけを色づけすることにする。
; ■ KaTeX
; *load-path* に追加 (.xyzzyに必須)
(push (merge-pathnames "site-lisp/katex" (si:system-root)) *load-path*)
;;; 以下は、siteinit.lでも可
;;;  siteinit.lへ書くときは、↑をsiteinit.lにも書くこと
; パッケージを有効にする
(require "elisp")
(setq elisp::*KaTeX-math-formats*
      (compile-regexp-keyword-list
       '(("\\$" t (:keyword 1 :underline ) nil)))) ; 正規表現での色付け
; [色表示の指定]の部分は、xyzzyのChangeLog.htmlの
;    Mon Jul 02 2001 Version 0.2.2.202
; 付近をみる
  • これは、katex のファイル群の中にあった sample.xyzzy を凝視して、あー、ここを書き写して直せばいいのかーってことでコピペして、ちょちょっと変更を施した記述です。だから、文中のコメントを書いているのは私ではなくて、katex の作者の方です。(ああ、一行目は私ですけど。)
  • 私は $ の文字だけに色を付けるようにしましたが、別の文字に色を付けたい人も居るでしょうし、また、キーワード 2 でない色にしたい人も居ると思うので、ちょっと書いておきますと、$ の文字だけに色を付けるように指定している箇所は、次ですね。
"\\$"
    • これは、いわゆる正規表現という奴ですね。なんか、言語毎に正規表現の定義が異なるようですのでアレですが、まあ私は ruby正規表現を割りとまともに理解しようとしたことがあったのでなんとか分かりました。xyzzy正規表現は、lisp正規表現に似ているが、ちょっと違うらしいですよ。《山本泰三、日江政弘、稲原知久、佐野匡俊『入門xyzzyisbn:4274066002》 をよく読むと分かるような予感がしますが、興味がある人は調べてみて下さい。私は、まあ今使いたいように使えているのでいいということにしておきます。ちなみに、私は本当はなんでこの記述で $ だけがマッチするのかよう分かりません。すまへん。
  • 表示の色を指定しているのは次の箇所ですね。keyword 1 と書いてありますが、これでキーワード 2 の色になります。自然数は 0 から始まるからね。katex の作者の方も書いていらっしゃいますが、xyzzy 自体の change log を凝視することで、どのように書き直せばどのような色づけになるかが分かることになります。
:keyword 1
  • それにしても xyzzytex を書いている人って、どれくらい居るのかな。まあええですけど。