Zennで数式を表示する
Zenn では
数式を表示する方法
実例
Zenn の記事においては
なども表示できる. このように数学記号, 数式環境, 書体など,
書き方
$
で式を囲む.
- 入力:
有界な連続関数$f(x) = \sum^{\infty}_{n=1} 4^{-n} \sin \left(8^n \pi x\right)$はどの点$x \in \R$でも微分不可能である.
- 出力: 有界な連続関数
はどの点f(x) = \sum^{\infty}_{n=1} 4^{-n} \sin \left(8^n \pi x\right) でも微分不可能である.x \in \R
ディスプレイ形式で表示するには二重のドル記号 $$
で式を囲む. ただし $$
の前後には空行を入れる.
入力
有界な連続関数
$$ f(x) = \sum^{\infty}_{n=1} 4^{-n} \sin \left(8^n \pi x\right) $$
はどの点$x \in \R$でも微分不可能である.
出力
有界な連続関数
はどの点
2024-01-24 追記に関する技術メモ
- Zennのソースコードで
の実現をしていると思われる部分: katex.ts\KaTeX - グローバルマクロを使うには
katex.render
のオプションでglobalGroup
のフラグを設定する必要がある: Options · KaTeX - この設定を有効にするにはセキュリティの観点で気がかりな点がある: API · KaTeX
また \def
や \newcommand
などの数式のマクロを使うことができる. ただし \def
や \newcommand
のスコープはそのコマンドが書かれた数式内に限定される. つまりこの2つで定義されたマクロの有効範囲はドル記号 $
を跨がず, 複数の数式から参照することができない.
記事全体に渡ってグローバルに使用できるマクロを定義するには \gdef
コマンドを使うとよい.
入力
$$
\gdef\mysquare#1{#1^2}
% \newcommand\mysquare[1]{#1^2}
\gdef\setcomp#1#2{\left\{#1\mid#2\right\}}
$$
グローバルにマクロが定義されているので, $\mysquare{x}$ や $\mysquare{(ab)}$ のようにインライン数式でも
$$ S^1 = \setcomp{(x, y) \in \mysquare{\R}}{\mysquare{x} + \mysquare{y} = 1} $$
のようにディスプレイ数式でもどこからでも利用できる.
出力
グローバルにマクロが定義されているので,
のようにディスプレイ数式でもどこからでも利用できる.
表示処理の詳細
Zenn の処理系のソースコードを覗いてみると
-
数式込み Markdown 文書のパーサーとして markdown-it-texmath,\TeX - 数式のタイプセッティングとして
\KaTeX
が現在使われているようである. Markdown ファイルから数式を抜き出し, その数式を表示する, という2段階の処理である.
この2つ処理系について, それぞれ以下のページにサンプルが載っている. より詳しい情報についてはそちらを参照されたい.
備考
本記事はローカル環境において執筆したが, Zenn にはオンラインエディターが用意されている. そのため数式込みの記事であっても Web ブラウザーひとつあれば作成が可能であると思われる (未検証).
Discussion