开场0:00
我现在感觉耳机很有问题 。 哎我现在用的是那个 AirPods, 等一下我换一下 。
不要不要用那个无线的 , 找个有线的耳机 ,不然会很不稳定的 。
主要是我那个手机没什么电 。 行 , 我换好了 。 好 ,不好意思 。
哎所以这回那个苹果 12 的那个背上那个贴的 " 充电 " 就有用了吗 ? 就是那里可以边充电然后下面插一个有线耳机 。
没有 ,因为我买的是 mini, 然后这个电量就感觉超小 , 用到一天晚上差不多就不够了 。
哎真的很差的吗 ? 我还想说那天我去店里试了一下那个 mini 的手感我觉得还挺不错的 。
呃 mini 是很好啊 , 就是很好 。 那它肯定电池就没有其他那么大嘛 , 就是这是肯定的 。
就是很纠结这个事情 , 好烦啊 。 它能不能把那个摄像头减到只剩一个 , 然后腾点空间给电池 。
呃哈哈哈 , 你去跟苹果说吧 。 好了我们开始录吧 。 嗯 。
大家好 , 今天是 2021 年的 3 月 16 号 ,《 字谈字畅 》 的第 147 期 。
同时也是 《 内核恐慌 》 的第 63 期 。
这也是 《 字谈字畅 》 与 《 内核恐慌 》 的串台 ,《 字谈字串 》 的第 10 期 。《 字谈字畅 》 是 The Type 旗下全球首家用华语制作的字体排印主题播客节目 , 我是主播闻川西畔动营局 Eric。
我是主播黄浦江边清真宇 , 钱真宇 。
呃 《 内核恐慌 》 是一档大致以计算机科技为主题的娱乐播客 , 我们号称硬核 ,但是也没有什么干货 , 想听的人听 ,不想听的人就别听 。
我们的网址是 pan.icu, 您可以在网站上找到订阅我们的节目 、 订阅我们节目的方法 ,以及联络我们的方式 。
呃我是吴涛 。
呃我是 Rio。
啊有台主播你们好 , 我们居然已经开始做第 10 期的串台了 。
两位数了 。
托你们的福啊 , 我们才能够保持这个更新的节奏 。
没关系 , 反正这期的话主要是吴涛在说 , 我只我只负责听 。
啊是这样吗 ? 我怎么为什么我事先没有得到通知 。
现在你知道了 。
所以让你写这个提纲嘛 ,因为这次我们来串台的一个非常重要的主题啊 , 宗师级程序员的字体排印解决方案 。
我们要来终于可以来拜一拜我们的高德纳大先生了 。
是的 。其实我不知道你们两个 , 就是我跟 Rio 都只是用 LaTeX 写过那个写过论文而已 。 你们两个就是 , 或者说不如我们四个人轮流来说一说怎么知道 LaTeX 或者说 TeX 这段事情的吧 。
初识2:30
呃我我先说吧 。 我应该是在本科的时候知道的这个这个人 ,他的事就是以及他写的这本书 。 但是那个时候我对 TeX 这个东西还没有什么概念 。
我在本我大概是在本科的时候接触了 Web 编程 , 然后学了什么 HTML 啊 CSS 之类的 。 然后那个时候正好是赶上了 Web 前端开发的一次革新吧 , 就是在呃在我上大学之前 ,Web 开发基本上就是你在你在 Photoshop 或者是 whatever 什么 Dreamweaver 之类的地方里面呃做一个设计 , 然后把这个设计切成很多小块 , 然后这个设计工具会帮你转换成一个 Table, 然后你用编程语言去等于轮流转
换这个 Table 里面的每一个块 。 然后在我上大学之后, 就我大学毕业之后,Web 开发的标准变成了你要以语义的方式去描描述整个文档的结构 , 然后用 CSS 去改变每个文档的样式 。
然后大概就是在这个时候我隐约听说了在在桌面出版界也有这么一个东西 , 就叫 TeX。 但是真正用到它还是到了德国之后写硕士论文的时候 , 就大概明白了这个东西它的来历以及它的用处 , 然后怎么说用自己对 HTML 和 CSS 的理解去去使用它 , 然后碰得头破血流 。
然后在历经了坎坷之后终于把论文搞出来了 。 这大概就是我跟 TeX、LaTeX 的全部的渊源 。 然后我在毕业之后 2010 年呃刚刚加入 TIB 的时候 , 对 TIB 的贡献之一就是我在 2010 年写过一篇 《Computer Modern 的故事 》, 就是高德纳发明的 ,不是他发明的 ,他电子数字化这款字体 , 然后用来排他的这个 TAOCP 的这本书 。
这篇上基本上简简短的解释了这个 LaTeX 的整个的渊源 。 各位如果有兴趣的话可以去看一下那个文文章在 the type.com, 然后你可以在上面搜 Computer Modern, 然后应该能搜到这篇文章 ,是 2010 年 2 月 05 号写的 。
当然我们也会把这篇文章的链接放到今天的 show notes 里面 , 去大家可以去看哈 ,2010 年时候的文章 。
行我说完了 。 那接下来谁 ?Rex? 不是 Rex, 星系站长 。 呃那个 Rio 你说一下 。
啊我第一次接触应该是用 LaTeX 写那个时候 。 哎对 , 等一下, 这玩意到底怎么念 ? 我们要不要先科普一下 。
LaTeX 你念的是对的 ,TeX。
是 La 不是 Lei 对吧 ?
La 我反正我一直念 LaTeX。 对 。
其实有人练 Lei 的 ,但是呢一般我们都练 La。
好的 。 呃我当时是在上大学本科的时候 , 然后写作业 , 然后我因为我不是写字 , 就是手写很丑嘛 , 然后我就不想手写 , 我都一直从大概啊应该从大学开始基本上交作业都没有手写过 , 除了考试是必须手写的 。
那个时候都是用这个电脑呃排版好 , 然后就去打印 , 然后再交嘛 。 然后后来是因为学科的 , 就是你有几个课程的关系 , 它会涉及到比较多的啊公式和这个就是数学的一些排版 , 还有像一些这种图形啊什么的 。
然后我就想说找一个特别好用的一个工具来解决这个问题嘛 。 当时 Word 肯定是不行的 , 对吧 ? 当时 Word 很久已经没有 , 就是那个数学排版工具实在是太垃圾了 。
呃所以后来就兜兜转转 , 哎当时也也在玩像那个 Linux 啊那些系统嘛 , 然后就就在呃找到了这么一个工具 。
应该是受了谁的蛊惑来着 , 我想想 , 应该是王莹 , 如果没错的话 , 没记错的话 。 对 , 当时她不是写了有有有有几篇还影响挺深的一个文章 ,其实就是在这个兜售这个这个 LaTeX 这个东西嘛 。
然后我就去学了一下, 然后啊费了牛逼之劲装上了一个这个我们叫什么一个是 distribution, 然后就开始用那个写作业 。
然后后来是写毕业论文 , 然后去国外上学 , 写作业和毕业论文差不多也就这么这么干 , 然后之后就再也没用过了 , 差不多是这么一个过程 。
所以你的论文也是用 LaTeX 写的 ?
啊我毕竟读 CS 嘛 , 那肯定还是要对吧 。
这这两者之间有必必然的关联吗 ? 就是我相信大部分我们听众里面读 CS 的人也未必是用 LaTeX 写的毕业论文 。
呃那或者这么说吧 , 如果你想用 LaTeX 写论文 , 然后你又不是 CS 的 , 你其实是不是很尴尬 ?
那可不一定啊 。LaTeX 其实现在基本上你觉得现在 LaTeX 最大的用途是在哪 ?
就我觉得是呃学业界任何业界需要公式的地方 。 嗯 ,但实际上 computer science 并不是一个最需要公式的地方 。 OK but anyway 那个时候我需要 。
然后呃但我当时有一个就我们在学校外面租房子住嘛 ,有个室友啊 ,他是读工程的 , 就是那种 engineering,他好像也是用那个 LaTeX 写毕业论文比较多 ,因为他们论文也比较长 ,有比较多复杂的计算的过程嘛 , 所以他们也是用那个的 。
所以反正就是都在用 , 就反而是用 Word 的那些是比较相对来说少一点点吧 。
对 。 终于你是怎么用上你是怎么接触到 TeX 的嘛 ? 你介介绍一下好了 。
其实蒸鱼也是本科用 LaTeX 写的论文 。
怎么可能 。 呃我觉得我应该我应该引用那个就是你们现在聊的 , 我有点事先走 。 哈哈哈 。 我其实没有 , 我其实至今没有用过 TeX 来做任何任何事情吧 , 应该说 。
对 , 怎么知道 TeX 的 ? 我觉得我是因为先知道了你们 , 所以才知道了 TeX。
这我们受宠若惊啊 , 我们简直居然做到了什么新晋火船的这样一个 。
对我对 TeX 的认知其实是一个就是就像刚才 Rio 和吴涛也说的 , 就是它是一个在公式领域非常有用的这样子的一个排版工具 。
但其实我曾经大概在可能在五六年前吧 , 一度有有想过要去用 TeX,因为我当时有一个非常实际的需求 , 就是我当时差不多每个季度都会有一个呃类似像呃内部刊物排版的这样一个工作 ,而那个刊物的页数非常的多 , 大概是在千页这样子的一个数量级的 。
所以我当时其实有想过要用 TeX 去做一个比较自动化的排版的流程 ,但后来一直一直没有动力去做这个事情 。
等等 , 你说你每个月要排 1,000 页的内部刊物 ?
每个季度左右 。 对 , 每个季度三三个月左右 。 每个季每三个月要排 1,000 页 。Oh my god。 哈哈哈 。 我我不禁心里涌起了一丝怎么说同情 。
什么内容啊 ? 好好奇的问一下 。
啊是是我当时在的一个团队 , 呃我们自己做的一些出版物 ,其实这个大家可以找到的 。 我当时在那个团队叫做证件 , 然后我们的当时的出版物是以季刊或者半年刊的方式来发布的 ,其实是将大家写的一些文章合起来 。
当然这个 1,000 页的开本是一个 A5 左右的开本 ,而且字号相对算是比较大的 , 所以工作量可能没有那么的多吧 ,但大概也有这样子的一个量级 。
A5 就是 A4 的一半嘛 ,1,000 页的 A5, 那也有 500 页的 A4, 那也是非常厚的一本书 。
啊对 。
我知道蒸鱼一直都在做证件 ,但是我但是我没有想到就是当时有每个季度 1,000 多页的量 , 就是哈哈哈 ,因为我也没认真看 。
有的时候会少一点 , 可能几百页吧 , 多的时候会比较多 。OK 你们继续 ,Eric 来说一下吧 。
好 。
我也是在大学的时候呃第一次知道 TeX 的 。 每每次在这个串台的时候都要说到我的大学的第二学士是计算机的这样一个黑历史 。
但是呢我那时候第二学位的这个论文呢是并并不需要用那么多公式 , 所以呢我们当我们当时的那个呃第二学位的论文是不是用 TeX 写的 。
那我第一学位大家也知道我是学日语的嘛 , 那就更更是不用大家都用 Word。 那我用 TeX 的是因为因为我高中也是学理科的嘛 , 所以就要做一些什么卷子之类的那那些东西都是用 Word 排的公式 , 然后觉得很难用 。
到了大学本科以后呢 ,有那个同学介绍说就咱们理工科的嘛 , 真的就是理工科同学 ,他们说他们都用 TeX 嘛 , 所以我就拿来用了 。
可是这个东西太难用 , 就是因为要组装嘛 , 就各种各样的包啊什么搞不清楚 。 所以我当时就是为了解决临时的问题 , 我干脆就是用一个 TeX 先排出需要的公式 , 然后呢生成 pdf 以后, 然后再把这个 pdf 转取以后再嵌到我呃平面式 , 比如说我用那个 Illustrator 给它嵌进来 。
我只是为了排这个公式而临时给它嵌进来而已 。 我从来没有用 TeX 就做个完整的一个文档或者呃就是中文的文档 , 从来我我从来没有做过 。
我只是为了导出一个单单独的一个公式 , 然后就就生成一个东西就做过而已 。
哎其实我要我要补充一下, 就刚才其实我们都一直在讲 ,是因为为了这个数学公式才用的这个 LaTeX。
我后来我刚翻了一下我之前写的那些什么作业和那个论文的那些啊文档 , 还还刚好还在电脑里面哈 。其实其实发现数学公式也不算特别多 ,但是其实有很多像什么呃程序代码 , 你知道那个就是读 CS 它很多是那种伪代码嘛 ,并不是真的那种 , 你要用这个就是等宽字体排印的那种 , 真的我们可以编译的那种代码 , 它很多是伪代码是
不等宽 , 然后有各种很多稀奇古怪的什么箭头符号啊那种东西的 , 对吧 ? 比如典型的一个比如说这个 grammar 的那些 lexer 啊那些东西 。
然后还有一个就是当时我想起来了 , 当时为了用这个东西是为了画那个这个叫做什么的啊 automaton 啊自动机的那个那个图形 , 然后当时用了一个呃那个就是太呃 LaTeX 有一个专门这种 ,因为 LaTeX 比较灵活嘛 , 它可以做很多的这个插件 。
当时有一个非常好用的插件应该叫做 Ti k Z, 如果没记错名字的话 。
Tix 对 。
对 。 哎怎么念 ?
我不知道 , 反正它的就是四四个字母 Ti k Z, 应该是 Tix。
我念 Tix。
Tix Z。
对 , 它就非常灵活 , 等于是一套类似于您可以认为是一个可编程的绘图的一个语言 ,在在然后嵌在那个 LaTeX 里面 , 就可以做各种各样的非常精美的图形 , 比如说你要这个箭头转个 35 度半 , 然后再和另外一个圆圈连起来 , 再穿过那个圆心这种之类的事情 。
就是你用任何其他的现成的工具都是没法去描述这个东西的嘛 , 精确描述哈 。 所以就用就是当时就就其实其实公式到并不是我用它的最核心的一个事情 , 我后来发现 。
然后还有个事就是刚才蒸鱼也提到这个 , 让我也想起来 , 就是如果说你的那个文档不要说 1,000 页了哈 , 就超过比如说呃 100 页吧 , 然后你用这种任何这种所见即所得的编辑工具 ,Word 也好啊 , 当时还试过各种什么啊 OpenOffice 啊这种东西 , 就它的那个性能是直线下降的 , 就是已经超过几十就就三位数的页码就基本上没法用了 。
那个时候我记得用的那个那个电脑的性能也一般 , 然后如果是特别长的文档 , 如你一次编 ,因为那个 LaTeX 每次都要编译一次才能输出那个 pdf 的结果嘛 , 那个编译时间也还蛮长的 。
后来就是分分成那个章节 , 对吧 ? 我只我在当时我在写这个章节 , 我就我就只编译当前那个章节 , 然后最后再合在一起的时候 , 我再这个合在一起再编译 , 这样就可以节省那个时间嘛 。
虽然也不是所见即所得 ,但是整个它的那个 feedback loop 就是还是比较比较快的 。
对 , 就实际上你的书大到一个规模的时候 , 你就必须用管理原代码的方式来管理它了 。 这其实作家也同样面临着类似的一个问题 , 比如说你会遇到什么版本控制或者是插图方面的问题 , 这个时候所见即所得实际上并不是一个非常好的解决方式 。
就是总结一下刚才大家的自我描述 , 我们会发现公式实际上是 TeX 的一个 killer app。 这其实跟我现在观察也相似 , 就是 LaTeX 虽然是一个非常怎么说高大上的系统 ,但是它目前它的发展的这样一个定位实际上是在一个非常精细的领域 , 呃就是公式编辑啊以及部分的插图方面 。
传奇与争议14:58
你说我们现在这么多出版物 ,有哪个出版物你听说是用纯粹用 LaTeX 来来编排的吗 ? 好像也没有 。LaTeX 现在可能是一个个人出版的 specialized 的一个巅峰 ,但是我觉得它在公共领域好像没有获得那么广泛的应用吧 , 至少你跟什么 PageMaker 或者是啊 。
这个就是看领域了 。 呃反正我觉得理工科类的还有吧 ,因为理工科类的所有的论文啊 , 还有那些期刊的话 , 它它既收 LaTeX 的论文 , 它自己出的话也是用 TeX 出的嘛 , 就是期刊 。
然后在日本的话 , 像比如说像理工科类字典 , 它整本字典都是用 TeX 出的 。
哦真的 ? 整本字典是用 LaTeX 来做的 ?
对 ,有的 ,在日本是有的 。 岩波数学辞典的第四版就是全部都用那个 LaTeX 写的 。 啊如果说确切的话是 P LaTeX 的 2e 那个版本那个做的 。
那首先因为它是字典嘛 , 然后肯定是有有一个批处理的东西嘛 ,因为你知道字典的它这个每个词条它是非常有规范化的一个一个 format 的一个东西嘛 , 然后它又是理工类似的 , 里面又有很多公式嘛 。
对 , 就我理解是就是很多人入门 LaTeX 就是比如说他要写个论文 ,但是大部分写论文的人, 就是我们说就 90% 的人写了论文之后, 可能就不会再写第二次论文了 。
就他对于很多人来说 ,LaTeX 的学习过程可能是一生一次的事情 , 就是大概跟追姑娘差不多 , 你可能追一次你就不用再追第二次了 。
但是呃真正会一直把 LaTeX 用下去的人, 大部分都是会跻身学术界的或者是学术出版界的 。
那这非学术界基本上不会有这种就是工业化或者是这个产业化的需求嘛 , 除非你是在排版行业生活的哈 , 那基本上不会有这个需求 。
就是我我觉得你一个人写论文其实就大概是一个个人出版的这么一个巅峰了 。 你写一个了不起三五百页的论文 , 呃用 LaTeX 巅峰 。
对 , 这这已经是巅峰级别的一个 LaTeX 的应用了 。 然后这在个人出版领域吧 ,但是在公共出版领域可能一本数学词典 ,而且我觉得数学词典用 LaTeX 的一个很大原因也是因为公式嘛 , 就是哎呀我们是不是应该还是根据墙稿来 , 我觉得好像有点带偏了 。
没关系 , 这个因为我们是串台节目 , 那说实话从 《 字谈字畅 》 这边过来的听众呢 , 很多都是设计师嘛 , 所以呢他们就从来就没有接触到 ,也不知道 LaTeX 是个什么东西 。
所以呢我觉得还是要得从头到尾给大家解释一下 。 然后呢刚才也说了嘛 ,因为这个东西挺局限于这个理工科类的嘛 , 那其他领域的人可能也都不知道 , 即使是理工科类的朋友们 ,他们可能就一辈子也就是为了写论文用一下而已 , 然后之后就再也没用过 。
对 , 这个前因后果可能也不是很清楚 。
对 , 所以还是要从我们的大师高德纳先生开始说起吧 。
考古开始 。
啊行 , 那我来吧 。 就是我们今天这个 podcast 标题所谓宗师级程序员 ,其实指的就是一个人, 这个人叫做 Donald Ervin Knuth,他有一个中文名字叫做高德纳 。他从 1969 年开始写一本书 , 这本书叫做 《 The Art of Computer Programming》。
这本书的简称是 TAOCP。 呃他到现在应该还没写完 , 据我所知他到现在还没写完 。 这本书是有中译版的 , 就是各位有兴趣的话可以可以在网上看一下预览 。
啊有吗 ? 哦有中译版我都不知道哎 。
对 , 我在我在中国应该是买了中译版的第一卷这样 。 然后他在 1969 年的时候开始写这本书 , 第一卷的排印用的是 Monotype 的排字机 , 就是那个时候是完全机械的排字机 , 对吧 ?
自动助排机 。
对 , 一个一个非常硬核的这么一个 , 就他很他很喜欢 Monotype 排字机 , 然后他是当时在美国的 Monotype 的排字机排的 。
然后他第二卷什么时候写好了呢 ? 是 7 年,7 年之后才写好 。 呃 7 年之后是呃 1976 年 。
不对不对 。
嗯 ?
不对 ,1976 年他是第二卷要重排的时候 。
哦那就对啊 ,OK, 那就是第二卷的一个 revision 完成的时候 ,他不得不转向激光照 , 呃不是激光照 , 就是普通的这个照相照排机 , 照相排印机来排版 。
但是他拿到了那个叫所谓 galley proof, 就是样版的时候 ,他他大概说了一句话 , 就是 black, 就这么一个感叹词吧 , 就是觉得我靠这是什么 。
嗯 , 这这句话的翻译叫这什么屎 。
哈哈哈 , 就是大概哎呦我去这种感觉 。 哈哈哈 , 然后他非常失望 ,以至于他做了一件只有宗师级的程序员能做的事情 , 就是他决定自己开发一套系统来完成排版这件事情 , 就是 from scratch。
然后他首先他发明了一种编程语言 , 呃这种编程语言叫 Web, 就是跟我们那个万维网的 Web 没有关联啊 , 它就叫 WEB 这种编程语言 。
然后他用这种编程语言 , 呃首先开发了一种字体 , 这种字体叫 Metafont,不 ,他开发了一种用于画字体的系统 , 叫做 Metafont。Meta 这个前缀就是什么什么的什么什么 , 比如说我叫 Metafox, 就是 Fox 的 Fox, 然后他这个 Metafont 就是 Font 的 Font。
那么 Metafont 的用处就是你你用一个数学公式 , 类似于数学公式的方式描述出 , 比如说一个字母的几个点 , 它们之间的相对位置 , 比如说我我说 m 这个字母的相对位置是啊 , 下面的三个点彼此的距离是一样的 , 然后上面的两个点跟下面的三个点是怎么相连的 。OK, 然后 Metafont 可以帮你生成出这个字体的 , 呃怎么说 , 点阵化的表示来 。
这是 Metafont。 然后他用 Web 呃写了另外一套系统 , 叫做 TeX,T E X。 然后这个 TeX 的功能呢 , 就是把你的文章排列出一个可以用于打印的格式来 , 这个格式叫做 DVI。
然后他用自己发明的这一套工具来排了自己的书 , 大概就是这么一个听起来好像没有那么怎么样 ,但是在我们看来就是一个武学宗师开创了一个门派 , 然后专门拿来做一件事情这么一个级别 。
然后他这套系统呢 , 就从此开源了 , 然后广为流传 , 一直活跃到今天 ,并且这中间有一个比较推波助澜的事情 , 就是美国数学学会 AMS 等于说钦定了 TeX, 就是他们的排数学公式的这么一个工具 , 所以导致基本上整个数学界就采用了 TeX 这套东西 。
那数学我们知道实际上是就条条大路通向数学 , 所以反过来导致整个科学界基本上在你在使用这个公式的时候都一定会碰到 TeX。
然后大概现在的状况就是这样了 , 就是 TeX 还仍旧是一个被维护的这么一个程序 , 当然它已经有点过时了 , 这个我们一会会提到 ,但是啊直到现在它都是在一个稳定维护并且发行中的这么一个程序 , 这个程序的历史可以追溯到上个世纪的 70 年代 , 大概就是这么一个这么一个过程 。
然后呃有一就是我在 T I V 上写的那篇文章 《Computer Modern》, 大家如果去看了的话 , 会发现那个字体可能有点眼熟 ,因为如果你 ever 看过一篇比较正式的论文的话 , 那么它有很大的可能性 。
现在我觉得可能没没那么流行 ,但是至少在比如说 10 年前或者 5 年前 , 你去看任何一篇论文 , 它有可能有 8 成的概率是用 Computer Modern 排的 。
所以当你看到一篇论文 , 它是用 Computer Modern 来排的话 , 那它有很大很大概率就是用 LaTeX 来写 。 大概是这么一个状况 。
我跟大家补充一下就是这个时间点哈 , 首先高德纳先生他现年 83 岁 , 所以大家首先要看想到这是一位老先生啊 。
而且还健在 。
对 , 嗯 ,他还接着写他那他那套那个计算机程序艺术嘛 ,他本来想是说一共出 7 卷是吧 , 结果后来他现在写第四卷开始开始写分册了 , 所以不知道他一共要出多少本 。
哈哈 , 然后这个时间点呢 , 嗯 , 如果是我们 《 字谈字畅 》 听众呢 , 可能知道我在节目里面讲过很多次 , 就是我们在做印刷的时候 , 整个技术有三大技术革新嘛 , 就是从签字到照排到现在的桌面出版 。
那么这个事情发生在美国的六七十年代 ,其实呢就是当时从这个金属活字到这个照相排版转变的这样一个过程 。
高老先生他当时出卷出到第三版啊 ,是 1973 年, 那时候那个出版社就已经把那个这个自动助排机的蒙蒙纳机就已经卖掉了 , 所以出版社他自己已经没有这个蒙纳 , 就签字做这个自动助排机东西 。
所以当时他的 75 年的第一版再版的时候啊 , 特地把这个书版送到欧洲的 ,因为当时欧洲还有老的这个机器可以用 , 所以特地到欧洲去重新排来给给这个高德纳用 。
然后等到 76 年, 第要等第二卷再重版的时候 , 实在是没有 , 这个花费太大了 , 这个从欧洲再导一次的话 , 这个成本太高 , 所以呢只好用这个照排机给他排 。
然后老先生就当时就看哇这都什么鬼 , 所以他就重新自己做了一个 TeX 这个排版软件 。 那么这个 TeX 最初的这个发布的时间点呢 ,是 1978 年, 也就是 43 年前 。
43 年前高德纳老先生还是一个 38 岁的 , 对吧 ? 三三十对 38 岁的 。
小伙子 。 啊对啊 。
壮年啊 。
就跟你现在差不多嘛 。
啊我好老 。
哈哈 。 不他是不是该是写写你自己的出版系统了 。
对说的对 。 我要在我要在怎么怎么说 V2 里面弄一个属于未来的这么一个排版系统 。 我今天把话搁这了 。
哈哈 。
所以等到现在就是到后之后我们也会讨论吧 , 那可能大家现在站到这个高度 , 然后就讲哎呦为什么还连什么 Unicode 都不支持 , 那 Unicode 是什么年代的事情 。
就他当时写 TeX 的是 1978 年, 那时候 Unicode 还还还在娘胎里面还没出来呢 。
那个时候 ASCII 都不是一个比较广为使用的 standard。
对 , 呃所以呢 。 呃 78 年那个 TeX 诞生 , 然后嗯高德纳在 1990 年的 9 月份 ,他就宣布说这个 TeX 发到 3.1 版本以后就不会有重大更新了 , 除了修 bug。他其实就这个项目其实就已经呃打句号了 , 刚好是 3.1 版本 。
我有个疑问 , 就是他 3.1 版之前是 1.0、2.0 这样的吗 ? 还是他一上来就是 。
应该是的 , 应该是的 。
因为这里我梗就是 TeX 以及跟 TeX 相关的很多软件 , 它的版本号都是一个 , 这个叫什么 , 超越数还是叫什么无理 , 呃 。
无理数 。
无理数 。 它是比如说 TeX 的版本号是 pi, 然后 Metafont 的版本号是 e。
就是那个自然对数的 2 点几的那个 。
自然对数的 d。
还有一个什么软件 , 它是它的版本号是 0.99999999, 就是哈哈就是 1 嘛 , 它无限接近 1, 大概是这样 。
就高德纳他是一个很很喜欢这种各种梗的人。
他是一个很 geek 的人, 我觉得他是 。
对 。
就是那个时代的那个时代的风格的 geek, 就是他非常他他非常严谨 , 然后又特别的还是相对来说比较比我们这个时代的 geek 要严肃的多吧 ,但是他内心里面仍然是一个 geek。
比如说他啊他的 TAOCP, 如果你在里面找到了一个 bug 的话 ,他会给你寄一张支票 , 这个支票的金额是 3.14 美元吧 , 好像还是还是多少钱 。
嗯不是不是 , 那个支票是多少钱来着 , 反正是 2 的正整数 , 哈哈哈 ,不是反正是 2 的倍数就是 。
哦是吗 。
2 的多少次方 , 嗯之类的 , 我记得好像是 。
跟本台的捐款类型是一样的 。
对 ,其实刚刚武涛说到那个 TeX 所包含的第一套的这个字体 , 就是所谓的 Computer Modern,其实大家应该是非常眼熟 ,因为为什么呢 , 就是我们其实在大概十来期节目前讲到了另一位字体设计师叫 Maurice Fuller Benton,他所设计的 ,他所指导设计的有一款很著名的字体叫 Century,而这个 Computer Modern 其实它的这个字形的设计呢 ,是跟 Century 非常的接近的 , 或者说 Century 是 Computer Modern 的一个直接的复刻的蓝本
。 所以在这个意义上,Century 作为一款非常流行 , 曾经也是跟 Monotype 绑定的这样一套字体 , 呃大家也可以在过去以及在今天 , 甚至在将来的很多出版物上都会看到它的影子 。
我我打岔问一个问题哈 , 这个叫 Computer Modern 的这个字体 , 它看起来一点都不 modern。
啊它的 modern 指的是一种风格 , 这种风格叫 modern 风格 。
所谓的在字体中的现代体 。
他 modern 的时候是我们还没有出生的时代 。
对对对 。
他所谓的 modern 是那种时尚杂志的 modern。
Computer Modern 的一个直系亲属实际上是 Dido。
迪多 。
对对对 。
迪多字体是一个在 18 世纪吧出现的这么一个字体 , 然后那个时代人们会认为说我们现在处于现代 ,在在那之前是古代 , 实际上也是这样的 , 就是从大概从 19 世纪初人类进入了这个所谓什么大爆发 ,有反正有英语有个词叫 great 什么什么的这个一个时代 , 然后我们现在还处在这个时代中, 这个时代可以视为现代的开端 , 所以你叫它 modern 其实也蛮正
常 。
呃其实我们 《 字谈字畅 》 在第 137 期讲过本顿父子的世纪传奇 ,其实在这里面我们就讲述了当时的美国的 ,其实他本顿父子是工程师啊 ,他们制作的这个 Century 字体 ,也就是现在这个 Computer Modern 的直系的 。
老祖宗 。
模板 。 那如果你如果上述到我们说是这整个对于字体来讲 , 这所谓的现代体 , 那就要嗯追溯到日嗯字体的什么伯多尼 , 然后要讲到迪多啊 , 那么大家也可以翻到我们 《 字谈字畅 》 的 , 我们在第 125 期讲过迪多啊 , 然后在第 131 期讲过伯多尼啊 , 这大家可以回去听一下就知道 , 就是当时的所谓的他当时的现代体是一个什么样的一个东西
啊 。
Rio 你说为什么他们可以一下子就说起来我们之前哪一期讲了什么 , 为什么咱们就做不到啊 。
嗯好问题 。
哈哈哈 。
你们是要打印一个 list。
就你们是怎么做到的 ? 你们身边有一个小秘书吗 ? 还是或者你们就是把所有的每一期讲了什么全都随时随地摆在手边 。
我们只是有个列表而已啊 , 我们做了 140 多期 ,4 个 140 多期 , 然后我们一期就一个主题嘛 , 像那一期我们我们花了一个半小时就讲本顿父子 , 所以哈哈一搜搜还是可以搜到的 。
哦 。 哎武涛我给你出个主意 , 你可以把我们首页打开 , 我们也有个列表 。
嗯哈哈哈 。 哇你用你用像数字排的我看不我看不懂啊 , 这太难太难读了 。
哈哈哈
。
所以你们找到那个高德纳老先生发的那个多少钱了吗 ?
哎刚才谁在查 ? 我以为前任女士查了 。
没有没有 。
我我我来查吧 , 呃 Knuth check, 呃 Knuth 可能 Knuth reward check。
他每个漏洞的奖金是两块五毛六 ,因为这个两块五毛六是 16 进制的 100 美分 。
就是第一个 。
对然后他有些人拿到的支票上面写的是 0x dollar 1.0。
哈哈哈 。 然后是每次就是你每下一个人得到这个支票的人就会在那个数字上乘以 2, 直到知道现在是多少 ,32327.68。
嗯哈哈哈 。
但是也才 300 多美金嘛 , 那高德纳也其实也不算很多钱了 。
不是啊你要知道这个是每次谈论到这个是很恐怖的故事 。
你看你看 。
棋盘 。
很恐怖的 。2005 年的时候总金额就已经超过 2 万美元了 。
所以高德纳就疯掉了嘛 ,他啊就是说我不更新了嘛 。
对就是非常恐怖 。
就是逼迫他自己少写 bug 的一个驱动力 , 你知道吧 , 为了为了防止破产 , 要尽量少的出现 bug,因为下一个 bug 随时可能让你倾家荡产 。
哈哈哈 。
不过刚才也说了嘛 ,他的版本号接近于 pi, 那么其实呃一个非常嗯新的一个时间点 , 就是在今年的 2 月份 ,2021 年的 2 月份刚更新了一个版本 , 然后这个版本号是 3.141592653 版 。
哈哈哈 。
就已经到 2653 了 。
哎其实也还好哈 , 你想一下其实也也也很容易背得下来 ,也没更新几版 。
对啊你能背几到你能背到几位 。
嗯 1592653589798285462643。
以前是可以的 , 现在不记得了 。
大概我能背到 50 位还是多少位 ,Rio 能背背到 100 位吧好像 。
哎所以我想确认一下, 这个到这个 2653 的版本 , 实际上就是指的是 3.9 版本是吧 。
啊你数位数对 , 数到后面有几位就好了 。
但是没有很多这个大的修改了 , 主要是那些 bug 修 bug 而已 , 没有重大的功能更新啊 ,其实就是 。
对 TeX 本身的内核实际上已经比较老了 , 就是而而且它本身并不是一个特别复杂的系统 。
对 。
就是你把它本它底层的那个 TeX engine 可以用其他方式来实现 , 现在实际上比较流行的是一个叫 pdfTeX, 另外一个叫 ZTeX, 应该是这两个引擎现在是用的比较广泛的 。pdf 呃 pdfTeX 主要是做那个呃标点悬挂比较好 , 然后 pdfTeX 还支持就是直接生成 pdf,而不是要先经过那个 DVI 那一步 。
就是有各种前缀的 TeX, 它们它们之间到底是什么关系 ,其实还挺复杂的这个事 。
这个你还是要跟大家讲一讲的到后面 。
嗯 。 TeX 有点像有点像 Unix, 然后 。
对特别像开坦克 。
对以以 TeX 为源流呢 , 衍生了很多其他的呃发行版 ,其中最为人所知的 , 或者说我们现在最一提到 TeX, 呃或者说我们现在一提到这套排版工具 ,不会说我我我用 TeX 写的什么什么 ,而是会说这个东西是用 LaTeX 写的 , 就是因为 LaTeX 是 TeX 的最知名也是最早的一个扩展手段 , 就是 TeX 有点像一个它有点像 Python, 它有点像一种编程语言 , 然后一个人呃他的名字叫做 Leslie
Lamport, 应该是他也是一个老先生了 。
今年 80 岁 。
然后他给 TeX 做了一套扩展 , 就是他用 TeX 写了很多很多东西 , 呃比如说你 TeX 打个比方 , 这个 TeX 原来只能设字体和字号 , 然后他用 TeX 做了扩展 , 可以让呃用他用旧的命令生成一个新的命令 , 然后这个新的命令你可以说 , 比如说我现在要开始写一章 , 然后我要现在要开始写一个新的节 , 然后这个章和节应该是怎么样被 decorate 之类的 , 然后他最
重要的贡献之一就是他在这个 LaTeX 里面做了一个包管理系统 , 这个是等于说是一个革命性的这么一个创造啊 , 然后有了这套包管理系统之后, 就有很多人创造了很多包 , 然后你用 LaTeX 你就可以使用别人写的这些包来扩展你的来达实现你的这个排版的一个目的 。
嗯这个就是 LaTeX 对 。
所以这里本质上 TeX TeX 其实只是一个非常底层的 , 非常这种就是 。
它是个内核 。
你可以理解它是汇编语言的一个东西 ,但是它并不对 , 它并不就是如果你直接去用它来排版 ,其实是非常痛苦的 ,因为就是各种指令都很原始 , 所以这个 LaTeX 它其实做的是说我在上面打包做了一些这个抽象 , 对吧你看有有结构了 , 对吧然后就是开始出现所谓的这个形式和这个内容有一点点的这个分离的感觉 , 然后你可以引入了这个包管理 ,其实
是模块化了嘛 , 让大家能够更好的在上面去做进一步的这个扩展 。
就他们的语义就是说其实 TeX 就是基基础的排版引擎嘛 , 然后他们是叫红包是吧 , 就那个 macro package 是吧 , 红包吗中文叫红包吗 , 听起来怎么那么喜庆 。
肯定是啊就红包啊 ,不然还能叫什么 , 红这个词就是随着 Microsoft 的办公软件基本上是在 90 年代在中文世界就铺开了 , 这玩意就叫红啊 , 你台湾叫聚集嘛 , 就聚集可能听起来还比较 。
就好奇怪 。
比较好一点 ,但是红这个词已经被被被传开了嘛 。
我们是不是重点要跟大家讲一下 TeX 的一些特点 。
好啊但是 TeX 有什么特点 。
难用 。
它有最大特点就是免费开源啊 , 这最重要的呀 。
嗯说的也是 , 我前两天在做功课的时候搜到了一篇一个奇人写的一篇奇文 , 然后我觉得还是可以在这里念一下的 , 就是他 。
那个色瘾病 。
历数了 TeX 的种种弊端 , 然后其中有一段是是这样的 , 我来念一下啊 。
你说中文啊 。
好我我我来翻译一下 ,他说因为 TeX 是免费的 , 所以它限制了与其竞争的系统和和这个想法发展 , 如果 TeX 没有被研研究出来 ,并且没有被就是免费的让人使用 , 那么能够保持这个数学公式的 structure 结构的这些替代的方案 , 比如说 MathML, 这个我们一会提到叫 MathMarkup language, 还有 Mathematic 就会比较早的被开发出来 ,并且也有可能就是会更为广泛的使用 , 就是它言下之意 , 呃
LaTeX 是一个 TeX 是一个比较差的这么一套工具 。
哎但是因为它免费大家都用了 , 所以大家就不思进取了是吗他的意思是 。
接下来他他紧接着就说了类似的一段话 ,他说 free software 就像就像一种病毒 , 然后 free systems 有这个能力可以去使得任何其他的 protocol 协议或者是设计 , 包括那些比较好的协议和设计 , 呃它有这个让它们全军覆没的这样一种潜力 。
听起来很像比尔 · 盖茨当年对自由软件的自责 。
对 worse is better, 然后他说其中一个例子就是 the various Unix systems, 就是各种各样的 Unix 系统 ,以及它们所对应的协议 , 然后他说这这些系统和协议 has done huge irreversible damage to society,他说这些东西对整个社会产生了不可逆转的巨大的伤害 。
哈哈哈 。
就是 worse is better 嘛 。 这这可能是我们今天就是或者我我这过去 20 年里面听到的对于自由软件的最大的一次最最最严苛的一次指控吧 , 就我以前没有想过这件事情 ,但是如果你说他不我们来想想他说的有没有道理 , 可能是有点道理的 ,但是 。
看你站的立场是啥了嘛 , 你你如果是那些想做这个商业软件对吧 , 想靠这个赚钱 , 然后说你要通过这个就是 compete on quality 对吧 , 你要通过这个品质的竞争 , 那确实是啊 , 那很多你就干你那个你那个人就干不下去了嘛 , 那很多呃比如说你你需要聘请这个这个专业的人来设计制作 , 然后比如说这这的的这些系统 , 那你肯定就干不过免费的 ,
你就死掉了呗 , 那我们看到过去自有软件的这个整个历史不就是在不断的去蚕食那些商业软件本来可以卖钱的的那些领域嘛 , 对吧现在连操作系统也是啊 , 那个 Unix 出来之后对吧 ,Linux 之后你还有什么其他就是非就除了什么 Windows, 除了这个 Mac 它底下那个 BSD 还在这个就是有一些这种商业的在用的之外 ,其他那些非常小众都已经非常式微了嘛 , 都消
就商业软件都已经消亡了 。
对 Solaris 它提到这些 various Unix systems, 这它这里面 Unix system 包含很多东西 ,其中 Unix 最最最原本的那个 Unix 后来被卖给了卖给了谁 AT&T 还是谁 , 它那个真正的 Unix 的商标实际上是卖钱的 , 反倒是后来的什么 BSD 和 Linux 呃支流吧 , 把这个卖钱的 Unix 给打败了 , 呃比如说当时的就是为什么现在会有 AWS, 就是因为当时亚马逊觉得 sun microsystem 的那个 Solaris 的那些服务器太贵了 , 然
后他们转向 Linux, 然后 sun 就倒闭了 , 呃 。
对生长也会倒闭 。
对然后亚马逊发现自己可以用 1/10 的价钱达到之前 100 倍的容量 , 然后他决定把之前多出来这些容量租给别人用 , 于是就有了今天的 AWS, 这诸如此类的事情实际上在一次一次的上演 。
但是如果你这样讲的话 , 虽然 TeX 它本身是自嗯是免费的嘛 ,TeX 本身这个 TeX 是美国数学协会的商标 , 然后 Metafont 也是当时那个出版社就是 Edison Wesley 出版社的商标 , 这些商标都是有注册的 , 就跟那个 Unix 一样 , 就嗯但是它本身是免费的开源的 。
对它们免费事实上不自由对吧 , 可以这么理解 。
开源它们开源 。 所以有人有人骂这个 TeX 嘛 , 可是 TeX 的支持者就说我们 TeX 多好啊 , 我们免费开源 , 然后呢跨平台跨设备 , 这个最关键就是说同样的输入可以得到同样的效果 , 哪怕大家也知道这个 TeX 原来是呃 40 多年前开发的这样的一个引擎 ,但是呢当时高德纳就说你不无论用任何一台电脑 , 输出的效果都是一样的 , 这个特别厉害 , 然后
呢跨设备的意思是不不仅是屏幕显示 , 还有无论后来有打印机嘛 , 哪怕后来后来有那个 Postscript 出现 , 然后我们有比如说有 PDF, 嗯甚至像哪怕是日本特别专用的写言家公司他们自己的电算打嗯电算照排机 , 你只要用的是这个 TeX 它出的文本 , 最后出输出效果都是一样的 , 这个是特别厉害的一个例例子 。
嗯我们要不接下来就讲一讲 TeX 作为一个软件 , 它的 user interface 是怎么样 ,也就是它的用户操作界面是怎么样 , 这我觉得可能对于很多设计师或者是没有接触过 TeX 但有想要试一试的人来说比较重要的一点 。
工作流与公式42:28
我觉得可能要介绍的是工作流吧 ,因为 LaTeX 事实上是没有一个 。
是首先你要学会使用命令行 。
对它事实上是没有一个标准的操作界面的 , 就你可能装了某些特定的 TeX 的版本 , 呃这个我们一会会讲啊 , 就是然后你会有一个编辑 TeX 的环境 ,但是没有一个东西说你一定要打开这个 , 比如说 Photoshop 或者是 PageMaker, 你有一个主程序要运行 ,在 LaTeX 这边是没有的 , 就你你可以按照自己喜欢的方式用一个你喜欢的编辑软件去做你想要做的事情 。
本质上它是编程嘛 , 它没有一个所谓的你说有一个什么专用的程序来使用它对吧 , 你就是其实是用任何一个文本编辑器都可以写 , 所以我刚才讲你说你要开始使用这个 , 你一定要接触的那个 UI user interface, 就首先你得学会使用命令行嘛 , 怎么开始去完成这个转化的过程 。
这也是它的特点之一嘛 , 就是我们把过呃整个过程说一下, 就用户啊呃是只要有有一个文本编辑器就可以了 , 它写的是一个文本文件 。
记事本也可以 。
对 TeX 它是纯文本 , 所以呢就它它非常便于传输啊编辑 , 你只要你喜欢你个人习惯用的这个文本编辑器就可以了 , 你用什么都可以 , 然后 。
导到引擎里面去 , 当然传统的 LaTeX 的话 , 它要中途要先生成一个 DVI 文件啊 , 这个 DI 其实 DVI 是 device independent, 就是就设备独立 , 它有一个中途文件 , 然后这个这个 DVI 文然后根据它的驱动 , 然后最后再生成什么 PDF 啊或者是打印 , 当然了现在的这个 LaTeX 他们就可以现代 LaTeX, 比如说 LuaLaTeX, 它就可以直接从这个文本文件直接给导出 PDF 了 , 所以呢这是两个层呃两
个步骤的 , 用户呢直接他要一边他要写一个像命令行一样的一个纯文本 , 然后呢要再通过这样一个引擎去呃生成 PDF, 所以它是一个两个步骤的东西 ,而不是所谓的可见即所嗯所见即所得嘛 , 对吧 what you see is what you get, 这是一个它的一个最大的不同嘛 。
但其实也有人在上面做一些尝试 , 就是说有人做了这种专用的编辑器 , 然后你这边输入这个 LaTeX 的指令 , 然后是可以就是几乎实现所见即所得 ,但是和所有的所见即所得的这种这种排排版软件一样 , 它还是面临着非常不好用的问题 , 所以也不是非常的广泛 。
就是它还是有代码的嘛 。
知乎那个公式编辑器其实它提供了一个让你点的那么一个界面嘛 , 就是你你点一个什么比如说根号 , 然后它下面帮你插入 LaTeX 的那个根号的命令 , 类似于这些东西其实现在要比直接手写的还是要多一些 。
不就这种还算是就那个这种还是就说是一个非常短的那种 , 就是编写然后编译的一个循环嘛 , 它还是没有脱离刚才我说的那个命令行的本质 , 这里面我说这种就是可以 。
对它基本上就只能做公式 。
对你可以就是相对完整的做出的这种编辑器 , 最最成熟的应该是那个叫做这怎么念 Lyx 吗 ,Lyx 它的网站是 Lyx.org.org 的这个网 , 你可以去看它有截图 , 就它相对来说是更加接近于就是你编辑 Word 的那种感觉的 。
不过话说回来的话 , 就是我们现在用 TeX 都是大家会想到用公式嘛 , 可是当年高德纳先生他可是真的是要排书的 ,他最很很厉害的 , 比如他会算那个换行位置嘛 , 然后呢两段对齐 , 这这这这都是做很专业的长文排版的东西 , 就是他还特地为此去学排版嘛 , 就所以高德纳先生很厉害 , 可是我们现在主要用的拿拿它用的还是拿去排
排公式嘛 。
那就这里就有一个问题了哈 ,其实就是可以探讨一下, 就是为什么排就是排公式和普通的这个排版它有什么样的特殊之处 , 对使得它必须要呃就专门做这么一套系统 。
公式很复杂嘛 , 这个大家也都知道 , 尤其在千字时代 , 那个那个公式可就是超级复杂了 , 它要在这个字符的周围塞不同的千空嘛 , 对吧哪怕是一个根号就是一个很复杂的一个东西 , 根号上面还那个长度啊什么就乱七八糟的的 , 嗯都要有负负荷的这样 , 对 。
对我觉得就是数学公式最麻烦的地方就在于它相对如果我们只是考虑一个最简单的这个就是文本的排印 , 它其实主要考虑是相对来说是一个呃一个维度嘛 , 就是你那一行到底要处理怎么样 ,因为它行一行之间通常来说不会有太大的相互关联 , 除非你是断行的那个影响之外, 对吧但是数学公式它本质上是一个二维的一个一个画画 , 你可以这么理解 ,
比如说我们常用的这个叫什么来的上标下标 , 就是那个指数符号或者是角标符号 , 对吧它存在说有一个大小的问题 ,而且数学公式很多是很多是可以所谓的嵌套的 , 就你说 a 的平方的平方的平方 , 你要想到那个结果是那个平方的那个角标会无逐级变小嘛 , 这种需求在普通的这个文字排版上面它其实不存在的 , 就相对来说它把这个灵活性是
要求非常高 , 然后要求你控制它的这个相对位置 , 它的首先维度上就变得更广泛 ,而且它的大小的精度又要求更高了 。
对排数学公式实际上面临着一个双倍的呃双双层的问题 , 一个是 Unicode 呃或者说编码需要解解决的一个问题 , 就是那些重音符号啊或者是 。
那些字首先有字的问题 。
字符的附加的这些零件的排版就是定位的问题 , 它还有一个问题就是它要把所有这些东西在一个非线性的方式组合在一起 , 它是面临是一个二维的一个一个空间 , 它还不仅仅是一个三维的问题 , 所以你要解决这个问题实际上是要用比 Unicode 更加复杂的一套方法来完成它 。
你还是提到刚才一点 ,TeX 出现的时候还没有 Unicode 这件事情 , 所以当时它要去在数学公式里面大量出现的什么希腊字母啊 , 各种奇奇怪怪的这种数学符号啊 , 你就从来不会想到过的 , 就现在连 Unicode 里面都不齐全的那些符号 , 它都要在这个系统里面实现出来 , 然后还要考虑它各种这个在二维二维呃就是两个这个维度上面去的如何相对
排布相对大小 ,以及每个字形还要处理的好看 , 对吧这个就太难了 。
对这的确是一个非常只有宗师级成员能解决的编程问题 。
这个你不排数学公式你都不知道嘛 , 就比如说 sin x 那个 sin 是必须要用正立的罗马体 , 然后变量 x 呢是要用意大利斜体 , 就是不做理工科排版都不会意识到这个问题嘛 。
是 。
对吧单位的话 , 物理量的单位是必须要用正立的罗马体 ,但是物理的变量都必须要用意大利斜体啊 , 像这个东西你跟一般人来讲的话 ,他都没有注意到 , 哪怕虽然你平时从小呃中小学你看数学课本都是那样排出来的 , 然后等你自己来排的时候 , 你就觉得总是没有那个味道 , 就感觉排出来不像 , 这是就是因为它其中有很多它有各自的这
样的一个排版规则在 。
对写公式跟排公式甚至自动生成公式之间的关系是难度是天长地远 。
不过我觉得这里还是我要我我我要夹带私货吐一下槽哈 , 就是我觉得虽然说它有各个难度啊 ,其实我觉得很多问题都是自找的 , 对吧没有其他哪个行业有这么多规模的这个需求 , 比如像刚才你听到这个哈哈听到 Eric 讲的这个 , 对同一个的概念里面还要用不同的这种字字符形态来去描述它 , 你想手写的数学题不存在这种区别 , 对不对你
可能都是写个 sin, 然后都是你的手写那种字体 , 然后你就区分一个大小写 , 区分一个这个罗罗马的这个字母 , 希腊的字母 , 当然也可能也是因为字母 26 个你不够用了嘛 , 你才会讨论这种东西 ,但是到了这个这个数码排版之后, 你发你就发现哎我有各种各样的这种工具 , 这种呃可行性之后, 你就说我要规定说这种这个 sin 要用怎么一标识来写
, 然后我的那个罗马字符上面加个尖又是什么意思 , 就很多问题其实是就研究数学这个做这些照排系统 , 或者说是就是这个编辑他们自己给自己找的麻烦 , 所以咎由自取 , 自作孽不可活 , 搞得这么麻烦也活该 。
你要这样说话 , 哈哈这不是代数的这个它的宿命所在吗 , 它用字母代替数嘛 , 它它这肯定是数字母肯定是越来越不够的嘛 , 一开始我们只用拉丁字母而已 , 然后希腊我们的希腊字母都都是数学老师教的吧 , 我相信这希腊字母怎么也都是数学老师教的 。
是啊我我但我的我的我的意思就是说这它本来是有一些就是说有可能有其他解决方案的 , 比如说为什么一定啊 , 比如说那个叫什么来的 sum 的那个操作符号一定要是这么一个规定的一个格式去描述呢 。
那个大 sigma 对吧 。
对吧 sigma 然后下面一个 n 等于顶上到多少到无穷 , 然后这边是一个什么东西 , 为什么一定要这种结构呢 , 明明有更简单的方式可以写到给自己找这种麻烦对吧 。
就 Rio 说的这些东西让我想到了很久以前读过一篇文章 , 就说数学为什么会有现在的这个就是非常难的这个 reputation, 呃原因之一跟它采用的这套符号系统是分不开的 , 就是数学的这套符号系统就好像五线谱或者是 。
对它是一个入门的门槛 。
它是一个历史延承下来的这么一套自成系统的一个一个东西 , 就假数假如说我们有一个数学的公式的理想模型的话 , 它并不是适合于 。
对它不是设计出来的 。
描述这个理想模型的最合适的系统 ,但是这个系统的存在导致于很多人他也许有数学天赋 ,但是他因为没有办法去理解这套符号系统 ,而浪费了他的数学天赋 , 就好像那些很有些很可能音乐上面很有造诣的人 ,他不懂五线谱一样 ,有些人是靠着自己的数学直觉可以克服这个的 , 比如说那个什么印度曾经有过一个数学天才叫什么拉拉努马金之类的一个人 ,他就是一
个靠着自己发明出来的数学符号达到了很多怎么说那些科班出身的人没能达到的数学高度 ,但是不是我们每个普通人都可以有这样的能力的 ,但是呃这套数学符号对于我们每个普通人造成的障碍确实确确实实在那 , 就好像你在你比如说你在知乎或者 whatever 什么地方 , 你想要本来用自己的输入法写字写的开开心心的 , 忽然你想要插入一个数学公
式 , 然后你发现你自己的输入法没完全没有办法帮你插入这个公式 , 然后你去找怎么样来画一个公式 , 呃很多人 ended up with 就是自在纸上画写一个数学公式 , 然后拍一下那个纸的照片对吧 ,在知乎上很多答案都是这样的 ,但是也有些人去会去研究说哎我怎么样用用一个比较怎么说正统的方式来生成一个公公式的图片 , 然后他会就发现呃 TeX 这套东
西 。
这里面还有一个很核心的问题 , 就是说它这套符号系统是呃通过各种眼镜过来的嘛 , 它并不成体系 ,也没有什么规则可言 , 然后各它其实是各种不同流派最终互相妥协融合的一个结果 。
对 。
就导致一个事实的问题 , 就是说就不要说你你我们这种非数学专业的 , 你肯定看不懂 , 就是哪怕你学术的专业的 , 你还是要你看到一篇特别就是特别前沿的这种数学研究 , 你还是得去看他他他在那篇论文的引文里面会先逐步定义他用的这套呃专门讨论这个话题的 。
还得想一想 。
符号体系怎么样子 , 就等于他他还他还在不断的自我研发 , 就是就我们叫什么来的 DSL 对吧 ,Domain Specific Language, 就专用领域的语言 ,他还在不断的延续 ,而所有的这些都是没有一个没有一个通用的一个标准的 。
对而且数学符号内部自己也有流派嘛 , 就是什么就哪怕我们上学的时候也会学到说 , 比如说一个一个矢量的标法 , 可能你如果你有粗体的话应该用粗体 , 然后没有粗体的话你要在上面画一个什么箭头之类的 。
对对 。
然后有些流派可能已经消失了 , 比如说我们现在使用的积分虽然是号称牛顿发明的 ,但是我们使用的这个大 S 的这样一个积分符号实际上是莱布尼兹的标法 , 牛顿那个标法是非常复杂的 ,但即便如此我们的那个微分还是有两种方式对吧 , 一个是什么用那个字母那字母叫什么来着 。
Theta。
Theta 然后另外一种是用撇对吧 。
那个怎么念我不知道 。
我也我也忘了我一直念 Theta。
好像是念 Theta。
但肯定不是 Theta。
那不是 Theta。
就像一一一颗小 d 一样的东西是不是 。
而且他们当时发明的符号是是手写的吧 , 肯定不是排印的嘛 。
对啊就这是这刚刚才我吐槽的另外一件事情嘛 , 就是现在我们排印上规定的各种非常细节或或者说是为了美观也好的这种要求 ,其实你在手写上是复刻不出来的 , 你手写 。
但你可以写的稍微稍微正楷一点哈 , 稍微写的直立一点 ,但你有斜还有各种弯还有各种加花对吧 ,但其实你在手写里面并没有那么多的工具可用对吧 , 取决于你手写的这个整齐度嘛 , 你如果在板书上面写的很快的话 , 就其实也就很很快的一笔带过去了 , 它在手写过程中和你真的排印中它存在一个一个跳跃的一个一个一个过程 。
我再插播一下, 就是我刚查到啊 , 首先求导是用 d 就是字母 d,dx 比 dy, 然后我刚才说那个符号或者说我们刚才手里找到的符号不是一个希腊字母 ,而是它是偏微分的符号 , 它就是 d, 偏微分符号 d 是全导数符号 d 的变体 , 就但它是 d 的另外一种写法 。
就是对一个草书的斜体的那个 d。
嗯 。
D 是什么是 differential differentiation 吗 ?
呃 derivative 应该是吧 。
啊 derivative 对导嘛对 。
啊这是什么忘道早就忘光了 。
没所以这个东西就是他们在发明这个符号的时候 , 就是用现当时他们觉得最方便的方式发明的 , 然后他们就肯定又没有想到后面这个技术发展以后的问题嘛 , 对吧他们觉得手写当时手这个手写起来很方便 。
它其实也不一定是为了方便 , 它是为了就是为了记录一个思维 ,因为数学这东西很抽象嘛 , 所以它你有有时候记不住那么多概念的时候 , 你要靠一个 notation 把它写写在这个纸上, 然后帮助你去做一些抽象的一些运算 , 就是你知道我们学什么求导啊做变形的时候 , 都并没有去说考虑它的原理 。
他在手写的时候他就想说就用另外一个方式的话 ,他就用一个草书的字体来写嘛 ,但可是后来想要排印的时候 , 那我就得就就麻烦了 , 排印的时候我就得必须要用另外一个签字来做嘛 , 这个像国际印标当时也是一样的呀 , 国际印标大家知道有各种各样莫名其妙的符号嘛 , 可是当时已经有签印了 , 所以呢作为签印来讲 ,他们很方便是把字母倒过
来 , 这个对于签印来讲是很方便的 , 所以比如说那个什么 a 的那个发音的话 , 就是倒过来的小写字母 e 嘛 。
对 flip 一下就好了 。 手写你要倒写也不方便呀 。
这个是在签字的时候是很方便 , 可是反过来在电脑里面你要输入那个拼音就超难的 , 直到现在你要输入都很难输嘛 , 对吧国际印标这套东西对吧 。
是是是那其实 TeX 它在解决数学公式的时候 ,其实也面临着这个问题 , 就是它要输入那些各种各样的这个奇怪的符号的时候 , 它都是用一个命令的 , 就它要线性化成一个这个键盘上, 就是 ASCII 那个就是这个什么 QWERTY 键盘上存在的这些按键 , 你才才对应那个把它用一串命令来指代某一个符号嘛 。
就跟我们现在转义一样嘛对吧 。
是的 。
就我觉得 TeX 面临问题跟 HTML 所解决的问题其实是一样的 , 当然 HTML 出现要比 TeX 晚很多 , 或者是 XML 出现要比 TeX 晚很多 ,但他们面临的问题和解决问题的方式实际上是相似的 , 只不过 TeX 可能因为它出现的比较早 , 所以它没有那么考虑周全吧 。
在这里其实有个很好的问题 , 就是说到底形式和内容是不是能够分离的 , 我觉得 TeX 或者是 LaTeX 也好 , 它证明了这件事情是是实现不了的 , 就说哎就是说 HTML 和 CSS 呃 CSS 一个写语义 , 一个写样式 , 这件事情只是一个美好的愿望而已 ,因为真正你落实到具体的那些非标准化文档的那些细节的时候 , 你就发现你没有这种形式和那种分离的细节
了 , 比如说就刚才这个情况嘛 , 这个 sum 对吧 , 然后从 1 到 100 的这个这个这个积分积到多少 , 然后再去个什么样的技术 , 你如果要去用这个完全形式和内容分开的东西去描述它的话 ,TeX 其实是不支持的 ,LaTeX 也是不支持的 , 它从来没有支持过这件事情 , 最终你还是要去描述它的相对位置 。
一定要支持语义的话 , 可能只能用 MathML 之类的 ,Math 就是 Math Markov Language 或者 Mathematica。
对啊所以也就是刚才你念那一段的对这个的一个指责嘛 , 就是说你除非有一套完整的这种语言去支持描述一个结构 , 就本质上 TeX 也好 LaTeX 也好 , 它去描述一个公式的时候 , 它并不单纯的是描述那公式的一个结构 , 它其实描述那公式长什么样子 , 大概长什么样子 , 大致结构是如何 , 你并不能从就所什么意思呢 , 如果说你能够拥有一个用这个
LaTeX 去描述一个结构的话 , 理论上你是可以去 parse 去去去叫什么来去解析它的结构 , 得到你想要的那个公式的一些比如说变形和运算 , 它是可以自动化的对吧 ,但在在这件事情在 TeX 里面是无法实现的 ,因为它的形式和内容在微观的层面上是融合在一起的 。
就你不要对 TeX 要求太高啊 ,TeX 它原来一开始它就是一个排版引擎而已 , 它跟这个结构一点关系都没有 。
哈哈我知道刚才不是在讨论 , 就说 LaTeX 在说这个内容和形式的分离是对应于这个 HTML 和 CSS 这个关系嘛 ,但这个其实我觉得在这里面其实并没有很好的体现出这一点 , 它只是有这种倾向对吧 ,但其实在实现层面上它并没有非常彻底的去贯彻这件事情 。
Eric 说我们不要去指责 LaTeX 这件事情 ,但问题我们现在面临一个问题 , 就是 TeX 是业界标准 , 如果我能就作为一个魔鬼代言人, 我站到刚才那篇 People TeX 的文章的观点上来说一句话 ,TeX 它实际上的确就是一个业界毒瘤这么一个状况嘛 , 它你用 TeX 写出来的公式面临一个问题 , 就是它没有办法被很轻易的被 。
Parse。
意向 parse 对吧 ,而且尤其是现在比如说知乎 , 你在知乎一篇文章里面生成一个 SVG 格式的公式 , 这个 SVG 格式描述的公式原原本本的就是这公式怎么画出来的 , 它跟这个公式的语义毫无关联对吧 。
毫无关联对 。
我们可不可以说 TeX 的存在导致了整个数学的语义表示在互联网上的存在呃处于一个支离破碎的 。
这个我觉得也不能这么指责 , 这个是一个结果 ,但是它并不是核心原因嘛 。
对是的 ,但是就我的意思是说 , 你不能说 TeX 就因此不不该被指责了 , 这因为它是它作为一个事实标准 , 它带来了现在业界的这么一个现况对吧 。
我我我明白你说的意思 , 我我想表达的点是说 , 这件事情你换任何一个软件都是不可能实现的 , 就是那个 Math Markov Language 也没有实现这一点 , 就是因为这个问题出在于那个底层我们要表示的那套体系 , 那套数学符号本身就不支持这一点 , 它的结构不是那么的清晰明确的 。
这是数学符号本身的问题 ,而不是描述它或者排去给它排版的其他的这些 。
没错没错 。
引擎的问题 。 然后这个讨论这个讨论就没有结果了呀 , 哈哈那我们在说什么 。
这是不可能有结果的 ,因为我们不是可以左右这个历史进程的人。
对我们只是作为历史的批判者 。
对滚滚长江东逝水对吧 , 我们只是两个渔侨在这边喝酒然后讨论这些事情 。
对所所以我觉得还是就是回到之前那个评书里面 , 我觉得这目前这么去去概括它 , 这个是比较呃就是中肯的一个评价 , 相对来说我觉得就是说呃 TeX 只是一个底层的 ,不涉及说内容还是形式的这么一个排版引擎 , 对因为排版引擎本质上是展现的是一个形式对不对 , 它并不是体现的出来内容怎么样 , 你不可能去通过读 TeX 的原码去读懂这本书长
不行 , 你还是要看它最终 compile 出来的那本书长什么样子嘛 , 然后呢 Lamport 在上面做的一个重大的一个贡献 ,是说在一个无结构的呃这个这个体系上面引入了就是这个 Macro 的这么一个宏观的一个结构 , 就是实现了章节对吧 , 实现了这个 section, 然后实现了这个数学公式的一些实现了这个包管理 , 实现了这个模块化 ,但是呢具体到在非常微观的层面上, 它肯定还是无
法完全的结构化的 , 就好像我们现在说 , 哪怕是说当年提这个 HTML 和 CS 的这个形式内容分离提到现在 , 我们现在去看 Web, 它这两个事情还是就是就是互相粘结在一起的 , 你就就到微观层面上还是无法分开的 , 所以我觉得这里面也就是我们的技术呃理想和客观现实之间的这个妥协点就是这样子 。
哎我很好奇就是你们对那个那个 W3C 那个 MathML 什么有什么作何评论 。
XML 就像暴力一样 , 你如果没有解决问题你就用更多的暴力 , 大概这个感觉就是 MathML 它本质上就是用 XML 来 。
就是叠床架屋嘛 , 就不停的加东西嘛 , 啰啰嗦嗦的 。
XML 就是这样 ,XML 作为当时的一个银弹 , 就 90 年代的人觉得好像你用元数据去描述数据就可以得到 , 就可以让数据更好的被处理 ,但是人们会发现元数据本身也是数据 , 然后你需要给元数据加上更多的元数据 。
自此所谓无穷尽也 。
但我觉得 MathML 虽然是一个非常复杂的文档 , 它本质上也不是让人来写的和让人来读的 , 它的存在的意义就像 XML 一样 , 它是为了保存信息然后给信息加上元信息 , 虽然它的手段非常的拙劣或者说非常的啰嗦 ,但是它还是起到了它的应有的目的的 , 我觉得 MathML 其实你不用多看 ,MathML 就是 HTML for for 公式 , 就大概这种感觉 , 就是它你可以把所有的符号
用那个监控号括起来 , 然后不要这个监控号里面的呃文本就是告诉你这个符号是干嘛的 , 它维系了一套呃数学的公式的语义 ,而且它基本上没有涉及说这个语义应该是怎么用什么样的方法来表示的 , 所以理论上你可以用一套类似于 CSS 的东西来描述一个 MathML 生成的秒呃用 MathML 来描述的一个数学公式 ,而 MathML 本身只负责为描述这个数学公式里面每
一个元件之间的关系 , 大概这样 , 它的最大问题就是你要编辑它或者是你要生成它是非常麻烦的 ,但是你读起来其实还是比较简单的 。
对 MathML 这名字就很很难念哈 ,Mathematic Markov Language 这个东西 , 它本质上就是把 TeX 的理想用 XML 这个标记语言重新实现一遍嘛 ,但其实他们两个都没有实现刚才我说的那一点嘛 。
哈哈哈不是不是 , 我觉得这个还是差别蛮大的 ,因为 TeX 就是我们介绍几个 TeX 的最比较基本的那个命令嘛 , 就像 HTML 有什么 em 有什么呃 strong 一样 ,TeX 是有比如说 textBF boldface 或者是 textITitalic 诸如此类的 , 就是你说 textBF 描述的是什么 , 描述的是它的风格呀 , 就是我说接下来这个部分要用用粗体来描述 , 可是这个粗体的意义是什么 , 就它跟这个东西的实
际语义是毫无关联的 ,但是 MathML 这边就它的每一个标签都是跟这个语义相关的 , 你不能只说这个东西需要用粗体 , 你必须在 MathML 里面描述这个粗体标出来的东西是什么 。
不就粗体这个这个概念在那里面不存在 。
它实际上在理念上是要比 TeX。
对吧它其实要表述的是这个数学结构怎么回事 , 就是它表述的是一个将我今天开始提出的那个第一个问题嘛 , 就是数学公式的那些各种 notation 的结构 , 它想用一个通用的方法把它描述出来嘛 ,其实这个东西本来就是一个很困难的一个事情 , 就几乎不可能完成的任务 , 所以它本身的复杂性是来源于数学公式本身的复杂性嘛 。
但它还是描述出了数学公式之间的关系的 , 就就好像 Lisp, 比如说 Lisp, 你用 Lisp 可以描述出任何足够复杂的 , 就就任何复杂的数学公式都可以用 Lisp 描述出来 , 只不过 Lisp 的那个描述你可能就是非常反人类的对吧 ,但它是可以的 ,MathML 实际上做到的事情跟 Lisp 差不多 。
对啊就说引入一个这个就是树状结构去描述 , 去描述一个数学的那个 notation 把它拆解出来嘛 。
对 。
那那这么比的话 , 它其实应该说是应该是它选择的那个载体不好嘛 。 这个 MathML 这个坑实在是太深了 。
所以我们接下来要往什么地方讲 。
生态与用法1:08:00
给大家说一下各种环境下的 TeX 嘛 。
啊 OK。
对有到底有多少种 XXTeX。
回相似回字有几种写法 。
那就多了我跟你说 。
OK 假如你听我们的节目然后对 TeX 产生了兴趣 , 那么首首先最重要的一件事情就是获得 TeX。
会有这样的人吗 。
为什么每次你都要拆穿我 。
首先你要获得哪一个 TeX。
或者说假如你是一个即将要写论文的人, 然后你想要尝试一下这个传说中呃中世纪程序员使用的解决方案 , 那么你需要获得一个你所使用的操作系统上的呃 TeX 环境 ,因为在座的 4 位都是 Mac 用户 , 那我们要先从 Mac 说起吧 , 就我当时用的是就叫 Mac MacTeX 应该 。
那个很老了 。
但是我要是没记错的话 ,MacTeX 是现在已经停止开发了吧 。
嗯还有更新版的啊 , 你现在去搜这个 MacTeX 就是 MacTeX 这个东西 , 它会让你去到这个一个这个 MacTeX 2020 的发行版 , 对说到这个就要先解释一下什么是发行版 , 本质上 MacTeX 它是做了一个事 , 就是它把常用的那些工具包都给你打包在一起 , 然后你可以一次去下载完安装好就可以开始用了 , 你不用考虑今天告告需要到底你哪些组件 , 然后组件相互作用是
什么样子 , 你可以大致略过这个问题 , 就有点像啊 Linux 是一样对吧 , 我们现在不是说你要去装一个 Linux 对吧 , 你得先选一个发行版对吧 , 你要选什么 Ubuntu 啊 Fedora 啊之类的对吧 , 你要他们把那些打包的工作给你做好了 , 你去用一个现成的版本就可以了 , 那 Mac 上面可能还是用这个比较简单一些 。
啊然后如果你在 Windows 上的话应该去下载 , 据我所知应该是 MikTeX, 就是 MikTeX 这个我没用过啊 。
就这个我不知道现在还是不是 , 我我上本科的时候当时用过一个 Windows 写写那个系统 , 然后装的确实是这个系统 , 就是 MiK,MiK 还是 MiK TeX。
好用吗 。
也没有什么其他好选的 , 你就你只存在说能用和不能用的区别 ,其他就你都你对于一个新手你根本上属于不能用的状态 , 就不用考虑这个问题了你知道吧 。
哈哈哈 OK 那如果你用 Linux 的话呢 , 你需要自己手写一个 TeX 的这么一个系统 ,Linux 上没有 TeX 的包 , 所以就是比较尴尬的一件事情 。
应该有的吧什么 APT 跟各种 。
我在我在我在胡扯 。
哈哈哈 。
就 Linux 上的 TeX 实际上是最好的一个最好的一个 distribution 了 ,TeX Live 这个东西应该是目前最积极维护 , 然后也是用户基数最大的一个一个群体 。
也是我印象中啊体积最庞大的 , 它当时我记得是在多少十几年前哈 , 那个时候互联网状态你想象一下它的一个完整安装包都已经小要小 10 个 GB 了 , 你想象一下 。
但是不管不管你在哪个平台上用哪个发行版吧 , 你的工作流程基本上是一样的 , 就是你要先写一个呃纯文本的 TeX 文件 , 然后用你的公发行版所提供给你的通常是一个叫做 LaTeX 或者是 pdf LaTeX 的程序去处理你写好的这个文件 , 然后它会帮你生成出一个 pdf 文件来 ,但这里面有很多坑 , 就是虽然我刚才讲的这个过程听起来轻描淡写 ,但实际上这里面有
很多很多坑 , 比如说啊你写的东西要不要支持中文 ,是不是是不是要支持 CJK, 然后呃你写的东西是不是要支持插图 , 就是除了刚才 Rio 提到那个 TeX 之外, 你要不要支持其他格式的插图 , 如果你要的话你必须做出选择 , 然后你必须注意你的插图是是怎么生成的 ,以什么格式来提供给 TeX 诸如此类 , 然后你可能会就你的领域需要用到一些你的领域才会使用的
包 , 如果你的领域比较大众的话 , 这个包可能是有很多人维护的 , 如果你的领域比较小众的话 , 那么很有可能你必须自己亲自去解决一些问题 ,TeX 用户群里面有一句话说你呃 you have to know everything to do anything。
哈哈哈这个我深有体会 。
你面临着的是一个非常陡峭的学习曲线 , 必须说 , 然后如果你的论文的时间比较赶的话 , 那我劝你还是就是另寻一条别的途径 。
用模板啊 。
对我我举个例子大家可以体会一下, 就是说如果说我们我们说我们节目也有很是很多是程序员听众嘛 , 我们当时说这个学习 Vim 这个编辑器是一个非常陡峭的这个学习曲线 , 然后但你成学完之后是非常好爽的 , 那么学习 TeX 或者任何版本的这个上手来讲 , 它比那个曲线陡峭多了 。
对 。
你本质上是要学习一门全新的 , 你终你也不知道什么原理 ,并且它的整个它的整个这个设设计理念和设计思维都是来自于 50 年前的一套一套编程环境 , 本质上你在做这个事情 。
这个其实最终就是说自自弹自串的听众朋友们是很有可能是 TeX 的这个目标用户群啊 , 这这完全重合啊 , 既是程序员又要又要知道怎么排版 。
嗯所以中司的这个封装做的不是特别好 , 露出的东西太多了 。
而且本质上你还会得得会排版 ,而且事实上我也知道有我们听众里面有就是同时加入我们两个群的听众 ,有 TeX 高手的确是有的 。
我们之前也我记得好像是我们有一个这个朋友哈 , 还做过这个 TeX 相关的这个开发哈 , 就是之前请过的江江 。
所以这些这个什么 TeX 高手听完这期节目是会被气的吐血吗 。
我觉得他们也能够理解吧 , 毕竟这是一个我们要在短短一两个小时里面解释清楚这件事情本身就是一个不可能完成的任务 。
所以现在 TeX Live 是不是在 Mac 上也是可以用的 , 它好像已经变成一个跨平台的 。 应该是可以的 , 应该是可以的 , 对 。
那个那个 MikTeX 也也可以在跨平台用了呀 , 大家都在想办法去挤占别人的地盘 。
对 ,而且这个东西实际上是比较惯性导向的 , 就是你之前用什么你可能之后就一直用什么 ,因为大部分使用 TeX 的人实际上是对 TeX 本身的发展没有太多兴趣的 ,他们有更多 。
只是一个用户 。
自己领域的问题需要去解决 ,他们可能一开始用什么 , 或者他们师兄用什么 , 或者他们学校用什么 , 就他们学校会给一套那个模板 , 然后这个模板在什么环境之下测试的 ,他们就会去用那个环境 , 大概这样一个一个一个模式吧 。
对因为你要去了解从头从 0 开始 , 没有任何别人给你帮助的话 ,其实是非常困难的一件事情 。
哎我我他我问你个问题哈 ,因为这里面估计也只有你有可能干这件事情的 , 你写论文或者写作业的时候自定义过红吗 。
有啊 。
那你自定义的红到哪个程度了 。
没有很复杂 , 就是大概四五个命令吧 , 了不起了 , 然后定定义成一个红 。
我从来没有我自定义的红 , 我就我这么说 , 我我其实从来没有真正意义上写过 TeX, 我其实都在都在写 LaTeX, 就是 TeX 底层那些命令我从来没有碰过 。
哦那这我倒是可以介绍一下, 就是 TeX 底层大概是一个什么样子 。 嗯对 , 首首先说 TeX 吧 , 就是最古早的就是原汁原味的 TeX, 呃有时候也被人们称为 plain TeX, 它的底层是用一种我们跟最开始提到的叫 Web 这种编程语言写的 ,而 Web 看起来是什么样呢 , 高德纳的另外一个理念叫做呃 literature programming。
文学编程 。
这个文学编程这个东西 , 就是他写 Web 的时候发期间发明出来的一套开发理念吧 , 你可以这么理解 。
然后他这套理念大概的意思就是说 , 我写程序要像写一篇文章一样 , 就是我要有啊起承转合 , 呃就是他要他说我要用人类的语言 , 用读者能够理解的语言去描述这个程序 , 然后我这个程序本身是嵌在这个我的写的文章里面的 , 这个说法可能比较抽象 , 具体来说就是说他一开始会比如说他用写注释的方式来写说我这个程序是干
嘛的 , 然后我现在要开始一个 section, 这个 section 里面包含了以下 variable, 然后这些 variable 每个 variable 是拿来干嘛的 , 然后用 Web 呢你可以去分析你刚才写的这篇文章 , 把里面你所有提到的 , 比如说你刚才说我要以下要使用呃 42 个 variable, 然后每个 variable 它都有一个描述 , 然后用 Web 可以把这些 variable 描述抽抽离出来 , 然后生成一个程序 , 这个程序是可以编译的 , 那么这个程序是什么 , 具
体是什么程序呢 ,在古古早的 plain TeX 里面 , 这个程序是 Pascal 的一个子集 。
不过我们的节目听众就不用解释 Pascal 是什么了是吗 。
对然后他的 Web 有另外一个模呃用有另外一个工具吧 , 这个工具的用途是作用是把你刚才写的这篇文章排印出来 , 就是生成 TeX 来达到一个更加易于阅读的这么一个状态 , 就是说它它的所谓 literature programming 的理念里面实现了两件事情 , 一件事情是让你写出来文章变成一个可以执行的程序 , 另外一个功能是让你写的文章有一个适合阅读的 presentation 这么一个功能 。OK 这
是 plain TeX, 然后这个 plain TeX 因为它用的是 Pascal, 然后如果你要坚持使用它的话 , 你等于你每一个环境里面都要有一个 Pascal 编译器 ,而众所周知 Pascal 这个语言现在已经式微了 , 所以后来有个人写了一个东西叫做 Web2C, 就是采用 C 语言来描述这个呃 Web 里面的程序 , 大概就是这样 。
后来有个越南人他在捷克的一所大学里面念博士的时候 , 写了一个程序叫做 pdfTeX, 然后这个 pdfTeX 它又跳跳过了之前我们一开始介绍的那个 pdf 呃 TeX 要生成一个 DVI 的这一步 , 就是它改为直接生成一个啊 pdf 文件 , 然后这个东西是用的是 Web2C, 就是说现在事实上最广为使用的这么一个引擎是呃 pdfTeX, 它是基于 Web2C 的 , 然后它最基本的最核心的这样一个东西是 C 语言的一个
子集 , 嗯大概就是这样 , 然后现在还有一个引擎叫做 LuaTeX, 然后 LuaTeX 就是试图把 TeX 的整个引擎暴露给 Lua, 这个本质上还是嵌嵌入到 C 里面的这样一个语言啊 , 然后你可以用 Lua 来做一些比较比较高层的开发啊 , 大概底层是这样一个现状吧 。
没有如果你要说这个 TeX 的发展的话 , 啊刚才那个越南人那个他是不是叫 Han Han Thanh 是吧 。
我我不会念 。
我也不会念 。
还是不要侮辱越南人了 。
啊对不起 。
就肯定是念错了我觉得 。
但是呃因为后面就有很多这样的扩展嘛 , 对吧 , 中国的话不是那个李亚林他们这也在做 ,他这个是那个是什么 PTeX Engib 是吧 。
这个我还真不知道 。
他是从用那个 C 语言开发的的那个 , 当年他那个是 Y&Y 的 TeX 重新开始写写的写的一个东西 , 然后直接是然后就可以直接输出 pdf 的 , 那是李亚林 。
这个东西现在还存在吗 。
对李亚林他自己在维护啊 。
这个名字这个名字有点耳熟啊 。
对啊他的真名叫马启源 , 然后在知乎上也是很活跃的呀 。
OK。
太厉害了一个人维护这么一整套东西 。 呃那个 LuaTeX 补充一点 , 它其实就是为了解决原始的那个 TeX 不好编程扩展的问题嘛 , 所以它其实把那个 Lua 的那个比较一个就是 Lua 本来是一个非常简单的语言 , 它在很多游戏里面是作为这种控制语言存在的 ,因为它很好的可以很方便的嵌入到 CC 里面去 , 对吧 。
魔兽世界 。
然后 LuaTeX 就是说它整整个把这个 Lua 的这个这个解释器嵌到这个 TeX 里面去 , 然后你很多事情 TeX 里面不方便做的 ,其实对对绝大数人来讲就是基本上但凡任何事情你需要编程控制的 , 你都转到 Lua 去会比较就是你用起来会比较舒服一些 , 然后 LuaTeX 做了做了这么一个事 ,但是我记得还有好几个就当时还存在 , 就是从到 Unicode 过渡的那个阶段嘛 , 还有
那个叫什么呃 XeTeX 嘛 , 我不知道这个怎么念啊 , 就是它的 XeTeX。
ZeeTeX。
ZeeTeX 是吧 。
ZeeTeX。
对对就是就是 , 然后还有各种各种变种 , 什么 pdf ZeeTeX, 就是就实在是太多了 , 我当时看的头都大了 ,但好像现在反而呃就是该发展的发展 , 然后也就它也经过了现代化的过程嘛 , 现在留存下来还在活跃开发 , 然后功能比较全的好像也就那么两三个了 。
对 。 ZeeTeX 应该是可能现在最怎么说高级 , 或者说最 feature complete 的一个一个发行版了 , 一个引擎了 , 就它首先它一开始出发刚出发的时候 , 就是呃以全面的 Unicode 支持为出发点的 , 然后它还支持 OpenType 之类的 , 你就是你用 ZeeTeX 的话 , 你就可以使用你机器上装的文本装的字体 , 对 , 这是很大的一个坑 。
对 。
这是很大的一个坑 , 就是你可能说我想要用 TeX 来排我的东西 ,但是如果你使用比如说 TeX Live 的话 , 你会发现自己没有办法使用系统上有的字体 , 这是很蛋疼的一件事情 ,但是你要是用 ZeeTeX 的话 , 就就可以绕开这个坑 。
ZeeTeX 本最开始的时候 , 它就是在那个 MacOS 上面去开发的嘛 , 所以它当时搞了那种所谓的这种先进的字体排印技术啊 , 各种连字啊 ,ligature 啊 , 各种这种就是高级的 OpenType 那特性 ,在其他的当时哈 ,在其他的 TeX 发行版里面都是不能支持的 ,因为它完全不是一个一个不是一个体系 ,也不是一个技术路线 , 它然后但是一个年代的东西 , 对 , 完全不是一个年代的东西 ,但是当时那个
ZeeTeX 它把这两个结合在了一起 , 然后当时给到我们看到的一些实现的效果 , 那是非常非常惊艳的 。
啊 by the way 那个版本版版本号无限接近于 1, 就是 0.99999, 就是这个 ZeeTeX。
就像刚才我们讨论的这个呃 LaTeX 还有 ZeeTeX, 包括像 pdfTeX, 它们跟这个我们最开始讲的这个 TeX Live 这类这类的这个发行版是什么样的一个关系呢 , 还是说后面我们说的这些像 LaTeX 这样的东西 , 它们只是负责排版的这个功能 , 它们只是一个排版引擎是这样的 。
啊这个解释起来又复杂 。
啊 ZeeTeX 应该是比较像引擎的一个东西 ,但是 ZeeTeX 面临一个问题 , 就是如果你要从头开始支持 Unicode 和 OpenType 的话 , 你会需要更多的工具 , 所以 ZeeTeX 除了实现呃 TeX 这个这个程序之外, 它有一些别的什么 , 就类似于比如说要去处理 Unicode 的 , 或者说又处处理 OpenType 的那个字体格式的一些工具 , 呃就等于它有核心的那些程序之外, 还有一些扩展 ,而 pdfTeX 的话 , 就是完全只是重新实
现了 TeX 和 LaTeX 这两个程序 , 就它们基本上都是引擎 ,但是它们的规模是不一样的 , 它们的覆盖范围是不一样的 , 比如说有些一个可能只是一个内燃机 , 另外一个除了内燃机之外, 还有一个那个 power train 在那边 。
那它们跟 TeX Live 这样子的 。
然后 TeX Live 就是比如说 TeX Live 应该应该用的是 pdfLaTeX, 或者是它两个都有 , 它既有 TeX 也有 pdfTeX, 然后它把所有这些东西外面加上一套编辑器啊 , 加上那个工作流啊 , 然后加上一些校对工具之类的 , 然后打包给你 。
说到 TeX Live, 我们是不是要讲一下它这个所谓的它这个官方开发组叫做 TUG 的这个 TeX User Group 应该怎么翻译 , 粉丝群吗 ,TeX 粉丝群 。
TeX 不是 TeX Live 的官方开发组啊 ,TeX 是呃所有的 TeX 的用户的一个群组 。
对啊 TeX,而且高德纳一开始就经常会在里面发一些东西嘛 ,在很早以前 , 然后会做一些更新啊什么的 , 一直都在那个 TeX。
Anyway 我们跟大家解释介绍一下这个这个社区吧 , 我之前看过他们写的一些论文 , 跟字体排印有关的 , 我当时看过一两个 , 还有一些采访稿 。
因为本来 TeX 它就是一个排版引擎嘛 , 所以他们必须要研究排版嘛 , 所以很多他们研究的排版的论文就发在这个 TeX 上面 。
就 TeX 之与 TeX 的关系 , 你可以认为有点类似于那个 Gnu 之于这个 Unicode 或者是 Linux 这个的一个关系哈 。
这不就是 Python 跟 Pag 之间的关系吗 ,Python 跟 PUG 之间就是这样 。
对对对 , 它有一个这种是一个比较泛的那种用户的组织 , 然后很多这种项目都是挂在这个组织的这个名下, 或者是被这个组织 sponsor 的 , 比如说我们看到刚才提到那好几个 TeX Live 啊 ,MacTeX 啊 ,MacTeX 啊 , 它都是在这个组织的这个旗下, 然后由这个组织的这个成员吧 , 然后在开发维护 , 就大概是这么一些 , 然后还有一些是非组织的 , 就是说就是就就在 TeX 这个 TeX group 以外
的 ,有就各种专业分支的领域的 , 那也有对吧 , 它就不严格是大于统的这么一个群体吧 。
因为它原来的名字就是叫 TeX User Group 嘛 , 对吧 ,TeX 的用户组嘛 , 所以呢就简称 TUG。
对对 , 你只要用都可以在里面去申请加入 。
然后他们呢 ,他们有一个叫 Tugboat, 就拖船嘛 ,因为 TeX 本身是拖船的意思嘛 , 所以他们文字游戏 。
他们后来发呃很多那些发的文章啊 , 啊就都都发在那个 Tugboat 里面 , 那里面其实如果刚才说的嘛 , 很多采访啊 , 去采访高德纳先生啊 , 还有各还有各种字体设计师啊 , 还有排印的一些研究的论文啊 , 就都会发在 Tugboat 里面 。
哎对 , 说到这里 , 我我提另外一个东西其实非常有意思的 , 就是刚才我们讲的 TeX 啊 , 那那个 LaTeX 也好 , 它其实还是偏向于这种文档啊 , 文稿啊 , 这种长篇的论文为主 , 还有一个大的分支的一个流派 ,是基于 TeX 来做一些更加 fancy, 就是你想都不想想不到的一些这种图形 , 你不会觉得它是用那个这个 TeX 编出来的那个排印出来的东西 ,但确实是 , 然
后这套体系叫做这个 Context,有个 T 了哈 , 就拼音叫 Context, 哈哈哈 , 就是那个 Context 那个词 ,但是它的中间那个 TeX 是那个 TeX 的那个拼法 , 就大写的 T, 大写的 X, 然后大小写的 e, 这个是干嘛呢 , 当时我有一段时间非常痴迷这个东西 , 就是就你们写 PPT 要不就是用 PowerPoint, 要不就是用那个 PowerPoint 是 PPT 嘛 , 哈哈哈哈 , 你写这个幻灯片 , 就是数码幻灯片的时候 ,
你要么就用 PowerPoint 是 PPT, 要么就用那个 Keynote, 最后结尾是那个 .k 的那个文件嘛 ,但是你也可以用 TeX 这套逻辑来写这个 slides,而且当时我记得我有很多这个上课的这种教授 ,他们的这个板书啊 ,他们也有板书的嘛 , 就就是用这个这个 TeX 来排版出来 , 投投射到上面去的 ,但是你如果直接用那个原始的那个 TeX 或者 LaTeX, 你说你把这个正常它是定义一个 , 比如 letter 或
者是 A4 的一个纸 , 是一个长长条的一个结构 , 你投到那个屏幕上 4:3, 它是一个宽的结构 ,不太合适嘛 , 然后说你可以说啊 , 那我重新把那个纸横一下, 好像也可以凑合着用 ,但但是还是排出来那个东西是比较无趣嘛 , 对吧 , 我们知道很多这种板书啊 , 或者这种 slides, 它需要有一些有趣的东西 ,有些图形啊 , 各种箭头去指点啊 , 各种甚至是呃渐变过场动画什
么的 , 这这些在传统的那个 LaTeX 里面都是非常难以实现的 , 然后就有人搞了这个 Context ConTeX 这套系统 , 它可以实现非常完美的这种 , 就是各种图形啊 , 精确的这种图案的生成 , 然后你可以做一些动画呀 , 特效啊 , 你你看到那个结果 , 你不会认为那个东西是用 TeX 做出来 ,但它确实是 , 这大家可以去试一下, 然后就有个叫做 ContextGarden.net 这个网站上, 它们的一个相
当于是一个官网的东西嘛 , 你可以看一下它的那些示例文件 , 那个是非常 fancy 的一个东西 。
OK 我明白了 , 这个 Context 之于你就像 reveal.js 之于我 。
啊可以这么理解 , 就本质上你是你是在编程化的方式去生成你的那个幻灯片 ,而不是用这个鼠标在里下点点点的方式生成这个幻灯片 , 你可以精确的描述每一个动效的每一个这个数学描述 , 你都可以实现出来 , 这个是当时做出来的非常令人惊艳 。
如果你不想使用 TeX 的话 , 你可以试试我刚才说的这个 reveal.js, 就是你如果你觉得 PPT 太不 hardcore, 然后你你想要使用编程方式来解决你的幻灯片问题 , 你可以试试我刚才说的 reveal.js, 它是基本上就是你写 JavaScript, 然后来生成你的幻灯片这样 。
哎我想起来了 , 刚才我们说到了 Mac 上面 ,Linux 上面和 Windows 上面 ,但实际上还有一个 , 现在就是我们现在处在这个网络时代 , 还有一个更简单的解决方法 , 就是如果你想要使用 TeX 的话 , 现在有很多所谓的在线 TeX 呃编辑器 , 然后有些是对 Software as a Service 在云上的 , 对 , 就好像现在我基本上写 Python 程序 , 或者写什么小程序的时候 , 需要写一个脚本的话 , 我已
经不会在本地去写它了 , 我会去去比如说 Repl.it 或者是什么呃诸如此类的 online 直接云编程 , 对吧 。
对 ,LaTeX 也有这样的云编程环境 , 呃其中比较知名的一个叫 Overleaf, 对 , 它是可能现在用户群也蛮多的一个嘛 , 虽然我我从来没有用过啊 ,但是有我曾经看到有人用过 , 然后好像反响还蛮好的 , 网址就是 overleaf.com, 然后你在上面注册一下, 你就会得到一个编辑 TeX 的环境 , 然后它会呃给你实时的 , 就像那个 Repl 一样 , 给你实时的生成一个 PDF, 对 , 还蛮好用的 ,而且好像
价格也不是很贵吧 , 尤其是对学生来说 , 一个月 9 块钱 , 就比如说你要写半六个月的论文的话 , 你一个月 9 块钱 , 我觉得实在是相当便宜了 。
太方便了 , 然后你一举忘掉如何安装和这个整这个环境的痛苦 。
而且随时随地都可以 , 就你不用担心本地数据丢失之类的问题 , 它是保存在云端的 , 就还是相当推荐的 。
对 , 这叫什么来着 ,Cloud Native TeX, 就 1976 与 2021 的完美结合 , 哈哈哈 。 这个我印象非常深 , 当时我在我我用的应该是 2000 零几年的时候哈 , 就是前后吧 , 就是 2000 零几年到 2010 年这段时间 , 这个十年, 这个 decade 之间 , 就那个时候还没有 , 就是有这种就是云的这种这种 TeX 出现 ,但是因为那个时候的这个这个 Cloud 的这个 Infrastructure, 就是基础设施还没有非常的完善嘛
, 就其实非常不好用 ,但如果说假设我现在让我丢到一个学校里面 , 让我再写一篇 , 我估计我也不会在自己电脑上安装这个破玩意儿 , 一次一次性的破玩意儿了 , 还是弃这种用这种云环境比较简单一些 。
对是的 , 所以一个一个标准的这个 TeX 的编写的这个 , 就当然那个你编的那个流程是这样 ,但是我就说可以描述一下当时你你看到你电脑屏幕上应该是什么 , 比如我通常是一半屏幕 , 就屏幕对开嘛 , 左右两边对吧 , 然后一边是这个源代码 , 就是那个 TeX LaTeX 的这个原始的那个点 TeX 那个 source code, 然后另外一边是生成的那个 PDF 的那个窗口对吧 , 然
后把那个编辑器的那个工作流程设为你这边只要一保存这个 TeX 的源代码 , 那边就自动在后台呃编译生成那个 PDF, 然后在右边及时的展示出来 , 这样就可以勉强实现所见 , 等大概一秒钟 、 两秒钟 、 三秒钟之后所即所得嘛 , 然后当时有一个非常有趣的 , 或者很 tricky 的一个实现的难点 , 就是说如果你这篇文章 , 或者你编写的这个文档有十几
页长对吧 , 然后你想要肯定是说你当前编写的那边保存的时候 , 刚好是它刷新出来在右边的那个 PDF 的那个 ,也是对应到你大致位置的这一行嘛 ,但不能严格一一对应哈 , 就这个当时也很多 tricky 的办法在做这件事情 。
这个我好像根本没有找到怎么解决 , 你刚才说你的典型编辑界面 ,但我的典典型编辑界面就是就只有源代码而已 , 就是我会 concentrate 我先把内容写完 , 然后嗯再一个一个去解决 TeX 带给我的种种头疼的问题 , 嗯就等于先写再排版这样 。
那所以你是在在编写源代码的时候 , 脑子里面在浮现出它应该想要的效果 , 然后之后再去 debug。
对 , 一个一个人肉 render 的这么一个过程 。
所以你写 MacDown 也是这样子吧 , 先一遍 MacDown source 写完 , 然后再 render, 再去电脑看一下, 再 preview 一下 ,而不是说这种 side by side 的方式 。
对差不多是这样 。
OK 没 , 这看你取决于你写什么东西了 , 如果你还是一个长的普通的文档的话 , 那可能还好点 ,因为比如说写论文的话 , 对吧 , 你论述的东西如果还是很长的话 , 你还是想去集中的先把这个论述的这个逻辑先写清楚嘛 ,但是如果你要在渲染一个公式的时候 , 你你得先想象一下, 猜一下, 然后渲染出来看一下, 哎这个好像又跑位了 ,不行了回
来调调 , 就会出现这个事情嘛 。 不因为我可能用法比较奇怪哈 ,因为我用这个东西最常用的倒不是写论文这种长文档 ,而是写作业的时候 ,因为我当时说嘛 , 我写字不是很丑嘛 ,有时候丑到以至于我自己都不知道我写的草稿上面是什么东西 , 所以我写作业的时候 ,其实我其实是在电脑上用 TeX LaTeX 这个方式去一步一步去进行演算的 , 所以我一定
要看到那个最终结果 , 才想下一步是什么 。
你你用那个做算术是吧 。
对对对对对 , 就有点这种感觉 , 比如说我要把那个图画到那 , 哎下一步怎么来着 , 我再用那个来画对吧 , 我不会说我在草稿纸上先把这个就作业写的差不多 , 然后再腾一遍 , 腾到这个 LaTeX 里面 , 我不是这么干的 。
对这还是看你写的内容怎么样嘛 , 每个人写作的那个环境和写的内容不一样嘛 , 用法就不一样了嘛 。
对尤其是如果你有很多公式的话 , 它要求你你在写公式的时候 , 你能够确定知道自己的 LaTeX 的公式是写写的是对的 , 这实际上对很多人来说还是蛮难的 。
很难的一件事情就是你想象着应该是对的 , 结果渲染出来并不是这个样子 , 经常会出现这种情况 。
对啊对对我我忘了说 , 还有一个我其实应该说是是一个三屏的 , 就是还有一个是那个 TeX 的 LaTeX 的那个对应的手册 ,因为你记不住那些符号啊 , 或者是那些公式到底是哪个 , 你得不断的去翻 , 然后包括那个 TiKZ 的那个绘图的那个工具 , 它也有个非常完整的 , 就是也是一本书了 , 本质上的一个一个 PDF 的册子 , 你要去找它里面到底是怎么去画这个箭
头 , 怎么画到那里去 , 就是你是要随时去找这个 reference 的 。
嗯对 , 所以就很烦呢 。
是这其实 TeX 除了我们讲常用于这种数学啊 , 理工这种之类 , 它还有一些这种奇奇怪怪的其他的用法 , 比如说有有人在用这个做音乐哈 , 我也有也有看到 , 就是乐谱也可以用这个 TeX 的方式 , 就是写出非常严谨的这个美观的这个乐谱嘛 , 还有当时我看到还有很多 , 反正就是非常小众的用法 ,但因为我不是我不是做那个方向的这个人嘛
, 我我不太理解它底层原理是什么 , 比如说我一直没有理解它那个用 TeX 写五线谱是什么一个原理 , 你们知道吗 , 或者写那个就是那个就是音乐的那些东西 , 就它应该也是有什么记号啊 , 各种专用的这个红啊之类的 ,但是我从来没用过 , 我我从来不知道这怎么实现 ,因为当时我还做过另外一一番一些比较 crazy 的事情 , 就是我不是觉得
那个 TeX 的那个红编程有一些那个语法什么的不是太灵活嘛 , 我甚至还在就是在为了写一个写一个复杂的一个图形 , 它可能是要如果要手工去写会非常的麻烦 , 我甚至是用比如说用 Python 写了一个小程序去生成输出的那个结果是 LaTeX, 然后再 compile 成 PDF, 得到那个我最终想要的那个图形 , 非常的 metal 这个过程 。
哈哈哈 ,但事实上那个 Web 的一个功能就是这个 , 它先去读取那一段程序 , 然后生成一段可以被 TeX 来执行的命令执行的程序 , 它基本上也是一个代码生成器 。
做乐谱的那个是是叫什么 MusiX 是吧 。
叫 MusiX 吧 , 应该是 X 的 MusiX,但我我只看人就结果用过 ,但我不知道它到底是一个怎么一个用法 。
但不过它还就就是一个嗯还是一个红包嘛 , 哈哈 。
对所以我们今天很很关键一点就是说 , 呃我们所有在谈这个排版的时候 , 它是和字体配套的这个事情很关键 , 就像高德纳他当时他做 TeX 的时候 ,他他自己做了一套字体 , 嗯然后这个字体对应的这个排版如何调用之后才能做出精细的排版 , 否则的话他想实现这个他没办没办法调用嘛 , 对吧 , 我们现在平面设计师经常就是比如说
字体排版1:37:31
我用 InDesign 这个平面设计的这个页面的软件所进行所得 ,但是呢 InDesign 它需要调用的是 OpenType 这个字体里面的高级排版特性 , 嗯所以说到底就是这个排版引擎和这个字体它是相辅相成的 , 两边东西得配配套好 , 嗯要不然的话就是很多事情你是在字体层面做呢 , 还是到排版引擎做呢 ,有很多事情你想不清楚 ,有的时候会 , 然后高德纳就说什么事情
都我来 , 嗯有了这个 Computer Modern 的字体 , 然后呢有了 TeX, 它就可以赋予这个作者所有的权利 ,fully control of your work, 所以高德纳他自己很开心 。
如果你知道怎么用的话 , 打个非常大的引号 , 就是你要学会那套东西才行 , 大宗师不是那么好当的 , 你要拿着玄铁剑 , 你得先拿得起来会武才可以 。
它是 control free, 这是毫无疑问的 。
对这其实也是我们在排版工作中遇到的一个嗯难题吧 , 就是呃我们知道其实无论是早前还是现在 , 现在当然更是了 , 字体其实已经成为了排版程序的一个构成部分 , 如果没有一个在功能上符合这个目标排版需求的字体的话 , 我们实际上是无法完成整个排版工作的 , 那这一点无论是在 TeX 里面 , 甚至我们在这个 Web 上面 , 就在网页上面也越来越是这样
, 我们需要更多的 OpenType feature 来实现一些复杂的排版 , 甚至只是为了实现呃一些复杂文字的排版 ,而这些文字排版都没有什么特殊的需求 , 它都不是写公式 ,也不是记乐谱 , 它只是想把它自己国家那种语言的文字记录下来 , 我们就需要用到这样一些复杂的特性 , 这也是我们现在越来越难以纯粹的将这个呃内容和样式分离开来的一个原因 。
其实我比较好奇就是因为我之前在用那个 LaTeX 的时候 ,有大量的这种情况是没法用通过这种中间插入到 Word 或者是这种 Word 或者 Office 的方式里面去实现的 , 然后就必须要在里面同时解决 , 当时有一个非常 tricky 的一个需求是这样哈 , 比如说你要插一个图对吧 , 那个图很多不是有那种所谓的 label 文字的那种标签嘛 , 你想要那个文字标签的字体形态风格
和大小 ,有可能那文字标签本来就是个数学公式对吧 ,有可能文字标签本来是一个就是一个要要跟正文的那个啊字体和那个排印方式要一致的 , 那如果说你用一个第三方的这种图片呃插进去的话 , 就会出现这各种各样奇怪的问题 , 比如说最简单一个情况哈 , 就是有我看到很多人就是他不用那个 LaTeX, 呃 LaTeX 和 TiKZ 去生成图片的这种情况下 ,他是说我在
外面找一个通用的画图工具把它画了 , 做成一个一个 PNG 或者是这个 SVG 或者是那个叫什么 EPS 这种矢量图形或者是位图图形吧 , 如果它那个不能用矢量来描述的话 , 然后它再导入到这个 Word 里面去 , 这这会导致一个什么问题呢 ,因为它本质上是两套脱节东西 , 那个图片对周围的文字是没有这个意识的 , 那么你缩放那个图片就会导致那个图
片里面的那些那个 text label 那些文字标签的大小和外面的那脱节了 , 就完全不一样 。
脱节了嘛 ,并不联动 。
对甚至我们看到国内很多那种就是用 Word 写文写论文的人, 你那个论文一看就是 Word 写的 , 为什么呢 ,因为它里面的那个插入的那个图片是比例是不对的 , 然后那个字形和和那个周围的文字是严重脱节对吧 , 它字号都不一样 , 然后这个这个字体都完全是不是一个东西了 , 这些都是在 TeX 里面解决的比较好 , 它是你嵌入一个 TeX 那种 native 那种
图形 , 它的那个文字 label 它还是用 TeX 来排版的 , 就它会非常的一致 。
不你那个图也必须要用按 TeX 的那个方法画嘛 。
对啊对啊 , 所以我觉得它必须是在同一个语境里面去嘛 , 就它没有这个割裂感 。
嗯对 。
甚至你那还有像那个我之前刚才讲那个 Context 那种非常诡异的需求 , 它可以实现什么呢 , 就是你的你假设你想象一个页面上有一个插图 , 插图里面有一个箭头 , 箭头里面指到你这一页上某一段画的某一个字上面有一个符号 , 它可以指到那个上面去 , 这个在普通的那些里面那个插图的话是无法实现的嘛 。
体系里面 , 就它是互相是之间是能够互相呃理解对方的结构的 。
他们说的是同样的语言 , 所以它能指的能定位能定的到 。
对对对对对 , 如果你是插图的话 , 你就单纯的那种普通的 , 比如说是这个这个 PNG 哈 , 你是无法从 PNG 插图里面去指向你的文档里面的某一个字的嘛 ,因为它都不知道你要插向哪一个文档 , 对不对 , 就这个还是有一个非常不一样的体验的 。
对但其实这样子的这个排版它它其实呃之所以它能排的这么准 , 它是因为所有的东西都是在一个封类似接近封闭的环境中实现出来的 , 如果从这点来说 , 如果假设我们很极端 , 我们说我们写一篇论文 , 我们每个字都用 Photoshop 来排 , 那它最后就是一张位图 , 它必然每一个细节都可以排的很准 , 呃之所以我们用 Word 来排 ,有的时候发现有一些图片
的里面内嵌的那些字体的样式跟整个文档的样式脱离了 ,是因为有可能它这个图片并不是这个作者自己做 , 它只能从什么地方拉了一张图片过来 , 这图片里面有一些文本 ,其实这个图片的生成环境都不是由它自己来控制的 , 那自然会产生这种 。
但 TeX 的好处就是说它它如果说你你都用 , 比如说你都用 TiKZ 来这个做图 , 它那个图的那一部分代码是可以单独拷贝出来的 , 所以你只要再做一些小小的修改 , 就可以让那张图无缝的嵌入到你自己那份文档里面去嘛 , 就你是有那个原代码的 ,而不是只有一个最终的结果 。
嗯所以嘛这个当年高高老师说的嘛 , 我用 TeX 的话 , 我是不管你用什么设备 ,不管用什么环境 , 最后生成东西都是一样的嘛 , 对啊这个就是他当初用做 TeX 的最基本的一个目的 。
对对所以我我就很好奇嘛 , 就是现在我们用的这种商业用的排版工具 , 它是怎么解决这种类似的这种需求或者是问题的 。
如果你在它自家的一个封闭的环境里实现 ,其实 Adobe 提供的工具也足以实现这样的需求 , 比如说你在 InDesign 里面排一个很复杂的书籍 , 这书籍里面可能有一些图片 , 甚至图片上面会有一些小的文字标注 , 呃如果你这个图片是用 Photoshop 做的或者是用 Illustrator 做的 , 然后你把这个 Illustrator 做好的图像文件以一个外链 link 的方式可以 link 到这个 InDesign 内部 , 或者直接插入进去成为这个
InDesign 文文档的一部分 , 那你也可以几乎保持说呃它不会不会产生任何意外的情况 , 它都是受你控制的 , 然后你也可以随时在编辑那个图像文件里的内容 , 保持一个两边实时的同步更新 。
嗯而且是 native 的更新 。 它可以实现说刚才我说那种情况 , 就是某一个图片里面的一个一个元素 , 一个一个箭头指向这一页这个图像以外哈 , 你这但是还在这一页上的某一个文字的某一个角落嘛 , 随便举个例子 。
啊你的意思是假如说我下面这个被指向的文字 , 它因为比如说修改文本而被重排了 , 所以这个箭头还能不能始终指向它是不是 。
对啊要跟着它走啊 ,不然没有不然没有意义嘛 。
对这部分可能在平面设计软件里还比较受限 ,因为这样的需求不强 , 可能或者说对平面设计师来说 , 如果产生了这样子的情况 ,他有可能需要人工来解决这种情况 ,因为他有可能觉得机器自动给他重新安排的这个结果并不满意 , 对所以这个需求不那么强 。
就相当于 Rio 的要求是他们要有所谓 interoperability, 就是可以互相交互这个 。 对对就就这这也是就是用 TeX 中间我产生的一个非常奇妙的一个感觉 , 就是说你能感觉到它的强大 ,但是你也能感觉到它对你的制约 , 就是说有些它给你定义好的东西 , 你就只能那么去用它 , 比如说那条线要怎么走 , 如果你要你当然你完全可以重新把那个红包打散 , 自己写一个呃
让你足够满意的红包对吧 ,但是那个过程是非常痛苦的 ,以至于我就说哎将就一下就用这个 。
自己画轮子 。
对自己造轮子很很痛苦的 。
对其实 Rio 说的这种情况更像是我们现在用这个 Web 排版里面实现的一些特性 ,也就是它有我们呃用一个很俗的词嘛 , 就它有一些 responsive 的特性在里面 。
是是是 。
它能根据你这个呈现媒介的改变 ,以甚至包括你能实时的修改一些文本 ,但是还是保持着一些关键的排版特性的稳定性 。
就是那个 PDF 不是有一些这种可编程的功能嘛 , 它可以嵌入 JavaScript 然后做一些交互嘛 , 当时有一些那种比较疯狂的那个 TeX 的那种这种这种就是先锋 , 它可以直接生成可交互的 PDF, 比如说最简单的是用那个 Context 做那个幻灯片对吧 , 幻灯片不是有所谓的这个这个这个快进下一页页首页尾 , 或者到某下一个章节的标题这种都有的嘛 , 它可以在 PDF 里面实
现一个导航栏 , 都可以通过这个来实现 , 非常的厉害 。
啊对 PDF 实现表单也是可以的 , 你可以填表 。
对对它而且它会自动数据收集嘛 。 但这个我觉得现在就是反倒是有一点式微了 , 就是我发现越到后来哈 , 就是说因为 TeX 说本说白了 , 它最终还是 99% 是为了打印的那个场景设计的 。
排版它核心是一个排版 , 你们所有对它的过度使用其实都是误用 。
对哈哈哈对 , 就它还是为了这个打印出来再再使用的嘛 ,但其实现在我们看很多 , 我我其实已经很少把一篇论文打印出来再看 , 都是在电脑屏幕上看 , 就说那是否还有必要拘泥于这个 page 这个页面这个概念对吧 , 都已经其实这个概念已经开始在逐步淡化了 , 那像 TeX 它花了很多时间去研究说啊 , 我要为了把这个这一篇这个文字和这个
公式完美的塞进一个固定的尺寸里面空间 , 我要做什么标点挤压 , 我要做各种什么这种对吧 , 这这什么分词 , 各种 hyphenation, 各种这个这种变种吧 , 这种这种这种操作 , 对这个公式这么行一行写不下, 到底应该在 X 还是 Y 啊 , 哪里哪个地方断开 , 这种非常细致的规则 ,但随着这种无限 , 就是相对来说灵活的这种展示啊界面的存在 , 它好像
这个需求已经不那么强烈了 , 那无非看不下我就把那个浏览器窗口拉宽一点嘛哈哈哈 。
对在节目的最开始实际上我就提到了这一点 , 我觉得现在拉 TeX 或者 TeX 本身的定位是一个比较精准的小众的 , 局限在插入公式这一部分 , 就你拿真正拿来拿 TeX 来排版的人实际上是就是你 。
越来越少了哈 。
对在整个的呃个人出版领域里面实际上是已经是很小的一部分 。 就反过来说 , 宗师级的解决方案实际上是不适合普通人的 。
对对它像排版这样一件其实高度依赖于视觉结果的这样一件工作 , 呃给你添加了一个比较抽象的中间 , 中间的这样一个过程 , 它需要你用一些相对抽象的方式去描述你的排版 ,而不是呃像早期的平面设计师一样 ,他们甚至将一个呃剪贴画剪下来直接粘到纸上的某一个位置 , 这样子的一个直观的过程 , 我觉得这是它比较难上手的一个原因 。
对嗯就你使用这个东西是需要经过一套你并不就或者说违反直觉的训练的 , 这个我觉得在很多设计师这边实际上是一个很大的阻力 , 就违反直觉这件事情在设计师这里是行不通的 。
也不叫违反直觉 , 就是不直接 , 就是 。
就 not intuitive 嘛 , 就就是它没有那么直观的意思 。
它不是 not intuitive, 它是 counterintuitive, 它是反直觉的 。
对对对 counterintuitive exactly。
就是它说的是反人性的 , 你知道吗 , 它本质上让你变成一个叫做什么来的 interpreter 对吧 , 脚本解释器 , 你要去运行这段结果 , 大概在在你你脑子里面 , 肉就是叫什么人脑去演算这个 TeX 排版算法的结果 , 得到说它大概会长什么样子 , 然后你再得到那个 PDF, 再看到底是不是你想的那个样子 , 会不会什么 bounding box overflow 啊这种东西就出来了 。
这实际上就是编程对于人的异化过程嘛 。 它是宗师的工具 , 它不是普通人的工具 。
对啊对啊 。
但是一开始刚才说到那个连字分断词 hyphenation 的那个算法 ,其实它做的挺好的呀 ,而且呢就是因为你人工排版的时候 , 你可能只能顾着这一行来排 ,但是它现在就是所就所谓我们现在 Adobe 的算法是在单行排版器和段落排版器 , 它可以在根据这一整个段落的竖行 , 它根据它的公式计算出一个最小的调整值 , 然后得出最佳的最佳方案嘛 , 这个东西呢就是电
脑上场做的东西 。
这还不是最狠的 ,TeX 做的更狠在这里面 , 它可以做全局的优化 , 就是说这一整页里面 , 我觉得是不是在这里断 , 会导致后面三个五个字段断之后的那个排版的 , 所以违反了一个更大的一个代价 , 它有一个整篇的全局优化的这个过程 。
它有好多个参数嘛 。
对而且而且我印象最深的就是说它在相当长的一段时期内 , 它的那个就是编译啊编译那个 TeX 文本到最终这个 DVI 也好 PDF 的结果 , 它不是这个 one pass 的 , 它不是一遍就完的 , 它可以 multipass, 就是它去不断的去进行这个全局优化 , 然后使得说你你它你得到一个整通篇文稿里面最小代价去违反那些排版规则的这个这个总和的一个总成本吧 。
对像这个这类事情的话 , 就是计算机所擅长的部分 , 就哪怕你是一个很训练很几十年的一个高级的一个排版师 ,也也不会比这个计算机它做的这这个经过计算以后, 根据这个算法计算出来的这个演化 , 采取的一个最优值会好嘛 , 对吧 , 嗯所以这部分 TeX 是很厉害的 。
是 。
但是反过来讲 , 如果就对于那个公式排版里面 , 那个比如说你你要等号对齐加多少宽啊什么这个这个控制多少 , 这个东西的话需要人再重再重新去反渲染的话 , 这个的确就是不是机器所擅长的东西 , 然后需要人进行非常多的干预嘛 。
但是但是我印象非常深的一个一个一个点 , 就是说当时我自己写论文嘛 , 这里面跟普通的排版有点不太一样 , 就在于比如说呃比如说我我我问一个 , 我我理解应该是这样子 , 就说比如说你拿到一个别人的书 , 你要排 , 你是不能改书的内容的嘛 , 对不对 。
对对 。
但是因为我是自己写论文 , 我知道写到那最后最后那一句话的时候 , 刚好就多了那么一行 , 然后你无论如何都调不回去 , 然后就不多一页空空白页的时候 , 你说你干脆把最后那段话改一下, 缩短一点点好不好 , 对吧 。
编辑其实是有这个权限的嘛 , 编辑在排版之中起到的作用有时候就是这样 ,他觉得对啊 , 这篇文章可能排了一一整页加一句话 , 那我把那句话改一改 , 或者把整个篇幅缩一下, 然后跟作作者沟通一下就就好了 。
对所以编辑有这个权限 ,但是排版师没有这个权限 。
对对 。
比如你想 , 这是一个非常有名的作家 , 一字千金的 , 你你敢改字吗 ? 不敢的 。 对啊 。 你就违约了 。
会出事故的这个 , 所以呢编辑如果觉得有必要 ,他他可能倒回去和作者去联系这个事情 , 再难的东西你的排版都能排的好 , 这才是你排版师的厉害之处嘛 , 你那是改字这个算什么嘛 , 对吧 。
那所以本质上你看排版师本质上也是一个人肉的那个 , 对吧 , 那个就是 layout 的 auto layout 的计算机 , 你要知道怎么排才能变得好看 , 你脑子中有各种各样的呃规则 。
对对 。 一个人肉的 page maker 的 , 哎我刚才查了一下, 我才发现 page maker 这个东西已经在 2004 年的时候就 。
早就没有了 。
我的天呐我靠这些 。
我一直想着找个机会去指正你 ,但是呢就没有机会 。
这十几年来我都活在一个谎言里面 。
对我们现在都用 InDesign 呢 ,而且你想 InDesign 都 20 多年了 。
对我我知道 , 我其实我天天就是我刚才所有提到 page maker 的地方 , 我想说的其实都是 InDesign, 就是那个我甚至我知道我能想起来那个 logo 是写的 ID,但是我就 somehow 把它叫成了 page maker, 上上个世纪的记忆实在是 。
用 InDesign 的话 , 先不考虑钱钱的问题啊 , 它比较贵嘛 , 我有可能拿它来写毕业论文吗 ?
呃取决于你写什么级别的毕业论文 , 就是刚才我想说的一个事情 , 就是不管是 TeX 还是 InDesign, 实际上都有一个问题 , 就是它如果你要使用比较专业的 plot 工具的话 , 它们还是必须使用第三方的东西 , 就比如说 MathPlotLib。
啊公式很多会比较麻烦 。
MathPlotLib 对 , 它就是没有很好的公式处理工具 。
就是会那种根据数据会出来的图 , 对吧 , 它是没法支持这个这一点的 。
对或者是你画一个什么三维界面的 , 三维里面的流形之类的东西 , 你你你要怎么用呃 TeX 来画 ,不可能的 , 所以这些东西其实还是有局限 。
可以的 。
啊 TeX 可以画啊 ?
可以的 。
OK。
可以画一些简单的 , 然后刚才我不是说我用 Python 写了一个代码输出那个 , 然后 TeX 的命令来实现绘图吗 , 输出的就是 TeX 的那个代码 , 然后它实现了一个我想要的那个图形 , 为的就是解决刚才我说的那个问题 , 就是它画出那个图形中间是有一些这个 text label 是需要跟周围的那个长相一致的 , 那你用任何其他的工具是没有办法实现这一点的嘛 。
然后这又退回来这个本这个软件的本质 , 就是因为 TeX 它是开放的开源的 , 如果你有这个需求 , 你自己去写个宏 , 写个包 , 你自己你自己造个轮子 , 然后你就可以添加功 , 你就可以添加功能了嘛 , 对吧 , 那你自己拿去用去 ,但是对于 Adobe 公司来讲 ,InDesign 是他们专属的 , 然后你这个需求太小了 , 我干嘛要给你做呀 , 对吧 , 然后这个东西 。
那你看就回到了那个开始吴涛念的引用 , 引用那段对自由软件的指责嘛 , 对吧 , 确实 InDesign 是一个设计的非常好的工具 , 它具备非常 , 它凝聚了非常多工程师多少多少的这个辛苦劳动的这个结果 ,但是它得到的结果也是非常的这种 professional 专业的这种结果 ,但是它不能解决我这么一个特别定制化小众的需求呀 , 哈哈 , 所以你看在这个研究领域啊 ,在这
种特别是那种探索边界的那些人 ,他总是要遇到这种 edge case, 所以还是要用这种开放的呃这种开源的自由的软件才能够实现它的那种可能全世界就只有它这么一个人在 20 年时间内用了这么一次 , 之后再也没有人想过这个需求了 , 哎呀 InDesign 肯定是不会做的 。
对其实还是看你怎样衡量这个排版的工作量 , 比如说我们用 InDesign, 理论上你完全可以人肉的实现所有公式编辑器可以实现的这个事情 , 排一个公式它结构很复杂 ,但它再复杂 , 它无非就是在一个二维的平面上 。
或者人工排它也可以是吧 。
文字放到固定的位置 , 对对就 InDesign 完全有这个能力 ,而且做这件事情未必很复杂 , 就是它它的学习成本首先非常的低 , 呃其二就是它未必很复杂 , 如果你的公式量不是非常的多 。
那就就就你这个如果就不成立了 。
说到这个 InDesign。
你这个如果不成立 。
是说到 InDesign 做这个技术类书籍 , 如果我没记错的话 , 小林建的 CJKV Information Processing 应该第二版就是用 InDesign 排的 , 第一版好像是 page maker 排的 。
小林就随便写一个技术文档都是用 InDesign 写的 。 这么硬核的吗 ? 他自己一页一页去排吗 ?
对对对他自己做的 。
啊对对对对 ,他是自己建的高德呢 。
哎所以说到底的话 , 对于他来讲的话 ,因为写文章是关键 , 用的工具是什么 , 就是其就就次要嘛 , 对于他来讲 ,他用 InDesign 上手 ,他就用 InDesign 嘛 , 对吧 。
就是好像中国有好多企业内部交换文档全都是 PPT 啊 , 就不管干嘛都是一个 PPT 发过来 。
所以我们本质上是需要一张数码白纸 , 对吧 ,不要给我加那么条条框框 , 我自己把它摆到哪里就是哪里 , 你所需要的是说让怎么让我能够自由的通过一个规则能够摆在那里而已 。
那数码纸张其实就是 PDF 嘛 , 就是它是一个容器嘛 , 那那你怎么再怎么打印怎么画 , 这个是另外的事情嘛 。
但是就是 PDF 没法直接生成嘛 , 你得有一个工具才能生成它嘛 , 所以 Keynote 啊 PPT 反而是比较就是相对来说简洁直观的嘛 , 那确实也是啊 ,有我看到很多人最终他搞不定了 ,他就直接开一个这个这个这个这个 PPT 弄成白板 , 删掉所有文字 , 然后一个一个摆上它需要的那个相对位置 ,也也可以嘛 , 本质上是你在白纸上用手写 , 然后再把它拍成照是一样的嘛 。
嗯啊 PPT 是我我在我在研究生的时候教的那个提交了论文的那个学术会议 , 它应该是它应该也是 IEEE 下属的一个学术会议 , 官方推荐的海报排版工具 。
海报 。
甚至它给的官方对 , 就是你的你的你的论文有可能就是你的 paper 有可能有两种发表形式嘛 , 一种是呃 presentation, 就是你去那边做一个演讲 , 另一种就是 poster, 就是你在会场贴一个海报 , 然后你站在海报旁边等别人来跟你交流这样子 , 然后它的官方给你的这个排海报的排版模板就是一个 powerpoint 的一个文件 。
这里面有各种什么会议的 logo 啊元素啊 , 这个指定的字体样式都给你定好了 , 对吧 。
啊没有很简单 , 就是它会给你一个比较简单的框架吧 ,因为那些会议一般它没有什么 logo, 它可能它可能主要还是侧重展示你自己的 。
它有一个格式嘛 。
对有一个大致的格式 。
这个通用的通用的格式 , 标题是什么 , 作者是谁 , 会议名称 , 某某第几届什么什么 conference 之类的 , 这种会会给你定好了那个模板 , 这就在中间是一个大白板 , 你自己写嘛 。
但其实你最后交的这个海报 , 如果跟它这个格式有很大的差异 ,但是基本的文本信息是对上的话 , 那它其实不会干涉你对这个设计的改变的 。
你达到目的就可以了嘛 。
毕竟不是一个商业发行 。
说到底的话 , 对你们现在再来讲讨论说 TeX 有各种各样的不好的地方 , 当时无非就是高德呢 ,他自己想把自己书印好了 , 然后呢人家很牛 ,他自己为了自己排书 ,他自己写了一个排版引擎 , 自己做了一套自己 , 然后他写出来了 ,但是他觉得挺好的 , 于是呢他就开源出来了 , 大家也都可以用 , 就仅此而已嘛 , 事情就结束了嘛 , 你们爱怎么用 , 你们再爱怎
告别2:00:27
么怎么怎么倒 , 这是都是大家后来的事情了 。他原来的目的就想只是想 ,他觉得原来那个呃照照牌排出来那个牌 ,他自己的书太难看了 , 然后他希望他想对他的作品有 full control, 完全的控制 , 所以呢他写出来这样个东西 ,而且也只有像他这样的大师才能把自己的字体和渲染引擎写出来嘛 。
哼 。
而且好像自从那之后从来没有人想过这件事情了 , 都我感觉就是对吧 , 已经没有人有这种胆量去尝试这件事情 。
对对这件事情太跨学科了吧 ,他对字体排印的知识要求也非常高 , 我记得高德呢好像还跟 Carpf 有过很深度的合作 。
对没错 。
这我们也可以讲一讲 。
对没有他他他当时其实是没想那么多 ,他就觉得啊这个太难看 , 然后自己写个 , 然后呢他当时一开始觉得说这事情花几个月就能搞定的事情嘛 , 然后他才发现他太乐观了 。
是个大坑 。
嗯而且呢他一开始呢就是他决定要做这个字体的时候 ,他其实也想的 ,他还想用别人的东西 ,而且他那时候失落 ,不是那时候已经有那个实验室有一些东西嘛 ,在打印机啊什么 ,他去问嘛 , 就说我能不能用 , 然后呢失落跟他谈判的基础就是说呃你可以用我的设备 ,但是最后做出来的东西呢要归于我失落 , 然后他就不愿意了嘛 , 这东西最后做出
来应该开源啊给大家用嘛 , 所以他到后来就想不行 , 那想来想去我还是得自己重新做 , 然后他发现既然目前所有东西他不能去改动现有的字体嘛 , 那他只好就重新再做一个字体 ,他要去学习的时候发现你这现在现无论是那些矢量和那些点阵的字体都不能满足他要求 , 那我就干脆直接向现成的字体设计师去学如何画字 , 然后再用他的
这个程序呢教电脑如何画字 ,其实他做的那个 Metafont 的话是真正的在画这个字嘛 ,因为我们现在用的这个矢量矢量字体 , 它只是轮廓嘛 , 就把那个字体的勾边勾出来 ,但是 Metafont 它是是真正它教它的那个代码是在写这个字应该怎么写 , 一比一画怎么写 。
对就最终它是渲染出一个呃未图的格式了 。
它的那个是矢量的 ,但最后它它最后必须得渲染成渲染成未图 , 最后得呈现出来嘛 , 对吧 ,因为这个渲染就是最后的事情了 ,但是它的那个代码最后是它的确是叫这个点位移移多少 , 这个笔画是怎么样的 , 然后再后再上面长肉是什么样的 , 它的 Metafont 其实是在画这个字嘛 。
它之所以有这样的这样一个思路 , 就是因为它在做字体的话 , 它是直接找这个字体设计师 ,但它去但是去找插播服务啊 ,他们像比如说我我画个字母 A, 先画右边一笔左边一笔 , 然后那个衬线怎么加 , 然后再削掉一点 , 就就一步一步 , 真的就是按那个写字的那个步骤是写出来的 , 一笔一笔写出来的就是 。
啊 Metafont 是这样的 , 就是 Metafont 的机制它是矢量的 ,但是 Metafont 绘制的结果好像是未图 。
它是个它是个 Rasterizer, 就是你要指定一个它 , 你你在调用 Metafont 的时候 , 你要是你是要指定单位的呀 , 那这个单位是拿来干什么的 , 肯定是拿来画的 , 就是拿拿来定位的嘛 。
对对因为要 Metafont 你还得有字体知识 ,而做 Metafont 的厂商非常少 , 现在应该已经绝迹了吧 。
对 。 因为特别难写啊 ,因为它要呃就是等于教电脑怎么写这个字 ,因此就是要 60 多个参参数吧 , 就是老多参数了 , 这个对于一个设计师 。
而且它是非常不直观的 , 对吧 , 你是其实是书你是在写代码 。
对啊对啊设了好多变 , 你首先我一个新的字体要设多少个变量 , 你得想嘛 , 对吧 , 然后一个参数 , 然后都要赋值 , 然后怎么让它怎么动起来 , 怎么怎么加衬线 , 这个这个对于一个普通的设计师来讲太不直观了 。
啊原来是这样 。
所以所以其实现在也没有人在用这个 Metafont 做字 , 然后当时我记得我用的时候啊 ,其实已经是过了那个时间段 , 就我用的那个时候还有两个并行的系统 , 就是 TeX, 就是 TeX 系统要去引用一个系统字体啊 ,是非常困难的 , 当时还要转换格式 , 要转换成一个 TeX 能够认 ,不是说你丢一个 TTF 或者是 OpenType 给它 , 它就能能能用了 ,但是后来越到后来像什么啊 ZTeX, 特别是
ZTeX 出来之后, 它是可以直接调用系统字体嘛 ,因为它是 Mac 上面的 ,Mac 上面它本来就是把这个 OpenType 那套做成一个系统级别的这个 API, 可以暴露给上面的这个应用程序嘛 , 所以它并没有像最原始的那个 TeX 那种 , 你还得自己用自己的什么 Metafont 那种格式去描述一个字体 , 当时还有好多种 , 就是所谓的中间格式 , 什么 font one 啊 , 那些还中间还要转转很多遍啊 , 后来
都是可以直接就调用系统里面存在的 OpenType 或者 TrueType 字体就可以了 ,也就不用再考虑什么啊 Metafont, 包括这个甚至这个 Computer Modern 后来也有人转成那个 TrueType 还是 OpenType 的格式放在那个库里面就更直接使用嘛 。
而且这很重要一点 , 就是说大家感觉这样字体就是它的一个造型 , 这个造型轮廓而已 ,其实更重要的对于排版的来讲是很多里面的 Metrics, 嗯就是它的那个度量信息里面记录了 , 比如说这个基线是在什么位置 , 然后这个字这里降步是有多高 , 升步有多高 , 这些东西都必须要让排版引擎进行读取 , 它它才能调啊 , 嗯要不然的话它它找不它不认得
这个字的话 , 它没办法调 , 你上下标你要给它挪多少位置之类的 , 基线要提高多少 , 这些东西都都必须要呃字体里面先要有这个信息 , 然后要让排版引擎知道啊 , 那大家知道 TeX 和原来和和 OpenType 它原来根本就不是一个体系的一个东西 , 所以他们两个人。
几同压榨 。
两个东西之间对 , 要让他们互相交流到这个信息 , 然后让他互相知道这个事情就本身就是一个很难的 , 对原来的话高德纳他因为 Metafont 是他自己做的 ,他所有他自己新定义了一套 Metrics 啊 , 然后呢让 TeX 能调用 ,他自己做东西就他自己好调用嘛 , 这个就正如阿杜比他自己 OpenType 他这个 spec 就是阿杜比他自己开发的 ,他然后 InDesign 呢又是他自己的软件 , 所以呢他自己的软
件调 OpenType 特性就调的特别好嘛 , 嗯所以你在方正的软件里面排版软引擎里面 , 你你要用阿杜比的 OpenType 特性 , 就就特别难受 , 就调不出来嘛 ,因为他们不是不是一个系统东西 。
那这些国产的这些系统软件 , 它难道还要说要求用国产的字体格式才行吗 ? 就它这个怎么解决这个问题呢 ?
在很久以前 , 嗯在方正软件完必须要用方正的字体 ,以前是不就方正字体自己有一个格字体格式的 。
对没错是的 ,但但后来也是终于可以用 TDF 了 ,也也能也能也能用 OpenType, 这也是很后面的事情了 。
那那现在这个业界不都统一到这个 TrueType 和 OpenType 这两个格式了 , 那现在所有的现代排版软件都得支持吧 ?
啊对啊 , 嗯但是你也知道吧 ,OpenType 有一是微软微软和阿杜比做的嘛 。
OK。
这跟 WPS 之类的差不多嘛 ,其实 。
的支持程度也可以不一样 ,因为你想一个字体里面现在的 OpenType 字体 , 它的特性非常复杂 , 它有很多指导你怎样去排版的特性 ,而最早的一个 TrueType 的字体 , 它其实只核心的功能就是描述一个具体的 glyph, 它的轮廓是什么样的 。
比较简单吧 。
方正其实它以前就是通过排版引擎来实现很多排版的特性 ,但是现在呃可能业界更希望大家能够遵循 OpenType 这个字体里面已经写入的一些排版特性来实现一些排版 。
就是这个权利到底是在排版师那里还是在字体设计师那里的问题了 。
在在哪个层级你要说好 , 然后呢你就互相能调用就可以嘛 , 嗯像 。 TeX 和 Metafont 都是同一个人做的 , 所以他自己想清楚 ,他自己做互相调用就就很顺嘛 , 那你到另外一个系统去几同压榨这个这个搞不清楚啊 。
是因为毕竟互相都不都不能直接干预对方的这个成果嘛 ,他字体设计师也不能说我这个字体只能用在哪些领域 ,他也不知道你应用场景是什么 , 只能给到你一些啊通用的建议 , 对吧 , 然后排版师那边对 hint, 然后排版师那边也也也只能说我根据我现在手上这个这个工这个作品的特殊的这个情况 , 选择要不要启用你的那个 hint, 还是说我
自己自自己定一个规则说了算算了 , 对吧 ,因为有些特殊情况就要特殊处理的嘛 。
搞个很简单的 , 就是网页排版连一个行高都算不清楚嘛 , 就是这一点嘛 , 不同系统不同系统的它读取的 OpenType 特性里面那个字段呢 , 行高的那个数据字段是不一样的 , 那每个浏览器读出来的数值数值都不一样 , 它算出来的位置就都不一样 , 它渲染出来东西都不一样嘛 。
哎所以这一套有什么国标之类的吗 ? 还是说就是行只有行业标准 , 就大家各自去想办法解决 。
这典型的 OpenType 就是一个商业标准嘛 , 这行业巨头首先提出来的 ,因为是嗯大厂商做的嘛 , 所以呢大家自然而然的也就都跟进嘛 。
从这个侧面来讲的话 , 高德纳是一个人挑 , 就是一单枪匹马做一套系统 , 然后我们在这边拿来和整个业界做出来的一套系统相比 , 这是这就是大宗师的风范 , 对 。
不是错了 ,是大宗师做的时候 , 业界这个事情还不存在 , 没有这个业好吗 ?
业界还不存在 , 对 , 没有这个行业 。
40 多年前 70 年代的事情嘛 , 对啊 , 所以那时候桌面排版是什么 ? 那时候还没有 Mac。
那个时候 PC 都没有 , 还桌面排版 。
对 , 所以从这个意义上讲 , 它真的是一个传奇 , 就是一个人开创了一个领域 ,但是而且这个领域的这个成果到现在还是被被一些比较像他一样比较喜欢走极端的人所使用着 ,而其他的熟民或者说没有那么 geek 的人们则在使用着另一套可能更 user friendly 的系统 ,而他们的最终的结果几乎是不分伯仲的 。
我不知道你们啊 ,但是有时候我会觉得 TeX 排出来的东西太有风格性了 , 就是你一看就知道这是 TeX 写的 ,但是反过来一个用 Word 或者是呃 。
Word 也很有风格 , 一看就是 Word 排出来的 。
用用用 。
艺术字 。
用 InDesign 排出来的东西 , 你就你就会不太知道说这个东西到底是怎么来的 。 有时候太风格化可能也不是一件特别好的事情 。
这也是程度的问题嘛 。
它有点千篇一律啊 , 很多人他不会配置那些太很多个性化的参数 ,因为调个性化要牵涉到很多这种参数的变动 ,其实有时候不一定能得到得到好的结果 。
对 , 还是那句话 ,you have to know everything to do anything, 还是蛮难的 。
对啊 , 就哪怕是最简单的 , 你就换一个字体 , 你比如说你就不你就不是你就看不惯这个 Computer Modern 这种圆滚滚的这种长相的字体 , 当时我就有这个问题 , 我说我选我换成那个 Palatino, 对吧 ?
我用的是 Palatino, 对 。
对 ,但是你一旦你用 Palatino, 你就要考虑你的那个公式的问题了 ,因为公式的它当时很多那个 Palatino 的那个这个就是没有希腊字母 , 希腊字母罗马字母它是不齐全的 , 或者你必须要用那个代替字体 , 你就发现公式的特别难看 , 这是其一哈 。
第二个就说数学排版 , 特别是公式排版的 , 它那个间距啊 , 那些那些就是那些 Metrics, 这些那些那些数值标注 , 它是根据那个字体来定制的 , 然后你换一套字体 。
它写在字体里头了 。
但但但你就换一套字体 , 你就发现那个就是更难看 , 对吧 ?
就没有了 。
就很麻烦 , 所以到时大家就最最偷懒的方法就是直接啥也不改 , 直接写 , 对吧 ? 写内容就好了 ,不要管它长相 。
还是这个问题嘛 。
而且不要去定制它的长相 。
所以用 TeX 做出来东西都是一样的 , 然后大家都知道哦 , 这是一看就知道这是 TeX 写的嘛 。
哈哈哈哈 ,也是一个传奇 。
机身当个诞生机 。
但我不知道哈 , 就如果说以后的那种论文 , 如果不需要考虑是一个页的形式存在 , 它可以是一个 scroll, 对吧 ?
一个长卷轴的形式出现 , 那其实很多排版的难题可以降很多降很多维度嘛 。
对 , 你你的意思是把排版的难题转嫁到浏览器上了 , 浏览器的引擎实际上就是一个排版引擎嘛 , 就你不需要静态排版了 , 然后 。
是啊 , 动态排版就是一坨屎啊 , 现在就是你看 CSS 排版现在的能力那么差 , 就在这一点 。
太难了 , 这真的太难了 。
没有需求嘛 , 就是这个问题啊 , 浏览器厂商天天要考虑各种安全问题 , 还要给你搞这种非常坑爹的这个排版 , 那怎么去死吧你 。
你在 Web 排版 , 你连对方用什么字体都不知道了 , 你得猜 。
现在不用了嘛 , 现在有 WebFont 嘛 , 可以指定了嘛 ,但只是说那个最终体积的问题还是不太好说 。
对呀 , 哈哈哈 。
不过我们呃这单子上也花了两期时间就讲 Web 排版的事情 , 大家可以回去听啊 。
这次他没有说是哪一期 , 我我已经很欣慰了 。
哈哈哈 , 你一定要逼我说吗 ?
偶尔我也能依稀想起来那和恐慌聊过什么 。
因为刚好就是前两期 , 嗯 ,不远 。
OK, 那今天也聊了好久 。
好了 , 差不多了吧 ? 我们说了这么多 , 好难解了 。 哈哈哈 ,是不是要收尾了 , 同学们 ?
好啊 , 来 ,ultra。
好 , 那我们今天的节目呢就暂时告一段落 。 我们今天也是我们上次在这里提一下这个事情 , 我们今天也是首次尝试在 Clubhouse 上面同步我们直播的啊 , 同步我们录播的这个内容 , 然后一个直播的形式 。
我们的我们这房间还剩下多少人 ? 现在还剩下三三十多个人, 我们的死忠粉丝 ,也非常感谢大家一起跟我们完成了这期节目的录制 。
那自谈自唱听众呢 , 如果想跟我们交流或者反馈 , 都可以写邮件告诉我们 , 我们的邮箱地址是 podcast@the type.com,P-O-D-C-A-S-T at T-H-E-T-Y-P-E dot C-O-M。
同时呢 , 大家也可以在新浪微博 ,在推特以及在微信上面通过搜索 the type.T-H-E-T-Y-P-E 这个账号关注到我们 。在 Facebook 上搜索 the type 或者搜索 Type is beautiful 也都可以找到我们 。
呃 , 您刚刚收听到的节目是 《 内核恐慌 》, 一档尽量贴近计算机主题的娱乐 podcast。 我们号称硬核 ,但是也没有什么干货 , 想听就听 ,不想听就别听 。
我们的网址是 pan.icu, 您可以在网上找到订阅我们节目的方法 ,以及联络我们的方式 。 如果您期待我们更频繁的更新节目 , 欢迎您到爱发电我们捐款 , 详情可以在我们的网站上找到 。
先发电后催耕 , 文明催耕从你做起 。 如果您觉得意犹未尽 ,也欢迎您去收听 Rio 和黄海主持的节目 《 风头圈 》,Rio 和任宁主持的节目 《 提前怀旧 》,以及基本不由吴涛主持的 《 自弹自传 》。
好 , 感谢大家收听 , 本期节目是由 Eric 在 BigSore 上剪辑制作完成的 , 我们下期节目再见 , 拜拜 。
拜拜 。
哇 , 你还会说这个 ?
这是 Meta 信息啊 , 就是我很注重 Meta 的 , 知道吗 ? 就像我们会刊不是有封面吗 ? 然后那照片是谁 ,在是几月几号 ,在什么地方拍的吗 ?
有时候我把那个拍照设备也写进去 , 然后我们的编辑就说有必要写吗 ? 哈哈哈 , 对
。