[栖岸计划](回归学术区)LaT...

物理
[栖岸计划](回归学术区)LaTeX:从公式,到排版

用户头像
好好学习,天天向上! 更新于2026-5-15 14:12:59

序言

这学期智英上大雾(划掉)大物实验,按课程要求需要交三份实验报告,因此智英也是开始学上 $\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系统

我们以清华镜像源为例。

首先,打开清华的软件镜像站:

image.png

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

image.png

然后点击Images:

image.png

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

image.png

由于镜像完全位于国内,下载速度还是比较快的,十分钟左右就能完成。比较费时的是安装环节。

我们在Download文件夹中找到下载的texlive.iso,右击,然后从列表中点击“装载”:

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

屏幕截图 2026-04-27 220831.png

在安装完成前,“关闭”按钮都无法被点击,而“终止”按钮可以被点击。安装完成后,两按钮状态则刚好与完成前相反。因此,当“关闭”按钮亮起的时候,便意味着安装已完成。此外,安装完成时,图中的输出框会显示“欢迎进入TeX Live的世界!”或其对应的英文句子,这也可以作为判断安装是否已经完成的依据。

安装完成并不意味着万事大吉。由于Windows系统的特性,我们需要手动完成环境变量的配置。对经常下载这类软件的人来说,这并不是件难事;但出于科普的需要,我们还是会给出全过程。

在电脑上使用Windows+R组合键,弹出的对话框中输入sysdm.cpl,然后点击“确定”:

image.png

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

image.png

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

image.png

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

image.png

然后依次点击已打开的弹窗的“确定”,环境变量配置便大功告成。只需重启电脑即可生效。此时在PowerShell中输入以下命令,可确认安装是否成功:

xelatex --version

输出任何版本信息即为成功。若输出显示找不到相关命令,则需返回查找此前步骤是否出错。

image.png

1.1.2 Linux系统

相较于Windows系统,大部分Linux系统可以使用更为简单的方法下载安装TeX Live,以及许多其他开源软件。这一方法就是使用Advanced Package Tool(APT)。当然,为了提高速度,我们仍旧会使用国内的镜像源。以下以科大镜像源为例。

首先,我们需要打开存有关于APT源的文件。不同系统存储的位置略有区别,以我使用的Ubuntu为例:

image.png

(当然,这里的系统实际上是WSL,可以视为一种简单的虚拟机。本章后面还会讨论。)

拆解这行命令:sudo表示提供管理员权限,因为这一文件涉及到系统信息,必须要有管理员权限才能编辑;nano是编辑器的名称,类似Windows的Notepad;后面是文件的路径。

注意:执行sudo命令需要输入系统的密码,但是密码不会在终端有任何显示。换句话说,不管你密码输入了多少字,终端展示的内容依旧与上图没有任何区别。我认识不少人第一次使用Linux的终端输入密码时,遇到这种情况都误认为自己输入失败了,这种观点是完全错误的。

打开后,应该能看到如图所示的界面:

image.png

这里的文档已经是修改过后的版本。文档中有几处网址“https://mirrors.ustc.edu.cn/ubuntu/”,这几处便是修改过后的镜像源。对于还未修改的文档,找到图中对应的位置,然后把原本的网址改为镜像源网址即可。

按Ctrl+O保存。保存时会弹出关于修改保存文件名的内容:

image.png

不用管它,直接回车即可。然后按Ctrl+X退出。

修改完镜像源后,我们就可以使用APT进行下载安装。为确保下载/安装的为最新版,我们一般会先执行如下命令:

sudo apt update

表示更新APT库。然后再进行下载安装:

sudo apt install texlive-full

开始执行后约5秒钟,屏幕上会出现“是否继续”的问题,要求用Y(是)或n(否)作答。直接输入Y。

image.png

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

image.png

1.2 在VS Code中配置LaTeX

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

image.png

目前是无法完成编译的。所以,我们需要安装对应的拓展。

对LaTeX来说,要安装的拓展就是LaTeX Workshop。安装后,页面会变成这个样子:

