マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

チョット数式フォントしてみる話(1)

……だがしかし、人間は必ずしも幸せを求めるものとは限らないのかも知れない。

なので、LaTeX の数式フォントの設定について、チョット、チョット解説することにする。

無慈悲な大前提

LaTeX(NFSS)における数式でないフォントの管理については、とってもよく解っているものとする。

あと、(当然ではあるが)TeX 言語の初歩を知っていることを仮定する。*1

注意事項

以降で述べる数式フォントの説明は、8 ビット欧文 LaTeXlatex、pdflatex)を前提にしたものである。ただし、pLaTeX 系のエンジン(platex、uplatex)についても同じ説明がほぼ成り立つ。*2

チョット解説

変わりゆくもの、変わらないもの

LaTeX で数式のフォントを変えるには \mathrm\mathsf といった命令を使う、ということは誰でも知っている。取りあえず、次の数式について、フォントを変えた結果を見てみよう。

数式フォントの命令は、 \mathrm{k}=\mathbf{0} のように、文字(あるいは記号や識別子)ごとに指定するのが常識であるが、ここでは敢えて非常識に

\[ \mathrm{
  4\times\sum_{n=0}^{\infty}\frac{(-1)^n}{2n+1}
  = 2\times\prod_{k=1}^{\infty}\frac{4k^2}{4k^2-1}
  = \pi
} \]

のように数式全体をフォント命令の引数に入れることにする。

結果は以下のようになる。

\mathrm を使った場合]
\mathit を使った場合]
\mathtt を使った場合]

この結果を見て判るように、数式の中には、フォントの変更が適用される文字と適用されない文字がある。具体的には、〈4〉や〈n〉のような英数字のフォントは変わるが、それ以外の〈π〉(\pi)や〈×〉(\times)や〈+〉や〈∞〉(\infty)や〈∑〉(\sum)や括弧などの記号は変わっていない。

変わりゆくものの話

\mathrm\mathbf 等の数式フォントコマンドにより適用されるフォントのことを、「数式英字フォント」(math alphabet font)と呼ぶ。さっき見たように、数式英字フォントが適用される文字(これを「数式英字」(math alphabet)と呼ぶことにする)は以下のものに限定されている。*3

  • 英字(ラテン文字)の大文字(A〜Z)・小文字(a〜z)
  • 算用数字(0〜9)
  • ギリシャ文字の大文字(\Gamma\Delta\Theta、……;小文字は含まれない)
  • 数式アクセント記号(\hat\tilde\dot、……)

LaTeX のデフォルトの設定における数式英字フォントを幾つか見てみよう。

[数式英字フォント \mathrm: OT1/cmr/m/n]
[数式英字フォント \mathit: OT1/cmr/m/it]
[数式英字フォント \mathtt: OT1/cmtt/m/n]

「フォントを変える」という仕組みが正しく働くためには、先に挙げた「数式英字」の各々の符号位置が各数式英字フォントで一致している必要があることに注意されたい。従って、普通は、数式英字フォントとしては OT1 エンコーディングのフォント(シェープ)が用いられる。

変わらないものの話

これに対して、「数式英字」以外の文字、例えば〈π〉や〈∑〉等に対するフォントを「数式記号フォント」(math symbol font)と呼ぶ。これらの文字のフォントは(単一の数式の中では)“変わらない”のであるが、実はそれにも関わらず、数式記号フォントも複数存在する。何故かというと、文字によって使うフォントを変えることができるからである。

[数式記号フォント “operators”: OT1/cmr/m/n]
[数式記号フォント “letters”: OML/cmm/m/it]
[数式記号フォント “symbols”: OMS/cmsy/m/n]
[数式記号フォント “largesymbols”: OMX/cmex/m/n]
  • 〈π〉(\pi)は“letters”フォントの符号位置 "19 にある。
  • 〈×〉(\times)は“symbols”フォントの符号位置 "02 にある。
  • 〈+〉は“operators”フォントの符号位置 "2B にある。
  • 〈∞〉(\infty)は“symbols”フォントの符号位置 "31 にある。
  • 〈∑〉(\sum)は“largesymbols”フォントの符号位置 "50 にある。((冒頭の例の数式は別行立て数式なので〈∑〉に対して“大きな字形”が使われていて、その字形は符号位置 "58 にある。しかし TeX 言語のレベルでは \sum は常に位置 "50 の文字を出力しているのであり、これが“"58 に置き換わる”というのは TeX のより内部の数式組版処理が関わっているためである。))

この機構があるため、1 つのフォントには高々 256 種類の文字しか収められないにも関わらず、1 つの数式でそれを超える種類の文字(記号)を同時に扱うことが可能になっている。

なお、ここの例から判るように、数式記号フォントには“operators”や“symbols”のような名前が付けられていて、その名前により互いを区別する。数式英字フォントが \mathrm\mathit のような命令により区別されるのとは対照的である。

チョットまとめ

LaTeX の数式フォントには次の 2 種類がある。

  • 数式英字フォント:“変わりゆくもの”
  • 数式記号フォント:“変わらないもの”

*1:実際には、(LaTeX 外の)TeX 言語についての必要な知識の量は極めて少ないのだが、かといってゼロでもない。

*2:XeLaTeX、LuaLaTeX については……わしゃ知らん。

*3:ただし、このセットは設定により変更が可能である。詳しくは後で説明する(予定)。