物理 [栖岸计划](回归学术区)LaTeX:从公式,到排版
序言
这学期智英上大雾(划掉)大物实验,按课程要求需要交三份实验报告,因此智英也是开始学上 $\LaTeX$ 了
在正式开始讲解前,这里有一个小问题:LaTeX是什么?
🙋♂️我知道,就是论坛上用来输入公式的东西!🤓
这样的答案有一定道理,但不完全正确。实际上,LaTeX不仅仅是起到输入公式的作用。完整意义上的LaTeX,是一种对论文进行排版的工具,也就是说,如果给出含有完整论文内容的LaTeX源代码(后缀名为.tex),对其进行编译后,就可以得到排版过后的文章。绝大多数引擎的输出是PDF文件。
🤔上面这些功能,Word也都能实现(Word文件后缀名为.docx),为什么还需要LaTeX呢?
首先,LaTeX的前身TeX出现早于Word。即便是考虑最早的Word,由于那时电脑还没有图形界面,实现其功能自然比现在还要复杂;
其次,即便是在现在,LaTeX依旧比Word方便,特别是输入数学公式的时候。大家如果和我一样试过完全用Word输入数学公式,估计也能有那种痛不欲生的感受。
当然,新版的Word里已经兼容了用LaTeX渲染数学公式。然而,问题的本质依旧没有被解决。你仍然需要在“插入”中找到“公式”,再开始输入。而且,Word中的LaTeX渲染,本质上还是用输入的公式“套”它存储的那些符号,因此,使用Word进行LaTeX渲染,经常会出现许多莫名其妙的空格、跑错位置的数字,毫无美感。
(这绝不意味着Word一无是处。相较于LaTeX,Word更适用于撰写办${}$公${}$文档、进行文艺创作,这一方面的高效性是其他工具无法比拟的。)
对于一些比较简易的工作,我们还有另外的工具,就是各种markdown编辑器(markdown文件后缀名为.md)。其特点是语法极为简洁,同时能实现标题、编号、图片插入、数学公式渲染(使用LaTeX中的部分公式)等功能。因此,markdown被广泛用于README文档(一般能在软件安装包中看到)的撰写、网页论坛发帖(没错,包括质心论坛)等领域。然而,简洁也是其最大的缺点。当真正需要对学术内容进行排版时,markdown便几乎派不上用场。
总而言之,对于包含大量数学公式的学术内容的排版,LaTeX是很好的选择。下面的内容,就将围绕如何使用LaTeX进行排版展开。
本文章大多数内容无法通过markdown中的LaTeX渲染实现,因此,请不要在论坛尝试。如有兴趣,请自行下载TeX Live。方法在第一章有详细讲述。
以下内容默认使用pdfTeX或XeTeX(若包含中文)引擎进行编译,编译命令为pdflatex或xelatex。
Chapter I 工欲善其事,必先利其器
众所周知,大多数计算机程序都需要进行编译(Python等解释型语言写的程序除外),才能得到目标文件。LaTeX也不例外。最常用的编译器有以下四种:
TeX:输出.dvi文件,需要进一步转化才能得到.pdf文件,在日常生活中已经很少使用。
pdfTeX:输出.pdf文件,可以用于编译纯英文写作的LaTeX代码,但不支持Unicode,UTF-8等字库,因此不能编译含有中文的内容。
XeTeX:输出.pdf文件,支持Unicode,UTF-8等字库,是编译含有中文的代码的首选。
LuaTeX:输出.pdf文件,也支持中文字库,相较于XeTeX更为全面,但编译速率更慢,非必要的情况下不如XeTeX常用。
不过,对于LaTeX而言,我们很少会去下载单独的编译器,因为使用LaTeX进行排版往往需要导入大量的宏包,仅仅有一个编译器,我们几乎什么都做不了。因此,我们一般下载集成了各类编译器、宏包等的综合体,被称作LaTeX发行版。最常用的发行版之一即是TeX Live。下载TeX Live之后,我们可以自由地导入宏包,或使用不同的编译器编译LaTeX源代码。
以上,我们给出了写好LaTeX代码之后,将其导出为pdf文件的基本思路。然而,我们还需要一样工具,去高效地编辑LaTeX代码。由于LaTeX源代码本质是文本,Windows系统的Notepad、Linux系统的Nano和Vim都可以进行编辑。然而,这些工具存在的一个共性问题,就是效率低下。为了更高效地完成代码编辑工作,我们需要更为专业的代码编辑器,VS Code便是其中的代表。其不仅能实现语法高亮等功能,让代码看起来更清晰,更能通过LaTeX Workshop等插件链接指定编译器,从而完成代码的编译。
需要注意的是,VS Code可以通过插件链接编译器完成编译,但其本身不能完成代码的编译!如果在不安装发行版的情况下,直接使用VS Code的“编译”命令,会报错:
Recipe terminated with fatal error: spawn xelatex ENOENT.
其中,“ENOENT”为“Error: No Entry”的缩写,也就是说VS Code找不到编译器XeTeX。因此,千万不要由于在VS Code中安装插件后,可以在VS Code中完成从编辑到编译的全过程,就误认为不需要单独安装发行版!
下面,我们会进一步指出这些必要软件的下载/安装方法。
1.1 TeX Live的下载与安装
对于这类外国的学术软件下载,我们一般都使用国内各高校的镜像源,以提高效率,节省时间。
1.1.1 Windows系统
我们以清华镜像源为例。
首先,打开清华的软件镜像站:

