【LaTeX】
最近用Word排版论文的时候感觉十分糟心,想起美赛的时候舍友学了大半天就开始动手排版,于是便动了用学习的念头。
从心血来潮,到上B乎了解LaTeX是什么,到部署LaTeX环境,到开始试着排版论文,整个过程基本大半天就能搞定,剩下的一些技术细节可以一边上网查一边用,自然也走了许多弯路。为了让自己记住一些重要的代码,也帮助读者快速入门,我会在这里把我排版第一篇论文过程中所总结的的部署方法
、常用代码
、注意事项
记录下来。
这篇文章主要讲 的背景,以及如何部署 环境。
下一篇文章主要讲如何用一个模板排版一篇文章
这些方法不一定是最聪明的,但作为入门也未尝不可!鉴于我个人也暂时没有完全挖清楚,所以部分代码我也没读懂。先达到能用的程度,然后再边做边查边学吧😂
1 了解
首先,你要知道 怎么读,按照官方文本:
And in case you were wondering, LaTeX is pronounced Lah-tech or Lay-tech, to rhyme with blech or Bertolt Brecht (almost).
百度百科也告诉我们, 的中文名是 。所以它大概率是读成:
这个问题估计困扰了很多人,虽然我也不确定一定是这么读,但是大概率是的👀
1.1 家族
本节参考CSDN博客的内容。虽然内容枯燥,但我认为还是搞懂的好,不然后面的设置会一头雾水🧐
:TeX是由著名的计算机科学家Donald E. Knuth为了编写《The Art of computer programming》而发明的一种文本编辑语言,说白了就是一门编程语言。
:TeX语言十分晦涩,Donald E. Knuth为了方便用户,自己基于最原始的TeX开发了Plain TeX。然而,Plain TeX命令依然十分难搞,用户入门依旧困难。
:L. Lamport教授为了进一步方便用户使用,在Plain TeX的基础上开发了LaTeX。LaTeX将原始的TeX命令打包为许多个新的
控制命令
并封装成一个可执行文件。这个文件会解析LaTeX打包好的控制命令
并“翻译”成TeX命令。所以,LaTeX只是一个工具,用户按照LaTeX规定的格式编写的文件最终会被翻译成TeX语言进行排版。:TeX系统生成的是
.dvi
格式的文件,这是一种为了排版而生的格式。虽然.dvi
可以通过其他程序转换为.pdf
,但毕竟不方便。为了解决这个问题,Hàn Thế Thành 博士在他的博士论文中提出了 pdfTeX。pdfTeX是对TeX的拓展,二者的主要差别是pdfTeX直接输出.pdf
而TeX则输出.dvi
。:同TeX和LaTeX的关系一样,pdfLaTeX的本质也是“翻译”LaTeX文档,只不过这次“翻译”以后的结果不是交给TeX处理了,而是交给pdfTeX处理。
:Donald E. Knuth教授在实现 TeX 的当初并没有考虑到中日韩等字符的处理。所以,在XeTeX出现之前,为了能让 TeX 系统排版中文,国人曾使用了天元、CCT、CJK 等
宏包
(后面会解释)使TeX能够“读懂”中文。现在,天元和CCT现在已经基本不用,CJK因为使用时间长且效果相对较好,现在还有人使用。目前,XeTeX 引擎直接支持 Unicode 字符:也就是说现在不使用 CJK 也能排版中日韩文的文档了,并且这种方式要比之前的方式更加优秀。:XeLaTeX的工作其实也是将LaTeX格式的文件进行“翻译”,并将翻译的结果交给XeTeX处理。
:现在开发还不完善,就不讨论了。
XeLaTeX极端方便,这将会是我们使用的编程环境,所以后面的所有描述都基于XeLaTeX
从上面我们也可以发现一些逻辑,“某某LaTeX”的作用是将“LaTeX”语言“翻译”更底层的语言,然后交给“某某TeX”来处理。由于“某某TeX”才是最终进行排版的,所以我们也称之为“引擎”
1.2 的发行版本
前面提到的各种TeX、各种LaTeX都是家族的一员。然而,仅仅有他们还不足以方便用户使用。
CTeX、MiKTeX,TeX Live、MacTeX这些软件集合不仅包括了TeX家族的基础程序,还包括一些方便用户使用的文档类、编辑器、模板、字体文件、辅助程序等等。这些被统称为LaTeX/TeX的发行版本
,可以类比Anaconda
和Python
的关系。
上面各种TeX
和发行版本
的关系可以用下图来描述:
1.3 编辑环境
上面提到的TeX家族本质上只是封装语言(某某LaTeX)和执行引擎(某某TeX),我们要对其进行编程,还需要编辑器
。编辑器
只是一个“记事本”,用来记录程序代码,本身并不执行。这就跟Python是一门语言,可以用VS Code编辑是一个道理。
常见的编辑器有:WinEdt、VSCode、TeXStudio、Texpad(macOS)等。其中,WinEdt是CTeX中文套装
中包含的编辑器,已经非常老,而且很多bug,不推荐(事实上 CTeX中文套装
本身也非常老非常多bug)。
我们使用LaTeX排版时,并不能像Word一样“所见即所得”。也就是说,你在编辑器上对LaTeX代码进行修改,修改完的结果并不能马上显示出来,而需要“运行”你的代码才能够显示(其实也有一些可以帮你一边编辑代码一边自动“运行”代码给你看的编辑器,但本质是一样的)。
LaTeX运行的结果将会是一个.pdf
文件(前文已经提到,我们使用的是XeLaTeX环境),所以,我们还需要一个合适的pdf阅读器。并且,我们要将为TeX系统指定一个pdf阅读器,并使得他每次运行完毕后都自动打开生成的.pdf
。
很烦是吧😂这就是为什么我推荐一些自带PDF显示功能的编辑器,比如TeXStudio、Texpad(macOS)
1.4 宏
有时候我们在逛论坛博客的时候,会经常看到宏包
、宏
、软件包
这些名词。这些名词看着高大上,实际上我可以一眼看穿:
“宏”实际上就是用户/社区编写的能够实现特定功能的代码集。
你可以类比pandas
、numpy
、matplotlib
之于Python
。幸运的是,各类“发行版本”已经包含了绝大多数我们经常会用到的“宏”,所以用户不需要太过焦虑。
1.5 的总结
在开始部署 之前,我们最好总结一下“引擎、宏、编辑器、发行版”的关系,表格来自于知乎网友:
概念 | 解释 | Python | |
---|---|---|---|
编译器/解析器/引擎 | 负责处理代码并输出结果 | python.exe | pdflatex/xelatex/... |
宏包/软件包/宏 | 用户/社区编写的代码集 | numpy/pandas/... | amsmath/CJK/... |
编辑器/IDE | 用来写代码的“记事本” | PyCharm/VS Code/... | TeXstudio/WinEdt/... |
发行版本 | 编译器/宏/编辑器的打包 | Anaconda | TeX Live/MacTeX/... |
2 环境部署
2.1 下载必要的组件
部署 无非就是将1.5节中表里的内容安装好。在此之前我们首先要知道:
-
发行版本
不仅包含了各类 和 ,还包括了我们会用到的宏
和模板
。所以建议的做法是安装一个合适的发行版本当然你也可以手动安装各种 和 然后再手动安装各种宏,但是这种反人类的事情还是不要找我罢
发行版本
可能会自带编辑器,比如CTeX套装包含了WinEdt
;MacTeX包含了TeXShop
。但是这些编辑器一般都糟糕透了,所以我们需要选择另外的编辑器别忘了部分编辑器并不自带pdf阅读器,所以你还得另外搞一个pdf阅读器并将它与TeX系统连接起来
所以在逛论坛的时候你会经常看到一些网友说:
sublime+MacTex(TexLive)+Preview
Sublime Text + MacTeX +Skim:
其实这里的sublime
就是所谓的编辑器;MacTeX
就是所谓的发行版本;Preview/Skim
就是pdf阅读器
由此,我们就可以明确部署一个完整好用的 环境 包括以下三步:
下载一个
发行版本
下载一个
编辑器
如果不带pdf阅读功能,那么还要选择一个
pdf阅读器
我使用的是 系统,所以后面的步骤都会以此进行。但安装的思路大致相同,应该可以类比的。
2.2 让我们开始8
-
下载一个
发行版本
从官网下载MacTeX(用户推荐使用),如图:
用Safari下载
MacTeX.pkg
速度非常慢,建议用一些别的下载软件,比如迅雷。作为 用户,我们可以选择的
发行版本
最好是MacTeX,因为其实MacTeX就是TeX Live的 版,这也省去了挑来挑去的烦恼了。 用户选择TeX Live就可以了。下载好了一路飞奔安装,最后在macOS的Launch Pad会得到这四个应用:
-
下载一个
编辑器
我个人使用的编辑器是
Texpad for Mac
(用户可以使用TeXstudio
),它的语法补全功能很强大、自带pdf阅读器、支持一边写代码一边自动更新(其实这个功能没啥用,因为代码量大了就会很卡🙈)、支持边栏的目录导航,等等。大家可以看B站up的视频,他对这个app做了比较详细的描述。
Texpad for Mac
是付费软件,千万不要在App Store里买,因为好像不更新了。我们可以下载绿(po)色(jie)版: -
正式开始前的设置
用户:这一节的最终目的是为了将环境设置为 ,你们被放弃了,自己想办法设置吧
-
打开下载好的
Texpad
软件: -
选择
Create a local file...
并来到代码编辑界面在红框框内,有一个
Live
、一个TexpadTeX
、一个⚙️,他们的功能是:Live 表示这时候软件会让你体验一边写代码一边自动运行代码的爽快感(但其实会很卡,没啥用😟)
TexpadTeX是一种特殊的 ,它与前面的 、 是同一个级别的概念。是Texpad软件团队开发的一种 ,并没有什么用
⚙️:设置
前面提到,我们所使用的环境是 而不是 ,所以我们需要点击齿轮进行进一步设置
-
进一步设置
请按照图片中的方法设置,并保证每个框框内的内容是一样的:
在Built-in TexPad Typestter环境下无法使用
取消自动排版,会极大提升你的效率(/狗头)
取消☑️自动鉴别板式,开放
General
选项卡Document Format要从默认的 改成 ,这些东西是什么在1.1节有解释
最后的Typeset Engine选择
记得,每次新建一个
.tex
文件都要做这些设置。每次你的代码报错,运行卡死的时候,千万千万千万不要慌,首先就要检查你是不是处于 环境!
3 开始写论文吧!
现在你们可以去论坛、知乎之类的找 模板了。
我上传了一个不知道从哪个论坛下载的模板,既然作者说:
%% You can mofify it and distribute it freely :)
那你们也可以下载来用,提取码是 。
下载解压,里面有一个.png
文件、一个.pdf
文件、一个.tex
文件。用Texpad打开.tex
文件,然后直接按
运行!
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
竟然运行失败,辣鸡推文,浪费我时间,根本没点用,溜了
...别忘了我之前说的,紧张害怕慌张满头大汗之前,一定要先
设置好以后,再运行代码:
“0 errors and 0 wornings”,舒服了