美国计算机科学家唐纳德·克努特(Donald Ervin Knuth)编著关于计算机程序设计之七卷本著作《计算机程序设计艺术》(The Art of Computer Programming,TAOCP),并因此获得美国计算机协会1974年图灵奖。在进行第二卷的校样时,发觉书商把他书中的数学式子排得太难看了,因此发明数学排版系统TeX。
TeX是一个处理复杂数学公式的排版系统,更被视为一种专为科学和数学设计的学术界排版语言(TeX 本身是一种宏命令编程语言)。在开发 TeX 时,克努特还创造了一种新的编程方法,他称之为Literate Programming(文学编程),因为他认为程序员应该将程序视为文学作品。
TeX
从TeX第三版开始,之后的升级是在小数点后加入一个新数位,使之越来越接近圆周率π的值。TeX目前的版本是3.141592653。这显示了TeX已经十分稳定,任何的升级都十分细微,这也代表了TeX不断追求完美的理想。克努特曾表示“最后一次升级是(于我过世后)将版本数改为π,那时任何余下的漏洞将被看作程序的功能。”
基于TeX非常稳定和克努特的幽默,他悬赏奖励任何能够在TeX中发现程序漏洞的人,奖励金额从2.56美元(16进制的100美分)开始,以后每发现一个,奖金都会翻倍,直到目前的327.68美元。那么已经发现有多少个漏洞呢?
- TeX 遵循传统的排版规则,以排版的质量为最重要的目标;
- TeX 的源程序是用 Pascal 写成的,尽可能方便地移植到其它的操作系统中;
- TeX 的输出是与设备无关,输出 DVI 文件可以被发送到任何输出设备;
- TeX 支持PostScript、字体和外部图形,以及生成HTML和PDF;
- TeX 不是所见即所得(WYSIWSG)的,需要运行 TeX 以生成格式化输出(如 PDF 文件)才能看到效果。
LaTeX
最基本的TeX只有300多个命令,短小精悍却晦涩难懂。以TeX作为格式化引擎,美国计算机科学家莱斯利·兰伯特(Leslie B. Lamport,图灵奖获得者)开发了LaTeX排版系统,对TeX基于宏定义的二次开发封装,以便没有排版和程序设计知识的用户也可以充分发挥TeX提供的强大功能。LaTeX非常适用于生成高印刷质量的科技和数学、物理文档,尤其擅长于复杂表格和数学公式的排版,成为科学文献交流和出版的事实标准。
TeX名字源自technology的希腊词根,而将兰伯特的名字和TeX混合则得到了LaTeX的名字。
至此,实际上用户仍旧难以直接使用TeX或者LaTeX,它们都不是独立的程序,而需要 TeX 发行版。LaTeX网站推荐适用于桌面端的发行版包括:
- TeX Live(Windows,macOS,Linux),由 TUG(TeX User Group)发布的一个发行版,相当于TeX的官方版。TeX Live是开发状态最为活跃的TeX发行版,是许多Linux/Unix系统默认或推荐的TeX套装。
- MacTeX(macOS),TeX Live 在 macOS 下的一个独立的发行版。
- MiKTeX(Windows,macOS,Linux),德国软件工程师Christian Schenk开发的发行版。
TeX 发行版通常将工作 TeX 系统所需的所有部件捆绑在一起,并且它们通常会添加到配置和维护实用程序中。这些部件包括:
- 引擎,将TeX代码转化为页面描述语言(PDL),如TeX;
- 格式,在引擎的基础上,通过预定义一系列宏,来实现一种TeX编写模式和规范,如LaTeX;
- 编辑器,为用户提供交互式编辑环境,如TeXworks;
- 宏包,类似于其他语言的标准库;
- 驱动,将TeX编译成文档的转换软件,如将dvi文件转化为pdf文件的dvipdf。
也就是说,如果您使用 TeX 发行版,那么它已经包含一个 LaTeX 版本。
TeX Live
下载和安装TeX Live(包含TeXworks,可选),需要较长的时间。
命令行查看TeX、LaTeX、XeLeTeX、pdfTeX的版本号,同时也是验证是否安装成功。可见TeX目前的版本是3.141592653。
包括TLShell TeX Live Manager、TeXworks editor、DVIOUT DVI viewer等组件。
使用XeLeTeX编译测试。
LaTeX的公式语法如此犀利又非常繁琐,那么可以借用一下懒人工具:在线LaTeX公式编辑器,latexlive.com或者codecogs.com。
为什么许多的教程都在TeX Live后又安装一个TeXstudio呢?
实际上没有必要一定要这么做。TeXstudio是又一个TeX编辑器,用途和伴随TeX Live一起安装的TeXworks等同。如果您确实没有同步安装TeXworks,也不喜欢TeXworks,除了TeXstudio,其他如Emacs、Sublime Text、Atom、Visual Studio Code也行,这是萝卜白菜的问题。
网页TeX/LaTeX
同时,LaTeX网站还推荐了Papeeria、Overleaf、ShareLaTeX、Datazar和LaTeX base等在线 LaTeX 环境。
那么,如果只是想在网页中借助TeX/LaTeX显示数学公式呢?
MathJax 是一个跨浏览器的 JavaScript 库,它使用 MathML、TeX 和 ASCIImath 标记在 Web 浏览器中生成 HTML+CSS、SVG 或 MathML 显示数学符号,被认为是使用最广泛的“Beautiful math in all browsers”方案。
GitHub 于 2022 年 5 月 19 日宣布,支持 Markdown 里面的 LaTeX 数学公式渲染,渲染引擎是 MathJax。将表达式写成块,开始一个新行并用两个$$
分隔表达式;编写内联表达式,在行内用两个$
分隔表达式。
MathJax已获得众多专业期刊及数学门户的支持,但只支持用于描述数学表示法的LaTeX子集。山巅周刊第4期有谈到如何在网页上显示数学公式。👍
「圆周率文化是个人站点,重点分享科技、商业、医学及人文资讯。
「圆周率文化得到中国汽车绞盘网的支持,深表感谢。中国汽车绞盘网业务始创于2001年,为越野车、清障车、消防车、军用车、特种车及工程应用等拖曳、救援场景提供手动绞盘、电动绞盘、液压绞盘和技术支持。