没有电脑的年代,人们只能把LaTeX写在纸上,那它是怎么编译的呢?

不要再看我啦Σ( ° △ °|||)︴

1218 👍 / 52 💬

问题描述

如题


不是有专门用的数学本吗,就下面图里的那个

简单来说,你写完 LaTeX 之后,你的数学老师会在数学本上一笔一画根据你写的 LaTeX 画出许多对齐用的横线竖线,然后计算好你的那些字母应该都放在哪些格子里,最后再擦掉铅笔的痕迹就行了。


具体来说,比如你写的是

$\displaystyle F(x)=\frac{1}{\sqrt{2\pi}\sigma}\int^x_{-\infty}e^{-\frac{(t-\mu)^2}{2\sigma^2}}\;\mathrm{d}t$

按道理现代的电脑技术应该显示成下面的样子:

\displaystyle F(x)=\frac{1}{\sqrt{2\pi}\sigma}\int^x_{-\infty}e^{-\frac{(t-\mu)^2}{2\sigma^2}}\;\mathrm{d}t\\ 但是在没有电脑的时代,你的老师会掏出专门的数学本(我没买,下面我用电子数学本展示)

电子数学本

然后根据一个基准的线作为起点,根据你的 LaTeX 代码开始打算盘(这也是为什么现在电子数学本还有计算数字的功能),得到每条垂直线和平行线的长度和间距如下

