マクロツイーター

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

unicode-math を完全に理解したい話(3)

前回の続き)

unicode-math の理論を完全に理解したい(続き)

入力における立体と斜体の自動補正

「立体と斜体の“非区別”」の小節で述べた通り、数式中のラテン小文字は普通は斜体が使われる。従って、従来の LaTeX 数式では x を入力すると「斜体の x」が出力される。しかし、これまでに述べた理屈をそのまま適用すると、unicode-math では x(U+007B) の入力では「立体の x」が出力されて、「斜体の x」を出力するには U+1D465 の文字または \symit{x} を入力する必要が生じてしまう。

この面倒を避けるための対処として、unicode-math では「入力の立体と斜体を自動的に補正する」「立体と斜体を区別しない特殊な数式英字フォント命令を用意する」という入力補正を行っている。

  • up の(“基本”の)文字、it の文字の入力 → \symup または \symit に補正される
  • bfup の文字、bfit の文字、\symbf 命令の入力 → \symbfup または \symbfit に補正される
  • sfup の文字、sfit の文字、\symsf 命令の入力 → \symsfup または \symsfit に補正される
  • bfsfup の文字、bfsfit の文字、\symbfsf 命令の入力 → \symbfsfup または \symbfsfit に補正される

※具体的な数式英字フォント命令(\symup\symsfit 等)は入力補正の対象にならない。

先述の通り「立体と斜体の何れを常用するか」に様々な習慣があるため、入力補正の方式をオプション*1で選択できる。up 対 it の補正結果は math-style オプションの値により決まる。

オプション値 ラテン小 ラテン大 ギリシャ ギリシャ
ISO it it it it
TeX it it it up
french it up up up
upright up up up up

literal指定で補正が抑止され、入力の立体と斜体の区別が保持される。

bfup 対 bfit の補正結果は bold-style オプションの値により決まる。((先述の通り、math-style の TeX の設定は米国の習慣を反映したものといえそうだが、bold-style の TeX、特に「ギリシャ小文字を斜体とする」については注意が必要だと思う。単なる「LaTeX 者の習慣」なのかもしれない。))

オプション値 ラテン小 ラテン大 ギリシャ ギリシャ
ISO bfit bfit bfit bfit
TeX bfup bfup bfit bfup
upright bfup bfup bfup bfup

literal指定で入力補正が抑止され、入力の立体と斜体の区別が保持される。

sfup 対 sfit、および bfsfup 対 bfsfit の補正結果は sans-style オプションの値により決まる。

オプション値 意味
italic sfit および bfsfit
upright sfup および bfsfup

literal指定で入力補正が抑止され、入力の立体と斜体の区別が保持される。

※ところで、Unicode の「数式書体付文字」においては、ギリシャ文字サンセリフ太字(bfsf)をもつが単なる太字(sf)はもたないという規定になっている。何故なんだろう?

※bold-style と sans-style の既定値は math-style の設定値に依存する。math-style の既定値は TeX である。

math- 設定値 bold- 既定値 sans- 既定値
ISO ISO italic
TeX TeX upright
french upright upright
upright upright upright
literal literal literal
ナブラ記号と偏微分記号

ナブラ記号(∇;U+2207)と偏微分記号(∂;U+2202)は Unicode で「数式書体付文字」として扱われている。*2従って、これらの文字も「数式英字」の範囲に含まれ、また入力補正の対象となる。入力補正の方式は各文字ごとに個別のオプションで指定する。

ナブラ記号の補正結果は nabla オプションの値により決まる。偏微分記号の補正結果は partial オプションの値により決まる。

  • italic: 斜体(it/bfit/bfsfit)になる。
  • upright: 立体(up/bfup/bfsfup)になる。
  • literal: 入力補正が抑止される。

nabla の既定値は upright、partial の既定値は italic であるが、math-style が literal の場合は両方の既定値が literal に変わる。

\symliteral 命令

オプションの設定に関わらず、\symliteral 命令を利用すると入力の補正を抑止できる。例えば、math-style が literal 以外の場合、x(U+007B) と U+1D465 は同じ出力(立体か斜体の何れか一方)になるが、\symliteral の引数に入れた場合は x は立体、U+1D465 は斜体で出力される。

*1:“オプション”はパッケージオプションや物理フォント設定関連の命令のオプションとして指定できる。

*2:この 2 つの文字のサポートする数式書体の範囲はギリシャ文字と同じである。つまり単なるサンセリフは無い!