点击CTAN,在列表中找到TeX Live,并点击:

然后点击Images:

在出现的页面中点击texlive.iso,即可开始下载:

由于镜像完全位于国内,下载速度还是比较快的,十分钟左右就能完成。比较费时的是安装环节。
我们在Download文件夹中找到下载的texlive.iso,右击,然后从列表中点击“装载”:

由于文件极为巨大(约6GB),接下来的加载需要一段时间(1~2分钟),甚至中途可能会误报死机,不用担心,等待就好。对于Windows系统弹出的安全提示,直接确认即可,无需担心。

这时,文件资源管理器会自动打开texlive.iso文件,显示光盘驱动器存储的文件目录。以管理员身份运行install-tl-windows.bat(可右键点击找到):

同样在系统弹出安全提示时坚持打开:

在经过短暂的加载后,应该能看到如下图所示的页面:

为节约C盘空间,可以将安装根目录修改至D盘。然后点击“安装”即可。由于宏包数量巨大,安装过程一般会持续1个小时以上。

在安装完成前,“关闭”按钮都无法被点击,而“终止”按钮可以被点击。安装完成后,两按钮状态则刚好与完成前相反。因此,当“关闭”按钮亮起的时候,便意味着安装已完成。此外,安装完成时,图中的输出框会显示“欢迎进入TeX Live的世界!”或其对应的英文句子,这也可以作为判断安装是否已经完成的依据。
安装完成并不意味着万事大吉。由于Windows系统的特性,我们需要手动完成环境变量的配置。对经常下载这类软件的人来说,这并不是件难事;但出于科普的需要,我们还是会给出全过程。
在电脑上使用Windows+R组合键,弹出的对话框中输入sysdm.cpl,然后点击“确定”:

在打开的弹窗中点击“高级”目录,然后点击“环境变量”:

在打开的弹窗中点击靠上的“新建”:

在打开的对话框中,输入变量名(可以任取)和值(一般为如下路径:安装地址\版本年份\bin\windows)。如果记不住完整的路径,可使用“浏览目录”进行搜索:

然后依次点击已打开的弹窗的“确定”,环境变量配置便大功告成。只需重启电脑即可生效。此时在PowerShell中输入以下命令,可确认安装是否成功:
xelatex --version
输出任何版本信息即为成功。若输出显示找不到相关命令,则需返回查找此前步骤是否出错。

1.1.2 Linux系统
相较于Windows系统,大部分Linux系统可以使用更为简单的方法下载安装TeX Live,以及许多其他开源软件。这一方法就是使用Advanced Package Tool(APT)。当然,为了提高速度,我们仍旧会使用国内的镜像源。以下以科大镜像源为例。
首先,我们需要打开存有关于APT源的文件。不同系统存储的位置略有区别,以我使用的Ubuntu为例:

