章节命令:描述结构,而非外观
写长文档时,最烦的是编号。LaTeX 的对策是:你只用命令声明层级,编号全自动。\section{...} 是一级标题,\subsection{...} 是二级,\subsubsection{...} 是三级(article 类最深到这层)。
在命令后加一个星号 * 表示不编号:\section*{致谢} 会正常显示标题,但不参与编号、也不进目录。致谢、附录说明这类内容通常就用带星号的写法。
这正是「内容与格式分离」的精髓:想给全文标题换个字体或颜色,只需改一处设置,不必逐个标题去动。而且只要调整章节顺序,编号和引用会自动重算——这在你修改论文结构时能救命。
自动目录:\tableofcontents
既然章节结构都告诉 LaTeX 了,生成目录自然是一行命令的事:在需要放目录的位置写 \tableofcontents,它会根据你所有的 section/subsection 自动排出目录,连同页码。
注意:带星号的章节默认不进目录。另外,目录的页码同样依赖「编译两遍」的机制(第一遍收集、第二遍回填),本站在线编译已经自动处理;本地编译时第一次可能看到目录为空或页码不对,再编一遍即可。
三种列表:itemize、enumerate、description
itemize 是无序列表,每项前面是圆点;enumerate 是有序列表,自动编号 1. 2. 3.;description 是定义列表,用 \item[词条] 给每项指定自己的标签。
三个环境的用法完全一致:整体用 \begin{...} ... \end{...} 包住,每一项以 \item 开头。列表可以嵌套——把一个列表放进某项的后面,LaTeX 会自动换个符号、加深缩进,不需要你手工调。
交叉引用:\label 与 \ref
交叉引用是 LaTeX 的看家本领。做法分两步:在要被引用的对象(章节、公式、图表)后面放一个 \label{记号};在正文里用 \ref{记号} 显示它的编号。编号变了,引用自动跟着变。
记号是你自己起的名字,习惯上加前缀防止混淆:sec: 章节、fig: 图、tab: 表、eq: 公式。比如 \label{sec:intro} 配合 \ref{sec:intro}。
为什么有时会看到 ????因为引用需要编译器跑两遍:第一遍记录每个记号对应的编号,第二遍才把编号填回 \ref 的位置。本站的在线编译会自动多编几遍;你自己本地编译时若见到 ???,再编译一次就好。
九成情况是「编译遍数不够」。交叉引用要两遍,本地编译时多编一次通常就能解决。
剩下的一成是记号写错:\label{sec:intro} 却写成 \ref{sec:Intro}(大小写不同),或者 \ref 引用了根本不存在的记号。检查一下花括号里的拼写是否完全一致。
章节用 \section/\subsection/\subsubsection,加 * 则不编号;\tableofcontents 自动生成目录。
列表三兄弟:itemize(无序)、enumerate(有序)、description(自定义标签),都可嵌套。
交叉引用两步走:先 \label{记号},再 \ref{记号};看到 ??? 就多编译一遍或检查拼写。下一课进入 LaTeX 最强的主场——数学公式。