image.png

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

image.png

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

image.png

这说明编译成功了。从而我们正式完成了LaTeX在VS Code中的配置。

Chapter II LaTeX源文件的基本结构

LaTeX源文件一般可以分为两部分:导言区和正文区。导言区指从\documentclass{}开始,一直到\begin{document}前的全部内容;正文区指\begin{document}和\end{document}之间的全部内容。\end{document}之后的一切内容都无任何意义,因此,绝大多数源文件的末尾即为\end{document}。

以上面给的测试实例来看,结构如下:

屏幕截图 2026-05-09 174750.png

下面两节分别会对这两区域的功能作主要简介。

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完成标题的排版。

效果如下:

image.png


(更新中)

收起
31
29
共4条回复
时间正序
LaTeX 也可以用vs code,我觉得它会更好用,给大家推荐一下
9条评论
用户头像
好好学习,天天向上!
5月前

VS Code是编辑器吧。。。

我说的TeX Live是编译引擎,没有编译引擎就没法编译成PDF

而VS Code等编辑器起的作用是在里面写入/更改内容,它并不能直接为你生成PDF文件

这两者不是一个概念。。。


用户头像
帕格拉斯 回复 好好学习,天天向上!
5月前

我都懒得搞很多东西,也没有能力,所以我唯一写LaTeX的就是overleaf🤓👍


用户头像
好好学习,天天向上! 回复 帕格拉斯
5月前

我写单摆的实验报告时尝试了一下overleaf,然后卡得受不了了,就去装了个TeX Live16.png

