数学公式的准确、严谨和美观对于学术研究至关重要,也是见微知著一个学者学术功底的重要表现。因此如何借助quarto工具实现数学公式的精美排版,对于学术作品的呈现具有巨大的实用性价值。一般来讲,数学排版的基本元素包括:
- 数学模式:行内公式、行间公式、多行公式、编号
- 数学符号:希腊字母、运算符、上下标、求和、积分
- 数学函数、矩阵
- 交叉引用
1 数学公式
数学公式有两种排版方式:其一是与文字混排,称为行内公式;其二是单独列为一行排版,称为行间公式。在quarto中,前一种使用单美元号包裹呈现,后一种使用双美元号包裹呈现。
1.1 行内公式
- 行内公式
$ a^2 + b^2 = c^2 $,结果显示为 \(a^2 + b^2 = c^2\)。
1.2 行间公式
行间公式包含单行公式和多行公式。对于单行公式来说,一个公式独占一行。对于多行公式,则是每个公式独占一行。另外需要注意的是多行公式是一个整体,若行数过多,会影响分页。尤其在docx输出结果中,会出现大量页面空白,一种解决的方式是将多行复杂公式转换为简单多个公式排版。
1.3 多行公式
1.3.1 单行公式:
$$
a^2 + b^2 = c^2
$$显示结果为:\[ a^2 + b^2 = c^2 \]
1.3.2 多行公式
$$
\begin{align}
(a+b)^2 & = a^2 + 2ab + b^2, \\
(a+b)^3 & = a^3 + 3a^2b + 3ab^2 + b^3.
\end{align}
$$- 行与行之间用
\\隔开; - 每行可排多列(一般两列),用
&分割,对齐方式为:奇右偶左,即奇数栏(第1列、第3列)的内容靠右对齐,偶数栏(第2列、第4列)的内容靠左对齐。 \begin{align}、\end{align}为公式环境。
结果显示为: \[ \begin{align} (a+b)^2 & = a^2 + 2ab + b^2, \\ (a+b)^3 & = a^3 + 3a^2b + 3ab^2 + b^3. \end{align} \]
1.4 公式编号
公式编号有两种方式:自动编号和手动编号。前一种出现在交叉引用的环境中,后一种在公式后边用\tag命令来手动修改公式的编号,或者用notag命令取消公式编号,不过使用\tag命令自动编号在输出格式为docx格式时失效。若想在输出格式docx时出现编号时,需使用前一种自动编号的方法。
- 手动编号
$$
\begin{align}
(a+b)^2 & = a^2 + 2ab + b^2 \tag{1} \\
(a+b)^3 & = a^3 + 3a^2b + 3ab^2 + b^3 \tag{2}
\end{align}
$$结果显示为: \[ \begin{align} (a+b)^2 & = a^2 + 2ab + b^2 \tag{1} \\ (a+b)^3 & = a^3 + 3a^2b + 3ab^2 + b^3 \tag{2} \end{align} \]
- 自动编号
$$
\begin{align}
(a+b)^2 & = a^2 + 2ab + b^2 \\
(a+b)^3 & = a^3 + 3a^2b + 3ab^2 + b^3
\end{align}
$${#eq-eq1}结果显示为: \[ \begin{align} (a+b)^2 & = a^2 + 2ab + b^2 \\ (a+b)^3 & = a^3 + 3a^2b + 3ab^2 + b^3 \end{align} \tag{1}\]
引用语法@eq-eq1,显示为 Equation 1。
在数学公式中输入的空格被忽视。数学符号的间距默认由符号的性质(关系符号、运算符等)决定。需要人为引入间距时,使用
\quad、\qquad、\,、\:、\;、\!等命令。如$a a$,即便源代码中给出空间,显示结果仍为 \(a a\)。再比如,当源代码中插入\quad时,即$a \quad a$显示为\(a \quad a\)。不允许有空行。一般行间公式无法用
\\命令手动换行,必须在特定的公式环境(\begin{align}、\end{align})中,使用\\可以进行换行。如 \[ (a+b)^2 & = a^2 + 2ab + b^2, \\ (a+b)^3 & = a^3 + 3a^2b + 3ab^2 + b^3. \]所有的字母被当作数学公式中的变量处理,字母间距与文本模式不一致,也无法生成单词之间的空格。如果想在数学公式中输入正体的文本,可使用
\text{text content}。如$x^{2} \geq 0 \quad \text{对于所有} x\in\mathbb{R}$,显示为 \(x^{2} \geq 0 \quad \text{对于所有} x\in\mathbb{R}\)
2 数学符号
数学符号体系非常丰富,包括希腊字母、算术与代数符号、逻辑符号、集合符号、微积分符号、线性代数符号等等。
2.1 希腊字母
$\alpha$,显示为 \(\alpha\),注意$\Alpha$、$\Beta$等希腊字母符号不存在,因为它们和拉丁字母A,B 等一模一样,小写字母里也不存在$\omicron$,可以用拉丁字母代替 \(o\) 显示;- 大写的希腊字母为首字母大写的命令,如
$\Gamma$,显示为 \(\Gamma\); - 更多符号命令,可参见https://oeis.org/wiki/List_of_LaTeX_mathematical_symbols
2.2 算术与代数符号
- 基本运算符号。除了直接在键盘输入
+、-、*、/,还可以使用命令键入,使用$\times$、$\div$、点乘$\cdot$,分别显示为 \(\times\) 、\(\div\) 、\(\cdot\) ; - 正负或者负正。
$\mp$、$\mp$分别显示为 \(\mp\)、\(\mp\); - 等号、不等、恒等、约等和全等。
$\neq$、$\equiv$、$\approx$、$\cong$,分别显示为 \(\neq\)、\(\equiv\)、\(\approx\)、\(\cong\)。 - 大小关系。
$\geq$、$\leq$、$\gg$、$\ll$,分别显示为 \(\geq\)、\(\leq\)、\(\gg\)、\(\ll\)。 - 根式。命令为
$\sqrt{}$、$\sqrt[n]{}$。如$\sqrt{x}$、$\sqrt[4]{x + y}$,显示为 \(\sqrt{x}\)、\(\sqrt[4]{x + y}\)。 - 分式。命令为
$\frac{分子}{分母}$,分式的大小在行间公式中是正常大小,而在行内被极度压缩。如$\frac{7}{10}$,显示为 \(\frac{7}{10}\) 。若想在行内使用正常大小的分式,可使用$\dfrac{3}{8}$、$\tfrac{3}{8}$,显示为 \(\dfrac{3}{8}\)、\(\tfrac{3}{8}\)。行间公式则如
$$
\frac{7}{10}
$$\[ \frac{7}{10} \]
- 指数。使用
^和_分别表示上下标。注意上下标的内容(子公式)一般需要用花括号包裹,否则上下标只对后面的一个符号起作用。如$a^3_{ij}$,显示为 \(a^3_{ij}\)。 - 导数。可以直接使用右单引号或
\prime。如$x'$、$x^ \prime$,结果分别显示为 \(x'\)、\(x^ \prime\)。
2.3 逻辑符号
- 与/或。命令为
$\vee$、$\wedge$,分别显示为 \(\vee\)、\(\wedge\)。 - 蕴含/等价。命令为
$\Rightarrow$、$\Leftrightarrow$、$\Leftrightarrow$,分别显示为 \(\Rightarrow\)、\(\Leftrightarrow\)、\(\Leftrightarrow\)。 - 全称量词/存在量词。命令为
$\forall$、$\exists$、$\nexists$,分别显示为 \(\forall\)、\(\exists\)、\(\nexists\)。
2.4 集合符合
- 属于/不属于。命令为
$\in$、$\notin$,分别显示为 \(\in\)、\(\notin\)。 - 子集。命令为
$\subset$、$\subseteq$、$\supset$、$\supseteq$,分别显示为 \(\subset\)、\(\subseteq\)、\(\supset\)、\(\supseteq\)。 - 并集/交集。命令为
$\cup$、$\cap$,分别显示为 \(\cup\)、\(\cap\)。
2.5 微积分和求和符号
- 微分/偏微分。命令为
$\frac{dy}{dx}$,$\frac{\partial f}{\partial x}$,分别显示为 \(\frac{dy}{dx}\)、\(\frac{\partial f}{\partial x}\)。 - 积分。命令为
$\int$、$\iint$、$\iiint$、$\iiiint$,分别显示为 \(\int\)、\(\iint\)、\(\iiint\)、\(\iiiint\)。带有上下标位置的公式,可由$\limits$、$\nolimits$调整,前者可令上下标位于求极限和求和符号的上下方,后者可令上下标位于积分符号的右上方和右小方。如$\int\limits_0^{\frac{\pi}{2}}$、$\int\nolimits_0^{\frac{\pi}{2}}$,显示为 \(\int\limits_0^{\frac{\pi}{2}}\)、\(\int\nolimits_0^{\frac{\pi}{2}}\)。 - 极限。命令为
$\lim$。如$\lim_{x \rightarrow 0} \frac{\sin x}{x}=1$,结果显示为 \(\lim_{x \rightarrow 0} \frac{\sin x}{x}=1\) 。 - 求和。命令为
$\sum$,结果显示为 \(\sum\)。
2.6 上下括号
使用\overbrace和 \underbrace命令用来生成上/下括号,各自可带一个上/下标公式。如
$$
\underbrace{\overbrace{(a+b+c)}^6
\cdot \overbrace{(d+e+f)}^7}
_\text{meaning of life} = 42
$$结果显示为 \[ \underbrace{\overbrace{(a+b+c)}^6 \cdot \overbrace{(d+e+f)}^7} _\text{meaning of life} = 42 \]
3 数学函数和数组
3.1 数学函数
latex自定义很多数学函数,比如 $\sin$、 $\ln$、 $\log$、 $\exp$,结果显示为 \(\sin\)、 \(\ln\)、 \(\log\)、 \(\exp\)。
3.2 数组
$$
\begin{array}[竖向位置][列格式]
第一行\\
第二行\\
· · ·
\end{array}
$$- 竖向位置: 垂直方向与外部文本相对位置, 取值: t 或b,缺省为垂直居中
- 行与行之间用
\\隔开, 列与列之间用&分隔
示例:
$$
\mathbf{X} = \left(
\begin{array}{cccc}
x_{11} & x_{12} & \ldots & x_{1n}\\
x_{21} & x_{22} & \ldots & x_{2n}\\
\vdots & \vdots & \ddots & \vdots\\
x_{n1} & x_{n2} & \ldots & x_{nn}\\
\end{array} \right)
$$结果显示为: \[ \mathbf{X} = \left( \begin{array}{cccc} x_{11} & x_{12} & \ldots & x_{1n}\\ x_{21} & x_{22} & \ldots & x_{2n}\\ \vdots & \vdots & \ddots & \vdots\\ x_{n1} & x_{n2} & \ldots & x_{nn}\\ \end{array} \right) \]
4 公式的交叉引用
在quarto中,公式的引用格式一般是如下形式:
$$
公式
$$ {#eq-eq2}引用语法@eq-eq2,显示为公式编号。
eq-eq2为公式标签,其格式必须以eq-作为前缀;@eq-eq2为公式的交叉引用语法, 默认显示结果为Equation 2。当然也可以在yaml中通过对crossref参数更改,生产合意的图、表、公式引用格式,详细可参见https://djhcod.github.io/Quarto-foundation.github.io/#sec-%E4%BA%A4%E5%8F%89%E5%BC%95%E7%94%A8。
---
title: 公式引用样式
format:
html:
crossref:
fig-prefix: 图 # 图的默认引用样式(默认是"Figure")
tbl-prefix: 表 # 表的默认引用样式(默认是"Table")
eq-prefix: 式 # 表的默认引用样式(默认是"Equation")
---参考资料
- CTEX 开发小组.2024. 一份(不太)简短的LATEX2ε介绍
- 潘建瑜.2023.LATEX 科技排版入门