Hugo 0.122 で TeX/LaTeX 数式表現ができるようになった(いまさら?)
Hugo 0.122.0 がリリースされた。
今回の目玉機能は $\mathrm{\TeX}$/$\mathrm{\LaTeX}$ 記法による数式表現に対応したことらしい。 えっ,いまさら? あー,いや,そういえば別行立ての数式は shortcode とか使って細工する必要があったな,そういえば。
Hugo で $\mathrm{\TeX}$/$\mathrm{\LaTeX}$ 記法による数式表現に対応するには
といった手順が必要。
サイト設定ファイルの内容はこんな感じ。
[markup]
defaultMarkdownHandler = "goldmark"
[markup.goldmark]
[markup.goldmark.extensions]
[markup.goldmark.extensions.passthrough]
enable = true
[markup.goldmark.extensions.passthrough.delimiters]
block = [['\[', '\]'], ['$$', '$$']]
YAML や JSON で書く場合は Hugo のドキュメントを参照のこと。
KaTeX は使ったことがないが MathJax については以前に記事にしたことがあるので参考にどうぞ。
- ちょこっと MathJax: 初期設定
- ちょこっと MathJax: 基本的な数式表現
- ちょこっと MathJax: インライン数式と別行立て数式
- ちょこっと MathJax 番外編: mathcomp パッケージの代替え
これでたとえば
\[
\begin{aligned}
KL(\hat{y} || y) &= \sum_{c=1}^{M}\hat{y}_c \log{\frac{\hat{y}_c}{y_c}} \\
JS(\hat{y} || y) &= \frac{1}{2}(KL(y||\frac{y+\hat{y}}{2}) + KL(\hat{y}||\frac{y+\hat{y}}{2}))
\end{aligned}
\]
と書けば
\[ \begin{aligned} KL(\hat{y} || y) &= \sum_{c=1}^{M}\hat{y}_c \log{\frac{\hat{y}_c}{y_c}} \\ JS(\hat{y} || y) &= \frac{1}{2}(KL(y||\frac{y+\hat{y}}{2}) + KL(\hat{y}||\frac{y+\hat{y}}{2})) \end{aligned} \]と展開される(筈)
いや,待て。
\[ ... \]
って \begin{equation*} ... \end{equation*}
と等価だろ。
問題なく処理はされるだろうけど,意味としておかしくないか。
試しに \[ ... \]
を外して
\begin{aligned}
KL(\hat{y} || y) &= \sum_{c=1}^{M}\hat{y}_c \log{\frac{\hat{y}_c}{y_c}} \\
JS(\hat{y} || y) &= \frac{1}{2}(KL(y||\frac{y+\hat{y}}{2}) + KL(\hat{y}||\frac{y+\hat{y}}{2}))
\end{aligned}
とすると期待通りには変換しない。
Markdown のパーサが上の記述を丸ごと <p>
要素で囲ってしまうからのようだ。
サイト設定で指定したデリミタ文字列を使った
エネルギーと質量には $$E=mc^2$$ の関係がある。
みたいな記述なら
<p>エネルギーと質量には </p>
$$E=mc^2$$
<p> の関係がある。</p>
などとパーサ側でうまく分離してくれるのだが。
\begin{aligned} ... \end{aligned}
のような $\mathrm{\LaTeX}$ 環境を無駄に \[ ... \]
で囲むのがどうしても嫌な方は,強制的に <div>
要素で囲って
<div>
\begin{aligned}
KL(\hat{y} || y) &= \sum_{c=1}^{M}\hat{y}_c \log{\frac{\hat{y}_c}{y_c}} \\
JS(\hat{y} || y) &= \frac{1}{2}(KL(y||\frac{y+\hat{y}}{2}) + KL(\hat{y}||\frac{y+\hat{y}}{2}))
\end{aligned}
</div>
とすれば markdown のパーサが生の HTML 記述と解釈しスルーしてくれる1。 私は数式専用の shortcode を作って利用している。
{{< fig-math >}}
\begin{aligned}
KL(\hat{y} || y) &= \sum_{c=1}^{M}\hat{y}_c \log{\frac{\hat{y}_c}{y_c}} \\
JS(\hat{y} || y) &= \frac{1}{2}(KL(y||\frac{y+\hat{y}}{2}) + KL(\hat{y}||\frac{y+\hat{y}}{2}))
\end{aligned}
{{< /fig-math >}}
ブックマーク
参考図書
- [改訂第8版]LaTeX2ε美文書作成入門
- 奥村晴彦 (著), 黒木裕介 (著)
- 技術評論社 2020-11-14
- 大型本
- 4297117126 (ASIN), 9784297117122 (EAN), 4297117126 (ISBN)
- 評価
2020年末に第8版が出てたのに気付かなかったよ。可能なら紙の本も買って常に側に置いておくのが吉。版元には PDF 版もある。
-
たとえば
\begin{aligned} ... \end{aligned}
のような環境をよく使うというのであれば,デリミタとしてサイト設定ファイル(hugo.toml
)に指定するのも手である。 ↩︎