マクロツイーター

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

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

前回の続き)

以降では、とっても有益な実例に即して、LaTeX の数式フォントの設定について説明する。

数式をアホにする話

TeX システムでは、かの有名な“アホなフォント”(Computer Modern Funny Italic)が既定でインストールされている。

折角 LaTeX を使っているのだから、この“アホなフォント”で数式を組みたいというのは当然の要求であろう。そこで、この CM Funny Italic を数式英字フォント“\mathaho”として登録してみよう。

数式英字フォントを新たに登録することは比較的容易であり、次の命令を用いればよい。

  • \DeclareMathAlphabet{\命令}{<エンコーディング>}{<ファミリ>}{<シリーズ>}{<シェープ>} : 後ろの 4 つの引数で示されるフォントシェープを新たに数式英字フォントとして登録し、それを使用するための数式フォント命令を定義する。

ここから判るように、あるフォントを LaTeX の数式英字フォントとして登録するためには、その前提として、そのフォントが NFSS のフォントシェープとして認識されている(つまり“非数式のフォントとして LaTeX で利用できる”状態である)必要がある。

幸い、CM Funny Italic は LaTeX の標準のフォントの一部であるので NFSS への登録が既に済んでいて、OT1/cmfr/m/it というシェープ指定で利用できるようになっている。従って話は簡単である。

% 数式英字フォント \mathaho を登録する
\DeclareMathAlphabet{\mathaho}{OT1}{cmfr}{m}{it}

ただし、ここで CM Funny Italic 特有の問題について注意する必要がある。例のナベアツの記事にも(最後の「追記」に)書いてあるように、LaTeX の“アレなデフォルト”のせいで、cmfr ファミリではユーザが指定したフォントサイズが反映されないという問題がある。このため、このまま CM Funny Italic で数式を組むと添字の部分で字が小さくならないという不具合が起こってしまう。取りあえず、ここでは type1cm パッケージを読みこんで不具合を解消することにする。*1

% LaTeX 文書
\documentclass[a4paper]{article}
\usepackage{type1cm}
% 数式英字フォント \mathaho を登録する
\DeclareMathAlphabet{\mathaho}{OT1}{cmfr}{m}{it}
\begin{document}
% アホな数式を組む
\[ \mathaho{
  4\times\sum_{n=0}^{\infty}\frac{(-1)^n}{2n+1}
  = 2\times\prod_{k=1}^{\infty}\frac{4k^2}{4k^2-1}
  = \pi
} \]
\end{document}

組版結果は次のようになる。無事に“アホな数式”が出力された。

チョット補足

CM フォントの“アレなデフォルト”を解消するために、先の例では type1cm パッケージを利用した。普通はこれで十分であるが、もし「“アホな数式英字フォント”を登録する機能をパッケージとして提供したい」という場合は、type1cm を読み込むことが不適切である可能性*2がある。この場合は、「既存の設定(cmfr ファミリ)とは別に、スケールする CM Funny Italic 用の NFSS 設定を行う」とよいであろう。具体的な設定内容は(無慈悲な大前提により)周知であろうが、念のため示しておく。*3

% 新たに OT1/maho ファミリを登録する
\DeclareFontFamily{OT1}{maho}{}
% スケール可能な設定にする
\DeclareFontShape{OT1}{maho}{m}{n}{<->cmfi10}{}
% 数式英字ファミリ \mathaho を登録する
\DeclareMathAlphabet{\mathaho}{OT1}{maho}{m}{n}

演習問題①

次のような、「アンシャル体の数式英字フォント」を登録せよ。

※このフォントは uncial パッケージ*4で提供されている。

*1:興味がある人は、type1cm を使わない場合の組版結果を実際に見ておくといいだろう。なお、この事例をみると「数式フォントの設定も NFSS に依拠している」という性質がよく理解できると思われる。

*2:例えば、ユーザが既に fix-cm パッケージを読み込んでいる場合。fix-cm と type1cm の設定内容は微妙に異なるので、ユーザが CM フォントに対して fix-cm を適用しているのであれば、type1cm の設定で上書きしてはいけない。

*3:cmfr ファミリには n シェープ(CM Funny Roman)と it シェープ(CM Funny Italic)が存在するが、今の用途には CM Funny Italic だけ使えれば十分なので、これをシェープ n として登録することにした。

*4:TeX Live に収録されている。