1. 先用一篇文章想清楚:LaTeX为小论文带来了什么
如果你点进来了,大概率是刚收到某个老师发来的LaTeX模板,或者是在课程作业要求里看到了“请用LaTeX排版”这句话。LaTeX这个词,我第一次见到时也懵了很久:明明Word用得好好的,为什么非得折腾一个看起来像编程的东西去写论文?但等你真的写完一篇小论文,把公式、插图、参考文献从头到尾跑通一遍,你就知道这东西的碾压级优势在哪里了。
这篇内容我就围绕“如何用LaTeX写一篇小论文”这件事,把从环境搭建、文档骨架、公式图表、参考文献到报错排查的整套流程完整拆开讲一遍。目标读者是第一次接触LaTeX的本科生、研究生,以及想用LaTeX替代Word写课程论文、会议短文和投稿小论文的人。不扯高深理论,只讲能落地、能复现、能直接抄的实操方案。
先说结论:LaTeX适合写小论文,是因为它把“内容”和“排版”彻底分开了。你只需要用命令告诉它“这里是标题,这里是公式,这里是引用”,剩下的字体、缩进、对齐、编号全部由它自动处理。这就好比你跟一位顶级排版师傅说“我要一桌宴席”,师傅自己会配菜、摆盘、上齐顺序,你只需要把菜买好。而Word则像你自己动手下厨,每个字号、每个缩进都要手动调,菜一多准乱。
有人问,小论文也就三五页,有必要用LaTeX吗?我的看法是:如果论文里涉及数学公式、交叉引用、参考文献,哪怕只有一处,LaTeX的收益也是立竿见影的。举个例子,你用Word给20个公式编号,中间增删一个公式,后面所有编号都得手动改一遍。LaTeX里一个 \ref{} 命令就搞定了,编译一次自动更新。这种优势,写过一次就再也回不去了。
2. 环境搭建:四小时装好工具,换来四天省心
2.1 下载哪个发行版:TeX Live 还是 MiKTeX
LaTeX本身是一套排版系统,你要用它就得安装一个发行版,发行版里包含了编译器、宏包和文档。市面上最常见的两个发行版是TeX Live和MiKTeX。我的建议是直接上TeX Live,尤其是写小论文这种需要稳定宏包的场景,TeX Live开箱即用,宏包齐全,省去了一堆在线安装宏包的折腾。MiKTeX的优势是体积小、按需安装宏包,但对新手来说“按需安装”反而容易变成“缺啥装啥,装完报错”。
Windows用户直接从TeX Live官网下载iso镜像,或者用国内高校镜像站下载,安装时选择安装全部宏包,时间会比较久,一般要半小时到一小时,但装完一劳永逸。macOS用户安装MacTeX,本质是TeX Live的mac版本,安装包更大一些,装完自带TeXShop编辑器,不过我更推荐你换VSCode,理由后面细说。
这里有一个很多人会踩的坑:安装路径尽量不要有中文和空格,否则后面编译时报错会非常隐蔽,排查半天也找不到原因。我当年第一次装TeX Live,默认路径里有用户名中文,结果所有宏包都正常加载,就图片路径死活报错,后来重装才解决。真的,这种低级问题越早避开越省心。
2.2 编辑器选哪个:VSCode + LaTeX Workshop 还是 TeXStudio
编辑器选型是个老生常谈的话题,我两种都重度用过,给你一个直接可用的建议:新手入门用VSCode + LaTeX Workshop插件,理由是这个组合免费、跨平台、代码补全体验好,而且VSCode本身已经成为写代码和写文档的通用工具,你用熟了以后写Python、写Markdown都是同一套操作习惯,不用来回切换。
如果你不想折腾任何配置,那就用TeXStudio。TeXStudio是专门的LaTeX编辑器,装完就是为LaTeX量身定制的,编译按钮、语法高亮、公式预览全都有了,几乎零配置。它的缺点是界面稍旧,写长文档时偶尔卡顿,但对一篇小论文来说完全够用。
下面是两者的对比,方便你按自己的情况选:
| 对比项 | VSCode + LaTeX Workshop | TeXStudio |
|---|---|---|
| 上手成本 | 需要装插件和简单配置 | 开箱即用 |
| 代码补全 | 体验好,支持片段补全 | 中等,够用 |
| 公式实时预览 | 有,可悬浮预览 | 有,快捷键预览 |
| 正反向搜索 | 支持SyncTeX | 支持SyncTeX |
| 长期使用 | 通用性强,可写代码 | 仅用于LaTeX |
如果你选VSCode路线,安装完插件后还需要在设置里指定LaTeX编译工具和正向搜索方式。最简单的方式是在插件设置里把“Recipe: latexmk”设为默认编译方案,然后安装一个PDF阅读器插件,比如LaTeX Workshop自带的预览面板就能直接查看编译结果。我个人的配置习惯是存盘自动编译,也就是每次Ctrl+S后自动跑一遍,出错直接在面板里报红,修完再存,效率很高。
2.3 第一次编译:从空文档到第一个PDF
环境装好之后,你可以新建一个文件夹,创建一个空白的test.tex文件,敲入下面这段最简代码:
\documentclass[11pt]{article} \begin{document} Hello, LaTeX! \end{document}保存后在VSCode里打开,按Ctrl+S触发编译,或者点击右上角的▶按钮。正常几秒钟后同目录下会生成一个test.pdf。如果你顺利看到PDF生成,恭喜,你已经跨过了LaTeX学习曲线里最陡的那一段——剩下的所有内容,本质上都是在这个骨架里填充命令和内容而已。
如果编译失败,别急,先看报错窗口里的日志。90%的第一次编译失败是这两个原因:一个是发行版没装全,另一个是编辑器没有正确关联XeLaTeX引擎。解决前者只需要重新安装并选择完整宏包,解决后者则在VSCode设置里把latex-workshop.latex.recipe中的工具换成xelatex即可。中文环境必须用XeLaTeX或LuaLaTeX,用默认的pdfLaTeX会导致中文全部乱码或直接报错,这个坑几乎每个人都会踩一次。
3. 论文骨架:从文档类到标题页再到摘要
3.1 选对文档类:小论文就用article
LaTeX里控制全局样式的是文档类,写在开头\documentclass{}里。写小论文最常见的选择是article,这是最基础、最通用的文档类,适合课程论文、会议短文、期刊投稿初稿。如果你投的是某个具体期刊,比如IEEE或ACM系列的会议,那直接用官方提供的模板类,比如IEEEtran,它会自动帮你调整页边距、字体大小、参考文献格式,你只管写内容,格式完全不用操心。
很多新手会问为什么不用ctexart或ctexbook。ctexart是中文支持增强的article,如果你直接用XeLaTeX编译,保留article文档类再加载ctex宏包也是可以的,效果等价。但如果是中文论文,直接\documentclass{ctexart}最省事,不用额外配置字体。我的建议是:英文论文用article,中文论文用ctexart,投稿模板另说。
3.2 导言区:论文的“总控室”
\begin{document}之前的内容叫导言区,所有全局配置都写在这里。一篇小论文的导言区,通常包含下面这些东西:
\documentclass[11pt]{article} \usepackage[top=2.5cm, bottom=2.5cm, left=3cm, right=2.5cm]{geometry} \usepackage{graphicx} \usepackage{amsmath, amssymb} \usepackage{booktabs} \usepackage[colorlinks=true, linkcolor=blue, citecolor=blue, urlcolor=blue]{hyperref} \usepackage{caption} \captionsetup{font=small, belowskip=8pt} \usepackage{float}geometry控制页边距,小论文通常不需要自定义页边距,但有时候课程作业会要求左边距3cm方便装订,这时候geometry就能一键搞定。graphicx是插图必需的宏包,amsmath和amssymb提供扩展数学符号和公式环境,booktabs用来做三线表,hyperref给目录和引用加超链接,float允许你用[H]强制图片表格出现在指定位置。
这些宏包不是越多越好,而是“用哪个功能就加哪个”。导言区每多一个宏包,编译时间就多一分,宏包之间冲突的可能也多一分。写小论文,我常用的宏包不超过十个。
3.3 正文区:标题、作者、摘要、章节
正文区的开头是标题信息区,用小论文最常见的写法:
\title{基于LaTeX的科研论文写作方法研究} \author{张三\thanks{某某大学计算机学院} \and 李四} \date{\today} \maketitle\thanks{}可以用来写通讯作者信息或者项目基金号,这在投稿时非常常见。摘要部分一般独立成一个环境:
\begin{abstract} 本文针对……提出了一种…… \end{abstract}如果期刊要求英文摘要,就再加一个abstract环境写英文版。很多会议模板要求关键词,可以用\textbf{关键词:}xxx;xxx;xxx简单处理。
章节结构用\section{}、\subsection{}、\subsubsection{},编号是自动生成的。如果你用\section*{}带星号的版本,则不生成编号、也不进目录,通常用于“参考文献”“致谢”这种不需要编号的章节。小论文的常见结构是:引言、相关工作/背景、方法/实验、结果与分析、结论。这些在LaTeX里就是依次排下来,每个部分一个\section{},非常简单。
有一点值得提醒:LaTeX里空行表示分段,同一段落内的换行只相当于一个空格,所以不要像Word那样用Enter强行换行排版。如果你真的需要手动换行而不换段,用\\命令,但尽量少用,LaTeX自动排版的效果通常比手动断行更好。
4. 三大硬骨头:公式、图片、表格一次说透
4.1 公式:行内公式与行间公式的语法与排版
写小论文的人,99%是为了公式才来的。LaTeX的公式功能用一个词形容就是“降维打击”。行内公式用一对美元符号$...$包起来,比如$a^2 + b^2 = c^2$,效果是在文本行里插入一个公式。行间公式用\[...\],也可以直接用equation环境:
\begin{equation} \label{eq:sum} S = \sum_{i=1}^{n} i = \frac{n(n+1)}{2} \end{equation}\label{eq:sum}给公式起一个标签,文中用\eqref{eq:sum}引用,编译后自动显示为“(1)”,并且公式编号和引用编号严格对应,增删公式也不怕。
这里我要单独强调一下数学模式下的空格问题:公式里输入空格是无效的,LaTeX会忽略它们,数学符号之间的间距完全由排版引擎自动控制。如果你想让公式看起来“松一点”,用\,、\quad这些间距命令,而不是敲空格键。初学者经常在这个上面纠结,以为是自己代码写错了,其实是还不适应LaTeX的“所见非所得”机制。
符号记忆上有个小技巧:绝大多数希腊字母就是英文读音的背撇写法,比如\alpha、\beta、\gamma、\delta、\theta、\lambda、\mu、\pi、\sigma、\omega,大写就是首字母大写,比如\Gamma、\Delta、\Omega。这些符号用到的时候再查也来得及,用多了自然记住,不用刻意背符号大全。
4.2 图片:插入与引用,图题图注一网打尽
图片插入是LaTeX里另一个高频操作。先在你的项目文件夹里建一个子目录叫figures,把所有图片都放进去,然后正文里这么写:
\begin{figure}[htbp] \centering \includegraphics[width=0.8\textwidth]{figures/architecture.png} \caption{本文提出的系统架构图} \label{fig:arch} \end{figure}width=0.8\textwidth的含义是图片宽度占正文文本宽度的80%,这是最常用的控制尺寸方式,比直接用width=5cm更灵活,因为无论最终版心多大,图片都能按比例自适应。[htbp]是浮动参数,分别代表here、top、bottom、page,意思是LaTeX会在这四个位置中选一个最合适的地方放图片,h优先尝试当前位置,t尝试页顶,b尝试页底,p单独成页。
讲到图片,必须提醒几个高频问题。第一个是图片格式:Linux下用PDF格式,Windows下可以用PNG或PDF,eps格式也能用,但需要宏包支持。新手最容易问“为什么我的jpg插入报错”,说实话jpg是能插入的,关键是路径对不对、文件名里有没有中文或空格。我强烈建议所有图片文件统一命名为英文小写加下划线,比如system_overview.png,可以省掉90%的图片路径报错。
第二个问题是文档里的图片位置总是跳来跳去,不在你写代码那个位置。这是浮动体的正常行为,因为LaTeX认为排版质量优先于“必须在这里”。强制让图片老老实实待在当前位置,用[H]参数加上float宏包,注意是[H]不是[h],这个细节很容易记错。
4.3 表格:三线表的制作与表格自动换行
小论文里最常见的表格是“三线表”,也就是只有顶线、栏目线、底线三条横线,没有竖线。用booktabs宏包做出来的三线表非常专业:
\begin{table}[htbp] \centering \caption{不同方法的对比结果} \label{tab:compare} \begin{tabular}{lccc} \toprule 方法 & 精确率 & 召回率 & F1分数 \\ \midrule 方法A & 0.852 & 0.781 & 0.815 \\ 方法B & 0.876 & 0.802 & 0.837 \\ \bottomrule \end{tabular} \end{table}表格列参数{lccc}分别代表:左对齐、居中、居中、居中。l左对齐、c居中、r右对齐,p{3cm}则是指定列宽并且文字会自动换行。单元格内容如果太长导致表格超出页面宽度,一个常用的办法是先减少列数,再缩短表头文字,最后才考虑缩小字号。小论文里的表格应当尽量精简,一张表解决一个问题,表里放不下就拆成两张表。
表格自动换行是另一个高频需求。当你的单元格是一长段文字时,p{宽度}比l好用得多,因为l列的单元格不会自动换行。举个例子,如果你要写一个“方法描述”列,内容是一句话,那就写成p{4cm},文字会在4cm宽度内自动换行并保持上下对齐。
关于表格还有一个坑是单元格内公式的编译问题。表格中使用$...$可以插入行内公式,但如果你用了\begin{tabular}确实没启用数学模式,直接敲\frac会报错。解决办法是在数学模式$...$里写公式,或者把整个表格用array环境代替。
5. 参考文献不折腾:BibTeX入门与一句话引用
5.1 从手动列表到BibTeX数据库
小论文的参考文献部分,是区分新手和老手的分水岭。最笨的办法是直接在正文末尾手写参考文献:
\begin{thebibliography}{99} \bibitem{ref1} 张三, 李四. 基于深度学习的文本分类研究[J]. 计算机学报, 2022, 45(1): 1-10. \bibitem{ref2} Smith J, Wilson A. A survey on neural networks[J]. Neural Computing, 2021, 33(4): 112-125. \end{thebibliography}然后在正文里用\cite{ref1}引用。这是最简单、最直接的方式,适合参考文献数量很少(少于10篇)的小论文。它的缺点是格式手动控制,期刊要求改样式时你得重新排版。
更好的方案是BibTeX。你先建立一个refs.bib文件,每条文献写成一个条目:
@article{smith2021survey, author = {Smith, John and Wilson, Alice}, title = {A survey on neural networks}, journal = {Neural Computing}, year = {2021}, volume = {33}, number = {4}, pages = {112--125} } @inproceedings{zhang2022text, author = {张三 and 李四}, title = {基于深度学习的文本分类研究}, booktitle = {计算机学报}, year = {2022} }然后在正文中只需要用\cite{smith2021survey},编译后会自动生成格式化后的参考文献列表。最关键的是,正文里用过的条目才会出现在参考文献中,没用到的不会硬塞进去。
5.2 编译顺序和常见引用格式
用BibTeX时,编译顺序有讲究,不是直接一键就完事的。第一次编译后,要再跑一次BibTeX,然后再跑两次LaTeX,才能让引用和参考文献互相正确关联。VSCode的LaTeX Workshop默认的latexmk方案会自动处理这个顺序,所以在VSCode里你只需要按一次编译就好。如果你在命令行或TeXStudio里编译,需要记住这个顺序:
xelatex main.tex bibtex main xelatex main.tex xelatex main.tex原理很简单:第一次xelatex生成.aux辅助文件,里面记录了所有\cite引用标签,bibtex读取.aux、查refs.bib、生成.bbl参考文献列表,第二次xelatex把参考文献编进去,第三次xelatex把引用编号更新到最终状态。
另外推荐一个实用技巧:写中文论文时,参考文献里的中文文献可能会遭遇“作者名变成英文乱码”的问题,解决办法是在.bib文件里把中文作者名的字段用双花括号包起来,比如author = {{张三} and {李四}},或者直接用UTF-8编码并配置XeLaTeX编译。这个坑很容易在第一次写中文论文时遇到,提前知道能少折腾半小时。
6. 编译、预览与报错排查:我把踩过的坑一次性交给你
6.1 正向搜索与反向搜索:文档和代码来回定位
写小论文的时候,最头疼的一件事是:PDF里看到了一个错误位置,想改源码却不知道在哪一行。LaTeX的SyncTeX机制就是为了解决这个问题的。VSCode的LaTeX Workshop里,按住Ctrl键点击PDF预览区域,就能跳转到对应的.tex源文件行号,反过来在代码里Ctrl+点击也会跳到PDF对应位置。这就是正反向搜索。
TeXStudio同样支持这个功能,快捷键是F7(正向搜索)和Ctrl+点击(反向搜索)。这个功能看起来不起眼,但当你有一篇10多页的小论文时,来回定位的效率差别非常大。我见过太多人改PDF里的错字,在.tex文件里Ctrl+F搜半天找不到,因为那个字可能是宏包自动生成的内容。装好SyncTeX,一次点击就到,省心无数倍。
6.2 一键编译方案:latexmk 自动处理依赖
很多新手在命令行里被编译顺序折磨过,其实latexmk就是个自动编译管家。它的作用是自动判断需要跑几遍LaTeX、是否需要跑bibtex、是否需要重新生成图片索引,你只需要执行latexmk -xelatex main.tex,它自己会把所有依赖关系搞定。VSCode的LaTeX Workshop默认配置里通常就有latexmk这个recipe,所以你在VSCode里按编译按钮时,它实际上就是在调用latexmk。
如果你用TeXStudio,也可以在“选项——命令”里把编译器改为latexmk -xelatex,这样编译按钮就会自动跑完整流程。用上latexmk之后,你再也不用记“xelatex、bibtex、xelatex、xelatex”这个顺序,双手彻底解放。
6.3 常见报错速查表:这些问题我先替你踩过了
根据我这些年编译LaTeX的经验,小论文写作中的报错90%集中在下面几张表里。每次遇到报错,不要慌,优先看日志里第一个报错信息,往往解决第一个,后面的连锁报错会全部消失。
| 报错信息 | 含义与原因 | 解决方法 |
|---|---|---|
LaTeX Error: File not found | 宏包或图片文件找不到 | 检查宏包名是否拼对,检查图片路径是否写全,文件名不要用中文 |
Missing $ inserted | 在文本模式使用了数学命令 | 把\frac、\sum等命令放到$...$或equation环境中 |
Undefined control sequence | 命令拼写错误或缺少对应宏包 | 检查命令拼写,查看命令所属宏包并加载 |
Misplaced alignment tab character & | 表格中&符号写错位置或花括号不配对 | 检查tabular的列格式和单元格数量是否一致 |
Environment x undefined | 环境名写错或缺少对应宏包 | 检查环境名,下载并加载对应宏包 |
Cannot determine size of graphic | 图片尺寸信息缺失 | 将图片转为PNG/PDF/JPG格式,或改用\includegraphics[width=...]指定尺寸 |
这些报错,几乎每一个我都曾经在晚上十点对着屏幕发过呆。后来总结出一条核心经验:编译报错不可怕,可怕的是不看日志。LaTeX的报错日志其实非常详细,会精确到哪一行、哪个命令出错,你只需要滚动到日志最底部,找到第一个!开头的行,顺着它排查就行了。
6.4 中文支持与样式微调:最后一个必杀技
如果你写的是中文小论文,还有两个细节值得注意。第一个是字体的选择,使用ctexart文档类时,可以指定中文字体,比如\documentclass[fontset=windows]{ctexart}或\documentclass[fontset=mac]{ctexart},这样编译出来的中文效果会更好。第二个是段首缩进和行距调整,小论文通常要求正文行距为1.5倍,可以用\linespread{1.5}实现,段首缩进用\setlength{\parindent}{2em}控制。
写到这里,所有的核心内容已经讲透。最后分享一个我的切身体会:用LaTeX写小论文,最陡峭的坎其实不是语法本身,而是思维方式的转变——你要接受“写代码—编译—看结果”这个循环,而不是“边打字边看排版”的即时反馈。但一旦你接受了这个循环,并捎带手建立起“项目文件夹、figures目录、main.tex、refs.bib”这一套清晰的文件组织方式,后面所有论文写作都会越写越顺手。我用LaTeX写的第二篇文章,速度就比第一篇快了一倍以上,那还是在我一边查语法一边写的情况下。所以别怕开头慢,先把这篇里的代码模板抄下来,跑通一次,后续的每一篇都只是往里填内容的事。