一句话
命令:\name{参数},作用在参数或当前位置,写完就结束。环境:\begin{name} … \end{name},中间整块都按这个名字的规则排。
所以 \textbf{word} 是命令;figure、equation、abstract、tabular 是环境。把环境写成命令,或把命令当成环境去 begin,编译会在很远的地方才报错。
对照
同一件视觉效果,有时既有命令也有环境。选能表达「这块是什么」的那个,而不是看起来更短的那个。
- \textbf{…}
- 命令。给几个词加粗。
- {\bfseries …}
- 声明。从这里粗到一组括号结束。少用。
- \begin{abstract}
- 环境。摘要是一块,不是一个词。
- \begin{equation}
- 环境。公式要占独立行、可能编号。
- $…$
- 命令式行内数学,不是环境。
- \begin{figure}
- 环境。浮动体必须成对 begin/end。
会稿里最容易混的几对
- tabular 是环境,写在 table 环境里面;不要 \tabular{…}
- itemize / enumerate 是环境;\item 才是命令
- align 是环境;\\ 在里面换行,不是另起一个 align
- center 环境会引入竖直空白;会文里宁可在 caption 上想办法,少包一层 center
- minipage 是环境,用来并排两个小面板;不是一条 \minipage 命令
出错时长什么样
少写 \end{figure},后面的正文会被当成还在图里,报错可能出现在文件末尾。begin 和 end 名字不一致,日志会写 \begin{figure} ended by \end{table}。
先把最近一个环境补齐,再往下看。不要在中间插入一个新的 begin 去「补」。
常见问题
- \[ … \] 算命令还是环境?
- 这是显示公式的简写,行为接近 equation* 环境,但不能 \label。要编号、要引用,用 equation。
- 为什么不能 \begin{textbf}?
- textbf 不是环境。写成 \textbf{这段话}。真要让一大段变粗,先问是不是该用 subsection 或 theorem,而不是加粗。