目录
LaTeX 常用命令与基础模板
推荐初学者先阅读《一份(不太)简短的 介绍》。这是一份系统而易读的入门材料,涵盖 的基本排版方法、数学公式、图表和参考文献等内容。
本文记录我在日常写作中经常使用的模板、命令和排版技巧,主要作为个人备忘。
一个简单的 模板
下面的模板适用于包含中文和数学公式的普通文章,建议使用 XeLaTeX 或 LuaLaTeX 编译。
\documentclass[11pt,a4paper,fontset=none]{ctexart}
% 以下字体名称依赖本地操作系统。
% 如果系统中没有对应字体,编译时会报错。
\setmainfont{Palatino Linotype} % 西文主要字体,通常为衬线字体
\setsansfont{Arial} % 西文无衬线字体
\setmonofont{Courier New} % 西文等宽字体,主要用于代码
\setCJKmainfont[
BoldFont = SimHei,
ItalicFont = KaiTi
]{SimSun}
% 中文主要字体设为宋体,粗体设为黑体,斜体设为楷体
\usepackage{graphicx} % 插图
\usepackage{amsmath,amssymb,amsthm} % 数学公式、符号和定理环境
\usepackage{tikz} % 绘图
\usetikzlibrary{calc}
% physics 宏包提供导数、矢量、狄拉克符号等命令,
% 但会重新定义部分数学命令,复杂文档中应注意兼容性。
\usepackage{physics}
\allowdisplaybreaks % 允许多行公式环境跨页
% hyperref 通常放在大多数宏包之后加载
\usepackage[
colorlinks = true,
bookmarks = true,
linkcolor = red,
citecolor = blue,
urlcolor = blue
]{hyperref}
\title{\LaTeX{} 简单模板}
\author{
陈华\thanks{
Email: \href{mailto:hua@physchen.com}{hua@physchen.com};
Blog: \href{https://physchen.com/}{physchen.com}
}
\and
作者 2\thanks{其他信息}
}
\date{\today}
\begin{document}
\maketitle
\begin{abstract}
这是摘要。
\end{abstract}
\tableofcontents
\section{引言}
引用文献~\cite{Chen:2024fzj}。
\textbf{粗体}、\textit{斜体}、行内代码 \verb|x = 1|、
普通 \LaTeX{} 标志 \LaTeX{} 和版本标志 \LaTeXe{}。
\begin{table}[htbp]
\centering
\caption{常用文本排版命令}
\label{tab:text-commands}
\begin{tabular}{|l|l|}
\hline
\textbf{功能} & \textbf{命令} \\ \hline
注释 & \verb|%| \\ \hline
英文单引号 & \verb|`text'| \\ \hline
英文双引号 & \verb|``text''| \\ \hline
分段 & \verb|\par| \\ \hline
连字符 & \verb|well-known| \\ \hline
连接号(en dash) & \verb|1--10| \\ \hline
破折号(em dash) & \verb|---| \\ \hline
省略号 & \verb|\ldots| \\ \hline
正文波浪号 & \verb|\textasciitilde| \\ \hline
不换行空格 & \verb|~| \\ \hline
指定可断词位置 & \verb|\-| \\ \hline
引用文献 & \verb|~\cite{xxx}| \\ \hline
行内代码 & \verb+\verb|xxx|+ \\ \hline
\end{tabular}
\end{table}
表~\ref{tab:text-commands} 总结了一些常用的文本排版命令。
\section{质能方程\texorpdfstring{$E=mc^2$}{E = mc²}}
爱因斯坦场方程为
\begin{equation}
R_{\mu\nu}
- \frac{1}{2}R g_{\mu\nu}
+ \Lambda g_{\mu\nu}
=
\frac{8\pi G}{c^4}T_{\mu\nu}\,.
\label{eq:einstein}
\end{equation}
其中,$R_{\mu\nu}$ 是里奇张量,$R$ 是标量曲率,
$g_{\mu\nu}$ 是时空度规,$\Lambda$ 是宇宙学常数,
$G$ 是牛顿引力常数,$c$ 是真空中的光速,
$T_{\mu\nu}$ 是能量—动量张量。
引用公式~\eqref{eq:einstein}。
\appendix
\section{附录}
\bibliographystyle{unsrt}
\bibliography{refs} % 对应 refs.bib 文件
\end{document}
常用命令和技巧
自适应定界符
使用成对的 \left 和 \right,可以使括号根据内部公式的高度自动调整大小。
例如:
\left(\frac{x}{y}\right)
输出:
\left 和 \right 必须成对出现。若只需要显示其中一侧,可以使用句点 . 表示不可见的定界符。
例如:
\left.V(\phi)\right|_{\phi_{\min}}
输出:
也可以使用 amsmath 提供的 \rvert:
\left.V(\phi)\right\rvert_{\phi_{\min}}
输出:
需要注意,\left 和 \right 生成的定界符有时会显得过大。若只需要手动调整一级大小,也可以使用:
\bigl( \bigr)
\Bigl( \Bigr)
\biggl( \biggr)
\Biggl( \Biggr)
其中,l 和 r 分别表示左定界符和右定界符,可以帮助 正确处理数学间距。
行内公式中的分数
\frac 会根据当前数学环境自动选择分数大小。
$E=\frac{h}{\lambda}$
输出:。
\dfrac 强制使用展示公式中的较大分数样式:
$E=\dfrac{h}{\lambda}$
输出:。
\tfrac 强制使用行内公式中的较小分数样式:
$E=\tfrac{h}{\lambda}$
输出:。
在普通正文中,通常优先使用 \frac。频繁使用 \dfrac 会增大行距,影响段落排版。
章节标题中的数学公式
章节标题中可以包含数学公式,例如:
\section{质能方程 $E=mc^2$}
但是,在加载 hyperref 后,数学命令通常无法直接写入 PDF 书签,可能出现警告或书签显示异常。
可以使用 \texorpdfstring 分别指定正文标题和 PDF 书签中的文本:
\section{质能方程\texorpdfstring{$E=mc^2$}{E = mc²}}
其中:
- 第一个参数用于正文中的章节标题;
- 第二个参数用于 PDF 书签,应尽量使用普通文本。
通用形式为:
\texorpdfstring{LaTeX 排版内容}{PDF 书签文本}
数学公式中的文本
数学环境中的普通文字应使用 \text{}:
v_{\text{initial}}
输出:
对于具有固定数学含义的运算符,优先使用对应的数学命令。例如:
\sin x
\cos x
\ln x
\min f(x)
\max f(x)
而不是:
sin x
cos x
ln x
min f(x)
max f(x)
例如,下标中的最小值可以写为:
\phi_{\min}
输出:
如果 min 只是说明性文字,而不是数学运算符,也可以写成:
\phi_{\mathrm{min}}
或者:
\phi_{\text{min}}
公式编号与交叉引用
带编号的单行公式通常使用 equation 环境:
\begin{equation}
E = mc^2
\label{eq:mass-energy}
\end{equation}
引用公式时使用:
公式~\eqref{eq:mass-energy}
建议为不同类型的标签添加统一前缀:
eq:mass-energy
fig:spacetime
tab:parameters
sec:introduction
app:derivation
常见前缀包括:
| 对象 | 推荐前缀 |
|---|---|
| 公式 | eq: |
| 图片 | fig: |
| 表格 | tab: |
| 章节 | sec: |
| 附录 | app: |
LaTeX 文档通常需要至少编译两次,才能正确生成交叉引用、目录和编号。
多行公式对齐
多行公式通常使用 align 环境,并在需要对齐的位置放置 &:
\begin{align}
(a+b)^2
&= a^2 + 2ab + b^2, \\
(a-b)^2
&= a^2 - 2ab + b^2.
\end{align}
输出:
如果不需要公式编号,可以使用 align*:
\begin{align*}
F &= ma, \\
p &= mv.
\end{align*}
单个带编号公式通常使用 equation,不必使用 align。
数学公式中的标点
数学公式是句子的一部分,因此公式末尾是否添加逗号或句号,应由句子的语法结构决定。
例如:
爱因斯坦场方程为
\begin{equation}
G_{\mu\nu} + \Lambda g_{\mu\nu}
=
\frac{8\pi G}{c^4}T_{\mu\nu}\,.
\end{equation}
其中,\,. 在句点前加入一个较小的数学间距,使标点与公式主体之间的距离更自然。
类似地,也可以使用:
\,,
在公式末尾加入逗号。
不换行空格
波浪号 ~ 在 LaTeX 中表示不换行空格,常用于防止编号与前面的文字分离。
例如:
图~\ref{fig:example}
表~\ref{tab:example}
公式~\eqref{eq:example}
文献~\cite{example}
第~1~章
不建议写成:
图 \ref{fig:example}
因为普通空格允许在此处换行,可能导致“图”和编号出现在不同的行。
连字符、连接号与破折号
LaTeX 中不同数量的短横线具有不同含义:
| 输入 | 名称 | 示例 |
|---|---|---|
- | 连字符(hyphen) | well-known |
-- | 连接号(en dash) | 1--10 |
--- | 破折号(em dash) | text---text |
例如:
Pages 1--10
用于表示第 1 页到第 10 页。
This is important---perhaps essential.
用于英文句子中的插入或转折。
中文文章通常可以直接输入中文标点,例如:
这是一个补充说明——也是一个重要提醒。
引号
传统 LaTeX 英文引号的输入方式为:
`single quotation'
``double quotation''
中文内容通常可以直接输入中文引号:
“这是中文双引号。”
‘这是中文单引号。’
如果文档需要自动处理多语言引号,可以使用 csquotes 宏包。
省略号
正文中的省略号可以使用:
\ldots
数学公式中,根据上下文可以使用:
\ldots
\cdots
\vdots
\ddots
例如:
a_1,a_2,\ldots,a_n
输出:
a_1+a_2+\cdots+a_n
输出:
其中:
\ldots位于基线附近,常用于逗号分隔的序列;\cdots位于数学中线附近,常用于加法或乘法序列;\vdots表示竖直省略号;\ddots表示对角省略号。
波浪号
在 LaTeX 中,直接输入 ~ 表示不换行空格,并不会输出可见的波浪号。
若要在正文中输出 ASCII 波浪号,可以使用:
\textasciitilde
例如:
The path is \textasciitilde/user/documents.
命令:
\~{a}
表示在字母上方添加波浪形重音,输出类似于:
它并不是专门用于输出独立波浪号的命令。
正体、斜体与粗体
正文中常用:
\textbf{粗体}
\textit{斜体}
\texttt{等宽字体}
\textsf{无衬线字体}
\textrm{衬线字体}
数学环境中常用:
\mathbf{A}
\mathrm{d}
\mathit{x}
\mathsf{A}
\mathtt{A}
需要注意,\mathbf 主要适用于拉丁字母和数字,对希腊字母通常不起作用。
若需要加粗希腊字母,可以使用:
\boldsymbol{\alpha}
或者:
\bm{\alpha}
其中 \bm 需要加载:
\usepackage{bm}
微分符号
在物理和数学排版中,微分符号 通常使用正体:
\int f(x)\,\mathrm{d}x
输出:
其中:
\,
用于在被积函数和微分符号之间加入较小的间距。
也可以自定义命令:
\newcommand{\dd}{\mathop{}\!\mathrm{d}}
然后写成:
\int f(x)\,\dd x
如果加载了 physics 宏包,也可以使用:
\int f(x)\dd{x}
不过,自定义命令和 physics 宏包的命令不应混用,以免风格不统一。
常用数学间距
LaTeX 会自动处理大部分数学间距,也可以使用以下命令手动调整:
| 命令 | 效果 |
|---|---|
\, | 小间距 |
\: | 中等间距 |
\; | 较大间距 |
\quad | 一个较大的水平间距 |
\qquad | 两个 \quad |
\! | 负间距 |
例如:
\int f(x)\,\mathrm{d}x
A \quad \text{and} \quad B
不应为了视觉对齐而大量手动添加空格。优先使用合适的数学环境和对齐命令。
图片
插入图片需要加载:
\usepackage{graphicx}
基本用法:
\begin{figure}[htbp]
\centering
\includegraphics[width=0.8\textwidth]{example-image}
\caption{示例图片}
\label{fig:example}
\end{figure}
引用图片:
图~\ref{fig:example}
常用尺寸参数包括:
width=\textwidth
width=0.8\textwidth
height=5cm
scale=0.5
通常只指定 width 或 height 中的一个,以保持图片原有的宽高比。
表格
tabular 环境负责实际的表格结构,table 环境则是可以浮动、添加标题和交叉引用的外层环境。
例如:
\begin{table}[htbp]
\centering
\caption{参数取值}
\label{tab:parameters}
\begin{tabular}{ccc}
\hline
参数 & 符号 & 数值 \\
\hline
光速 & $c$ & $3.00\times10^8\,\mathrm{m\,s^{-1}}$ \\
引力常数 & $G$ & $6.67\times10^{-11}\,\mathrm{N\,m^2\,kg^{-2}}$ \\
\hline
\end{tabular}
\end{table}
对于正式排版,通常推荐使用 booktabs 宏包:
\usepackage{booktabs}
然后使用:
\begin{table}[htbp]
\centering
\caption{参数取值}
\label{tab:parameters-booktabs}
\begin{tabular}{ccc}
\toprule
参数 & 符号 & 数值 \\
\midrule
光速 & $c$ & $3.00\times10^8\,\mathrm{m\,s^{-1}}$ \\
引力常数 & $G$ & $6.67\times10^{-11}\,\mathrm{N\,m^2\,kg^{-2}}$ \\
\bottomrule
\end{tabular}
\end{table}
正式科技文档中通常不建议使用大量竖线。
超链接
加载 hyperref 后,可以使用:
\href{https://www.example.com}{网站名称}
电子邮件链接:
\href{mailto:name@example.com}{name@example.com}
直接显示网址:
\url{https://www.example.com}
文档内部的章节、公式、图表和参考文献引用也会自动生成可点击链接。
参考文献
传统 BibTeX 工作流可以使用:
\bibliographystyle{unsrt}
\bibliography{refs}
其中:
\bibliography{refs}
对应当前目录下的 refs.bib 文件。
正文中引用:
\cite{Chen:2024fzj}
为了避免“文献”和编号之间换行,通常写成:
文献~\cite{Chen:2024fzj}
典型编译顺序为:
xelatex main.tex
bibtex main
xelatex main.tex
xelatex main.tex
如果使用 LuaLaTeX ,则将 xelatex 替换为 lualatex。
对于新文档,也可以使用 biblatex 和 Biber ,但其配置方式与传统 BibTeX 不同,不应混用。
注释
单行注释使用 %:
这是正文。 % 这是注释
百分号之后直到该行末尾的内容都不会出现在输出文档中。
百分号还会忽略其后的换行,因此可以用于避免源代码换行产生额外空格:
这是一段很长的%
连续文本。
输出时相当于:
这是一段很长的连续文本。
特殊字符
以下字符在 LaTeX 中具有特殊含义,直接输入可能报错或产生特殊效果:
# $ % & _ { } ~ ^ \
常见转义方法:
| 字符 | 输入方式 |
|---|---|
# | \# |
$ | \$ |
% | \% |
& | \& |
_ | \_ |
{ | \{ |
} | \} |
~ | \textasciitilde |
^ | \textasciicircum |
\ | \textbackslash |
XeLaTeX 与 LuaLaTeX
包含中文和系统字体的文档通常建议使用 XeLaTeX 或 LuaLaTeX 编译。
XeLaTeX 的命令为:
xelatex main.tex
LuaLaTeX 的命令为:
lualatex main.tex
传统 pdfLaTeX 对 Unicode 、中文和系统字体的直接支持较弱,不适合直接编译本文中的模板。
关于本地字体
以下字体名称在 Windows 中较为常见:
Palatino Linotype
Arial
Courier New
SimSun
SimHei
KaiTi
但它们不一定存在于 Linux 、 macOS 或在线 LaTeX 环境中。
如果字体不存在,可以:
- 将字体名称替换为当前系统已经安装的字体;
- 删除
fontset=none和手动字体设置,使用ctex的默认字体配置; - 使用 TeX Live 自带的开源字体;
- 在在线环境中上传具有合法使用权限的字体文件。
为了提高模板的可移植性,可以使用更简单的文档类设置:
\documentclass[11pt,a4paper]{ctexart}
然后删除全部 \setmainfont、\setsansfont、\setmonofont 和 \setCJKmainfont 设置,让 ctex 根据编译环境自动选择可用字体。