数学公式
数学公式是 Markdown 里唯一需要额外引擎才能工作的语法。写法只有两个符号——行内用一对美元符号,块级用两对——但要真正显示成排版好的公式,渲染器必须加载 KaTeX 或 MathJax。这一页讲清正确写法、LaTeX 里的反斜杠,以及一个技术文档里非常容易踩的坑:正文里出现美元符号。
行内公式写在文字中间,两侧各一个美元符号:
行内公式:$x$ 的写法。
<p>行内公式:<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>x</mi></mrow><annotation encoding="application/x-tex">x</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.4306em;"></span><span class="mord mathnormal">x</span></span></span></span> 的写法。</p>
渲染出来的是一大段 KaTeX 生成的 HTML:里面同时塞了一份 MathML(给屏幕阅读器和复制粘贴用)和一份纯 HTML 排版(给显示用),外面套着 <span class="katex">。页面上看不到美元符号。
块级公式用两对美元符号,而且这两个符号要各自独占一行:
$$
x
$$
<span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mi>x</mi></mrow><annotation encoding="application/x-tex">x</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.4306em;"></span><span class="mord mathnormal">x</span></span></span></span></span>
两者在 HTML 里差得很明显:行内公式是段落里的 <span class="katex">,块级公式是独立成行的 <span class="katex-display">。
LaTeX 命令前面是一个反斜杠。写两个的话,\\ 会被当成换行命令,后面的字母就排成了普通文本:
$$
\int_0^1 x^2 dx = \frac{1}{3}
$$
上面这段才是正确写法。写成 \\int 和 \\frac 的话,KaTeX 会先输出一条断行,再把 int、frac 当普通字母排出来,公式就废了。
技术文档写价格、金额是常事。但两个美元符号会被配成一对公式:价格 $100 和 $200 都包邮 里,$100 和 $ 被当成公式,「和」字也进了公式内部。
解决办法是给美元符号加反斜杠:
价格 \$100 和 \$200 都包邮
<p>价格 $100 和 $200 都包邮</p>
有人会写成 \$ ... \$,以为反斜杠是公式的一部分。其实反斜杠恰恰把美元符号转义掉了:
行内公式写成 \$E = mc^2\$ 这样的效果
<p>行内公式写成 $E = mc^2$ 这样的效果</p>
目标平台没加载公式引擎时,同样的源码会原样显示:行内公式变成一串带美元符号的文本,块级公式塌成一个普通段落。跨平台发布前,先确认对方支持公式。
公式的写法各平台不统一。 本课程使用的渲染管线只认 $ 和 $$;LaTeX 里常见的 \(...\) 和 \[...\] 在这里不被识别,会原样显示成括号里的源码。换平台前先看一眼对方支持哪一套。
| 写法 | 实际渲染 | 原因 |
|---|---|---|
$E = mc^2$ | 公式 | 行内公式 |
$$E = mc^2$$ 写在同一行 | 仍是行内公式 | 块级的两个符号要独占两行 |
\$ E = mc^2 \$ | 原样的美元符号 | 反斜杠把美元符号转义掉了 |
正文里的 $100 和 $ | 被当成公式 | 两个美元符号配成一对 |
\\frac{a}{b} | 断行加字母 frac | LaTeX 里 \\ 是换行命令 |
\(E = mc^2\) | 原样括号 | 本管线只认美元符号 |
把下面这段内容改写成 Markdown,要求:写出一个行内公式和一个块级公式;块级公式的两个 $$ 各自独占一行;LaTeX 命令只用一个反斜杠;正文里的价格要转义,不能被当成公式。
质能方程 E=mc^2 是最著名的行内公式示例。
\int_0^1 x^2 dx = 1/3 这个积分的结果。
本工具的定价是 $9 / 月,团队版是 $19 / 月。
解题思路: 行内公式用一对美元符号包在文字中间;块级公式用两对美元符号,两个符号各自独占一行。公式内容是 LaTeX,命令前面只写一个反斜杠。正文里的美元符号要转义,否则两个会被配成一对公式,把中间的汉字卷进去。
详细步骤:
- 第一句的行内公式写成
$E = mc^2$,两侧各一个美元符号,紧贴文字。 - 第二句改成块级公式:第一个
$$独占一行,回车后写\int_0^1 x^2 dx = \frac{1}{3},再回车写第二个$$独占一行。\int和\frac都只写一个反斜杠。 - 第三句的价格写成
\$9和\$19,两个美元符号都转义掉,就不会被配成公式。 - 块级公式前后都留空行,让它独立成段。
- 检验:渲染后第一句嵌着一个行内公式,第二句是独立成行的块级公式,第三句的价格原样显示为
$9和$19,「和」字没有跑进公式里。
最终答案:
质能方程 $E = mc^2$ 是最著名的行内公式示例。
$$
\int_0^1 x^2 dx = \frac{1}{3}
$$
本工具的定价是 \$9 / 月,团队版是 \$19 / 月。读完这一页,你应当能写出行内和块级两种公式,能解释为什么 LaTeX 命令只用一个反斜杠,能说清正文里的美元符号为什么会被配成公式,也能在公式没渲染时先确认平台有没有加载公式引擎。
