简介:西北工业大学LaTeX论文模板专为硕博研究生毕业设计打造,针对Word排版中公式调整繁琐、目录手动生成等问题,提供一套可切换的LaTeX方案。模板整合学校格式要求,并兼容在线Overleaf协同编辑与离线编译,适合不同熟练度的用户。资源包共50个文件,压缩后4.14MB,包含cls样式定义、dtx模板源码、tex主文件、bst参考文献样式、ttf字体、png预览图及PDF样例等,结构清晰,便于二次修改与学习。目前已有248人学习下载。借助该模板,用户可直接获得封面、中英文摘要、声明、附录、盲审开关等完整模块,公式与图片排版美观规范,参考文献管理和目录生成自动完成,大幅降低学位论文撰写的格式调整成本。
1. LaTeX 论文模板不是装上就能跑:先弄懂它替你做了什么
打开某工业大学 LaTeX 论文模板压缩包的那一刻,你大概率会看到五六十个文件和一个 README。别慌,这个模板本质上不是「一个文件」,而是一整套排版约束:它规定了页面尺寸、字体、行距、目录格式、图表编号规则、参考文献样式,还替你把学位论文的封面、声明页、摘要页、附录、盲审版本全都做成了可切换的开关。你不需要从零写宏包,但你需要理解它「在什么时候读哪些文件、在什么地方改参数」,否则编译出来的 PDF 不是丑一点的问题,而是直接被格式审查打回重来。
这篇内容适合两类人:一类是马上要交论文、手里攒了 Word 稿的毕业生,想知道把内容迁进 LaTeX 要几步、坑在哪;另一类是刚进实验室、打算用这套模板写小论文和开题报告的初学者,想先弄清楚模板的结构再动手。我会从一个用这套模板交过盲审稿的普通工程师视角,把它拆成「目录体系 → 编译命令 → 内容迁移 → 格式开关 → 踩坑记录」来写,每一步都给你能照做的命令和参数。
2. 模板目录与编译管线:从 main.tex 到 PDF 的最小命令
2.1 模板目录里每个文件是干什么的
大多数 LaTeX 论文模板不是单文件,而是一个「主文件 + 分章文件 + 配置 + 参考文献 + 图片」的工程。我建议你拿到模板后先按文件后缀归类,而不是直接双击 main.tex 开编。常见布局是:
| 文件/目录 | 作用 | 你通常需要动它吗 |
|---|---|---|
| main.tex | 主控制文件,按顺序引入章节、设置文档类选项 | 要,改内容结构时动它 |
| preface/ 或 frontmatter/ | 封面、声明、摘要、目录等前置部分 | 要,填你自己的信息 |
| chapters/ 或 body/ | 正文章节,每个 .tex 是一章 | 最重要,你的正文全在这里 |
| figures/ 或 images/ | 插图目录 | 往里放图 |
| reference.bib | BibTeX 参考文献库 | 要,替换成你的引用 |
| config/ 或 sty/ | 自定义样式和宏包 | 通常不用动,除非要改格式 |
| bst 文件 | 参考文献排序和格式定义 | 一般不动 |
| compile.sh 或 latexmkrc | 编译脚本 | 推荐直接用 |
在这个结构里,main.tex 是你的「总装车间」。你写的每一章都通过\include{chapters/chapter1}这样的命令被装进来。我在第一次用模板时犯过的一个错是想把目录清干净,删掉了几个「看起来没用」的 .sty 文件,结果编译报错一片红。后来才明白,模板作者把格式约束写进了这些宏包,删掉任何一个小文件都会让整体格式崩掉。
2.2 最小编译命令与 latexmk 配置
LaTeX 论文模板不是一次编译就出 PDF。因为有目录、交叉引用和参考文献,通常要跑「xelatex → bibtex/biber → xelatex → xelatex」这么一轮。模板里如果有编译脚本就直接用脚本,没有的话我习惯用 latexmk 统一管理,它能根据文件依赖自动决定跑几遍,省得记顺序。
# 在模板根目录执行,使用 latexmk 配合 xelatex latexmk -xelatex -synctex=1 -file-line-error -shell-escape main.tex解释一下这里的参数:-xelatex指定用 XeLaTeX 编译,因为中文字体依赖 XeLaTeX 的字体机制,用别的编译引擎会直接乱码或缺字;-synctex=1是让 PDF 和源码位置对应,方便反向定位,调试长论文时极有用;-file-line-error报错时直接显示文件与行号,否则报错信息会绕到宏包内部,你很难判断问题出在自己哪一行;-shell-escape非必需,但模板里如果有使用外部工具生成的图或代码高亮,这个开关能避免权限问题。等编译结束,生成的 main.pdf 就在根目录下。
如果你想用模板自带的编译脚本,执行前先看脚本内容确认它调用的引擎。我见过有的模板脚本写的是 pdflatex,直接运行会中文字体丢失;把脚本里的pdflatex改成xelatex,把bibtex改成biber前必须先确认模板用哪种参考文献工具。判断方法是看 main.tex 里有没有\usepackage{biblatex},有就用 biber,没有通常就是 bibtex。
2.3 编译失败的三个高频位置
用这套模板编译,新手最容易在三个地方卡住。一是中文字体缺失,编译日志里出现font not found或「Missing character」,点开 PDF 所有中文全是空白格。这类问题的根因是模板里写死了某款中文字体的别名,比如「宋体」「黑体」映射到系统字体名,而操作系统里的字体名对不上。解决方法是打开配置文件里的\setCJKmainfont到\setCJKmonofont这段,把字体名替换成你机器上安装的字体,查系统可用字体名,Linux 上执行fc-list :lang=zh,Windows 上打开字体设置页面或执行 Python 脚本枚举字体名。
二是宏包版本不匹配。模板往往是三年前写的,而你的 TeX 发行版是新的,旧宏包和某些新特性互相踩踏。典型报错是Undefined control sequence出现在某个宏包内部。这种情况我不建议你去改宏包代码,更快的做法是请出 TeX Live 自带的包管理器,更新全部宏包到最新版本再编。
三是编译到一半卡死或报Emergency stop。这往往是 main.tex 里引用了某个不存在的文件,比如\include{chapters/chapter3}但目录里没有 chapter3.tex。把注释掉的 include 先挑出来重点检查,特别是从别人工程里拷贝来的模板,那些注释里残留的引用会咬人。
3. 把 Word 稿子迁进 LaTeX:图片、公式与参考文献的搬家方案
3.1 图片:从「所见即所得」到「按宽度控制」的习惯切换
Word 里拖一拖图片就摆放好了,到了 LaTeX 里你得彻底放弃「拖拽定位」的思维。LaTeX 会按文本流自动浮动图片,你只需要告诉它图放哪里、占多宽。我用这套模板搬图时有一套固定套路:所有矢量图优先导出成 PDF,位图导出成 PNG,不推荐 JPG,因为学位论文里大量是曲线图和数据图,JPG 压缩容易糊且边缘有杂色。
\begin{figure}[htbp] \centering \includegraphics[width=0.8\textwidth]{figures/result_1.pdf} \caption{某算法的收敛曲线对比} \label{fig:convergence} \end{figure}这里width=0.8\textwidth是关键参数:它指图片宽度占正文行宽的 80%,而不是图片物理尺寸的 80%。正文行宽是固定的,所以这个写法能保证所有插图视觉尺寸统一。图片长宽比例悬殊时,还要加上height或keepaspectratio,避免被拉伸变形。[htbp]是浮动位置偏好,h 表示此处、t 表示页顶、b 表示页底、p 表示独立页,LaTeX 会按顺序尝试摆放,实际位置由引擎决定。学位论文对「图紧跟正文」要求高,我通常只用[htbp],如果图跑远了,调整一下前文文字量或者干脆把图放在章节末尾更省心。
从 Word 里导出图片时,注意 Word 默认的图片导出分辨率经常只有 150 DPI,打印出来边缘发虚。我的做法是先检查 Word 里原图是不是矢量,是的话在 Word 里用「另存为 PDF」再裁剪,或者用绘图工具重新导出。如果原图就是截图,导出 PNG 时把缩放比例调到 200% 以上,让位图像素数足够,再在 LaTeX 里用小宽度引用,视觉上清晰度就够。
3.2 公式:MathType 转 LaTeX 的常见做法
理工科论文避不开公式。Word 配 MathType 打公式很舒服,但 LaTeX 不认 MathType 格式。转换公式我按两步走:第一步,在 MathType 里对每个公式执行「转换到 LaTeX」,复制出 LaTeX 源码;第二步,把源码贴进 .tex 文件,包在\begin{equation} ... \end{equation}或\[ ... \]里。
\begin{equation} \min_{w,b} \frac{1}{2} \|w\|^2 + C \sum_{i=1}^{n} \xi_i \label{eq:objective} \end{equation}MathType 转出来的源码常有冗余括号和多余的\left...\right,贴进来之前我建议先做一遍清理:把\left[ \right]改成[ ],把\begin{equation}补上标签\label。为什么要补标签?因为正文里你要引用公式编号,比如「见式 \eqref{eq:objective}」,如果不打标签,公式一多你就得手动维护编号,一旦删改公式编号就全乱套。
公式里容易翻车的地方是中文字符,MathType 转出来的公式如果含中文,文本内容会以奇怪的方式镶嵌。我的经验是公式中一律不放中文,必要的说明文字放在公式下面用普通段落写。另外,模板里如果有\bm宏包用于加粗向量符号,记得矩阵变量统一用\bm{A}而不是\textbf{A},后者只是字体加粗,斜体变量风格会冲突。
3.3 参考文献:用 BibTeX 重建 .bib 的步骤与 bst 字段要求
参考文献可能是整个迁移里最琐碎的一步。模板自带reference.bib和对应的 bst 样式,bst 决定了作者名、年份、期刊名的呈现格式,比如「姓名后是否缩写」「期刊名要不要斜体」。你需要做的不是自己调整格式,而是把你的引用条目写进 .bib 文件,让 BibTeX 按模板要求去排版。
@article{smith2023sample, author = {Smith, John and Zhang, Wei}, title = {A Sample Study on Partial Discharge Detection}, journal = {IEEE Transactions on Dielectrics}, year = {2023}, volume = {30}, number = {2}, pages = {100--110}, doi = {10.1109/xxxxx} }写 .bib 条目要注意 bst 对字段的挑剔:学位论文模板的 bst 通常要求author用「姓, 名」格式,多个作者之间用and分隔;pages里的页码范围要用两个连字符--而不是一个;有 DOI 就填 DOI,有的模板会把 DOI 显示在文末。另外注意 .bib 里不要出现中文标点,author里的中文作者名写法是「姓氏拼音, 名字首字母」,而不是「名字 姓氏」。
正文里引用时用\cite{smith2023sample},编译跑完 bibtex 后,引用编号和文末文献表会自动生成。这里我最想强调的是:在你开始手写 .bib 之前,先确认学校里提供的文献检索系统能不能直接导出 BibTeX 格式。如果只能导出 RIS 或 EndNote 格式,用桌面文献管理工具转一下格式再导入,别手敲,手敲 50 条以上的文献出错率极高,而且一旦 author 字段格式与 bst 预期不符,整个文献表的排序都会错。
4. 盲审版与最终版的格式切换:模板里那几条要命的布尔开关
4.1 模板提供的格式开关与参数表
这套模板设计得比较贴心的一点,是把「盲审版」和「最终版」做成了开关,而不是让你做两份文件。开关通常集中在 main.tex 的文档类声明或前几行配置里,形态是\documentclass[blind]{...}或者\SetBlindReview{true}之类。我习惯把它理解成一组条件编译开关,编译时以参数形式告诉模板当前是哪个版本。
| 开关/参数 | 作用 | 盲审版 | 最终版 |
|---|---|---|---|
| 盲审模式 | 隐藏作者姓名、导师姓名、致谢、发表成果 | 开 | 关 |
| 双面打印模式 | 页面调整为奇偶页不同页边距 | 关 | 开 |
| 封面信息 | 显示完整封面 | 部分隐藏 | 完整 |
| 声明页签字 | 显示作者签字区域 | 隐藏 | 显示 |
这些开关是模板作者写好的条件变量,你不该自己去删正文里的姓名来模拟盲审效果,因为那会留下大量被注释掉的内容,万一漏删一处,盲审稿就白交了。正确做法是找到开关定义处,把对应参数从false改成true,再重新编译。如果你不确定模板支持哪些开关,在 main.tex 里搜一下if开头的行,一般能看到类似\newif\ifblind和\blindtrue的写法。
4.2 盲审版要隐藏什么、怎么隐藏
盲审版的核心是隐藏一切能识别出你身份的信息。模板通常帮你隐藏封面上的姓名、学号、导师名,但有三处它不一定替你处理:「致谢」页里的个人信息、正文里引用自己已发表论文时的作者署名、以及页眉页脚里的自定义信息。我在交盲审稿前会专门跑一遍检查流程:把源文件里的姓名替换成「作者」,学号替换成「学号」,单位名替换成「某单位」,然后编译出来,逐页翻 PDF 确认没有任何身份信息残留。
模板如果不提供开关,另一个常见做法是用条件注释包\iffalse ... \fi把整段致谢和成果列表注释掉,而不是逐行删除。我见过 A 同学因为要腾空间直接删掉了致谢页,结果最终版提交时又得从回收站翻出来恢复,白白浪费一下午。更稳的做法是:正文里所有的个人信息都写在一个单独的个人信息文件里,比如personal_info.tex,盲审版用\include{personal_info_hidden.tex},最终版用\include{personal_info.tex},这样切换版本就是改一行 include 的事。
4.3 双面打印与页边距的微调
最终版通常要求双面打印,模板对应处理是「奇偶页页边距镜像」。这套机制靠文档类参数实现,你不需要理解它背后的算法,但你需要知道它生效的前提是纸张尺寸和页边距引用了正确的页面几何参数。
% 最终版双面打印配置,在 main.tex 文档类声明中 \documentclass[twoside, openright]{...} \usepackage[top=2.5cm, bottom=2.5cm, left=3.0cm, right=2.5cm]{geometry}参数说明:twoside让奇偶页页边距自动镜像,装订边在左,翻边在右;openright让每一章从奇数页开始,学位论文默认要求每章右页起,这会让章节之间偶尔出现一页空白页,这是正常现象,不要删掉空白页,否则后续页码全乱。geometry中的top、bottom、left、right按学校要求填写,通常论文会写明白装订边 3cm。调整页边距时,注意模板里可能已经有 \geometry 命令,后加载的会覆盖先加载的,所以你改的时候要改最后一处生效的那个位置。
5. 避坑:模板排版里最容易翻车的 5 个细节
5.1 目录里的页码变成「???」
现象:编译完成后,目录页显示的不是页码而是一排问号或空白。原因:LaTeX 的目录信息需要编译两次才能全部解析,你只跑了一轮编译,.toc 文件还没生成最终数据。有的模板还需要跑更多轮,因为章节引用和页码互相依赖。解决:完整跑一遍latexmk -xelatex main.tex,或者手动连跑三遍 xelatex,第一遍生成辅助文件,第二遍解析引用,第三遍收敛页码。如果你用主文件 + 分章结构,确保每一章都在\frontmatter与\mainmatter标记之间,否则页码格式会错乱。
5.2 图插到下一章去了
现象:正文引用图的位置和图的实际显示位置差了好几页,甚至跑到下一个章节去了。原因:[htbp]的 h 只是「偏好」不是「必须」,浮动体位置受当前页剩余空间和前后浮动体数量影响,文字多、图多时 LaTeX 会把浮动体推迟到合适的地方。解决:先把大图分成小块,单个图宽度不要超过行宽,高度不要过半页;再减少同一段里的浮动体数量;如果实在要求「图紧跟正文」,把图放进figure环境但去掉[htbp]改[H],这需要加载 float 宏包,[H]的意思是「就在这里,不许浮动」。但[H]会让图占位后出现大片空白,一般我只有一张救命图才用它。
5.3 中英文摘要页出现「Table of Contents」重叠
现象:摘要页的标题位置出现英文单词,或者目录页标题和摘要标题重叠。原因:模板里对摘要标题用的是\chapter*加自定义格式,跟目录生成器之间的命名冲突,通常是模板宏包和新版 LaTeX 内核不兼容。解决:先更新宏包,再检查摘要 .tex 文件的标题命令,把\chapter*{摘要}这种写法换成模板自己定义的\begin{abstract}环境。不要自己造标题命令,模板里已经定义好了环境,直接用环境才能和目录格式对齐。
5.4 参考文献列表里出现了「And」大写
现象:参考文献作者列表里,人名之间的 and 被原样大写输出成「AND」,英文文章标题的字母大小写也不对。原因:BibTeX 的 bst 样式对 author 字段的人名校对有自己的逻辑,and 是特殊分隔符,如果你在 .bib 里把 and 写成了全大写,或者作者名里包含了多余空格,bst 就把它当普通文本处理。解决:把 .bib 里所有连接词统一改成小写and,英文文章标题的每个单词首字母大写问题用花括号保护,比如title = {A {S}ample Study},包在花括号里的单词大小写会被原样保留,否则 bst 会把标题里除第一个单词外的所有词转成小写。
5.5 模板自带的 logo 或校名插图丢失
现象:编译成功后,封面上的校名图片显示为空白方框或者路径错误报错。原因:模板里\includegraphics{logo}引用的图片文件路径有问题,通常是不同操作系统路径分隔符差异,或者图片格式不被编译器支持。解决:先确认 figures 目录里有没有 logo 相关文件,有就检查文件扩展名是 png 还是 eps;XeLaTeX 直接支持 png/pdf/jpg,不支持 eps,如果你拿到的是 eps,把 eps 用工具转成 pdf 再引用。图片路径建议统一写成相对路径,比如figures/logo.pdf,不要写绝对路径,因为不同机器上的绝对路径不一致,换台电脑就编译失败。
6. 让模板变成自己的:定制封面、批量压图与一键验证
6.1 定制封面页:从替换 maketitle 到排版完整封面
如果你需要添加新的封面字段,比如「联合培养单位」「密级」,而模板的封面环境没有对应项目,不要直接改模板的.sty文件,新开一个cover_custom.tex,在里面排版完整封面页,然后用\include{cover_custom}替换原来的封面命令,这是最干净的自定义方式。
% cover_custom.tex 节选 \begin{titlepage} \centering {\kaishu 某工业大学}\\[2em] {\zihao{1} 博士学位论文}\\[3em] \begin{center} \includegraphics[width=0.3\textwidth]{figures/logo.pdf} \end{center} \vfill {\songti 培养单位:某学院}\\ {\songti 学科专业:XXXX}\\ {\songti 论文作者:XXX}\\ {\songti 指导教师:XXX 教授} \vfill {\zihao{4} 年\quad 月} \end{titlepage}\zihao是模板里常用的字号命令,\zihao{1}是一号字,\zihao{4}是四号字;\kaishu、\songti是模板定义的中文字体命令,分别对应楷书和宋体,这两个命令名是模板自定义的,不要自己重新定义字体。编译时注意封面页不建议用浮动体,直接按顺序排版,元素和元素之间用\vfill填充空白,不要一句一行硬排。
6.2 批量把截图转成 PDF 的小脚本
论文里大量实验截图如果直接用 PNG,输出 PDF 时容易因为像素不足发虚。我的习惯是写一个极简脚本,把每张截图转成对应尺寸的 PDF,再让 LaTeX 引用 PDF。这里用 Python 配合 PIL,几行就能跑完一个目录:
from PIL import Image from pathlib import Path src_dir = Path("screenshots") out_dir = Path("figures") out_dir.mkdir(exist_ok=True) for img_path in src_dir.glob("*.png"): img = Image.open(img_path) # 转成 RGB 模式,另存为 PDF,尺寸保持原样 img.convert("RGB").save(out_dir / f"{img_path.stem}.pdf", resolution=300)这段代码的作用是把截图目录里所有 PNG 逐张转成 PDF,resolution=300表示输出 PDF 的嵌入分辨率按 300 DPI 处理,这样打印时图像的视觉清晰度足够。注意原始截图如果本身只有 72 DPI,设置 300 只是放大元数据,不会增加真实细节,所以截图时能放大就放大再截。
6.3 一键验证:编译日志里该盯哪三个指标
收尾时我不用眼睛逐页看 PDF 来验证格式,那样效率太低。我通常是编译完直接查看日志文件,盯三个地方:第一,有没有Overfull \hbox或Underfull \vbox警告,前者代表某行文字超出了版心边界,后者的空白过大,处理办法是调换行位置或插入\linebreak;第二,有没有undefined references,这个警告可以通过 grep 日志来排查:
grep -E "Warning|Error|undefined" main.log第三条是检查 PDF 页数和目录页码是否对得上,pdfpages命令或者直接用 Python 统计 PDF 页数做个简单核对即可。模板里假如提供了编译脚本,跑完之后看一眼脚本的退出码,非 0 退出码说明有致命问题。
最后说个我的血泪教训:每次改完模板配置别只编译一次,要完整跑一轮 latexmk 再走。我曾因为图省事只编了一遍,交上去的盲审稿里致谢页没有隐藏掉,差点出事。从那以后我养成习惯,所有身份信息一律写在单独文件里,编译前先确认personal_info_hidden.tex被 include 而不是另一个。这套方法帮我节省了至少两天的论文排版调试时间,希望帮到你。
本文还有配套的精品资源,点击获取