機(jī)器之心專欄
作者:張皓
論文格式排版是你的文章留給審稿人的第一印象,一篇排版糟糕的文章很難會使審稿人相信這篇文章提出了卓有建樹的思想。當(dāng)論文提供模板時我們可以按照模板進(jìn)行排版, 而對于模板沒有涵蓋的地方甚至沒有模板可用時, 我們有必要了解大家約定俗成的排版格式。本文簡要介紹了論文書寫過程中常用的格式規(guī)范及其 LaTeX 書寫方法。
基本符號
中文排版
不論中英文, 科技文章通常均使用英文半角標(biāo)點(diǎn)。中文文章的行內(nèi)公式和兩邊正文之間要有空格。例如:
通過計算協(xié)方差矩陣~$\Sigma$~我們可以\ldots % 注意'~'
此外, 推薦使用 XeLaTeX 編譯器編譯中文文章. XeLaTeX 對中文支持較好, 比如它可以自動在行內(nèi)公式和兩邊正文之間加空格, 無需人為指定。
括號/引用號
英文文章中括號, 以及引用符號 (如 [1], [2] 等) 要與前一個詞留有空格, 而中文文章通常則不同。例如:
Principal component analysis (PCA) is a statistical procedure that \ldots
引號
和 Word 這種所見即所得的排版軟件不同, LaTeX 用不同的符號分別表示左引號和右引號。左引號用`表示 (鍵盤左上角, Tab 鍵上面), 右引號用'表示 (平時輸引號的那個鍵). 雙引號用過輸入兩個引號來得到。例如:
`machine', ``learning''.
連字符
不同長度的'-'表示不同含義。 一個'-'長度的連字符用于詞中; 兩個'-'長度的連字符常用于制定范圍; 三個'-'長度的連字符是破折號; 數(shù)學(xué)中的負(fù)數(shù)要用數(shù)學(xué)環(huán)境下的-得到。例如:
daughter-in-law, pages 13--67, yes --- or no?, $-1$.
著重強(qiáng)調(diào)
在正式文章中, 通常不使用粗體進(jìn)行強(qiáng)調(diào), 需要強(qiáng)調(diào)的詞使用斜體標(biāo)出。例如:
PCA is the simplest of the true \emph{eigenvector}-based multivariate analyses.
數(shù)字分隔
文中出現(xiàn)的位數(shù)很長的數(shù)字要用逗號','進(jìn)行分割, 每 3 位數(shù)字進(jìn)行分割, 逗號兩側(cè)不加空格。例如:
The MNIST dataset contains 60,000 images \ldots
圖表格式
所有的圖表都要有題目, 圖的題目要寫在圖的下方, 而表的題目要寫在表格的上方。圖表的題目是一句話, 所以要以句號'.'結(jié)尾。在正文中對圖/表/章節(jié)的引用可以用如下方式, 注意 Figure/Table/Section 和數(shù)字之間的'~':
\ldots, as illustrated in Figure~1. \\\ldots, as shown in Figure~2. \\
As Figure~3 illustrates, \ldots \\
Figure~4 shows \ldots \\
Table~1 summarizes \ldots \\\ldots will be discussed in Section~1. \\\ldots, as described in Section~2.
在實(shí)際寫文章時, 所有的引用 (figure, table, equation, section) 都應(yīng)該用 ref 來管理, 這樣編號可以自動生成, 免去手工調(diào)整編號的煩惱。
數(shù)學(xué)環(huán)境
LaTeX 自身只提供最基本的數(shù)學(xué)符號和環(huán)境, 因此我們在需要書寫數(shù)學(xué)公式時, 通常在引言區(qū)導(dǎo)入 amsmath 包:
\usepackage{amsmath}
以下我們假定 amsmath 包已被導(dǎo)入。
數(shù)學(xué)符號
數(shù)域
實(shí)數(shù)域, 自然數(shù)域等表示數(shù)域的符號需要用空心字母表示. 空心字母在 LaTeX 中用 mathbb 輸入, 這需要在引言區(qū)導(dǎo)入 amssymb 包. 例如:
\usepackage{amssymb}$\mathbb{R}, \mathbb{N}$.
組合數(shù)
和國內(nèi)通常用 Cnk 表示組合數(shù)不同, 國際上通常用括號表示組合數(shù), 讀作'n choose k'. 在 LaTeX 中組合數(shù)可以用 binom 命令打出。例如:
$\binom{n}{k}$.
集合
集合中的分割可以用豎線'|', 也可以用冒號':'. 分割符與左右要有空格。例如:
$\{x \mid x \ge 0.\}$. % Note '\mid' instead of '|'
省略號
省略號分兩種。列舉一系列元素中的省略用 ldots; 數(shù)學(xué)運(yùn)算表達(dá)式中的省略用 cdots. 即省略號高度要和左右符號的高度一致。而在普通文本中的省略號一律用 ldots。例如:
$x_1, x_2, \ldots, x_n$, $x_1 + x_2 + \cdots + x_n$.
優(yōu)化問題
通常, 優(yōu)化問題解得的最優(yōu)值用 star 表示, 而不是'*'. 優(yōu)化問題的變量要寫到'arg min'或'arg max'整體的下方。例如:
\begin{equation}
x^\star = \mathop{\arg\min}_x (x-1)^2 \,.
\end{equation}
函數(shù)映射
函數(shù)映射通常有其固定的寫法, 例如:
$f\colon A \mapsto B$.
矩陣與向量
矩陣和向量要用粗體表示。有人習(xí)慣于用直立粗體表示矩陣, 用斜體粗體表示向量。使用 bm 需要在引言區(qū)導(dǎo)入 bm 包. 例如:
\usepackage{bm}$\bf{A}, \bf{\Omega}, \bm{x}, \bm{\mu}$.
如果讓大小寫字母都變?yōu)樾斌w粗體, 可以用 boldsymbol 命令。例如:
$\boldsymbol{A}, \boldsymbol{\Omega}, \boldsymbol{x}, \boldsymbol{\mu}$.
此外向量也可以用箭頭標(biāo)注。例如:
$\vec x, \vec \mu$.
矩陣和向量可以用中括號'[]'或小括號'()'表示, 目前國際上用中括號表示更常見, 這是因為用小括號表示矩陣和向量容易和表示代數(shù)運(yùn)算優(yōu)先級的小括號相混淆。在 LaTeX 中可以用 bmatrix 環(huán)境書寫矩陣。例如:
\begin{equation}
\begin{bmatrix}
a_{11} & a_{12} & \cdots & a_{1n} \\
a_{21} & a_{22} & \cdots & a_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
a_{m1} & a_{m2} & \cdots & a_{mn} \\
\end{bmatrix}
\end{equation}
數(shù)學(xué)公式中的直立體
有單位的量
表示單位量綱的符號不是變量, 故應(yīng)當(dāng)以直立體出現(xiàn), 并且數(shù)字和單位之間要有空格, 例如:
$m = 50\,\mathrm{kg}, V = 150\,\mathrm{m}^3$. % Note '\,'
此外, siunitx 包含了標(biāo)準(zhǔn)單位, 能自動調(diào)整字體和間距, 還可以以非常自然的方式實(shí)現(xiàn)復(fù)雜的單位和科學(xué)記數(shù)法等表達(dá)。
微元符號
表示微元的 d 不是變量, 應(yīng)當(dāng)以直立體出現(xiàn)。此外, 在積分符號中, 微元符號要與前面的被積函數(shù)保持一定空格距離. 例如:
$\int_1^2 \log x \, \mathrmmoiyehiw x$. % Note '\,'
轉(zhuǎn)置符號
表示轉(zhuǎn)置的 T 不是變量, 應(yīng)當(dāng)以直立體出現(xiàn)。例如:
$\boldsymbol x^{\mathrm{T}}$.
此外, 也有人用 intercal, top, 或 mathsf{T} 來表示轉(zhuǎn)置.
函數(shù)名
函數(shù)名不是變量, 故應(yīng)當(dāng)以直立體出現(xiàn)。LaTeX 內(nèi)置支持一些常用的函數(shù)名, 例如:
$\sin(x), \exp(x)$.
當(dāng)我們需要自己定義函數(shù)名時, 在在引言區(qū)使用 DeclareMathOperator 命令聲明需要定義的函數(shù)名。例如:
\DeclareMathOperator{\sign}{sign}
$\sign(x)$.
公式標(biāo)點(diǎn)與標(biāo)號
標(biāo)號基礎(chǔ)
重要的公式需要標(biāo)號。包含在 equation 環(huán)境中的環(huán)境會被自動標(biāo)號, 如果你不需要標(biāo)號, 可以用 equation*環(huán)境或?qū)⒐椒庞赲[和\] 之間。例如:
\begin{equation} % Equation with numbering
e^{i\pi} = -1
\end{equation}
\begin{equation*} % Equation without numbering
a^2 + b^2 = c^2
\end{equation*}
\[ % Equation with numbering
a^2 + b^2 = c^2
\]
標(biāo)點(diǎn)基礎(chǔ)
公式后的標(biāo)點(diǎn)是很多人忽視的地方。并不是所有公式后都要或不要加標(biāo)點(diǎn), 公式 (包括行內(nèi)公式和行間公式) 是句子的一部分, 因此, 我們需要根據(jù)公式在句子中所處的位置來判斷在公式后加什么標(biāo)點(diǎn). 行間公式中公式和標(biāo)點(diǎn)之間要空格。例如:
Einstein introduced his formula
\begin{equation}
E = m \cdot c^2 \,, % Note '\,,'
\end{equation}
which is at the same time the most widely known and the least well understood
physical formula.
\ldots from which follows Kirchhoff's current law:
\begin{equation}
\sum_{k=1}^n I_k = 0 \,. % Note '\,.'
\end{equation}
\begin{equation}
I_D = I_F - I_R % No break
\end{equation}
is the core of a very different transistor model.
多行公式的標(biāo)點(diǎn)與標(biāo)號
多行公式通常只在最后一行結(jié)尾時根據(jù)需要標(biāo)點(diǎn)與標(biāo)號。最新版本的 LaTeX 建議使用 IEEEeqnarray 環(huán)境替代 eqnarray 環(huán)境書寫多行公式, 這需要在引言區(qū)導(dǎo)入 IEEEtranstools 包。例如:
\usepackage[retainorgcmds]{IEEEtrantools}
\begin{IEEEeqnarray*}{rCl}
a &=& b + c \\
&=& d + e \\
&=& f + g \,. \IEEEyesnumber \\
\end{IEEEeqnarray*}
多分支公式的標(biāo)點(diǎn)與標(biāo)號
分支是公式的一部分, 我們只對整體做一個標(biāo)號, 不對每個分支進(jìn)行單獨(dú)標(biāo)號。每個分支需要單獨(dú)進(jìn)行標(biāo)點(diǎn): 前面的分支結(jié)束后要用分號';', 最后一個分支結(jié)束后根據(jù)需要進(jìn)行標(biāo)點(diǎn)。此外, 和寫編程語言不同, 與 if 分支對應(yīng)的通常是 otherwise, 而不是 else. LaTeX 中, 分支可以用 cases 環(huán)境書寫。例如:
\begin{equation}
|x| =
\begin{cases}
-x & \text{if } x < 0="">
x & \text{otherwise} \,. \\
\end{cases}
\end{equation}
優(yōu)化問題的標(biāo)點(diǎn)與標(biāo)號
通常 max/min 和 s.t.(讀作'subject to'而不是'such that') 保持中心對齊, 目標(biāo)函數(shù)項和各約束項保持左對齊。只在目標(biāo)函數(shù)項那一行標(biāo)號但不標(biāo)點(diǎn), 各約束項標(biāo)點(diǎn)但不標(biāo)號。例如:
\begin{alignat}{2}
\min_x \quad & f(x) & \\
\mathrm{s.t.} \quad & g_i(x) \le 0, &\quad i = 1, 2, \ldots, m \,, \nonumber \\
& h_j(x) = 0, &\quad j = 1, 2, \ldots, n \,. \nonumber
\end{alignat}
此外, 也有人將優(yōu)化問題看作一個整體, 對整體作一居中標(biāo)號。
數(shù)學(xué)證明
數(shù)學(xué)證明以'Proof.'開始, 以方框符號結(jié)尾。amsthm 包提供了證明環(huán)境。例如:
\usepackage{amsthm}
\begin{proof}
Trivial.
\end{proof}
致謝
感謝 @ 蔣雨蒙對 siunitx 包的介紹, @ 胡不退對 ref 的建議, @ 風(fēng)清揚(yáng)對轉(zhuǎn)置和優(yōu)化問題標(biāo)號的建議.
參考文獻(xiàn)
Oetiker, Tobias, et al. 'The not so short introduction to LATEX 2ε.' (2001).
作者簡介: 張皓: 南京大學(xué)計算機(jī)系機(jī)器學(xué)習(xí)與數(shù)據(jù)挖掘所(LAMDA)研究生, 研究方向為計算機(jī)視覺和機(jī)器學(xué)習(xí), 特別是視覺識別和深度學(xué)習(xí). 個人主頁: http://lamda.nju.edu.cn/zhangh/.