📝

KaTeXのスタイルとフォント

2024/05/05に公開

はじめに

この記事では、KaTeXの文字のフォントやスタイル、大きさ、色、書体について解説します。

https://katex.org/docs/supported

スタイル

数式が使われる場所によって自動的にスタイルが決まりますが、以下の関数で手動で設定できます。

関数 スタイル 結果
\displaystyle ディスプレイ($$ ... $$ \displaystyle\sum_{k=0}^n \frac{k}{n}
\textstyle テキスト($ ... $ \textstyle\sum_{k=0}^n \frac{k}{n}
\scriptstyle 添字 \scriptstyle\sum_{k=0}^n \frac{k}{n}
\scriptscriptstyle 二重添字 \scriptscriptstyle\sum_{k=0}^n \frac{k}{n}

スタイルは手動でも設定できます。

\displaystyle\sum_{k = 1}^{n} \frac{k}{n} \\
\textstyle\sum_{k = 1}^{n} \frac{k}{n} \\
\scriptstyle\sum_{k = 1}^{n} \frac{k}{n} \\
\scriptscriptstyle\sum_{k = 1}^{n} \frac{k}{n}
\displaystyle\sum_{k = 1}^{n} \frac{k}{n} \\ \textstyle\sum_{k = 1}^{n} \frac{k}{n} \\ \scriptstyle\sum_{k = 1}^{n} \frac{k}{n} \\ \scriptscriptstyle\sum_{k = 1}^{n} \frac{k}{n}

添字

_は下付きの添字、^は上付きの添字を表示します。

x_a \quad x^b \quad x_a^b \\
x_{11} \quad x^{22} \quad x_{11}^{22}
x_a \quad x^b \quad x_a^b \\ x_{11} \quad x^{22} \quad x_{11}^{22}

x_a_bはエラーになります。添字の付き方を{}で明示してください。

{x_a}_b \quad x_{a_b}
{x_a}_b \quad x_{a_b}

テキストモードと数式モード

数式モードではアルファベットが斜体になり、スペースが無視されます。

テキストモードで表示する関数には以下のものがあります。

関数 フォント 結果
\text \textrm \textnormal ローマン体(Roman) \textrm{ABCabc012}
\textsf サンセリフ体(sans serif) \textsf{ABCabc012}
\texttt タイプライタ体(typewriter type) \texttt{ABCabc012}
\textbf 太字(boldface) \textbf{ABCabc012}
\textmd 通常(デフォルト)(medium) \textmd{ABCabc012}
\textit イタリック体(italic) \textit{ABCabc012}
\textup 立体(デフォルト)(upright) \textup{ABCabc012}

\textXX 形式のフォント関数を複数使って、フォントファミリー、ウェイト、シェイプを重ね掛けできます。例えば \textsf{\textbf{H}}\textsf{\textbf{H}} となります。

これらの関数の引数の中で$ ... $を使うと、数式モードに戻せます。

数式モードで表示する関数には以下のものがあります。

関数 フォント 結果
\mathrm ローマン体(Roman) \mathrm{ABCabc012}
\mathsf サンセリフ体(sans serif) \mathsf{ABCabc012}
\mathtt タイプライタ体(typewriter type) \mathtt{ABCabc012}
\boldsymbol \bm 黒板太字イタリック体 \boldsymbol{ABCabc012}
\mathbb \Bbb 黒板太字(blackboard bold) \mathbb{ABCabc012}
\mathfrak \frak フラクトゥール(Fraktur) \mathfrak{ABCabc012}
\mathcal カリグラフィー(calligraphy) \mathcal{ABCabc012}
\mathscr スクリプト体(script) \mathscr{ABCabc012}
\mathbf \bold 太字(boldface) \mathbf{ABCabc012}
\mathit イタリック体(italic) \mathit{ABCabc012}
\mathnormal イタリック体(数字のみ特殊) \mathnormal{ABCabc012}

数式モードの関数は重ね掛けできず、\mathsf{\mathbf{H}}\mathsf{\mathbf{H}} となります。

\rm\sf\bf\tt\it\calも利用できますが非推奨です。

KaTeX フォントがボールドグリフを持たないとき、\pmbで代用できることがあります。
例えば、\pmb{\mu}をレンダーすると \pmb{\mu} になります。

\mathbf{\mu} \pmb{\mu}
\mathbf{\mu} \pmb{\mu}

括弧類のサイズ

以下の記号は大きさを調整できます。

左右括弧

記号 表記
(~) ( ) \lparen \rparen
[~] [ ] \lbrack \rbrack
\{~\} \{ \} \lbrace \rbrace
⟨~⟩ ⟨ ⟩ \langle \rangle \lang \rang
\lt~\gt < > \lt \gt
\lvert~\rvert | | \lvert \rvert
\lVert~\rVert \| \| \lVert \rVert
⌈~⌉ ⌈ ⌉ \lceil \rceil
⌊~⌋ ⌊ ⌋ \lfloor \rfloor
⎰~⎱ ⎰ ⎱ \lmoustache \rmoustache
⟮~⟯ ⟮ ⟯ \lgroup \rgroup

その他

記号 表記
\vert | \vert
\Vert \| \Vert
\uparrow \uparrow
\downarrow \downarrow
\updownarrow \updownarrow
\Uparrow \Uparrow
\Downarrow \Downarrow
\Updownarrow \Updownarrow
/ /
\backslash \backslash

\big\Big\bigg\Biggは括弧の大きさを指定します。

\Bigg( \bigg( \Big( \big( ( ) \big) \Big) \bigg) \Bigg)
\Bigg( \bigg( \Big( \big( ( ) \big) \Big) \bigg) \Bigg)

bigrbiglbigm系は記号の周りの空白を開き括弧、閉じ括弧、関係演算子に相当する幅にします。

\sin \big( x \big) \\
\sin \bigl( x \bigr) \\
\bigg\{ x \bigg| x < \frac{1}{2} \bigg\} \\
\bigg\{ x \biggm| x < \frac{1}{2} \bigg\}
\sin \big( x \big) \\ \sin \bigl( x \bigr) \\ \bigg\{ x \bigg| x < \frac{1}{2} \bigg\} \\ \bigg\{ x \biggm| x < \frac{1}{2} \bigg\}
括弧類の大きさ 開き括弧 閉じ括弧 括弧内の関係演算子
\big \bigl \bigr \bigm \bigl(x\bigm|y\bigr)
\Big \Bigl \Bigr \Bigm \Bigl(x\Bigm|y\Bigr)
\bigg \biggl \biggr \biggm \biggl(x\biggm|y\biggr)
\Bigg \Biggl \Biggr \Biggm \Biggl(x\Biggm|y\Biggr)

\left\rightは括弧の大きさを自動で調整します。
左右で異なる記号も使えます。

\left(-1, \frac{3}{2}\right) \quad \left[-1, \frac{3}{2}\right)
\left(-1, \frac{3}{2}\right) \quad \left[-1, \frac{3}{2}\right)

対応する記号がない場合は\left.\right.を使います。

\left. x = \frac{1}{2} \right) \quad \left( x = \frac{1}{2} \right.
\left. x = \frac{1}{2} \right) \quad \left( x = \frac{1}{2} \right.

括弧の間の記号も同じ大きさにしたい場合は\middleを使います。

\left(\frac{1}{2} \middle/ \frac{1}{5}\right)
\left(\frac{1}{2} \middle/ \frac{1}{5}\right)

サイズ

別のサイズが指定されるかブロックが終わるまで、文字のサイズを変更する関数です。

ab {\LARGE CD} ef
ab {\LARGE CD} ef
関数 関数
\Huge \Huge AB \normalsize \normalsize AB
\huge \huge AB \small \small AB
\LARGE \LARGE AB \footnotesize \footnotesize AB
\Large \Large AB \scriptsize \scriptsize AB
\large \large AB \tiny \tiny AB

\color{色}は文字の色を変更します。
色は、予約された色名または十六進数で指定するRGB引数です。RGBは3桁または6桁で指定し、先頭に#を付けるかどうかは任意です。

\color{blue} abcd
{\color{red} efgh}
ijkl
\color{#228B22} mnop
\color{blue} abcd {\color{red} efgh} ijkl \color{#228B22} mnop

\textcolor{色}{式}は引数として指定された式のみ色を変更します。
\colorbox{背景色}{テキスト}はテキストの背景の色を設定します。
\fcolorbox{枠色}{背景色}{テキスト}はテキストの背景だけでなく、背景の枠の色も設定します。
\colorbox\fcolorboxでテキストを$...$で囲んだ部分は数式モードで表示します。

\textcolor{red}{F=ma} \\
\textcolor{#228B22}{F=ma} \\
\colorbox{aqua}{F=ma} \\
\fcolorbox{red}{aqua}{F=ma}
\textcolor{red}{F=ma} \\ \textcolor{#228B22}{F=ma} \\ \colorbox{aqua}{F=ma} \\ \fcolorbox{red}{aqua}{F=ma}
\colorbox{aqua}{$F=ma$} \\
\fcolorbox{red}{aqua}{$F=ma$}

(Zennでは正しく表示できません。)

char

\charは、さまざまな形式で表記した文字コードの文字を表示します。

\char123 \\ % 十進数
\char'123 \\ % 八進数
\char"123 \\ % 十六進数
\char`x   \\ % 表記可能な文字
\char`~   \\ % 表記可能な文字
\char`\%  \\ % 表記不能な文字(%など)
\char123 \\ % 十進数 \char'123 \\ % 八進数 \char"123 \\ % 十六進数 \char`x \\ % 表記可能な文字 \char`~ \\ % 表記可能な文字 \char`\% \\ % 表記不能な文字(%など)

verb

\verb\verb*は、二つの同じ記号で囲まれたテキストをそのまま表示します。
\verb*は空白記号も表示します。

\verb!a \sin b! \\
\verb*!a \sin b!
\verb!a \sin b! \\ \verb*!a \sin b!

CSSで指定するフォント

KaTeXのフォントサイズはデフォルトで周りの文章の1.21倍になりますが、この値はCSSで設定できます。
例えば、1.1倍にするには、

.katex { font-size: 1.1em; }

CSSのクラスのルールを設定して、以下の言語のフォールバック用のフォントを指定できます。

クラス 文字種
.latin_fallback ラテン文字
.cyrillic_fallback キリル文字
.brahmic_fallback ブラーフミー系文字
.georgian_fallback グルジア文字
.cjk_fallback CJK文字(中国語・日本語・朝鮮語)
.hangul_fallback ハングル
.cjk_fallback {
  font-family: "Yu Mincho", "YuMincho", serif;
}

詳細な字間情報を持たないグリフは現在のKaTeXフォントにおける文字Mと同じ高さであると見なされるため、行間の配置が少し崩れる可能性があります。

関連記事

https://zenn.dev/artakase/articles/4961142a918d26

https://zenn.dev/artakase/articles/3d32a132fed178

https://zenn.dev/artakase/articles/698b37287fc2b5


ご清読ありがとうございました。

Discussion