(当然,这里的系统实际上是WSL,可以视为一种简单的虚拟机。本章后面还会讨论。)
拆解这行命令:sudo表示提供管理员权限,因为这一文件涉及到系统信息,必须要有管理员权限才能编辑;nano是编辑器的名称,类似Windows的Notepad;后面是文件的路径。
注意:执行sudo命令需要输入系统的密码,但是密码不会在终端有任何显示。换句话说,不管你密码输入了多少字,终端展示的内容依旧与上图没有任何区别。我认识不少人第一次使用Linux的终端输入密码时,遇到这种情况都误认为自己输入失败了,这种观点是完全错误的。
打开后,应该能看到如图所示的界面:

这里的文档已经是修改过后的版本。文档中有几处网址“https://mirrors.ustc.edu.cn/ubuntu/”,这几处便是修改过后的镜像源。对于还未修改的文档,找到图中对应的位置,然后把原本的网址改为镜像源网址即可。
按Ctrl+O保存。保存时会弹出关于修改保存文件名的内容:

不用管它,直接回车即可。然后按Ctrl+X退出。
修改完镜像源后,我们就可以使用APT进行下载安装。为确保下载/安装的为最新版,我们一般会先执行如下命令:
sudo apt update
表示更新APT库。然后再进行下载安装:
sudo apt install texlive-full
开始执行后约5秒钟,屏幕上会出现“是否继续”的问题,要求用Y(是)或n(否)作答。直接输入Y。

然后,系统会自动完成下载到安装的全部流程。总共需10~20分钟。与Windows系统不同,Linux系统无需手动配置环境变量,重启终端,即可生效。检查方法与Windows系统完全相同。

1.2 在VS Code中配置LaTeX
VS Code的下载和安装没什么难度,这里直接略去。下载和安装后,单单新建一个LaTeX文件,会看到如下的画面:

目前是无法完成编译的。所以,我们需要安装对应的拓展。
对LaTeX来说,要安装的拓展就是LaTeX Workshop。安装后,页面会变成这个样子:

注意右上角多了一个绿色三角形,也就是编译的按钮。实际上,安装拓展后,Ctrl+S除了保存,也能同时完成编译。编译的结果如图:

左边多了一大堆的中间文件,这些都不用去管。查看最终的PDF文件即可。

这说明编译成功了。从而我们正式完成了LaTeX在VS Code中的配置。
Chapter II LaTeX源文件的基本结构
LaTeX源文件一般可以分为两部分:导言区和正文区。导言区指从\documentclass{}开始,一直到\begin{document}前的全部内容;正文区指\begin{document}和\end{document}之间的全部内容。\end{document}之后的一切内容都无任何意义,因此,绝大多数源文件的末尾即为\end{document}。
以上面给的测试实例来看,结构如下:

下面两节分别会对这两区域的功能作主要简介。
2.1 导言区
导言区的开头为\documentclass{}。大括号内的内容一般可以为以下四种:article, report, book与beamer。前三种排版更接近文本文档,但格式有细微区别,上面的排序一般适合的文章长度由短到长。对于学生阶段需要完成的绝大部分论文等任务,使用article即可。beamer排版则接近幻灯片,也就是说,在一定程度上其能起替代PPT的作用。
上面的图片中出现了\setlength{}{}。第一个大括号中输入的是设置的对象,一般为\textwidth(每行宽度)、\textheight(每页正文高度)或\parindent(首行缩进)。第二个大括号中输入的是具体值,单位一般为pt(点)、cm(厘米)或em(字符宽度)。
导言区还有一个很重要的作用,就是导入LaTeX宏包,即\usepackage{}指令。最常用的宏包如下:
geometry(更精细的格式设置)
amsmath与amssymb(数学符号)
physics(物理符号)
siunitx(国际单位制)
ctex(中文字符)
……
后面有很大篇幅的内容会围绕这些宏包展开。
在导言区,我们可以给出文章的标题、作者和写作日期,方法如下:
\title{测试文章}
\author{黄智英}
\date{2026年5月15日}
(如果不设置\date,排版中将自动设为编译时的日期)
提供这些信息之后,我们可以在正文区用\maketitle完成标题的排版。
效果如下:

(更新中)