ちょこっと MathJax 番外編: mathcomp パッケージの代替え

no extension

今回は横道に外れて小ネタでいきます。

  1. ちょこっと MathJax: 初期設定
  2. ちょこっと MathJax: 基本的な数式表現
  3. ちょこっと MathJax: インライン数式と別行立て数式
  4. ちょこっと MathJax 番外編: mathcomp パッケージの代替え ← イマココ
  5. ちょこっと MathJax 番外編: V4 へのアップグレード

たとえば

直角は ±90°。

をインライン数式で書くことを考える。

昔の $\mathrm{\LaTeX}$ は「°」に相当する記号がなく, 90^{\circ} などと表記していた。 すなわち

直角は $\pm90^{\circ}$。

と書いて

直角は $\pm90^{\circ}$。

と表示させていたわけだ。 しかし \circ ($\circ$) は角度を表す記号ではなく $+$ や $-$ と同じ2項演算子の記号である。 そこで今は mathcomp パッケージの \tcdegree コマンドを使って

直角は $\pm90\tcdegree$。

とするのが正しいそうだ1

ところが MathJax では \tcdegree コマンドを持っていないようで,上の記述ではエラーになる。 MathJax機能拡張でもそれらしいものは見当たらず,誰かが公開してるってわけでもないっぽい。

みんなどうやってるんだ?

ググってみたら「Unicode の「°」文字を使うか \unicode{xb0} で指定しろ」という身も蓋もない回答が見つかった。 どうもそれしかないらしい… sigh

そこで $\mathrm{\LaTeX}$ との互換性を保つため

MathJax = {
  tex: {
    macros: {
      tcdegree: ['\\unicode{xb0}']
    }
  }
};

という感じでマクロを組んでみた。 これで,以下のように表示可能になる。

直角は $\pm90\tcdegree$。

mathcomp パッケージで使える記号はかなりあるのだが,私がよく使いそうなもののみ以下に挙げる。

Macros $\mathrm{\LaTeX}$ Format Output
tcdegree: ['\\unicode{xb0}'] $35\tcdegree$ $35\tcdegree$
tccelsius: ['\\unicode{x2103}'] $35\,\tccelsius$ $35\,\tccelsius$
tcperthousand: ['\\unicode{x2030}'] $35\,\tcperthousand$ $35\,\tcperthousand$
tcmu: ['\\unicode{x3bc}'] $35\,\tcmu\mathrm{s}$ $35\,\tcmu\mathrm{s}$
tcohm: ['\\unicode{x3a9}'] $35\,\tcohm$ $35\,\tcohm$
  • \tccelsius\tcdegree\mathrm{C} でもいける($35\,\tcdegree\mathrm{C}$ → $35\,\tcdegree\mathrm{C}$)。これなら華氏にも応用できる($35\,\tcdegree\mathrm{F}$ → $35\,\tcdegree\mathrm{F}$)
  • \tcmu\symup{\mu} みたいにしたいのだが \symup コマンドに相当するものが MathJax にないっぽい
  • \tcohm\Omega と等価,というかフォントのバランスを考えると \Omega を使ったほうがいいと思う($35\,\Omega$ → $35\,\Omega$)

【2025-09-01 追記】 textcomp パッケージを使う

MathJax では mathcomp の代わりに textcomp パッケージが使えるらしい。 コマンド名は mathcomp とは異なるので注意。

$\mathrm{\LaTeX}$ Format Output
$35\textdegree$ $35\textdegree$
$35\,\textcelsius$ $35\,\textcelsius$
$35\,\textperthousand$ $35\,\textperthousand$
$35\,\textmu\mathrm{s}$ $35\,\textmu\mathrm{s}$
$35\,\textohm$ $35\,\textohm$

MathJaxtextcomp を有効にするには,以下のように設定する。

<script>
MathJax = {
  loader: {load: ['[tex]/textcomp']},
  tex: {packages: {'[+]': ['textcomp']}},
  ...
};
</script>

textcompMathJax の数式モードで使える。 テキストモード(\text{ ... })で使う場合は textmacros と組み合わせて使う。

<script>
MathJax = {
  loader: {load: ['[tex]/textcomp', '[tex]/textmacros']},
  tex: {packages: {'[+]': ['textcomp', 'textmacros']}},
  ...
};
</script>

textcomp で使えるシンボルは以下が参考になるだろう。

ブックマーク

参考図書

photo
[改訂第9版]LaTeX美文書作成入門
奥村 晴彦 (著), 黒木 裕介 (著)
技術評論社 2023-12-09 (Release 2023-12-09)
単行本(ソフトカバー)
4297138891 (ASIN), 9784297138899 (EAN), 4297138891 (ISBN)
評価     

2023年末に出てるのに気が付かなかった orz 今回は版元で PDF 版を買った。

reviewed by Spiegel on 2024-04-07 (powered by PA-APIv5)


  1. 他の方法としては siunitx パッケージを使って \ang{90} のように記述する手がある。 MathJax 公式では siunitx をサポートしていないが,サードパーティ製のものがあるらしい。 units パッケージであれば MathJax 公式もサポートしている。 ↩︎