[栖岸计划](回归学术区)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


(更新中)

收起
25
24
共4条回复
时间正序
用户头像
一只苹果(给给限定版)
29天前
LaTeX 也可以用vs code,我觉得它会更好用,给大家推荐一下
9条评论
用户头像
暂缓开通站点增加啦!
29天前

VS Code是编辑器吧。。。

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

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

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


用户头像
好好学习,天天向上! 回复 暂缓开通站点增加啦!
29天前

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


用户头像
暂缓开通站点增加啦! 回复 好好学习,天天向上!
29天前

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

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

用户头像
七碲化学 ZnTellurium 回复 暂缓开通站点增加啦!
27天前

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

Screenshot_20260429-204620.png

用户头像
暂缓开通站点增加啦! 回复 七碲化学 ZnTellurium
26天前

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

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

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

用户头像
暂缓开通站点增加啦! 回复 七碲化学 ZnTellurium
26天前

手写也有问题

一个是累,这不多说

一个是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影响不大

用户头像
七碲化学 ZnTellurium 回复 暂缓开通站点增加啦!
26天前

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

Screenshot_20260430-124715.png

Screenshot_20260430-125112.png

用户头像
暂缓开通站点增加啦! 回复 七碲化学 ZnTellurium
26天前

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

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

用户头像
幸福健康 回复 暂缓开通站点增加啦!
17天前

事实上ai可以发图

用户头像
七碲化学 ZnTellurium
26天前

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

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

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

4条评论
用户头像
暂缓开通站点增加啦!
18天前

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

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

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

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

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

用户头像
暂缓开通站点增加啦!
18天前

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

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

用户头像
暂缓开通站点增加啦!
18天前

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

用户头像
七碲化学 ZnTellurium 回复 暂缓开通站点增加啦!
17天前
我只是懒得把图片传到图床上再发给 Ds 啊喂()我用纯文本仅仅是因为在板砖上打着省事... 而且我打积分号也不见得有多慢,我的自定义短语里有 ∫,我打它只需要在中文下 [i key] [n key] [t key] [2 key] 就行了...

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

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

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

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

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

Edge 就从来不报危险。

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

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

划掉可以用\sout{}

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

2条评论
用户头像
暂缓开通站点增加啦!
17天前

我当然知道,故意的(

用户头像
请稍候再播 回复 暂缓开通站点增加啦!
16天前

$\sout{我}$

用户头像
用户头像
icysis
12天前

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