LaTeX常用命令操作指南:从文档结构到编译排错

发布时间:2026/10/9 18:43:39
LaTeX常用命令操作指南:从文档结构到编译排错 1. 为什么还要折腾 LaTeX 这套排版系统第一次接触 LaTeX 的人十个里有八个会问同一个问题Word 拖拖拽拽就能搞定的事为什么要花几个小时去学一堆反人类的命令我当年也是这么想的直到有一次帮某实验室整理一份六十多页的技术报告里面夹着四十多个公式、十几张跨页表格和一堆参考文献交叉引用。用 Word 改到第三版的时候编号全乱了公式和正文对不上参考文献顺序错位改一处崩三处那天晚上我盯着屏幕到凌晨两点第二天果断转投 LaTeX之后再也没回头。LaTeX 本质上不是文字处理软件而是一套排版描述语言。你写的不是这段字用几号字体、居中还是靠左而是这是一级标题、这是一个公式、这是一条参考文献。至于最终长什么样交给编译器和模板去决定。这个思路的转变非常关键它意味着你只管内容结构格式一致性由系统保证。写论文、写书、写技术文档、做简历、排试卷只要是对格式规范有硬性要求、且篇幅较长的场景LaTeX 的优势就越明显。这篇文章面向的是刚上手或者用了一段时间但总觉得命令记不住、报错看不懂的朋友。我会把日常最高频的命令按使用场景拆开讲配上我实际踩过的坑和排查思路尽量做到你照着抄就能跑通。核心关键词就一个LaTeX 常用命令操作。我不会堆砌冷门宏包只讲那些你真正每天都会用到的部分。先说清楚一个前提LaTeX 的命令体系庞大但真正高频的核心命令不超过一百个。很多人被吓退是因为一上来就去看几百页的手册。正确的做法是先掌握骨架命令遇到具体需求再查。下面我按文档结构—文本格式—数学公式—图表—交叉引用—编译排错这条主线来展开这也是我平时带新人时的讲解顺序。2. 文档骨架与导言区一切从这几行开始2.1 最小可运行文档的结构拆解任何一份 LaTeX 文档都逃不开三段式结构文档类声明、导言区、正文区。我见过太多新手把宏包写在正文里结果编译报错还找不到原因。先把骨架立起来\documentclass[12pt,a4paper]{article} \usepackage[UTF8]{ctex} \usepackage{amsmath,amssymb} \usepackage{graphicx} \usepackage{geometry} \geometry{left2.5cm,right2.5cm,top2.5cm,bottom2.5cm} \title{一份技术报告} \author{某开发者} \date{\today} \begin{document} \maketitle \tableofcontents \section{引言} 这里是正文内容。 \end{document}逐行拆解一下。\documentclass决定文档的基因article适合短篇论文和报告report适合带章节的长文档book带奇偶页排版beamer做幻灯片。方括号里的12pt,a4paper是可选参数控制字号和纸张。这里有个经验字号和纸张尽量在文档类里定不要用\fontsize到处改否则后期统一调整会非常痛苦。\usepackage是加载宏包相当于给系统装插件。ctex是中文排版的关键没有它中文要么不显示要么乱码。amsmath和amssymb是数学公式的标配几乎每篇理工科文档都要。graphicx管插图geometry管页边距。我个人的习惯是把宏包按中文—数学—图表—版式—其他分组排列方便日后维护。\begin{document}之前的所有内容都是导言区之后才是正文。导言区只放全局设置不放实际内容这是铁律。我见过有人在导言区写了一大段文字编译出来发现不见了就是因为放错了位置。2.2 中文支持与编码的那些坑中文 LaTeX 最让人头疼的就是编码和字体。现在主流方案是ctex宏包配合 UTF-8 编码基本能覆盖绝大多数场景。但有几个细节必须注意。第一源文件编码必须是 UTF-8且不要带 BOM。有些编辑器默认存成 GBK 或者带 BOM 的 UTF-8编译时中文会变成一堆乱码或者直接报错。判断方法很简单如果报错信息里出现Invalid UTF-8 byte sequence八成就是编码问题。第二如果要用特定字体可以在导言区设置\setCJKmainfont{SimSun} \setCJKsansfont{SimHei} \setCJKmonofont{FangSong}但这里有个坑不同系统装的字体名不一样你在自己电脑上跑得好好的换台机器就报font not found。所以除非有硬性要求我一般不建议手动指定字体直接用ctex的默认配置最省心。真要指定记得把字体文件一起打包或者用\setCJKmainfont时加上Path参数指向相对路径。第三中英文混排时的空格问题。LaTeX 默认会在中英文之间自动加一点间距这个行为由ctex控制通常不用管。但如果你发现某些地方间距诡异可以检查是不是手动敲了空格。中文和英文之间不要手动加空格交给宏包处理。提示如果你用的是在线编译平台编码问题基本不用操心但本地编译一定要确认编辑器保存编码设置。我推荐在编辑器里把默认编码锁定为 UTF-8一劳永逸。3. 文本排版命令把内容组织清楚3.1 章节层级与标题命令LaTeX 的章节命令是分层的article文档类支持\section、\subsection、\subsubsectionreport和book还多一层\chapter。这些命令会自动编号也会自动进目录这是它比手动排版强太多的地方。\section{一级标题} \subsection{二级标题} \subsubsection{三级标题} \paragraph{段内小标题}有个细节很多人不知道带星号的版本不编号、不进目录。比如\section*{致谢}就常用于那些不想出现在目录里的部分。反过来如果你想让某个不编号的标题进目录可以用\addcontentsline手动加但一般用不上。标题里如果要用特殊符号比如数学符号或者下划线得小心。\section{关于 a_b 的讨论}里的下划线会被当成数学模式的下标编译报错。正确写法是\section{关于 a\_b 的讨论}用反斜杠转义。这个坑我在写变量名的时候踩过无数次。3.2 字体、字号与强调LaTeX 里改字体有一套命令但我的建议是尽量少用因为格式应该由模板统一控制。不过有些场景确实需要比如术语首次出现要加粗代码要等宽字体。命令效果使用场景\textbf{}加粗强调关键词\textit{}斜体外文术语、书名\texttt{}等宽代码、文件名\underline{}下划线慎用排版不美观\emph{}强调会根据上下文自动切换斜体/正体\emph这个命令很有意思它的效果是相对于当前字体做强调。在正体里它变斜体在斜体里它变正体。所以嵌套使用时不会出现斜体套斜体的尴尬。我一般推荐用\emph而不是\textit除非明确就是要斜体。字号方面\tiny、\small、\large、\Large、\huge这些命令是相对当前基准字号缩放的。不要用它们来调正文大小正文大小应该在文档类里定。它们适合用在表格注释、图注这种局部场景。3.3 列表环境的三种形态列表是文档里出现频率极高的结构LaTeX 提供三种无序、有序、描述型。\begin{itemize} \item 第一点 \item 第二点 \end{itemize} \begin{enumerate} \item 第一步 \item 第二步 \end{enumerate} \begin{description} \item[概念A] 这是对概念A的解释 \item[概念B] 这是对概念B的解释 \end{description}嵌套列表最多支持四层但实际写作中超过两层就该考虑拆分了否则读者看着累。嵌套时默认的符号会依次变成圆点、短横、星号这个不用手动改。有个常见需求是自定义有序列表的编号格式比如要(1)而不是1.。这需要加载enumitem宏包\usepackage{enumitem} \begin{enumerate}[label(\arabic*)] \item 第一项 \end{enumerate}enumitem是列表排版的瑞士军刀间距、编号格式、缩进都能调。我强烈建议把它加进常用宏包列表早晚用得上。4. 数学公式LaTeX 的看家本领4.1 行内公式与行间公式的选择数学公式分两种行内inline和行间display。行内公式用$...$或\(...\)跟文字排在同一行行间公式用\[...\]或equation环境单独占一行并居中。行内公式设变量 $x$ 满足 $x^2 y^2 1$。 行间公式 \begin{equation} E mc^2 \end{equation}这里有个强烈建议行内公式用\(...\)而不是$...$。原因是$符号在 LaTeX 里语义不够明确容易和某些宏包冲突而且\(...\)的配对更清晰报错时更容易定位。虽然$...$更短但为了少踩坑我改用了\(...\)。equation环境会自动编号如果不想编号就用equation*或者\[...\]。多行公式用align环境可以对齐等号\begin{align} f(x) x^2 2x 1 \\ (x1)^2 \end{align}是对齐点\\是换行。align默认每行都编号如果只想整体编一个号用split嵌套在equation里或者用aligned。4.2 常用符号与希腊字母速查数学符号是 LaTeX 命令最密集的地方但常用的其实就那些。我整理了一份高频表建议直接收藏类别命令效果希腊字母\alpha \beta \gammaα β γ大写希腊\Gamma \Delta \ThetaΓ Δ Θ上下标x^2 x_i x^{n1}x² xᵢ xⁿ⁺¹分数\frac{a}{b}a/b 竖排根号\sqrt{x} \sqrt[3]{x}√x 三次根求和\sum_{i1}^{n}Σ 带上下限积分\int_{a}^{b}∫ 带上下限极限\lim_{x \to 0}lim 带下标向量\vec{v}v 带箭头点乘\cdot·叉乘\times×不等号\neq \leq \geq≠ ≤ ≥属于\in \notin∈ ∉无穷\infty∞偏导\partial∂梯度\nabla∇有个细节多字母下标要用花括号包起来。x_ij只会让i变成下标j还是正常大小x_{ij}才是两个字母都在下标位置。这个错误极其常见我刚开始学时被坑过好多次。4.3 公式排版的经验与避坑公式排版有几个我总结的实战经验。第一行内公式不要写太复杂的东西比如分数、求和、积分这些在行内会挤得很难看行高也会被撑开。遇到这种情况果断改成行间公式。第二公式里的文字要用\text{}包起来否则会被当成变量斜体显示。比如\text{其中} x 0如果不加\text中文会报错英文会变成斜体。第三公式编号的引用用\label和\ref\begin{equation} \label{eq:energy} E mc^2 \end{equation} 由公式 \ref{eq:energy} 可知……\label的名字建议用类型:描述的格式比如eq:energy、fig:flow、tab:result这样在大型文档里找起来方便。千万不要用\label{1}这种纯数字后期维护会崩溃。第四多行公式的对齐点选择。align环境里放在等号前面这样等号会竖直对齐。如果公式没有等号可以放在第一个符号前或者用手动对齐。注意amsmath宏包必须在导言区加载否则align、equation这些环境用不了。这是新手最常见的报错来源之一。5. 图表插入与浮动体管理5.1 插图的标准流程插图用graphicx宏包的\includegraphics命令通常包在figure环境里\begin{figure}[htbp] \centering \includegraphics[width0.8\textwidth]{figures/flow.png} \caption{系统流程图} \label{fig:flow} \end{figure}[htbp]是浮动位置参数hhere 当前位置ttop 页顶bbottom 页底p单独一页。LaTeX 会按这个优先级尝试放置图片。不要写[h]就指望图片一定在原地LaTeX 的浮动机制很强势如果当前页放不下它会自己挪走。想强制固定位置得用float宏包的[H]参数但这会破坏排版美观慎用。width0.8\textwidth表示图片宽度是文本宽度的 80%。用相对宽度而不是绝对厘米数这样换纸张大小或者调页边距时图片会自动适配。强烈建议用相对宽度我见过太多人写死width10cm结果换个模板图片就溢出页面。图片路径建议统一放在figures/目录下源文件里写相对路径。这样整个项目打包迁移时不会丢图。文件名不要用中文和空格用英文加下划线或连字符否则某些编译器会找不到文件。5.2 表格的三种做法与取舍LaTeX 画表格是出了名的劝退环节。基础表格用tabular环境\begin{table}[htbp] \centering \caption{参数对照表} \label{tab:params} \begin{tabular}{|c|c|c|} \hline 参数 含义 默认值 \\ \hline a 系数 1.0 \\ b 偏移 0.0 \\ \hline \end{tabular} \end{table}{|c|c|c|}定义三列c是居中|是竖线。\hline画横线。这套语法能应付简单表格但列宽不会自动调整内容长了会溢出。进阶方案是用booktabs宏包它提供\toprule、\midrule、\bottomrule 三条线排版更专业学术论文基本都用这个\usepackage{booktabs} \begin{tabular}{ccc} \toprule 参数 含义 默认值 \\ \midrule a 系数 1.0 \\ b 偏移 0.0 \\ \bottomrule \end{tabular}booktabs的核心理念是少用线只保留必要的三条横线不用竖线。这样表格看起来清爽也更符合专业排版规范。如果表格内容很宽超出页面可以用tabularx宏包它能让表格自动撑满指定宽度并自动换行\usepackage{tabularx} \begin{tabularx}{\textwidth}{lX} 参数 说明 \\ a 这是一个很长的说明文字会自动换行 \\ \end{tabularx}X列会自动分配剩余宽度并换行l列保持自然宽度。这个组合我用了好几年处理宽表格非常省心。5.3 浮动体的位置控制与常见问题图表都是浮动体它们会被 LaTeX 调度到合适的位置。这带来一个常见困扰图片跑到文字后面好几页去了。解决办法有几个层次。最温和的办法是调整参数。在导言区设置\renewcommand{\topfraction}{0.9} \renewcommand{\bottomfraction}{0.8} \renewcommand{\textfraction}{0.1} \renewcommand{\floatpagefraction}{0.7}这几个参数控制一页里浮动体最多占多少比例、正文最少占多少。调大浮动体比例图片就更容易留在当前页。如果还是不行可以在图片和文字之间加\clearpage强制分页或者用float宏包的[H]强制固定。但我要提醒一句浮动体乱跑往往是内容组织的问题与其硬压位置不如调整段落顺序让图片出现在它该出现的地方附近。还有一个经典问题图片显示不出来只有一个框。这通常是格式不支持或者路径错误。LaTeX 原生支持 PNG、JPG、PDF不支持 SVG 和 GIF。SVG 要先转成 PDF 或 PNGGIF 要转成 PNG。路径错误的话编译日志里会有File not found的提示仔细看日志就能定位。6. 交叉引用、参考文献与目录6.1 交叉引用的正确姿势交叉引用是 LaTeX 相对 Word 的一大优势。你给图表、公式、章节打上\label然后在正文里用\ref或\eqref引用编号会自动更新。\section{方法}\label{sec:method} 如图 \ref{fig:flow} 所示公式 \eqref{eq:energy} 给出了……\ref只输出编号\eqref会带括号专门用于公式。章节引用一般写第 \ref{sec:method} 节因为\ref只给数字不给节字。这里有个必须记住的编译流程交叉引用需要编译两次才能正确显示。第一次编译生成.aux辅助文件记录标签位置第二次编译才把引用替换成正确编号。如果只编译一次引用处会显示??。用latexmk或者编辑器的自动编译功能可以省去手动多次编译的麻烦。6.2 参考文献的两种管理方式参考文献有两种做法。简单的是手动写thebibliography环境\begin{thebibliography}{99} \bibitem{ref1} 作者. 文献标题. 期刊, 年份. \bibitem{ref2} 作者. 另一篇文献. 出版社, 年份. \end{thebibliography}正文里用\cite{ref1}引用。这种方式适合文献少、格式要求不严的场景。文献多或者格式要求严格时用 BibTeX 或 BibLaTeX。把所有文献信息写在一个.bib文件里article{ref1, author {某作者}, title {文献标题}, journal {某期刊}, year {2024} }然后在文档里用\bibliography{refs}引入配合\bibliographystyle{plain}指定格式。编译流程变成LaTeX → BibTeX → LaTeX → LaTeX四步走。顺序不能乱否则引用显示不出来。BibLaTeX 是更现代的方案支持中文文献更好配置也更灵活。如果项目允许我推荐用 BibLaTeX 加biber后端。6.3 目录与超链接目录用\tableofcontents生成放在\maketitle之后。它会自动收集所有编号的章节。图表目录用\listoffigures和\listoftables。如果想让 PDF 里的目录和引用可以点击跳转加载hyperref宏包\usepackage[colorlinkstrue,linkcolorblue,citecolorgreen]{hyperref}hyperref通常放在导言区最后加载因为它会修改很多内部命令放太早容易和其他宏包冲突。这个顺序问题坑过不少人报错信息往往莫名其妙其实就是加载顺序不对。7. 编译流程与报错排查实录7.1 编译工具链的选择LaTeX 编译引擎主要有 pdfLaTeX、XeLaTeX、LuaLaTeX 三种。中文文档首选 XeLaTeX它对系统字体支持最好配合ctex几乎不会出问题。pdfLaTeX 对中文支持较弱需要额外配置。LuaLaTeX 功能最强但编译稍慢适合复杂项目。编译命令示例xelatex main.tex bibtex main xelatex main.tex xelatex main.tex用latexmk可以一条命令搞定latexmk -xelatex -interactionnonstopmode main.tex-interactionnonstopmode让编译遇到错误不停下来等输入适合自动化脚本。本地调试时可以用默认模式出错时能交互处理。7.2 常见报错速查表我把这些年遇到的高频报错整理成表方便对照排查报错信息关键词可能原因解决办法Undefined control sequence命令拼错或宏包没加载检查拼写确认宏包在导言区Missing $ inserted数学符号出现在文本模式用$...$包裹或转义File not found图片或文件路径错误检查相对路径和文件名Font not found字体未安装或名称错误换默认字体或指定字体路径Runaway argument花括号不配对检查{}是否成对Too many unprocessed floats浮动体太多加\clearpage或调整位置参数Citation undefined参考文献未编译按 LaTeX→BibTeX→LaTeX 顺序编译排查报错的核心思路是从第一个错误开始看。LaTeX 的错误会连锁反应第一个错误修好了后面一堆错误可能自动消失。很多人看到满屏红色就慌了其实真正的问题往往只有一个。7.3 我的排错实战经验分享几个我踩过的坑。有一次编译一直报Undefined control sequence我盯着报错行看了半天命令拼写没问题。后来发现是宏包加载顺序问题hyperref放太前面了导致后面某个命令被覆盖。把hyperref挪到最后加载问题消失。还有一次中文显示成方块排查了半天编码最后发现是编辑器保存时用了 GBK。改成 UTF-8 后正常。这个教训让我养成了检查编辑器编码设置的习惯。另一个高频问题是图片路径。我在 Windows 上写figures\flow.png换到 Linux 编译就找不到文件因为路径分隔符不一样。统一用正斜杠/跨平台都不会出问题。提示编译日志.log文件是最好的排查工具。出错时先看日志末尾找到第一个!开头的错误行那里通常就是问题根源。不要被中间的警告信息干扰警告大多不影响最终输出。8. 效率提升自定义命令与模板复用8.1 自定义命令减少重复劳动写多了会发现有些命令反复出现比如某个特定格式的向量、某个常用符号组合。这时候用\newcommand定义自己的命令\newcommand{\R}{\mathbb{R}} \newcommand{\norm}[1]{\left\lVert #1 \right\rVert} \newcommand{\myvec}[1]{\boldsymbol{#1}}\R直接输出实数集符号\norm{x}输出范数\myvec{v}输出粗体向量。这样正文里写起来简洁后期要改格式也只改一处。定义命令时有个细节带参数的命令用[n]声明参数个数参数在定义体里用#1、#2引用。参数最多九个但实际用到三个以上就该考虑是不是设计得太复杂了。\newcommand如果命令已存在会报错用\renewcommand可以覆盖已有命令。覆盖前一定要确认你知道原命令的作用否则可能引发连锁问题。我一般只覆盖自己定义的命令系统命令尽量不动。8.2 模板化与项目结构管理大型文档建议拆成多个文件用\input或\include引入\input{sections/intro} \input{sections/method} \include{sections/results}\input是直接插入内容\include会另起一页并生成单独的.aux文件适合章节级别的拆分。\include不能嵌套\input可以。我的习惯是建一个sections/目录放各章节figures/放图片refs.bib放文献主文件只保留导言区和\input语句。这样每个文件都不长改起来清爽也方便多人协作。模板复用方面我会把常用的导言区配置存成一个preamble.tex新项目直接\input{preamble}引入。这样积累几年下来开新文档基本五分钟就能进入写作状态不用每次重新配环境。9. 一些零散但实用的技巧最后分享几个零散但很实用的点。第一注释用%%后面的内容到行尾都会被忽略。调试时临时注释掉一段代码非常方便。注意%也会吃掉后面的换行有时候会导致意外的空格问题需要留意。第二强制换行用\\强制分页用\newpage或\clearpage。\clearpage会把所有未处理的浮动体先输出再分页\newpage不会。图表多的时候用\clearpage更安全。第三特殊字符转义。# $ % _ { } ~ ^ \这些在 LaTeX 里有特殊含义要输出它们本身得加反斜杠\# \$ \% \ \_ \{ \} \~{} \^{} \textbackslash。其中~和^要用\~{}和\^{}的形式直接\~和\^是重音符号命令。第四行距调整用setspace宏包\onehalfspacing是一点五倍行距\doublespacing是双倍。论文投稿经常要求特定行距这个宏包能一键搞定。第五页眉页脚用fancyhdr宏包可以自定义左右页不同的页眉内容。这个配置稍微复杂但模板里通常已经配好直接用就行。第六编译速度优化。大文档编译慢的时候可以在导言区加\includeonly{sections/results}只编译指定章节其他章节用之前的.aux文件。调试单章时能省不少时间。我个人在实际操作中的体会是LaTeX 的学习曲线确实陡但一旦跨过那个坎写长文档的效率是 Word 没法比的。关键是要先跑通最小示例再逐步加功能不要一上来就追求完美模板。遇到报错别慌从第一个错误看起大部分问题都是拼写、括号、宏包加载顺序这几类。把常用的命令和排查方法整理成自己的速查表用不了几个月你就能做到不查手册直接写了。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询