要问为啥装TeX Live没那么耗时,因为装的镜像版(这应该是很常规的操作吧?

用户头像
K-Raydinus 回复 好好学习,天天向上!
5月前

为什么这个也有明感词捏?提示加号是明感词

Screenshot_20260429-204620.png

用户头像
好好学习,天天向上! 回复 K-Raydinus
5月前

KaTeX好像是在网页上渲染LaTeX公式用的吧

关于可读性,像我这种用得多了的,简单的公式看到就能懂,对于复杂的,如果是在论坛上右边直接能看预览,如果是用VS Code,把pdf文件放在VS Code右半边,每次编译都相当于起了一个预览的效果

其实LaTeX还说得过去了,plain TeX才是看不懂一点(虽然LaTeX完全是基于TeX开发的,但既然有了LaTeX,用的人自然也不用管plain TeX的问题了)

用户头像
好好学习,天天向上! 回复 K-Raydinus
5月前

手写也有问题

一个是累,这不多说

一个是AI的识别不一定准确,这也不多说

还有就是对于排版与符号要求很严格的内容,手写明显没办法确保被准确地转化

比如一个普通的积分

这是错误的写法:

\displaystyle\int_a^bf(x)dx

$\displaystyle\int_a^bf(x)dx$

(我习惯对于分数和积分添加一个\displaystyle,这个会对符号有一定影响,不知道会不会有相关方面的要求)

这是正确的写法:

\displaystyle\int_a^bf(x)\mathrm dx

$\displaystyle\int_a^bf(x)\mathrm dx$

类似地,很多地方都需要用正体,比如单位;还有地方要用斜体,比如物理量的记号、数学的参数;还有地方要用黑体,比如向量 $\mathbf v$;还有地方要用板报体,比如数集、域等的记号 $\mathbb R$,$\mathbb F$;还有地方要用花体,比如线性代数中的一些内容 $\mathcal P_n[x]$($n$ 阶多项式构成的集合,也可以写作 $\mathbb P_n[x]$)

这些手写完全实现不了,把手写转为LaTeX再疯狂转格式,还不如一开始就写LaTeX

再有就是手写没法插图片,不过这个转LaTeX影响不大

用户头像
K-Raydinus 回复 好好学习,天天向上!
5月前

你们数物好像确实是这样的... 不过关于转格式的问题,这一点我觉得没有问题,因为

Screenshot_20260430-124715.png

Screenshot_20260430-125112.png

用户头像
好好学习,天天向上! 回复 K-Raydinus
5月前

手写也不是这么个写法呀……

说实在的复杂的东西按你向AI输入的方法估计也不比LaTeX简单到哪(个人感觉)

用户头像
幸福健康 回复 好好学习,天天向上!
5月前

事实上ai可以发图

用户头像
K-Raydinus
5月前

只是演示用的喵... 因为我用板砖向 Ds 传图很麻烦

我是... 呃,想说明 AI 似乎是有能力处理那些不同 LaTeX 字体的差异

我的意思是,如果 AI 能把那个东西处理成 ISO 标准,那么识图后一样能转化为符合 ISO 标准的东西...

4条评论
用户头像
好好学习,天天向上!
5月前

AI识图出的笑话可不少。。。可不是不用LaTeX能读懂,手写就一定能读懂的

我一个不会LaTeX的室友已经被DeepSeek把手写的题目读错折磨过好多回了

你这给出的例子还算简单,复杂一点的,上标和下标怎么区分?分数怎么读?手写就要把 $\displaystyle\frac{a}{b}$ 写成 a/b 吗?复杂一点的符号,比如各种奇形怪状的积分,你确定手写能让AI识别准确?

所以就是别把现在的AI看的太高,犯迷糊是常有的事,哪怕技术性的东西也没法完全让AI代劳

按照你的逻辑,我知道一个程序大致遵循怎样的逻辑与流程,交给AI,AI也能给我写出一个能跑的程序,那我是不是不用学编程了?

用户头像
好好学习,天天向上!
5月前

上面说的不太准确,折磨我那个室友的不只有DeepSeek,也有豆包

然后刚还漏说了一点,就是,以打个积分号为例,手写很简单,LaTeX转义打个\int也很简单,但这种时候你那样把纯文本给AI去转成LaTeX比上述两种还都更麻烦。。。

用户头像
好好学习,天天向上!
5月前

哦对,再告诉你个事,我刚把我们数学分析期中考试某题参考答案(电子版)截图发给DeepSeek让它转LaTeX,再编译转回PDF,格式错了好几处

用户头像
K-Raydinus 回复 好好学习,天天向上!
5月前
我只是懒得把图片传到图床上再发给 Ds 啊喂()我用纯文本仅仅是因为在板砖上打着省事... 而且我打积分号也不见得有多慢,我的自定义短语里有 ∫,我打它只需要在中文下 [i key] [n key] [t key] [2 key] 就行了...

以及... 嗯就是我的想法是建立在用比较好的 AI 去识图的基础上的。现有的 AI 犯迷糊的话... 嗯,我回头去试试?

不过这 Ds 的识图感觉就是普通 OCR,虽然最近几个月好像好了一点,最近好像能识别图像了,不过我感觉似乎可能或许好像还是单纯的图像转描述而已(?)

还有程序在我的认知里和 LaTeX 的区别还是很大的,我觉得足够好的 AI (不考虑技术瓶颈) 一定能完美地手写转 LaTeX,因为手写表达的意思是完备的,但是程序除非你写出完整的每一个部分不然永远不是完备的... 这个我觉得不能相提并论了

@三月lv.999 嗯?QQ 浏览器?

我记得 QQ 和 360 等国产浏览器会把所有没有给他们交保护费的网站列为危险,并把给他们交保护费的危险网站列为不危险... 比如 996.icu 是危险...

Edge 就从来不报危险。

二次分发可以呀,各位自便,不过我觉得这玩意不值得搞版权政策什么的吧... 就是一个半成品

而且之后我的开发进度预计会变慢,而且只能保证高三开学前做出第一个正式版,然后就丢到高考以后了()
用户头像
请稍候再播
5月前

划掉可以用\sout{}

就像这样:$\sout{文字}$

2条评论
用户头像
好好学习,天天向上!
5月前

我当然知道,故意的(

用户头像
请稍候再播 回复 好好学习,天天向上!
5月前

$\sout{我}$

用户头像
用户头像
酥山
4月前

我这种懒狗兼蒟蒻都是ai代劳的,实在不行就在word硬敲()