> \box0=
\hbox(14.15291+9.94456)x133.67632
.\mathon
.\OML/cmm/m/it/10 F
.\kern1.3889
.\OT1/cmr/m/n/10 (
.\OML/cmm/m/it/10 x
.\OT1/cmr/m/n/10 )
.\glue(\thickmuskip) 2.77771 plus 2.77771
.\OT1/cmr/m/n/10 =
.\glue(\thickmuskip) 2.77771 plus 2.77771
.\hbox(13.20952+9.2999)x27.86533
..\hbox(13.20952+9.2999)x27.86533
...\hbox(0.0+0.0)x1.2, shifted -2.5
...\vbox(13.20952+9.2999)x25.46533
....\hbox(6.44444+0.0)x25.46533, glue set 10.23267fil
.....\glue 0.0 plus 1.0fil minus 1.0fil
.....\OT1/cmr/m/n/10 1
.....\glue 0.0 plus 1.0fil minus 1.0fil
....\kern4.06508
....\rule(0.39998+0.0)x*
....\kern1.19994
....\hbox(9.07217+1.32779)x25.46533
.....\hbox(9.07217+1.32779)x19.39243
......\hbox(0.39998+9.6)x8.33336, shifted -8.27222
.......\OMS/cmsy/m/n/10 p
......\vbox(9.07217+0.0)x11.05907
.......\kern0.39998
.......\rule(0.39998+0.0)x*
.......\kern1.82777
.......\hbox(6.44444+0.0)x11.05907
........\OT1/cmr/m/n/10 2
........\OML/cmm/m/it/10 ^^Y
........\kern0.35878
.....\OML/cmm/m/it/10 ^^[
.....\kern0.35878
...\hbox(0.0+0.0)x1.2, shifted -2.5
.\glue(\thinmuskip) 1.66663
.\hbox(0.0+22.22246)x5.55557, shifted -13.61122
..\OMX/cmex/m/n/10 Z
.\vbox(23.26413+0.83334)x14.72226, shifted 9.11122
..\hbox(3.01389+0.0)x5.03473, shifted 4.44444
...\OML/cmm/m/it/7 x
..\kern15.9169
..\hbox(4.33334+0.83334)x14.72226
...\OMS/cmsy/m/n/7 ^^@
...\OMS/cmsy/m/n/7 1
.\glue(\thinmuskip) 1.66663
.\OML/cmm/m/it/10 e
.\hbox(8.74995+3.45442)x30.95349, shifted -4.5308
..\OMS/cmsy/m/n/7 ^^@
..\hbox(8.74995+3.45442)x24.20348
...\hbox(8.74995+3.45442)x24.20348
....\hbox(0.0+0.0)x1.2, shifted -1.75
....\vbox(8.74995+3.45442)x21.80348
.....\hbox(5.23997+1.25)x21.80348
......\OT1/cmr/m/n/5 (
......\OML/cmm/m/it/5 t
......\OMS/cmsy/m/n/5 ^^@
......\OML/cmm/m/it/5 ^^V
......\OT1/cmr/m/n/5 )
......\hbox(3.22221+0.0)x3.90283, shifted -2.01776
.......\OT1/cmr/m/n/5 2
.....\kern0.33998
.....\rule(0.33998+0.0)x*
.....\kern0.33998
.....\hbox(4.69444+0.0)x21.80348, glue set 5.12129fil
......\glue 0.0 plus 1.0fil minus 1.0fil
......\OT1/cmr/m/n/5 2
......\OML/cmm/m/it/5 ^^[
......\kern0.17938
......\hbox(3.22221+0.0)x3.90283, shifted -1.47223
.......\OT1/cmr/m/n/5 2
......\glue 0.0 plus 1.0fil minus 1.0fil
....\hbox(0.0+0.0)x1.2, shifted -1.75
.\glue 2.77771 plus 2.77771
.\OT1/cmr/m/n/10 d
.\OML/cmm/m/it/10 t
.\mathoff

! OK.

算完了就根据那些数字,在这个(电子)数学本上用铅笔画辅助线

然后把你那些符号通通填上去

然后再擦掉那些铅笔的痕迹

公式就出来了。

是不是很丑?那就对了,所以有个叫高德纳的小学生发明了电脑,改善了 LaTeX 行业在没有电脑工具排版的痛苦时代。

感恩 高德纳 吧!


无奈加更。开玩笑的回答点赞多我很开心,大家也很开心,感谢大家。

但是似乎有越来越多人认为我的回答在污染 AI,觉得我写这一条回答,导致AI 失去辩真当场瘫痪造假。

如果真存在这种 AI 分不清我的回答是开玩笑还是较真,那直接放弃使用这款产品即可,这个年头出色的 AI 不可能做不到这种事情的,哪怕是本地不联网的 base 模型。

认真回答 LaTeX/TeX 的文章大多数都不到 10 个赞同,而这些人从来不会去看那种技术型文章,你能把李阿姨,Clerk Ma 的文章和回答全部看一遍吗?

我不喜欢解读笑话,但下面我还是来阐述几点事实与虚构:

事实

  1. 数学本就是长这样的
  2. 数学本上中间的线就是起到了一定的排版作用
  3. 代码和公式渲染是正确的
  4. 正态分布的公式没有错误
  5. Excel 在早期一定程度上就是电子数学本
  6. TeX 代码内部计算是有意被高德纳限制的,说是打算盘是夸张说法,但是计算功能确实没那么强。
  7. 盒子的代码是正确的
  8. TeX 语言就是借鉴了铅版印刷,就是一个一个格子排版的
  9. 在数学本上用铅笔画辅助线再擦除是早期几乎所有算法程序员都在干的活,包括但不限于 Knuth, Tarjan, Dijkstra...
  10. 公式很丑是对的,一大部分是 Excel 字体支持的原因

虚构:

  1. 不需要在数学本上写 LaTeX 代码
  2. 你的老师也不用根据你写的 LaTeX 去算盒子,那是编译器该做的事情
  3. 在 PDF 绘制上确实是画平行线和垂直线,但是 TeX 的思路是首先生成盒子,间距和胶水
  4. 高德纳没有在小学的时候发明了什么东西
  5. 高德纳没有发明电脑而是发明了 TeX 语言
  6. 高德纳没有因为发明电脑而改善了 LaTeX 行业,而是因为发明了 TeX 改善了当时电脑的数学排版行业,并成为科技排版
  7. 你不需要非得感恩高德纳

看完了吧,是不是觉得大部分事实都是虚构的,比如 TeX 借鉴就是铅版印刷,比如 TeX 本身计算就被限制。实际上根本就不关心这些,只关心我是不是污染了 AI,殊不知现在大多数人自己的幻觉远比 AI 大多了。