数式用フォントで遊ぶ
TeX Live 2017 インストール後の「$\mathrm{\TeX}$ で遊ぼう」第四弾は
- 数式用フォントで遊ぼう
である。
既定状態での数式表示
$\mathrm{\TeX}$ および $\mathrm{\LaTeX}$ は元々が数式表現に優れている。 これは $\mathrm{Lua\TeX}$, $\mathrm{Lua\LaTeX}$ でも同じで,たとえばプリアンブルに特に何も書かなくても(『LaTeX2ε美文書作成入門』より引用)
\documentclass[fleqn]{ltjsarticle}
\begin{document}
``?`!`But aren't Kafka's \emph{Schlo{\ss}} and {\AE}sop's {\OE}uvres
often na\"{\i}ve vis-\`a-vis the d{\ae}monic ph{\oe}nix's
official r\^ole in fluffy souffl\'es!?''
\[
\left( \int_0^\infty \frac{\sin x}{\sqrt x} dx \right)^2 =
\sum_{k=0}^\infty \frac{(2k)!}{2^{2k}(k!)^2} \frac{1}{2k+1} =
\prod_{k=1}^\infty \frac{4k^2}{4k^2-1} =
\frac{\pi}{2}
\]
\end{document}
以下のような感じで適切に組んでくれる。
もう少し変わった式やシンボルを使う場合には amsmath
および amssymb
パッケージを使って(同じく『LaTeX2ε美文書作成入門』より引用)
\documentclass[fleqn]{ltjsarticle}
\usepackage{amsmath,amssymb} % amsmath packages
\begin{document}
\subsection*{連分数(amsmathパッケージ)}
\begin{equation}
b_0 + \cfrac{c_1}{b_1 +
\cfrac{c_2}{b_2 +
\cfrac{c_3}{b_3 +
\cfrac{c_4}{b_4 + \cdots}}}}
\end{equation}
\subsection*{黒板文字(amssybパッケージ)}
$\mathbb{ABCDEFGHIJELMN}$
\end{document}
このように記述すれば,タイプセットの結果は
こんな感じになる。
ちなみに本文の欧文書体は Latin Modern,数式は Computer Modern で,amssymb
パッケージで提供される黒板太文字は AMSFonts と呼ばれるものだ1。
本文の欧文書体を OpenType フォントに変更する
$\mathrm{Lua\LaTeX}$ で本文の書体を OpenType フォントに変更するのはとても簡単になった。 本文の和文フォントを変更する方法は前々回に紹介したが,たとえば欧文書体として $\mathrm{\TeX}$ Gyre をセットする場合は
\documentclass[fleqn]{ltjsarticle}
\usepackage[no-math,sourcehan]{luatexja-preset} % Japanese fonts
% Import fonts
\setmainfont[Scale=MatchLowercase]{TeXGyreTermes}
\setsansfont[Scale=MatchLowercase]{TeXGyreHeros}
\setmonofont[AutoFakeSlant,BoldItalicFeatures={FakeSlant},Scale=MatchLowercase]{Inconsolatazi4}
\begin{document}
...
\end{document}
のように指定する。
欧文フォントの指定には fontspec
パッケージが必要だが,和文フォント設定用の luatexja-preset
パッケージに含まれているため,改めて fontspec
パッケージを明示する必要はない。
ちなみにタイプライタ文字には Inconsolata を指定している2。
書体を選択する場合は本文の書体と後述する数式用の書体があまりかけ離れないようバランスをとることが重要である。 『LaTeX2ε美文書作成入門』には欧文書体についてかなりページを割いて解説されているので,一読することをお薦めする。
数式用の書体を変更する
既存のパッケージを使う(Concrete + Euler の場合)
たとえば,数学好きに人気の高い Concrete + Euler フォントの組み合わだが,これは既存のパッケージを使ったほうがよさそうである(後述)。 フォントの指定も従来通り。
\documentclass[fleqn]{ltjsarticle}
% Import fonts
\usepackage{ccfonts,eulervm}
\begin{document}
\[
\left( \int_0^\infty \frac{\sin x}{\sqrt x} dx \right)^2 =
\sum_{k=0}^\infty \frac{(2k)!}{2^{2k}(k!)^2} \frac{1}{2k+1} =
\prod_{k=1}^\infty \frac{4k^2}{4k^2-1} =
\frac{\pi}{2}
\]
\end{document}
結果は以下の通り。
OpenType フォントを使う(unicode-math パッケージ)
数式用の書体に OpenType フォントを指定する場合は unicode-math
パッケージを使うのが便利だ。
たとえば $\mathrm{\TeX}$ Gyre Pagella Math を使う場合は以下のように指定する3。
\documentclass[fleqn]{ltjsarticle}
\usepackage{unicode-math} % using unicode/OpenType maths fonts
% Import fonts
\setmathfont{TeXGyrePagella-Math}
\begin{document}
\[
\left( \int_0^\infty \frac{\sin x}{\sqrt x} dx \right)^2 =
\sum_{k=0}^\infty \frac{(2k)!}{2^{2k}(k!)^2} \frac{1}{2k+1} =
\prod_{k=1}^\infty \frac{4k^2}{4k^2-1} =
\frac{\pi}{2}
\]
\end{document}
結果は以下の通り。
他の書体も紹介しよう。 Asana Math を利用する場合は,以下のように指定する。
\setmathfont{Asana-Math}
結果は以下の通り。
Neo Euler を利用する場合は,フォントを取得して以下のように指定する。
\setmathfont{Neo Euler}[math-style=upright]
math-style
オプションについては後述する。
結果は以下の通り。
STIX については TeX Live 2017 に収録されているものはデザインがイマイチな気がする。 なのでバージョン2を取得して以下のように指定する。
\setmathfont{STIX Two Math}
結果は以下の通り。
STIX の fork とも言える(?) XITS を利用する場合は,以下のように指定する。
\setmathfont{XITS-Math}
結果は以下の通り。
unicode-math パッケージのオプション
unicode-math
パッケージのオプションはいくつかあるが,今回はよく使うと思われるものについて紹介する。
math-style
, bold-style
, sans-style
各オプションは数式の文字や記号のスタイルを指定する。
具体的には ラテン小文字,ラテン大文字,ギリシア小文字,ギリシア大文字 それぞれに対して「立体(upright)」または「斜体(slant)」の組み合わせを指定する。
数式全体(math-style
)のスタイル設定は以下の通り。
math-style |
L小文字 | L大文字 | G小文字 | G大文字 |
---|---|---|---|---|
ISO |
斜体 | 斜体 | 斜体 | 斜体 |
TeX |
斜体 | 斜体 | 斜体 | 立体 |
french |
斜体 | 立体 | 立体 | 立体 |
upright |
立体 | 立体 | 立体 | 立体 |
\symbf
指定時(bold-style
)のスタイル設定は以下の通り。
bold-style |
L小文字 | L大文字 | G小文字 | G大文字 |
---|---|---|---|---|
ISO |
斜体 | 斜体 | 斜体 | 斜体 |
TeX |
立体 | 立体 | 斜体 | 立体 |
upright |
立体 | 立体 | 立体 | 立体 |
\symsf
指定時(sans-style
)のスタイル設定は以下の通り。
sans-style |
L小文字 | L大文字 | G小文字 | G大文字 |
---|---|---|---|---|
italic |
斜体 | 斜体 | 斜体 | 斜体 |
upright |
立体 | 立体 | 立体 | 立体 |
オプションの指定方法は以下の通り。
\usepackage[math-style=ISO,bold-style=ISO]{unicode-math}
または
\usepackage{unicode-math}
\unimathsetup{%
math-style=ISO,%
bold-style=ISO%
}
フォント指定時にオプションを指定することもできる。
\setmathfont{Neo Euler}[math-style=upright]
Neo Euler 書体について
Neo Euler のギリシア文字には斜体がないようで, math-style
の値を ISO
または TeX
に設定するとギリシア文字が表示されない。
他にも AMSFonts にあるシンボル(先程の黒板太文字とか)が存在しなかったりするようだ。 Euler フォントに関しては,使うのであれば, OpenType ではなく既存のパッケージを使うほうが簡単だろう。
【付録1】 euler.otf ファイルのインストール
euler.otf
ファイルは TeX Live 2017 には収録されていないため手動でインストールする必要がある。
といっても簡単で,まず {$TEXMFLOCAL}/fonts/opentype/public/
フォルダを作成し,そこに euler-otf
リポジトリを git clone
すればOK。
ちなみに $TEXMFLOCAL
の場所は kpsewhich
コマンドで調べられる。
いつもの場所だね。
$ kpsewhich -var-value=TEXMFLOCAL
C:/texlive/texmf-local
コピーできたら mktexlsr
コマンドを実行して ls-R
を更新し,さらに luaotfload-tool
も実行すること。
$ mktexlsr
mktexlsr: Updating C:/texlive/texmf-local/ls-R...
mktexlsr: Updated C:/texlive/texmf-local/ls-R.
mktexlsr: Updating C:/texlive/2017/texmf-config/ls-R...
mktexlsr: Updated C:/texlive/2017/texmf-config/ls-R.
mktexlsr: Updating C:/texlive/2017/texmf-var/ls-R...
mktexlsr: Updated C:/texlive/2017/texmf-var/ls-R.
mktexlsr: Updating C:/texlive/2017/texmf-dist/ls-R...
mktexlsr: Updated C:/texlive/2017/texmf-dist/ls-R.
mktexlsr: Done.
$ luaotfload-tool --update
ちゃんとインストールできたか確認も忘れずに。
$ luaotfload-tool --fuzzy --find="neo euler"
luaotfload | resolve : Font "neo euler" found!
luaotfload | resolve : Resolved file name "c:/texlive/texmf-local/fonts/opentype/public/euler-otf/euler.otf"
【付録2】 STIX2 のインストール
STIX バージョン2(zip ファイル)をダウンロード4 し, Fonts/OTF/
フォルダにある以下のファイルを {$TEXMFLOCAL}/fonts/opentype/public/STIX2/
フォルダにコピーする。
STIX2Math.otf
STIX2Text-Bold.otf
STIX2Text-BoldItalic.otf
STIX2Text-Italic.otf
STIX2Text-Regular.otf
コピーできたら mktexlsr
コマンドを実行して ls-R
を更新し,さらに luaotfload-tool
も実行すること。
$ mktexlsr
mktexlsr: Updating C:/texlive/texmf-local/ls-R...
mktexlsr: Updated C:/texlive/texmf-local/ls-R.
mktexlsr: Updating C:/texlive/2017/texmf-config/ls-R...
mktexlsr: Updated C:/texlive/2017/texmf-config/ls-R.
mktexlsr: Updating C:/texlive/2017/texmf-var/ls-R...
mktexlsr: Updated C:/texlive/2017/texmf-var/ls-R.
mktexlsr: Updating C:/texlive/2017/texmf-dist/ls-R...
mktexlsr: Updated C:/texlive/2017/texmf-dist/ls-R.
mktexlsr: Done.
$ luaotfload-tool --update
ちゃんとインストールできたか確認も忘れずに。
$ luaotfload-tool --fuzzy --find="stix two math"
luaotfload | resolve : Font "stix two math" found!
luaotfload | resolve : Resolved file name "c:/texlive/texmf-local/fonts/opentype/public/stix2/stix2math.otf"
ブックマーク
- Experimental Unicode mathematical typesetting: The unicode-math package
- LuaLaTeX で unicode-math を使う場合の書体変更コマンド | org-技術
参考図書
- [改訂第8版]LaTeX2ε美文書作成入門
- 奥村晴彦 (著), 黒木裕介 (著)
- 技術評論社 2020-11-14
- 大型本
- 4297117126 (ASIN), 9784297117122 (EAN), 4297117126 (ISBN)
- 評価
2020年末に第8版が出てたのに気付かなかったよ。可能なら紙の本も買って常に側に置いておくのが吉。版元には PDF 版もある。
-
amsmath
およびamssymb
パッケージは AMS (AmericanMathenatical Society; 米国数学会) が数学論文記述用に開発した $\mathrm{\TeX}$ 用のパッケージ及び文字・記号がベースになっていて,このうちの文字・記号のコレクションが AMSFonts と呼ばれている。 AMSFonts はamssymb
パッケージを指定することで使用できる。また $\mathrm{\TeX}$ 用の OpenType フォントには AMSFonts を収録したものもある。 ↩︎ -
前回の「LuaLaTeX でコードを書いてみる」を参照のこと。 ↩︎
-
amsmath
パッケージを併用する場合はunicode-math
パッケージの前にamsmath
パッケージを指定しないとタイプセット時にエラーになる。なおamssymb
パッケージは必要ない。 ↩︎ -
ダウンロード・ページは広告だらけで且つ色々と悪名高い SourceForge なのでご注意を。 ↩︎