数式を書いていると、数式の中にテキスト(自然言語)を混ぜたくなる場面がよくあります。たとえば「$x = 0$ のとき $f(x) = 1$」という条件を数式内で書きたい場合や、関数名「$\mathrm{softmax}$」のようにLaTeXに標準コマンドがない演算子を書きたい場合です。
LaTeXの数式モードは数学記号専用であるため、普通に文字を入力するとすべてイタリック体の変数として解釈されてしまいます。テキストを正しく挿入するにはいくつかの方法があり、それぞれに適切な使いどころがあります。
本記事の内容
\textコマンドの使い方\mathrm,\mathsf,\mathttなどの書体コマンド\operatornameによるカスタム関数名の定義- 数式中の日本語の書き方
- 添字にテキストを使う方法
前提知識
この記事を読む前に、以下の記事を読んでおくと理解が深まります。
- ギリシャ文字一覧とLaTeXでの書き方 — 数式書体の基本
- 数式を揃える・整列する — align環境でのテキスト挿入
なぜ数式中にテキストが必要か
数式モードの動作
LaTeXの数式モード($...$ や $$...$$)では、入力されたアルファベットはすべてイタリック体の変数として扱われます。
$$ if x > 0 then y = 1 $$
$$
if x > 0 then y = 1
$$
$i$、$f$、$x$、$t$、$h$、$e$、$n$、$y$ がすべて別々の変数として解釈され、しかもスペースが無視されてしまいます。これは明らかに意図した表示ではありません。
\text で解決する
$$ \text{if } x > 0 \text{ then } y = 1 $$
$$
\text{if } x > 0 \text{ then } y = 1
$$
\text{...} を使うと、数式中でテキスト(通常のローマン体)を挿入できます。スペースも正しく表示されます。
テキスト挿入の必要性がわかりました。次に、各コマンドの使い方を詳しく見ていきましょう。
\text:最も汎用的なテキストコマンド
基本的な使い方
\text は amsmath パッケージが提供するコマンドで、数式中にテキストモードの文字列を挿入します。
$$ f(x) = \begin{cases} x^2 & \text{if } x \geq 0 \\ -x^2 & \text{if } x < 0 \end{cases} $$
$$
f(x) = \begin{cases}
x^2 & \text{if } x \geq 0 \\
-x^2 & \text{if } x < 0
\end{cases}
$$
スペースに注意
\text の中のスペースはそのまま表示されますが、\text の外側と内側の境界にはスペースが入りません。そのため、必要に応じて \text の中にスペースを含めます。
% スペースが足りない
$x = 0\text{のとき}$
% スペースを含める
$x = 0 \text{ のとき}$
\text 内で数式を使う
\text の中でも $...$ を使えば数式モードに戻れます。
$$ \text{$n$ が偶数のとき} $$
$$
\text{$n$ が偶数のとき}
$$
書体の継承
\text はテキストモードの書体設定を継承します。本文がセリフ体なら \text もセリフ体になりますが、ブログ(KaTeX)ではデフォルトのテキスト書体が使われます。
\text の基本を理解しました。次に、数学書体を直接指定するコマンドを見ていきましょう。
数学書体コマンド
\mathrm:ローマン体(立体)
数式中でローマン体(立体)の文字を書くには \mathrm を使います。
$$ \mathrm{Var}(X), \quad \mathrm{Cov}(X, Y), \quad \mathrm{tr}(\bm{A}) $$
$$
\mathrm{Var}(X), \quad \mathrm{Cov}(X, Y), \quad \mathrm{tr}(\bm{A})
$$
\mathrm は数式モード内で文字をローマン体に変えますが、スペースは無視されます。複数の単語を含むテキストには \text を使いましょう。
\text と \mathrm の違い
| 特性 | \text |
\mathrm |
|---|---|---|
| モード | テキストモード | 数式モード |
| スペース | 保持される | 無視される |
| 書体 | 本文の書体を継承 | 常にセリフ体 |
| 用途 | 文章を入れる | 演算子名、単位 |
% \text: スペースが保持される
$\text{for all } x$
% \mathrm: スペースが無視される
$\mathrm{for all } x$ % "forall" と詰まってしまう
したがって、条件文や説明文には \text、演算子名や定数には \mathrm を使い分けましょう。
\mathsf:サンセリフ体
$$ \mathsf{A}, \quad \mathsf{B}, \quad \mathsf{MSE} $$
$$
\mathsf{A}, \quad \mathsf{B}, \quad \mathsf{MSE}
$$
圏論のカテゴリ名やフォント切り替えが必要な場面で使われます。
\mathtt:タイプライター体
$$ \mathtt{true}, \quad \mathtt{false}, \quad \mathtt{NULL} $$
$$
\mathtt{true}, \quad \mathtt{false}, \quad \mathtt{NULL}
$$
プログラミングの定数やキーワードを数式中に書くときに使います。
\mathcal:花文字(カリグラフィー)
$$ \mathcal{L}, \quad \mathcal{F}, \quad \mathcal{N}(\mu, \sigma^2) $$
$$
\mathcal{L}, \quad \mathcal{F}, \quad \mathcal{N}(\mu, \sigma^2)
$$
損失関数 $\mathcal{L}$、フーリエ変換 $\mathcal{F}$、正規分布 $\mathcal{N}$ など、特殊な集合や演算子に使われます。
\mathbb:黒板太字
$$ \mathbb{R}, \quad \mathbb{Z}, \quad \mathbb{E}[X] $$
$$
\mathbb{R}, \quad \mathbb{Z}, \quad \mathbb{E}[X]
$$
数の集合($\mathbb{R}$: 実数、$\mathbb{Z}$: 整数)や期待値($\mathbb{E}$)に使われます。
\mathfrak:フラクトゥール体
$$ \mathfrak{g}, \quad \mathfrak{so}(3) $$
$$
\mathfrak{g}, \quad \mathfrak{so}(3)
$$
リー代数の表記で使われます。使用頻度は低いですが、物理学の対称性の議論で登場します。
書体の一覧
| コマンド | 書体 | 出力例 | 主な用途 |
|---|---|---|---|
\mathrm{ABC} |
ローマン体 | $\mathrm{ABC}$ | 演算子名、単位、定数 |
\mathbf{ABC} |
太字ローマン体 | $\mathbf{ABC}$ | 行列(一部の流派) |
\mathit{ABC} |
イタリック体 | $\mathit{ABC}$ | デフォルト |
\mathsf{ABC} |
サンセリフ体 | $\mathsf{ABC}$ | カテゴリ名 |
\mathtt{ABC} |
タイプライター体 | $\mathtt{ABC}$ | コード |
\mathcal{ABC} |
花文字 | $\mathcal{ABC}$ | 集合、演算子 |
\mathbb{ABC} |
黒板太字 | $\mathbb{ABC}$ | 数の集合 |
\mathfrak{abc} |
フラクトゥール | $\mathfrak{abc}$ | リー代数 |
各書体コマンドの使い方を理解しました。次に、LaTeXに標準で用意されていない関数名を定義する方法を見ていきましょう。
\operatorname:カスタム関数名
なぜ \operatorname が必要か
LaTeXには \sin, \cos, \log 等の組み込み関数名コマンドがありますが、分野固有の関数名(softmax, ReLU, sgn 等)にはコマンドがありません。そのような場合に \operatorname を使います。
基本的な使い方
$$ \operatorname{softmax}(\bm{z}) = \frac{\exp(z_i)}{\sum_{j=1}^K \exp(z_j)} $$
$$
\operatorname{softmax}(\bm{z}) = \frac{\exp(z_i)}{\sum_{j=1}^K \exp(z_j)}
$$
\operatorname{softmax} はローマン体で「softmax」と表示し、前後に適切なスペーシングを入れます。
\mathrm との違い
\operatorname は関数名として認識されるため、\mathrm よりもスペーシングが適切です。
$$ \mathrm{softmax}(\bm{z}) \quad \text{vs} \quad \operatorname{softmax}(\bm{z}) $$
見た目の違いは微妙ですが、\operatorname のほうが数式的に正しいスペーシングになります。
よく使うカスタム演算子
| 演算子 | LaTeX | 分野 |
|---|---|---|
| $\operatorname{softmax}$ | \operatorname{softmax} |
機械学習 |
| $\operatorname{ReLU}$ | \operatorname{ReLU} |
機械学習 |
| $\operatorname{sgn}$ | \operatorname{sgn} |
数学 |
| $\operatorname{diag}$ | \operatorname{diag} |
線形代数 |
| $\operatorname{vec}$ | \operatorname{vec} |
線形代数 |
| $\operatorname{argmin}$ | \operatorname{argmin} |
最適化 |
| $\operatorname{argmax}$ | \operatorname{argmax} |
最適化 |
| $\operatorname{Tr}$ | \operatorname{Tr} |
線形代数 |
| $\operatorname{sign}$ | \operatorname{sign} |
数学 |
| $\operatorname{sinc}$ | \operatorname{sinc} |
信号処理 |
\operatorname*:上下に添字を配置
\operatorname* を使うと、ディスプレイスタイルで添字が真上・真下に配置されます。
$$ \operatorname*{argmin}_{\theta} \mathcal{L}(\theta) $$
$$
\operatorname*{argmin}_{\theta} \mathcal{L}(\theta)
$$
\operatorname*{argmin} で「argmin」の真下に $\theta$ が配置されます。
カスタム関数名の定義方法を理解しました。次に、数式中に日本語を入れる方法を解説します。
数式中の日本語
\text で日本語を入れる
KaTeXでは \text の中に日本語を直接書くことができます。
$$ P(\text{晴れ} \mid \text{気圧が高い}) $$
$$
P(\text{晴れ} \mid \text{気圧が高い})
$$
添字に日本語を使う
添字(下付き・上付き)にも \text で日本語を入れることができます。
$$ F_{\text{合計}} = F_1 + F_2 + F_3 $$
$$
F_{\text{合計}} = F_1 + F_2 + F_3
$$
日本語の単位
$$ v = 340 \; \text{m/s(音速)} $$
$$
v = 340 \; \text{m/s(音速)}
$$
\; は中程度のスペースで、数値と単位の間に入れます。
数式中の日本語の書き方を理解しました。次に、添字でのテキスト使用について詳しく見ていきます。
添字にテキストを使う
説明的な添字
物理量の添字に説明的な文字列を使うことがよくあります。
$$ T_{\mathrm{max}}, \quad v_{\mathrm{rms}}, \quad E_{\mathrm{kin}}, \quad P_{\mathrm{total}} $$
$$
T_{\mathrm{max}}, \quad v_{\mathrm{rms}}, \quad E_{\mathrm{kin}}, \quad P_{\mathrm{total}}
$$
説明的な添字にはローマン体(\mathrm)を使うのが慣例です。イタリック体にしてしまうと変数の積に見えるためです。
% NG: max が m, a, x の3変数に見える
$T_{max}$
% OK: ローマン体で1つの添字として読める
$T_{\mathrm{max}}$
\text vs \mathrm を添字に使う場合
| 用途 | コマンド | 例 |
|---|---|---|
| 数学的な略語 | \mathrm |
$T_{\mathrm{max}}$, $E_{\mathrm{kin}}$ |
| 自然言語の説明 | \text |
$F_{\text{合計}}$, $P_{\text{prior}}$ |
基本的にはどちらを使っても見た目は同じですが、数式的な略語には \mathrm、自然言語のフレーズには \text を使うのが意図が明確です。
LaTeX vs KaTeX の注意点
| コマンド | KaTeX対応 | 備考 |
|---|---|---|
\text |
対応 | 日本語も可 |
\mathrm |
対応 | — |
\mathbf |
対応 | — |
\mathsf |
対応 | — |
\mathtt |
対応 | — |
\mathcal |
対応 | — |
\mathbb |
対応 | — |
\mathfrak |
対応 | — |
\operatorname |
対応 | — |
\operatorname* |
対応 | — |
KaTeXでは数式書体コマンドがすべてサポートされています。
よくある間違いとTips
間違い1:テキストを数式モードでそのまま書く
% NG: イタリック体で表示される
$for all x$
% OK: \text を使う
$\text{for all } x$
間違い2:\mathrm でスペースを入れようとする
% NG: スペースが無視される
$\mathrm{for all}$
% OK: \text ならスペースが保持される
$\text{for all}$
間違い3:関数名をイタリック体のまま書く
% NG: softmax が変数の積に見える
$softmax(\bm{z})$
% OK: \operatorname でローマン体
$\operatorname{softmax}(\bm{z})$
Tips:単位の表記
物理量の単位にはローマン体を使うのが国際規格(SI)の決まりです。
$$ F = 9.8 \; \mathrm{N}, \quad v = 3 \times 10^8 \; \mathrm{m/s} $$
$$
F = 9.8 \; \mathrm{N}, \quad v = 3 \times 10^8 \; \mathrm{m/s}
$$
まとめ
本記事では、LaTeXの数式中にテキストを入れる方法を解説しました。
\text: スペース保持、文章挿入向け(最も汎用的)\mathrm: ローマン体。演算子名、単位、定数の添字向け\operatorname: カスタム関数名を適切なスペーシングで表示- 各種書体:
\mathcal,\mathbb,\mathfrak等を用途に応じて使い分け - 日本語:
\text{...}の中に直接記述可能
数式とテキストの適切な使い分けは、読みやすい数式を書くための基本です。
次のステップとして、以下の記事も参考にしてください。
- ギリシャ文字一覧とLaTeXでの書き方 — 数式書体の基本
- 数式を揃える・整列する — 整列環境でのテキスト挿入
- 数式に色をつける・ハイライトする — 数式の視覚的な強調