新闻详情

新闻详情

首页 / 资讯中心 / 详情

Overleaf LaTeX 常用代码模板与配置速查指南

发布时间:2026/9/29 1:32:01来源:尧图网络
Overleaf LaTeX 常用代码模板与配置速查指南
第一次用 Overleaf 是在赶一篇会议论文的时候同组的一位师兄直接甩了个链接过来说“别折腾本地环境了浏览器里写就行”。当时我还在本地装 TeX Live光是下载就卡了一下午。后来几年里从学生作业、毕业论文到投稿的期刊稿件、技术报告我几乎把所有 LaTeX 写作都搬到了 Overleaf 上。用得久了会发现真正决定效率的不是你记了多少命令而是有没有一套固定下来、随手能复用的常用代码模板——导言区怎么配、公式怎么写得又快又不报错、图怎么插才不会被顶到十几页之后、参考文献怎么一次编译通过、多人改稿时修订模式怎么开。这些细节在官方文档里都查得到但分散在几十个页面里每次都要重新翻一遍实在不划算。这篇内容就是把我这些年在 Overleaf 上反复用到的代码和配置整理成一份可以直接抄的清单。不管你是刚接触 LaTeX 的新手还是已经写过几篇东西但每次都要回头搜“子图怎么并排”的老手都能在里面找到能立刻复制粘贴的片段。我不会只丢代码出来每个配置背后为什么这么写、不这么写会出什么问题也会一并说清楚这样你下次改的时候知道该动哪儿。1. 从零搭一个能跑的 Overleaf 项目骨架很多人第一次用 Overleaf 的体验是新建空白项目打开 main.tex看到里面只有几行样板代码然后就开始往下堆内容堆到两百行以后编辑器开始卡想找一段公式得靠 CtrlF 翻半天改个图的位置还要担心会不会把别的东西带崩。这种“一锅炖”的写法在文档不超过五页时还能凑合一旦上了十页就是灾难。1.1 为什么建议一开始就按章节拆文件Overleaf 的项目本质上就是一个文件夹你可以往里放任意多个.tex文件。主文件负责导言区配置和整体结构每一章单独一个文件用\input或\include拉进来。这样做的好处有三个层面。第一是编译速度Overleaf 的免费账户单次编译有时间上限文档越大越容易触发超时拆分成子文件后如果你用\includeonly指定只编译某一章编译时间能明显下降。第二是协作体验两个人同时改不同章节时文件级别的冲突比行级别的冲突好处理得多。第三是心理负担改一章就专注一个文件不用在几百行的滚动条里找那段写错的公式。\input和\include的区别值得单独讲一下。\include会自动在内容前后加分页符适合章与章之间本来就该另起一页的场景\input是纯粹的文本插入不额外加分页适合插表格、插公式片段、插代码片段。另外\includeonly只对\include生效对\input不起作用所以如果你有频繁分章编译的需求主结构用\include更合适。\documentclass[11pt,a4paper]{article} \input{preamble} % 所有宏包和自定义命令放这里 \begin{document} \input{sections/abstract} \input{sections/intro} \include{sections/method} \include{sections/experiment} \include{sections/conclusion} \printbibliography \end{document}把导言区单独抽到preamble.tex里是另一个被低估的习惯。当你手里同时有三四个项目时preamble 基本是同一份抽出来之后新项目直接复制这个文件改都不用改省下的时间很可观。1.2 目录结构怎么摆才不乱我一般用这样的结构根目录放main.tex和preamble.tex一个sections/放正文一个figs/放图片一个code/放要插入的 Python 文件refs.bib放文献。图片统一放figs/之后在导言区加一句\graphicspath{{figs/}}正文里就只需要写\includegraphics{pipeline.pdf}不用每次都带路径。这个改动看起来很小但当你从figs/chapter3/挪到figs/的时候不用去改正文里的每一条引用。提示Overleaf 的项目文件树支持拖拽上传整个文件夹的压缩包但上传后路径会保留如果本地是figs/ch3/xxx.pdf这种结构记得在\graphicspath里把每一层都写上或者上传前先在本地把路径拍平。还有一点.bib文件不要放在子目录里再由\addbibresource{refs/refs.bib}去引虽然语法上没问题但 Overleaf 偶尔在编译缓存上会犯迷糊放在根目录最省事。2. 导言区常用宏包一次配齐少踩坑导言区是 Overleaf 项目里最容易越滚越长的部分每个宏包单看都有用但加载顺序和选项一旦配错报错信息往往指向一个你根本没写过的地方排查起来很费劲。下面这套配置是我这几年迭代下来比较稳的组合覆盖了论文、报告、技术文档的绝大多数需求。2.1 中文排版与编译引擎的选择写中文内容时第一个要做的决定是编译引擎。Overleaf 左上角 Menu 里可以切换 pdfLaTeX、XeLaTeX、LuaLaTeX 三种。处理中文字符pdfLaTeX 需要额外做编码转换字体支持也麻烦直接用 XeLaTeX 最省心它原生支持 Unicode调用系统字体也方便。Overleaf 的服务器上预装了一批中文字体ctex宏包会自动挑一个可用的不用自己指定。最简单的写法是用ctexart文档类它把中文相关的设置全部打包好了\documentclass[11pt,a4paper]{ctexart}如果你需要更细的控制或者文档类已经被模板固定成article不能改那就单独加载ctex宏包\documentclass[11pt,a4paper]{article} \usepackage[UTF8]{ctex}这里有个细节ctex宏包的UTF8选项在较新版本里已经可以省略因为它默认就是 UTF-8。保留着也不会有问题只是看着冗余。真正需要显式配置的是字体如果你投稿的模板要求用宋体正文、黑体标题可以这样写\usepackage[UTF8,fontsetwindows]{ctex}fontset的取值有windows、mac、fandol、ubuntu等。在 Overleaf 上windows和mac对应的字体不一定都在服务器上稳妥的选择是fandol它是开源中文字体集Overleaf 和本地 TeX Live 都有。如果编译时报“Font not found”八成是 fontset 选错了。2.2 页面、行距和链接的常规配置页面边距用geometry控制比手动改\textwidth靠谱得多因为它会连带把页眉页脚、边注的位置一起算好。\usepackage{geometry} \geometry{left2.5cm,right2.5cm,top2.8cm,bottom2.8cm}行距方面setspace宏包提供\onehalfspacing和\doublespacing投稿时很多期刊要求双倍行距审稿人好写批注。中文文档里还有一个\linespread{1.3}的写法两者效果接近但setspace在脚注和表格里表现更稳定不会把整个脚注也撑得很大。超链接和书签用hyperref这个宏包有个众所周知的坑它必须尽量晚加载放在几乎所有其他宏包之后否则会覆盖掉其他宏包定义的命令。典型顺序是最后加载hyperref然后如果要用cleveref再放在hyperref之后。\usepackage{amsmath,amssymb,mathtools,bm} \usepackage{graphicx} \usepackage{subcaption} \usepackage{booktabs} \usepackage{tabularx} \usepackage{listings} \usepackage{xcolor} \usepackage[colorlinkstrue, linkcolorblue!60!black, citecolorgreen!50!black, urlcolorblue!70!black]{hyperref} \usepackage{cleveref}colorlinkstrue的作用是把链接框去掉直接给文字上色。默认的彩色框在 PDF 里看很扎眼打印出来也显得不专业换成彩色文字清爽很多。linkcolor用blue!60!black这种混色写法比纯蓝柔和读起来不刺眼。3. 数学公式的常用写法与排版细节公式是 LaTeX 最核心的价值所在也是新手报错最集中的地方。最常见的报错Missing $ inserted几乎都跟公式环境有关原因是在文本模式里写了数学符号比如直接敲了_或^或者用了\alpha却没套进$...$里。3.1 行内、行间与多行对齐行内公式用$...$行间不带编号的用\[...\]带编号的用equation环境。行内写法设样本量为 $N$则误差上界为 $\mathcal{O}(1/\sqrt{N})$。 行间不编号 \[ \mathcal{L}(\theta) \sum_{i1}^{N} \log p(x_i \mid \theta) \] 行间带编号 \begin{equation} \label{eq:loss} \mathcal{L} -\frac{1}{N}\sum_{i1}^{N} \left[ y_i \log \hat{y}_i (1-y_i)\log(1-\hat{y}_i) \right] \end{equation}多行推导用align是对齐点\\换行。这里有个新手常犯的错每一行都自动带编号如果不想要编号在行尾加\nonumber或者用align*让整个环境都不编号。混用的情况很常见比如前三行推导过程不要编号最后一行结论要编号那就前三行加\nonumber。\begin{align} \hat{\theta} \arg\max_{\theta} \prod_{i1}^{N} p(x_i \mid \theta) \nonumber \\ \arg\max_{\theta} \sum_{i1}^{N} \log p(x_i \mid \theta) \label{eq:mle} \\ \arg\min_{\theta} -\sum_{i1}^{N} \log p(x_i \mid \theta) \nonumber \end{align}分支函数用cases这个环境需要amsmath。注意cases里每一行的条件部分要写成文本的话得用\text{}包起来否则中文字符会出问题。\begin{equation} f(x) \begin{cases} x^2, x 0 \\ 0, x 0 \\ -x, \text{其他情况} \end{cases} \end{equation}矩阵用pmatrix、bmatrix、vmatrix分别对应圆括号、方括号、竖线。多字母变量名在矩阵里要用\text{}或者\mathrm{}否则会被当成多个变量相乘字距也会很奇怪。\begin{equation} \bm{A} \begin{bmatrix} a_{11} a_{12} \cdots a_{1n} \\ a_{21} a_{22} \cdots a_{2n} \\ \vdots \vdots \ddots \vdots \\ a_{m1} a_{m2} \cdots a_{mn} \end{bmatrix} \end{equation}矩阵里省略号用\cdots横向、\vdots纵向、\ddots斜向别用\dots虽然能编译但方向不一定对。3.2 自定义命令和运算符让公式少出错写长文档时反复出现的符号和表达式一定要用\newcommand包起来好处不只是少打字。假设你有一个向量符号一直写成\boldsymbol{\theta}写到第一百次的时候手滑写成\boldmath或者漏了个括号编译就会在那个位置断掉而报错信息指向的行号往往是你完全没注意到的地方。定义成命令之后改一次全局生效也不会写错。\newcommand{\vect}[1]{\boldsymbol{#1}} \newcommand{\mat}[1]{\mathbf{#1}} \newcommand{\norm}[1]{\left\lVert #1 \right\rVert} \newcommand{\abs}[1]{\left\lvert #1 \right\rvert} \newcommand{\inner}[2]{\left\langle #1, #2 \right\rangle}自定义运算符用\DeclareMathOperator它会自动处理上下标位置。直接写\text{argmin}的话下标会跑到右边而不是正下方排版上不标准。\DeclareMathOperator*{\argmin}{arg\,min} \DeclareMathOperator*{\argmax}{arg\,max} \DeclareMathOperator{\sign}{sign} \DeclareMathOperator{\tr}{tr}这里带星号的版本让上下标出现在正下方用于\argmin_{\theta}这类写法不带星号的版本上下标在右侧用于\tr(A)这种。判断标准很简单如果这个运算符后面跟的是一个优化变量要写在正下方就用带星号的。注意\DeclareMathOperator必须在导言区调用写在\begin{document}之后会报错。这一点和\newcommand不同后者在正文里也能定义但只在定义点之后生效容易造成“前面能用后面不能用”的诡异现象所以统一放导言区最保险。4. 图表排版图片、子图和三线表图和表是论文里最容易把人折磨到深夜的部分。图片位置乱跑、子图宽度对不齐、表格线条粗细不一致、宽表格超出页面这些问题几乎每个人都遇到过。4.1 图片插入与浮动位置调优基础插入用figure环境加\includegraphics。位置参数[htbp]的意思是优先放当前位置here不行就放页顶top再不行放页底bottom最后放单独一页page。LaTeX 会按这个优先级自己决定你没法强制它一定放在某处除非用float宏包的[H]参数。\begin{figure}[htbp] \centering \includegraphics[width0.85\linewidth]{pipeline.pdf} \caption{系统整体流程示意} \label{fig:pipeline} \end{figure}width0.85\linewidth里的\linewidth是当前文本宽度用比例而不是固定厘米数换模板、换纸张大小时图会自动跟着缩放不用手工调。图片源文件优先用 PDF 或 EPS 这类矢量格式放大不会糊如果只有位图PNG 比 JPG 好因为 JPG 在有文字的图上有明显的压缩伪影。分辨率上照片类的图 300 dpi 够用纯线条图建议 600 dpi不然放大看会有锯齿。图被顶到很后面的时候很多人第一反应是把[htbp]改成[H]强制定位结果图是听话了但页面底部留出大片空白很难看。我的经验是与其跟 LaTeX 较劲不如调整图的大小让它能塞进当前页剩余的空间。把width从0.9\linewidth降到0.7\linewidth往往就能让它提前一页出现。另一个技巧是在导言区放宽浮动体的限制\renewcommand{\topfraction}{0.9} \renewcommand{\bottomfraction}{0.8} \renewcommand{\textfraction}{0.07} \renewcommand{\floatpagefraction}{0.75}这四个参数控制的是页面里浮动体允许占的比例默认值偏保守放宽之后图更容易就近放置代价是页面排版稍微挤一点。4.2 子图并排和宽度计算两张图并排用subcaption宏包每个子图占0.48\linewidth中间用\hfill撑开加起来刚好填满一行。为什么是 0.48 而不是 0.5因为两张 0.5 的图之间只要有一点点间隙就会换行而且\hfill本身占的空间虽然为零但两个浮动体之间的换行符会被解释成一个空格所以留一点余量最稳。\begin{figure}[htbp] \centering \begin{subfigure}[b]{0.48\linewidth} \centering \includegraphics[width\linewidth]{result_a.pdf} \caption{方案 A} \label{fig:sub_a} \end{subfigure} \hfill \begin{subfigure}[b]{0.48\linewidth} \centering \includegraphics[width\linewidth]{result_b.pdf} \caption{方案 B} \label{fig:sub_b} \end{subfigure} \caption{两种方案的结果对比} \label{fig:compare} \end{figure}排成两行四张图的时候宽度用0.48配\hfill每两张后面空一行\\再加\vspace{0.5em}这样两行之间不会贴得太紧。要注意的是子图的\caption和主图的\caption层级不同子图的编号是(a)、(b)主图是1、2引用的时候如果只写\ref{fig:compare}拿到的是主图编号想引用具体子图就用\ref{fig:sub_a}。4.3 三线表与超宽表格的应对学术表格的主流样式是三线表用booktabs宏包的\toprule、\midrule、\bottomrule它画出来的线有粗细区分比默认的\hline好看很多而且上下留白更合理。用\hline加booktabs是常见的错误搭配两者会打架间距会变得很奇怪。\begin{table}[htbp] \centering \caption{不同方法的指标对比} \label{tab:result} \begin{tabular}{lcc} \toprule 方法 准确率 单次耗时 (ms) \\ \midrule 基线模型 0.812 12.4 \\ 改进版本 0.876 14.8 \\ 本文方法 \textbf{0.897} 15.1 \\ \bottomrule \end{tabular} \end{table}表格宽度超出页面时tabularx是首选方案。它提供X列类型宽度自动撑满指定的总宽度文字自动换行。\begin{tabularx}{\linewidth}{lXX} \toprule 配置项 说明 适用场景 \\ \midrule 学习率 控制每次参数更新的步长过大会震荡过小收敛慢 所有训练任务 \\ 批大小 单次前向传播的样本数受显存限制 深度学习训练 \\ \bottomrule \end{tabularx}还有一种情况是表格列数太多即使自适应宽度也排不下这时候用sidewaystable把表格旋转 90 度需要rotating宏包。旋转后的表格会单独占一页页眉页脚也会跟着转预览的时候得把头歪过来看。如果表格要跨页换成longtable它在跨页时会自动重复表头。5. 参考文献与交叉引用的正确姿势参考文献这块Overleaf 上最容易出现的问题是“引用显示成问号”或者“编译后参考文献没出来”。根源基本都在编译流程上而不是代码写错了。5.1 选 BibTeX 还是 biblatex老牌的方案是natbib加 BibTeX兼容性最好绝大多数期刊模板都用这套。新的方案是biblatex加 Biber功能强很多支持中文文献排序、多语言条目、按类型分节等代价是某些固定模板不兼容。如果你的目标是中文期刊或者学位论文gb7714-2015这个样式基本能满足要求\usepackage[backendbiber,stylegb7714-2015]{biblatex} \addbibresource{refs.bib}正文末尾用\printbibliography输出文献列表不需要额外写\bibliographystyle和\bibliography。如果是英文期刊或者模板已经指定了 BibTeX那就用\usepackage[numbers,sortcompress]{natbib} ... \bibliographystyle{plainnat} \bibliography{refs}sortcompress选项的作用是把连号引用合并比如[1,2,3]显示成[1-3]这在参考文献多的论文里能省不少版面。.bib文件的条目格式要留意article必须至少有author、title、journal、year四个字段缺了哪个都会在编译时警告虽然不一定会报错但生成出来的文献条目可能是残缺的。作者名的写法中文用拼音或者中文都可以但author {张三 and 李四}里必须用and分隔用逗号或者顿号都会被当成一个人名处理。提示Overleaf 有内置的参考文献搜索功能输入标题就能自动补全 BibTeX 条目比自己手敲省事也能避免字段拼写错误。不过自动抓取的条目偶尔会有大小写问题比如把会议名缩写的每个字母都变成小写生成出来的文献看着不规范建议抓完手动检查一遍。5.2 标签命名规范与引用命令交叉引用最容易出乱子的地方是标签名。见过太多人写\label{fig1}、\label{tab2}这种写到后面根本记不住哪个 1 是哪个。我的习惯是统一用“类型:含义”的格式全部小写单词之间用连字符或下划线。类型前缀示例说明图fig:pipeline图片、流程图、示意图表tab:result数据对比表公式eq:loss带编号的公式章节sec:method章节标题算法alg:train伪代码块好处是编辑器里输入\ref{之后补全列表一目了然按前缀分组找起来快。引用命令上\ref只给编号\eqref会给公式编号自动加括号\cref会自动带上“图”“表”“公式”这类前缀。cleveref的\cref特别好用写\cref{fig:pipeline}输出的是“图 3”写\cref{tab:result,fig:pipeline}会自动处理成“表 2 和图 3”。要注意\cref在句首用大写版本\Cref否则句首是小写的“图”看着别扭。如图 \ref{fig:pipeline} 所示整体流程分为三个阶段。 如 \cref{fig:pipeline} 所示整体流程分为三个阶段。 如 \cref{tab:result,fig:pipeline} 所示……6. 修订模式与多人协作流程多人一起写文档最容易失控的不是内容本身而是“谁改了什么”这件事说不清楚。Overleaf 的修订模式和版本历史就是解决这个问题的。6.1 Review 面板开启修订和批注打开项目后编辑器右上角有一个 Review 按钮点开之后能看到 Track Changes 开关。打开之后你所有的插入内容会以彩色文字标出删除的内容会保留在原文位置并用删除线加颜色标出右侧会显示相应的接受/拒绝按钮。这个机制和 Word 的修订模式逻辑一致但更轻量因为它记录的是文本层面的差异不涉及格式。需要说明的是修订模式记录的是“这次会话中你的改动”而不是某个文件从创建至今的全部改动。所以开启之前最好和协作者约定好谁负责哪一段、什么时候开修订、什么时候提交。我遇到过的情况是两个人同时开着修订改同一段编辑历史里两种颜色交错审阅的时候要一条条比对比自己重写一遍还费时间。批注功能写在正文里用\todo{}或者直接右键加评论Overleaf 的评论会挂在具体的行上鼠标悬停能看到。todonotes宏包可以在 PDF 里生成边注形式的待办事项适合自己写初稿时标记“这里要补实验”之类的提醒。\usepackage[colorinlistoftodos]{todonotes} \todo[inline]{这里需要补充消融实验的说明} \todo{检查这个引用的年份}inline选项会让待办事项显示在正文里而不是页边宽度大的批注用这个更清晰。定稿前记得全局搜索\todo清一遍不然提交上去带着待办标记就很尴尬了。6.2 版本历史和冲突处理Overleaf 的 History 功能会保存每次编辑的快照可以按时间轴回看也能把某个历史版本直接恢复。这个功能救过我至少两次一次是误删了一大段实验描述一次是替换文本时正则写错把全文的某类标点都换掉了都是靠历史版本找回的。多人同时编辑同一文件时Overleaf 采用的是实时协同光标位置会显示成不同颜色的标记。它不会像 Git 那样产生冲突文件但会出现“后写覆盖先写”的情况两个人在同一行上改了不同内容最终只保留后一个保存的。避免的办法很简单分工按文件分不要两个人同时改同一个.tex。如果项目规模大了需要更严格的版本管理Overleaf 付费版支持 Git 集成可以把项目 clone 到本地用常规的 Git 流程管理。免费版没有这个功能但可以定期用 Menu 里的 Download 打包下载作为手动备份。场景推荐做法原因两人改不同章节按文件分工避免同行覆盖导师审阅批注开 Track Changes改动可视化方便逐条处理大幅结构调整新建分支文件保留原稿方便回退定稿前全局搜\todo和XXX清理遗留标记7. Python 代码清单在 Overleaf 里的排版方案技术文档里插代码是刚需尤其是写实验报告、算法说明、工具使用手册的时候。Overleaf 上有两种主流方案各有取舍。7.1 listings 的配置模板listings是纯 LaTeX 实现不依赖外部程序编译速度快在 Overleaf 上开箱即用。缺点是语法高亮的精细程度一般。下面这套配置我用了很久配色不刺眼行号和边框都齐了\usepackage{listings} \usepackage{xcolor} \definecolor{codebg}{gray}{0.96} \definecolor{codecomment}{rgb}{0.0,0.45,0.0} \definecolor{codestring}{rgb}{0.65,0.1,0.1} \definecolor{codenum}{gray}{0.5} \lstset{ basicstyle\ttfamily\small, keywordstyle\color{blue!70!black}\bfseries, commentstyle\color{codecomment}\itshape, stringstyle\color{codestring}, numbersleft, numberstyle\tiny\color{codenum}, backgroundcolor\color{codebg}, framesingle, rulecolor\color{gray!40}, breaklinestrue, breakatwhitespacefalse, showstringspacesfalse, tabsize4, columnsflexible, languagePython, captionposb }breaklinestrue必须开否则长行代码会直接冲出页面边界。breakatwhitespacefalse让它允许在任意字符处断行代价是断点可能不好看但对 Python 这种缩进敏感的语言来说比断在奇怪的地方要好。showstringspacesfalse是为了避免字符串里的空格被显示成下划线之类的标记这在粘贴代码时经常出问题。插入时直接\begin{lstlisting}[caption{数据预处理的实现},label{lst:preprocess}] def normalize(x): mu x.mean(axis0) sigma x.std(axis0) 1e-8 return (x - mu) / sigma \end{lstlisting}如果代码本身有中文注释listings需要额外配置才能正常显示。在导言区加\lstset{ extendedcharstrue, inputencodingutf8, literate{中}{{\CJKfontspec{SimSun}中}}1 {文}{{\CJKfontspec{SimSun}文}}1 }这种逐字映射的写法很笨实际用起来更简单的办法是把代码里的中文注释改成英文或者直接用minted。7.2 minted 的取舍minted底层调用 Python 的 Pygments 库做高亮效果比listings好不少支持的语言也多。Overleaf 的服务器上装了 Pygments所以可以直接用不需要额外配置。代价是每次编译都要调用外部程序编译时间明显变长代码量大的文档会很慢。\usepackage{minted} \setminted{ linenostrue, framesingle, fontsize\small, breaklinestrue, tabsize4 } \begin{minted}{python} def normalize(x): mu x.mean(axis0) sigma x.std(axis0) 1e-8 return (x - mu) / sigma \end{minted}minted对中文的处理比listings好只要编译引擎是 XeLaTeX中文注释基本能正常显示。如果你的文档里代码片段超过二十处或者单段代码超过一百行我建议还是用listings编译时间省下来的是实打实的时间。写一两次的短片段用minted换更好的观感。还有一个折中方案把 Python 代码单独存成code/xxx.py用\lstinputlisting引入。这样代码在本地能直接用编辑器跑不用在.tex文件里维护两份。\lstinputlisting[languagePython,caption{训练主循环},label{lst:train}]{code/train.py}好处很明确代码改了不用同步改文档.py文件还能直接被 Python 执行验证。缺点是 Overleaf 项目里传.py文件需要在文件树里手动上传批量更新时比较麻烦。8. 编译报错排查实录与速查表LaTeX 的报错信息有个共性它告诉你的行号往往是错误被“发现”的位置而不是错误“产生”的位置。比如你在第 200 行漏了一个\right)报错可能出现在第 350 行。理解这一点排查效率会高很多。8.1 常见报错对照表报错信息常见原因处理办法Undefined control sequence命令拼错或宏包未加载检查命令拼写确认对应宏包在导言区Missing $ inserted文本模式里写了数学符号检查_^\alpha等是否在公式环境内File xxx.pdf not found图片路径或文件名不对检查大小写、扩展名确认\graphicspath配置Citation xxx undefined编译次数不够或 bib 文件路径错完整编译一遍含 BibTeX/Biber检查\addbibresourceLaTeX Error: Environment xxx undefined环境名拼错或宏包缺失核对环境名检查是否加载了对应宏包Overfull \hbox内容超出文本宽度多为长公式或长单词用allowbreak或手动换行Emergency stop严重错误导致编译中断看日志最上面那条错误后面的连带错误通常可忽略Too deeply nested列表嵌套超过四层精简嵌套层级或用自定义列表替代TeX capacity exceeded递归宏定义或无终止循环检查自定义命令是否自我引用Overfull \hbox严格说不是错误只是警告编译能通过但 PDF 里那一行会突出版心。如果出现在正文段落里通常是某个长 URL 或者长英文单词没法断行用\-手动指定断点或者加载microtype宏包让它自动优化字距。8.2 日志阅读与二分定位法Overleaf 的日志面板在编辑器下方点 Logs 就能看到。日志很长但真正有用的只有以!开头的那几行那是真正的错误Warning开头的是警告不影响编译但值得看一眼其余是宏包加载和文件读取的记录基本可以跳过。当错误定位不准的时候二分法是最快的。把文档后半部分整体注释掉看错误还在不在。如果在说明问题在前半部分继续二分如果不在问题在后半部分把注释范围缩小。一般三四轮就能锁定到具体段落比一行行读日志快得多。这个办法在处理“报错行号指向空行”这类诡异问题时特别管用。编译超时是 Overleaf 上另一个高频问题。免费账户的单次编译有时间限制文档大、图多、用了minted或者pgfplots画复杂图形时容易触发。应对手段按优先级排第一用\includeonly只编译正在改的章节第二把高分辨率的位图提前压缩别用手机拍的原图直接插第三minted换成listings第四把tikz画的图导出成 PDF 再插入不要每次编译都重画一遍。8.3 几个反直觉的小坑有几个问题我踩过之后印象特别深值得单独拎出来说。第一个是文件名大小写。Windows 系统对文件名大小写不敏感Fig1.png和fig1.png被当成同一个文件。但 Overleaf 的服务器是 Linux这两个是不同的文件。本地能编译、传上去就报“图片找不到”八成是这个原因。文件名统一用小写加连字符能避免这个问题。第二个是\label的位置。\label必须写在\caption之后写在之前的话引用到的是上一节的编号。这个顺序错了不会报错只是编号会莫名其妙地不对很难发现。第三个是特殊字符。#、$、%、、_、{、}、~、^、\这十个字符在 LaTeX 里有特殊含义正文里想直接显示得转义比如\%显示百分号\_显示下划线\显示与号。文件路径里带下划线的时候特别容易中招写\includegraphics{my_file.png}会报错因为_被当成下标符号正确写法是用\detokenize或者直接把文件名里的下划线改成连字符。第四个是宏包冲突。加载了两个功能重叠的宏包时后加载的会覆盖前一个的定义报错信息往往出现在调用的时候而不是加载的时候。典型的冲突组合包括subfig和subcaption、caption和部分期刊模板自带的标题设置。遇到莫名其妙的命令失效先想想是不是最近加了什么新宏包注释掉试试。第五个是复制粘贴带来的隐形字符。从网页或者其他编辑器复制内容到 Overleaf 时有时会带上不可见的 Unicode 字符比如不换行空格。这类字符在编辑器里看不出来编译时报Unicode character not set up for use with LaTeX很难定位。解决办法是用\DeclareUnicodeCharacter声明或者干脆重新手打一遍那段内容。我个人在实际操作中的体会是把上面这些配置整理成一份preamble.tex存好新项目直接拖进去能省掉百分之八十的重复劳动。剩下那百分之二十基本都是模板强加的约束比如期刊要求特定的文档类、特定的参考文献样式、特定的页面边距这些只能按模板走改不了。但即便如此正文里的公式写法、图表代码、交叉引用规范、代码清单配置这些是通用的攒一份自己的片段库写文档这件事就会从“每次都要重新学一遍”变成“拼装”。最后再分享一个用得挺多的技巧Overleaf 支持自定义快捷键片段可以在 Account Settings 里配置 Snippets比如把fig映射成一段完整的figure环境模板敲三个字母就能展开。写图多的文档时这个功能省下的时间比想象中多。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

VSCode神级AI插件Cline:从安装到实战【创建微信小程序扫雷】 2026/9/29 4:21:09

VSCode神级AI插件Cline:从安装到实战【创建微信小程序扫雷】

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Trae+MCP 知识库检索精度暴涨300%:PostgreSQL 配置与验证喂饭级教程 2026/9/29 4:21:09

Trae+MCP 知识库检索精度暴涨300%:PostgreSQL 配置与验证喂饭级教程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
看懂DSH小鲸鱼挂件的记账账本:8位精度观测、币种感知与余额校正技巧 2026/9/29 4:21:09

看懂DSH小鲸鱼挂件的记账账本:8位精度观测、币种感知与余额校正技巧

看懂DSH小鲸鱼挂件的记账账本:8位精度观测、币种感知与余额校正技巧 【免费下载链接】DeepSeek-Balance-Whale-Widget DeepSeek Harness(DSH)一只住在 DSH 界面右下角的小鲸鱼娘,帮你盯着DeepSeek账户余额。QQ弹弹,支持…

阅读更多 →
Claude Desktop 配 TaoToken + Seedance MCP:聊天窗口里跑通字节视频生成 2026/9/29 4:21:03

Claude Desktop 配 TaoToken + Seedance MCP:聊天窗口里跑通字节视频生成

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
80000 ops/s的claim是如何实现的?完整拆解SQLite任务队列honker的_honker_live表与部分索引 2026/9/29 4:21:03

80000 ops/s的claim是如何实现的?完整拆解SQLite任务队列honker的_honker_live表与部分索引

80000 ops/s的claim是如何实现的?完整拆解SQLite任务队列honker的_honker_live表与部分索引 【免费下载链接】honker SQLite extension bindings for Postgres NOTIFY/LISTEN semantics with durable queues, streams, pub/sub, and scheduler 项目地址: https:/…

阅读更多 →
OpenClaw 定时任务配置详解:TaoToken 统一 Key 接入与 Crontab 排错指南 2026/9/29 4:21:03

OpenClaw 定时任务配置详解:TaoToken 统一 Key 接入与 Crontab 排错指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