[LaTeX] 数式フォントと欧文フォントの設定

TeXで数式フォントと欧文フォントを設定する方法について説明する。和文フォントについてはいろいろと面倒な話が多いので、気が向いたらそのうち書く(かもしれない)。

環境

Windows10 + W32TeX + pLaTeX + dvipdfmx

フォントの設定方法

文書全体でフォントを設定する

文書全体のフォントを設定するには、プリアンブル部分(\documentclass\begin{document}の間)に次のように書けばよい。

\usepackage[T1]{fontenc}
\usepackage{newpxtext, newpxmath}

ここでは欧文フォントにnewpxtext、数式フォントにnewpxmathフォントを指定している。

\usepackage[T1]{fontenc}の部分は「おまじない」として理解しておけばよいと思う。デフォルトの欧文フォント以外を使いたい場合は、基本的にこう書いておく方が良いようだ。

\usepackage[T1]{fontenc}の部分では、フォントのエンコーディングをデフォルトのOT1からT1に変更しているのだが、その意味については次のページが詳しい。「おまじない」では納得できないという勉強熱心な人は読んでみるとよいと思う。
qiita.com

文書の一部分でフォントを設定する(一時的にフォントを切り替える)

文書全体ではなく、一時的にフォントを切り替えたい場合は、次のように書く。

{\fontencoding{T1}\fontfamily{lmr}\selectfont TEXT}

上のコードでは、TEXT部分のフォントをLatin Modernのセリフ体に指定した(lmrはLatin Modern Romanのこと)。\fontencoding{T1}の部分は、先程も出てきた「おまじない」。

書体ごとに設定する

欧文フォントについては、書体(セリフ体、サンセリフ体、タイプライタ体)ごとに設定することもできる。

\renewcommand{\rmdefault}{lmr}  % セリフ体をLatin Modern Romanにする
\renewcommand{\sfdefault}{lmss}  % サンセリフ体をLatin Modern Sans Serifにする
\renewcommand{\ttdefault}{lmtt}  % タイプライタ体をLatin Modern Monoにする

とは言え、この機能を使うことはあまりないように思う。

数式フォントについて

数式フォントの種類

デフォルトでは数式フォントはComputer Modern Math Italicになっている。*1

デフォルト以外の数式フォントとしては、newtxmath、newpxmath、eulerあたりが有名どころではないだろうか。

www.tug.org

www.tug.org

www.tug.org

eulerフォントは『数学ガール』で使われている。*2
ただし現在は、eulerパッケージではなくeulervmパッケージが推奨されているようだ。*3

数式フォントの比較

数式フォントの比較を提供してくれているページがあるので、フォント選びの参考にしてみてはどうだろうか。

ちなみに私は数式フォントにはnewpxmathとeulerを使っている。この二つならぱっと見分けられるので、用途の異なる文書で使い分けている。

欧文フォントについて

デフォルトではComputer Modernというフォントに設定されている。しかし、Computer Modernにはフォントサイズの制約があるため、『美文書作成入門』ではその改良版であるLatin Modernを推奨している。

\usepackage[T1]{fontenc}
\usepackage{lmodern}  % Latine Modern

Computer Modernで使えないフォントサイズを指定すると、それに近い使用可能なフォントサイズに勝手に変更されてしまうようだ(コンパイルは通るのが少々厄介)。この辺りの話は次のページに詳しい。 LaTeX の「アレなデフォルト」 傾向と対策 - Qiita

デフォルトのフォントを使いたいときは、何も考えずとりあえず上の二行を入れておけばよいと思う。

欧文フォントの探し方

欧文フォントを探したくなったら、このサイトを徘徊してみるのが良いと思う。

www.tug.dk

例としてLatin Modern Romanのページを見てみると、Text exampleが載っている。気に入って使いたくなったらUsageのコードをコピペすればよい。このように、とても親切なページになっている。

The LaTeX Font Catalogue – Latin Modern Roman

フォント名でフォント紹介ページを探したい場合は、次のフォント一覧ページでページ内検索をする。

The LaTeX Font Catalogue – All Fonts, Alphabetical Order

ちなみに、例文として出てくる"The quick brown fox jumps over the sleazy dog"が何かと思って調べたら、どうやら英語のいろは歌みたいなもののようで。

The quick brown fox jumps over the lazy dog - Wikipedia

TeX Gyreフォントを使うと日本語の太字が効かなくなる問題

TeX Gyreフォントという一部のフォントを設定したときに、日本語の太字が効かなくなることがある。その場合は、次の一行をプリアンブルに入れておく。

\renewcommand{\bfdefault}{bx}

使用フォントの確認(from PDF)

設定したフォントが問題なく使えているかどうか不安になったときは、PDFで使用しているフォントを確認してみると良いだろう。

Adobe Acrobat ReaderでPDFを開き、「ファイル」→「プロパティ」→「フォント」でPDFに埋め込まれたフォントを確認できる。dvipdfmxをオプションなしで使っている場合(欧文基本14 書体を埋め込むオプションでない場合)は、プリアンブルで設定して使用したフォントだけが埋め込まれているはずである。

試しに以下のように書いてコンパイルしてみた。

\documentclass{jsarticle}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\begin{document}
abcdefghijklmnopqrstuvwxyz
\end{document}

埋め込みフォントを確認すると、LMRoman10-Regularだけであった。LMRomanはLatin Modern Roman、10はおそらく10pt、RegularはBoldではないことを表しているようだ。これで意図したとおりにフォントを設定できていることが確認できた。
※実際には、埋め込みフォントの名前がぱっと見で分からないときが多いので、場合によってはやや面倒な方法になるかもしれない。

フォント埋め込みの話はこの辺りのページが詳しい。

数式フォントと欧文フォントの良い組み合わせを探したい

上で名前を挙げたnewtxmathとnewpxmathについては、対応する欧文フォントがあるので、組み合わせて使うとデザインに統一感が出てしっくりくるのではないかと思う。

  • newpxmath & newpxtext
  • newtxmath & newtxtext

問題は対応する欧文フォントのないeulerで、果たしてどの欧文フォントを組み合わせるべきか。適当に検索したら、Stack Exchangeにこんなページがあった。まあまあ盛り上がっている。
tex.stackexchange.com

回答の一つに、eulerにPalatinoを組み合わせるというものがあった(こっちのページではeuler & palatinoの設定方法を聞いているだ)。

  • euler & Palatino

使用例としてなぜか留数定理が流行っていたので、この三つの組み合わせとデフォルトのフォントで留数定理を書いてみた。一つの参考にしてもらえればと思う。

f:id:cyanatlas:20180117021049j:plain

f:id:cyanatlas:20180117021104j:plain

f:id:cyanatlas:20180117021145j:plain

f:id:cyanatlas:20180117021152j:plain

参考文献・参考資料

奥村晴彦・黒木裕介(2013)『LATEX2ε 美文書作成入門』(改訂第六版)技術評論社(記事中では『美文書作成入門』と表記)

更新履歴

2020/07/02 内容は変えずに、文章を全面的に書き直した。切れていた一部のリンクを差し替えた。