ISO 80000-2(JISだとZ 8201 ??)では値が一般に与えられる定数の記号は立体(ローマン体)でタイプセットするように定められているそうです(あまり守られてない気がしますが…)。数学定数の超有名所といえば自然対数の底$\mathrm{e}$と円周率$\large\unicode[0.5,0.05][times]{x3c0}$でしょう。私でも知っています。
記号がデフォルトで斜体表示される(ギリシャ大文字は例外で、立体)$\def\uptex{\mathrm{\TeX}}\def\uplatex{\mathrm{\LaTeX}} \uptex$記法の場合、どうすればこの国際標準に準拠できるでしょうか。$\mathrm{e}$の方は簡単です。お馴染みの憎っくきmathrm{}
ですね。
$e \mathrm{e}$
結果
$e , \mathrm{e}$
では$\large\unicode{x3c0}$はどうでしょうか。
$\pi \mathrm{\pi}$
結果
$\pi , \mathrm{\pi}$
はい。やったことがある人も多いと思いますが、普通mathrm{}
ではギリシャ小文字は立体になってくれません。$\uplatex$の場合は外部パッケージを利用して立体化させます。いくつか方法がありますが、その一つはupgreekです。プリアンブルで\usepackage{upgreek}
した後、数式で\upalpha
、\upbeta
…のように書くと立体(upright)のギリシャ小文字を入力できます。
%~~
\usepackage{upgreek}
%~~
\begin{equation}
\pi \uppi
\end{equation}
フォントにもよりますが、$\large\unicode{x3c0}$は両者の違いがわかりづらいので、せっかく立体にしてもそのことに気づいてもらえないかもしれません。
MathJaxで立体ギリシャ小文字を表示する
何も考えず書いていたら前置きのほうが長くなってしまいました。ここから本題です。QiitaやTyporaでは$\uptex$記法の数式を表示するのにMathJaxというJavaScriptライブラリを使用しています。残念ながら現在MathJaxにはギリシャ文字を立体化するコマンドや拡張機能はありません。更にいうと、デフォルトフォント(MathJax TeX)には立体のギリシャ小文字がそもそも存在しません1 2。
そこで、MathJaxが対応している拡張機能の一つである\unicode[height,depth][font]{charref}
で直接文字を指定する方法を利用します。フォントを閲覧者任せにしてしまおうという荒裏技です。オプションはページ内で一度指定すれば以降\unicode{}
コマンドを呼び出すときには省略できます。最初からオプションなしにすると、高さは8 em、深さ2 emになります。フォントはtimes
にしておけばそれっぽい感じになりますし、大抵のPCにはインストールされているでしょう。times系フォントがない環境ではブラウザのデフォルトフォントで表示されることになります。
ˋˋˋmath
\mathrm{e}^{\mathrm{i} \large\unicode[0.5,0.05][times]{x3c0}} = -1
ˋˋˋ
結果
\mathrm{e}^{\mathrm{i} \large\unicode{x3c0}} = -1
ちょっと一言
BoostnoteやStackEditで採用されているKaTeXではこのような方法は使えません。似た?コマンドである\u
は数式モードでは使用不可なようです。
結論
MathJaxで変にこだわろうとするのは面倒で実用的ではなく、なおかつフォント警察の魔の手からも逃れられない。