第一次把三万多字的毕业论文塞进 Word我前后删了二十几遍目录——改一个小节标题页码全乱公式编号跟着漂参考文献的顺序还得手动对。后来一个师兄甩给我一个.tex文件说“你照着改就行”我花了一个周末把 LaTeX 啃下来之后的几年里论文、技术报告、甚至简历我都用 LaTeX 完成。这篇笔记是当时踩坑记录的汇总LaTeX 到底解决什么问题、怎么下载安装、语法骨架长什么样、公式/图片/表格/参考文献这四件高频事怎么写以及编译报错时从哪儿下手查。它不打算把 LaTeX 讲全——那得写一本书——只保证你看完能独立跑出一份符合期刊或学位论文格式要求的 PDF。1. 为什么写论文的人最后都绕不开 LaTeX1.1 Word 在长文档上的三个硬伤先说清楚痛点你才知道自己该不该折腾。Word 并不是不能用短文档、几页的报告它一点问题没有但只要文档超过一万字、包含几十个公式和上百条参考文献麻烦就成倍增长。第一个硬伤是交叉引用漂移。正文里写“如图 3-2 所示”后来你在前面补了一张图这张图变成图 3-3正文那句话不会自动跟着改。你用 Word 的题注功能能解决一部分但一旦有人用文本框、用了手动编号整套体系就崩了。论文送审前我见过同学手动核对两百多处“见表 X-Y”核到凌晨三点还漏了三处。第二个硬伤是公式。Word 自带的公式编辑器这两年在往 LaTeX 语法靠在公式框里切换到 LaTeX 输入模式敲\frac{a}{b}回车就能变成分式这条路径确实能用。但问题在于多行对齐、编号、跨行括号缩放Word 处理起来很别扭而且一旦你从别处粘贴带全角括号的公式代码它就死活转不出来——这是“Word 的 LaTeX 无法正常显示”最常见的两个原因一是粘贴的括号、逗号、加号是全角字符二是缺少$定界符或者\begin{}没有配对闭合。第三个硬伤是样式统一。行距、字号、标题格式、图注格式改一处就要全文找一遍。Word 的样式功能理论上能解决但绝大多数人写论文是“边写边调格式”写到一半样式已经污染得不成样子。1.2 LaTeX 的本质把排版交给程序LaTeX 的思路和 Word 完全相反。你在 Word 里看到的是“所见即所得”敲下去什么样屏幕上就是什么样。LaTeX 是“所想即所得”的近似版——你写的是内容加标记比如\section{引言}、\cite{zhang2023}然后交给一个编译程序几秒钟后吐出一份排版好的 PDF。这个转变听起来麻烦实际上是把“重复劳动”一次性买断了。你在导言区定义一次“三级标题用小四号黑体”全文几十个三级标题全部生效你写\ref{fig:arch}无论这张图前面插入多少内容编号永远自动正确。生活里有个类比Word 像是手工切菜每一刀都要自己控制厚薄LaTeX 像是先磨好一把模具刀之后所有菜都从同一个模具里压出来。前期磨刀花时间量大之后效率差距就出来了。另外 LaTeX 的公式排版质量至今没有对手学术期刊的正文大多就是用 LaTeX 排的这也是为什么投英文期刊时编辑经常直接要.tex源文件。1.3 哪些人真的适合哪些人别折腾我见过两类翻车的朋友一类是文档只有五页、没有公式、没有文献硬啃 LaTeX两天没跑通环境就放弃了还留下“LaTeX 很难”的心理阴影另一类是明明要写八万字带两百个公式的学位论文非要用 Word最后排版阶段痛苦加倍。场景推荐工具理由5 页以内、无公式、无文献Word / WPS学习成本不划算课程报告10-30 页少量公式Word 或 LaTeX 皆可看后续是否还会写论文学位论文、期刊论文、书籍LaTeX交叉引用、公式、文献管理的收益最大数学建模竞赛论文LaTeX 模板现成模板多公式密集排版规范多人协作、需要版本对比LaTeX Git纯文本diff 清晰比 Word 二进制好管太多一句话判断如果你预计这辈子还要写三篇以上带公式的长文档学 LaTeX 就是稳赚不赔的投资。2. 环境搭建从零到跑出第一份 PDF2.1 TeX 发行版怎么选别在这步卡住LaTeX 本身只是一套宏真正干活的是底层的 TeX 引擎和一大堆宏包它们被打包成“发行版”发布。新手最常卡在这里网上教程一半说装 TeX Live一半说装 MiKTeX还有人推荐在线平台看花了眼。发行版平台特点适合谁TeX LiveWindows / Linux / macOS宏包最全一次装完约 5-7 GB装完基本不用再补包稳妥派写毕业论文首选MiKTeXWindows按需下载宏包初始体积小缺什么自动补硬盘紧张、网络稳定的人MacTeXmacOS本质是 TeX Live 的 Mac 封装版约 5 GBMac 用户在线平台浏览器免安装云端编译适合临时应急换电脑、给合作者看稿我的建议很直接硬盘够就装 TeX Live 或 MacTeX一次装全避免写到一半发现缺宏包还要在线拉取。Windows 用户从官网下载install-tl-windows.exe安装时把“安装 TeX Live 到硬盘”和“调整搜索路径”两项都勾上安装时间大概二十到四十分钟取决于硬盘速度。MacBook 用户可以直接brew install --cask mactex或者下 MacTeX 的 pkg 包双击安装如果嫌 5 GB 太大还有一个BasicTeX精简版但缺点就是经常缺包我个人不太推荐给第一次接触的人。注意安装路径不要带中文和空格。D:\论文\latex这种路径会让某些编译脚本直接报错而且报错信息很含糊查起来费时间。2.2 编辑器怎么选TeXstudio 还是 VS Code装完发行版你还得有个写代码的地方记事本也能写但没有补全和高亮效率低得离谱。主流就三条路。TeXstudio是专门为 LaTeX 做的编辑器开箱即用侧边栏有结构树编译按钮一点就走公式、引用都有补全缺点是界面偏老派写多了会觉得它就是个“只干一件事的工具”。如果你只想尽快出 PDF装它最省事。VS Code LaTeX Workshop是我现在的主力方案。优势在于你写 Python、Markdown、C 都在同一个编辑器里切换成本为零而且 LaTeX Workshop 的功能已经非常完整保存自动编译、PDF 内嵌预览、正反向搜索点 PDF 跳源码点源码跳 PDF、语法检查。PyCharm也能写 LaTeX装 TeXiFy 插件或者在Settings → Tools → External Tools里加一条外部命令指向xelatex。但说实话PyCharm 的重心是 Python 工程LaTeX 只是顺带补全和预览体验不如 VS Code我试过一次就换回去了。2.3 VS Code 配置 LaTeX 的完整流程先说插件。打开扩展面板搜LaTeX Workshop作者是 James Yu装上即可不用再装别的 LaTeX 相关插件重复装会导致快捷键冲突。然后是编译工具链配置。VS Code 默认的编译方式是latexmk它会自动判断需要编译几次交叉引用通常要编译两到三遍才能稳定latexmk 会自动跑完这对新手特别友好。打开settings.json快捷键CtrlShiftP搜 “Open Settings (JSON)”贴入下面这段{ latex-workshop.latex.recipes: [ { name: xelatex x2, tools: [xelatex, xelatex] }, { name: latexmk (xelatex), tools: [latexmk-xe] } ], latex-workshop.latex.tools: [ { name: xelatex, command: xelatex, args: [ -synctex1, -interactionnonstopmode, -file-line-error, %DOC% ], env: {} }, { name: latexmk-xe, command: latexmk, args: [ -synctex1, -interactionnonstopmode, -file-line-error, -xelatex, %DOC% ], env: {} } ], latex-workshop.latex.autoBuild.run: onSave, latex-workshop.view.pdf.viewer: tab, latex-workshop.latex.clean.subfolder.enabled: true, latex-workshop.latex.autoClean.run: onBuilt, latex-workshop.latex.clean.fileTypes: [ *.aux, *.bbl, *.blg, *.idx, *.ind, *.lof, *.lot, *.out, *.toc, *.acn, *.acr, *.alg, *.glg, *.glo, *.gls, *.fls, *.log, *.fdb_latexmk, *.synctex.gz ] }逐条解释为什么这么配。-synctex1是开启正反向搜索没有它 PDF 和源码之间就点不动-interactionnonstopmode让编译遇到错误不弹窗卡住而是把错误写进日志继续跑完方便你一次性看到所有问题-file-line-error把错误信息格式化成“文件名:行号:错误”VS Code 能直接点着跳转这个参数一定要加能省下大量找错的时间。autoBuild.run: onSave是保存即编译配合autoClean在编译成功后清理辅助文件工作目录不会堆一堆.aux、.log、.out。我第一次写论文时目录里攒了三百多个临时文件同步到网盘花了半小时删完瞬间清爽。配好之后新建一个test.tex按CtrlAltB编译按CtrlAltV打开 PDF 预览。能出 PDF环境就算通了。2.4 中文支持与编译链选择这是新手最大的坑中文是绕不过去的一关。早期的CJK宏包方案早就过时了现在统一用ctex 宏包族。做法很简单文档类用ctexart对应 article、ctexrep、ctexbook或者在标准文档类里加\usepackage{ctex}。第二个坑是编译引擎。含中文的文档必须用 XeLaTeX 或 LuaLaTeX 编译不能用 pdfLaTeX。pdfLaTeX 对中文字体的处理很麻烦直接编译会报一堆“Missing character”或者干脆输出空白。在 VS Code 里就是选择刚才配好的xelatex x2或latexmk (xelatex)这条 recipeTeXstudio 里则是在“选项 → 构建”里把默认编译器改成 XeLaTeX。第三个坑是字体。学校模板常常要求正文宋体、标题黑体写法是在导言区指定\usepackage{fontspec} \setmainfont{Times New Roman} \setCJKmainfont{SimSun} % 正文宋体 \setCJKsansfont{SimHei} % 无衬线黑体 \setCJKmonofont{FangSong} % 等宽仿宋Mac 用户把字体名换成Songti SC、Heiti SCWindows 用SimSun、SimHei。写错字体名的后果是编译不报错、但 PDF 里中文全变成方框或者默认字体这种问题不查日志很难发现。3. LaTeX 语法骨架文档结构、宏包与交叉引用3.1 一份能直接跑通的最小模板与其背语法不如先有一份能跑的骨架再往里填东西。下面这份是我给学弟学妹用的通用模板中文、公式、图片、表格、参考文献该有的都有\documentclass[12pt, a4paper]{ctexart} % ---- 页面与字体 ---- \usepackage[top2.5cm, bottom2.5cm, left3cm, right3cm]{geometry} \usepackage{fontspec} \setmainfont{Times New Roman} \setCJKmainfont{SimSun} % ---- 数学 ---- \usepackage{amsmath, amssymb, amsthm, bm} % ---- 图与表 ---- \usepackage{graphicx} \usepackage{subcaption} \usepackage{booktabs} \usepackage{tabularx} \usepackage{longtable} \usepackage{multirow} % ---- 引用与超链接 ---- \usepackage[super, square, sortcompress]{natbib} \usepackage[hidelinks]{hyperref} \usepackage{cleveref} % ---- 自定义命令 ---- \newcommand{\dd}{\mathrm{d}} \newcommand{\R}{\mathbb{R}} \title{基于某某方法的某某研究} \author{张三\\某某大学某某学院} \date{\today} \begin{document} \maketitle \tableofcontents \newpage \section{引言} \label{sec:intro} 这里是引言正文引用一篇文献 \cite{zhang2023}。 交叉引用写法见第 \ref{sec:method} 节公式见 \cref{eq:model}。 \section{方法} \label{sec:method} \subsection{模型建立} \begin{equation} \label{eq:model} \min_{x \in \R^n} f(x) \sum_{i1}^{n} \left( x_i - a_i \right)^2 \end{equation} \section{结论} \label{sec:conclusion} \bibliographystyle{plainnat} \bibliography{refs} \end{document}这份模板值得注意几个地方。\label一定写在\caption或\section之后写在前面会引用到上一节的编号这是新手最常见的一类“引用错位”。hyperref建议放在宏包加载列表的靠后位置它对加载顺序敏感放太早会被后面的宏包覆盖配置。\newcommand定义常用符号比如我习惯把所有微分 d 写成\dd这样排版出来是正体 d符合多数期刊的规范改起来也只需改一处。3.2 宏包怎么选一张常用清单宏包是 LaTeX 生态的精髓也是它让人头大的地方——同名功能有好几个包。下面这张表是我这几年反复用下来的最终选择宏包作用使用要点geometry页面边距论文模板一般要求上下 2.5cm、左 3cmctex中文支持用 XeLaTeX 编译fontspec字体设置只在 XeLaTeX/LuaLaTeX 下生效amsmath数学公式核心几乎必装equation、align都靠它amssymb数学符号补充提供\mathbb、\leqslant等bm粗体数学符号用\bm{\alpha}而不是\boldsymbolgraphicx插图\includegraphics由它提供subcaption子图比老的subfig、subfigure更新更稳booktabs三线表用\toprule、\midrule、\bottomruletabularx自动换行表格配合X列使用natbib或biblatex参考文献期刊模板给哪个就用哪个hyperref超链接与书签加hidelinks去掉难看的红框cleveref智能引用\cref{}自动输出“图 3”“式 (2)”提示宏包加载顺序有讲究hyperref通常放最后几个xcolor和hyperref一起用时xcolor要写在前面。遇到莫名其妙的选项冲突先调整顺序再排查。3.3 章节、目录、交叉引用一次讲透章节命令有七个层级实际论文里常用的就三个\section、\subsection、\subsubsection。再深的层级一般不用因为太深的编号读起来累而且大多数期刊模板最多到三级。目录不用手动写\tableofcontents一条命令编译两遍就自动生成。第一遍生成.toc文件第二遍把内容填进 PDF所以目录空白或者页码不对先想想是不是只编译了一遍。\newpage加在目录后面让它单独占一页学位论文一般还要求目录用罗马数字页码、正文用阿拉伯数字这需要\pagenumbering{Roman}和\pagenumbering{arabic}配合使用。交叉引用的核心就一对命令\label{标签}打标记\ref{标签}或\cref{标签}取用。标签命名我建议统一前缀sec:章节、fig:图片、tab:表格、eq:公式这样在长文档里搜标签时一目了然。\cref比\ref好用它知道引用对象是什么类型会自动补上“图”“表”“式”这些字你不用手动敲也就不会出现“如图 \ref{} 所示”这种半自动的别扭写法。4. 论文写作四大高频场景实操4.1 数学公式从行内到多行对齐公式是 LaTeX 的看家本领也是最容易出问题的地方。基本分两类行内公式和行间公式。行内公式用一对美元符号包裹比如设 $x \in \mathbb{R}^n$ 为决策变量公式跟着文字走不换行、不编号。行间公式用equation环境独占一行且自动编号\begin{equation} \label{eq:loss} L(\theta) \frac{1}{N} \sum_{i1}^{N} \left( y_i - f(x_i; \theta) \right)^2 \lambda \|\theta\|_2^2 \end{equation}这里几个细节值得说。\frac{}{}是分式分子分母各一个参数\sum的上下限用_和^在行间公式里会自动排到 sigma 的正上正下在行内公式里则排在右下角这是 LaTeX 自动判断的不用手动干预\left( ... \right)让括号随内容高度自动缩放你写( )也能用但遇到分式或者矩阵时括号会明显偏小看起来很别扭所以公式里的括号我基本一律用\left\right配对。顺便说下很多人在搜的“左小括号 latex 代码”普通情况下直接输入半角(和)就行注意必须是英文半角中文全角括号会让编译器直接报“Unicode character not set up”。如果你在 Word 里粘贴 LaTeX 公式代码却转换失败八成也是这个原因。多行公式对齐用align环境是用于对齐的位置标记\begin{align} \label{eq:multi} f(x) (a b)^2 \nonumber \\ a^2 2ab b^2 \\ a^2 b^2 2ab \end{align}\nonumber表示这一行不编号\\换行。如果一行公式太长需要折行但对齐要求不严用multline环境如果是一组并列公式想共用一个编号用equation套aligned。符号查不全的时候最省事的办法是装一个符号表 PDF 放桌面或者用在线工具画出符号反查命令。下面这张表是我用得最频繁的符号命令说明α β γ\alpha \beta \gamma希腊字母小写Γ Δ Θ\Gamma \Delta \Theta希腊字母大写∑ ∫ ∏\sum \int \prod求和、积分、连乘≤ ≥ ≠\leq \geq \neq不等号≈ ∼ ≡\approx \sim \equiv约等于、相似、恒等∈ ∉ ⊂\in \notin \subset集合关系∀ ∃ ∞\forall \exists \infty量词与无穷→ ⇒ ↔\rightarrow \Rightarrow \leftrightarrow箭头∂ ∇\partial \nabla偏导与梯度ℝ ℕ ℤ\mathbb{R} \mathbb{N} \mathbb{Z}黑板粗体数集× · ±\times \cdot \pm乘号、点乘、正负4.2 插图、子图与浮动体定位插图用figure环境包\includegraphics\begin{figure}[htbp] \centering \includegraphics[width0.8\textwidth]{figs/framework.pdf} \caption{整体框架示意图} \label{fig:framework} \end{figure}[htbp]是位置建议依次表示 here当前位置、top页顶、bottom页底、page单独一页。这四个字母是建议不是命令LaTeX 会按自己的排版规则决定放哪。很多人抱怨“图跑到文档最后去了”原因是图片太多、页面空间不够LaTeX 只能把它们攒到后面统一放。解决办法有三把\textwidth调小一点给人留空间用\usepackage{float}加[H]强制原位但会让页面底部留大片空白不推荐在正式论文里用或者干脆接受浮动反正有\ref交叉引用读者找得到。图片格式上矢量图PDF、EPS优先无限放大不糊照片类用 PNG 或 JPG。注意要写扩展名或不写都行但要保证文件名里没有中文和空格。子图用subcaption宏包\begin{figure}[htbp] \centering \begin{subfigure}[b]{0.48\textwidth} \centering \includegraphics[width\textwidth]{figs/a.pdf} \caption{未加约束的结果} \label{fig:sub-a} \end{subfigure} \hfill \begin{subfigure}[b]{0.48\textwidth} \centering \includegraphics[width\textwidth]{figs/b.pdf} \caption{加入约束后的结果} \label{fig:sub-b} \end{subfigure} \caption{消融实验对比} \label{fig:ablation} \end{figure}两个子图各占 0.48 倍文本宽度中间用\hfill撑开加起来小于 1 才不会换行。引用时写\cref{fig:sub-a}得到“图 3a”比手敲“图 3(a)”规范。这里有个坑子图的\label必须写在子图内部的\caption之后写到外面会引用到总图的编号。4.3 三线表与表格自动换行学术论文的表格讲究“三线表”也就是顶线、表头线、底线三条横线不用竖线。booktabs宏包专门做这件事\begin{table}[htbp] \centering \caption{不同方法的性能对比} \label{tab:compare} \begin{tabular}{lcc} \toprule 方法 准确率(\%) 耗时(s) \\ \midrule 基线方法 82.4 12.3 \\ 改进方法 A 88.1 15.7 \\ 本文方法 91.6 18.2 \\ \bottomrule \end{tabular} \end{table}这里lcc表示三列分别左对齐、居中、居中。分列\\换行。表格自动换行是搜索量很高的一个问题因为默认的tabular环境不会自动折行单元格里的长文本会一直往右撑最后冲出页面。三种解法第一种用p{}指定列宽例如\begin{tabular}{p{3cm}p{5cm}}内容超过宽度会自动折行但换行后是左对齐且垂直方向默认顶端对齐。第二种用tabularx配合X列X 列会自动分配剩余宽度并折行\begin{tabularx}{\textwidth}{lXc} \toprule 缩写 含义说明 取值 \\ \midrule MAE 平均绝对误差衡量预测值与真实值之间偏差的平均水平 0.32 \\ RMSE 均方根误差对大偏差更敏感常用于回归任务评估 0.45 \\ \bottomrule \end{tabularx}第三种如果只是某一格内容需要换行但对齐格式要自己控制用makecell宏包写成\makecell[c]{第一行\\第二行}就能在单元格内手动换行。三种方法我一般混用大部分表格用tabularx个别需要精细控制的用makecell。表格跨页的话普通table环境做不到得换longtable环境它会在跨页时自动重复表头——学位论文里的符号说明表基本都是长表这一步迟早会遇到。4.4 参考文献BibTeX 与 biblatex 怎么用参考文献是 LaTeX 最省心的一块前提是你先把.bib文件建好。条目格式长这样article{zhang2023, author {张三 and 李四}, title {一种改进的某某算法}, journal {某某学报}, year {2023}, volume {45}, number {3}, pages {123--130}, language {zh} } inproceedings{wang2022, author {Wang, Lei and Chen, Ming}, title {A Fast Method for Something}, booktitle {Proceedings of the International Conference on Something}, year {2022}, pages {1--8}, publisher {ACM} }几个容易出错的点。中文作者用and连接不要用顿号或逗号页码区间用两个连字符--用一个连字符排版出来是短横不符合规范language {zh}是给部分样式识别中文用的不加也不影响编译。正文里用\cite{zhang2023}引用。如果要在引用处同时显示页码写\cite[第 5 页]{zhang2023}。最后在文档末尾放两行\bibliographystyle{plainnat} \bibliography{refs}refs是.bib文件的名字不带扩展名。第一次编译时会出现“引用未定义”的警告这是正常的因为参考文献需要四步流程XeLaTeX → BibTeX → XeLaTeX → XeLaTeX。用latexmk会自动跑完这四步所以我在配置里主推latexmk (xelatex)能省掉大量“为什么引用显示成问号”的困惑。如果期刊模板用的是biblatex现在越来越多写法就换成\usepackage[backendbiber,stylegb7714-2015]{biblatex}加\addbibresource{refs.bib}正文末尾用\printbibliography。注意biblatex配的是biber而不是bibtex用错后端会报“Cannot find file .bcf”这类错误。5. 报错与排查速查表5.1 编译报错怎么读从最后一条往前看LaTeX 的报错信息量大且不友好但有个规律日志里第一个!开头的错误才是根因后面的一串往往是它引发的连锁反应。所以不要从第一行开始读先搜!定位。按!找问题的做法有个前提就是编译时加了-file-line-error日志会输出成main.tex:57: Undefined control sequence直接给出文件和行号。在 VS Code 里这个信息会显示在“问题”面板点一下跳到出错行。常见的几类错误报错信息原因解决办法Undefined control sequence命令拼错或宏包没加载检查拼写补\usepackageMissing $ inserted数学符号写在文本模式里给内容加$...$或用equation环境Runaway argument?花括号没配对找最近的\begin是否有\endFile xxx.pdf not found图片路径或文件名不对检查相对路径和扩展名LaTeX Error: Somethings wrong--perhaps a missing \item表格或列表语法错误检查数量和\\Environment xxx undefined用了未加载的宏包提供的环境补对应宏包Too many unprocessed floats浮动体排不下减少图片尺寸或数量Citation xxx undefined参考文献没编译完跑完 BibTeX/biber 四步流程有个屡试不爽的技巧遇到玄学问题把.aux、.bbl、.toc、.out这些中间文件全删掉重新编译一遍。缓存文件不同步是很多“明明改了却不变”的原因VS Code 里我设了autoClean.run: onBuilt之后这种情况基本绝迹。TeXstudio 里对应的是“工具 → 清理辅助文件”。5.2 中文与字体问题的排查思路中文相关的报错基本集中在三处。第一处是引擎选错。日志里出现大量Missing character: There is no 你 in font或者中文直接消失就是拿 pdfLaTeX 编中文了换 XeLaTeX。第二处是字体名不存在。日志写The font SimHei cannot be found说明系统里没这个字体名字可能是拼写差异Mac 上是Heiti SC也可能是字体确实没装。用fc-list命令Linux/Mac或者 Windows 的字体设置窗口确认准确名称。第三处是编码。老模板可能写着\usepackage[GBK]{inputenc}这个写法在新版 TeX Live 里已经不必要甚至会有副作用直接删掉XeLaTeX 默认按 UTF-8 读取源文件。顺便说编辑器保存文件时务必确认是 UTF-8 编码有些从 Windows 记事本复制过来的内容会带 BOM 头编译时容易出怪问题。5.3 图片、表格、参考文献的典型故障图片最常见的三个问题格式不支持.tif、.bmp在某些引擎下要额外处理统一转 PDF 或 PNG 最省事、文件名带中文或空格、路径用了反斜杠。LaTeX 里路径一律用正斜杠/Windows 也一样写figs/a.pdf而不是figs\a.pdf。表格的典型故障是列数对不上。tabular后面声明了lcc三列你写了四个就会报“Extra alignment tab”。反过来少写一个会报“Misplaced \noalign”。这类错误定位不难看日志行号找到具体那一行数一数就行。参考文献的故障集中在“显示成问号”和“顺序不对”。问号就是编译次数不够多跑两遍顺序不对通常是用错了样式unsrt是按引用顺序排plain是按作者字母排学位论文一般要求按引用顺序那就用unsrt或者国标样式。提示投稿前一定要用期刊给的官方模板和官方示例文件编译一遍把自己的内容替换进去而不是拿自己的模板硬套。我见过因为模板版本不对被退回来重排的情况白耽误一周。6. 我的实战工作流与投稿前避坑清单6.1 目录结构与文件拆分当文档超过三十页把内容全塞进一个.tex会非常难受编译一次要等好几秒滚动条拉半天。我习惯按章节拆文件paper/ ├── main.tex % 主文件只管导言区和 \input ├── refs.bib % 参考文献 ├── figs/ % 所有图片 │ ├── framework.pdf │ └── result.png ├── chapters/ │ ├── 01-intro.tex │ ├── 02-method.tex │ └── 03-experiment.tex └── settings/ └── packages.tex % 宏包集中加载主文件里用\input{chapters/01-intro}引入注意不带扩展名。好处是几个人分别写不同章节时不会互相踩合并时也不会有冲突另一个好处是编译时可以只编译单章用\includeonly改一段不用等全文跑完。宏包集中放在settings/packages.tex主文件里\input{settings/packages}一次引入。这样做的好处在投稿时特别明显期刊要求的格式和我们平时用的不一样只要改这一个文件里的宏包配置和页面设置正文一个字都不用动。6.2 用 Git 管论文比你想的有用学位论文改十几稿是常态导师批注版、外审版、答辩版、最终版文件名后缀能排到_最终版_真的最终版_v3。用 Git 管起来之后这个问题彻底消失。git diff能精确到词级别地告诉你这两稿之间改了什么写“修改说明”时直接把 diff 导出比对着两个 PDF 一页页看快得多。纯文本文件的另一个好处是不会出现“文件损坏打不开”的惨剧。我曾经在交稿前两小时遇到 Word 文档提示修复心跳直接飙到一百二LaTeX 这种纯文本加 Git 的组合从根本上避免了这种风险。实际操作上.gitignore里把编译产生的中间文件排除掉就行*.aux *.log *.out *.toc *.bbl *.blg *.synctex.gz *.fls *.fdb_latexmk *.pdfPDF 要不要排除看个人习惯排除掉可以让仓库干净但如果你想让导师直接看 PDF也可以保留。6.3 投稿前的自检清单这是我每次交稿前都会过一遍的清单能挡掉大部分低级错误全文搜索??确认没有未解析的引用和文献点开目录确认页码和实际页面对得上三级标题都在逐张图核对图注和图内标注是否一致子图编号是否有漏表格检查单位是否标注数字是否统一小数位数公式检查是否每个被引用的公式都有编号没引用的用\nonumber去掉编号参考文献逐条核对特别是中文文献的作者格式和页码用 PDF 阅读器看一遍全文确认没有图片被挤到页边、没有表格跨页断得不合理如果期刊要求匿名评审检查正文和 PDF 属性里有没有作者信息残留。最后分享一个我踩过的坑有一次投稿前一天我把\bibliographystyle从plain改成期刊要求的样式忘了重新跑编译直接提交了 PDF结果参考文献格式完全不对被编辑退回重投。改任何导言区配置之后务必完整编译一遍并肉眼检查输出结果不要只看编译没有报错就以为万事大吉。编译通过和排版正确是两件事这一点在 LaTeX 里尤其明显。