Windows版TeX Live的新进展(2022/5/5)
在经历了一阵高强度的代码编写和编译之后,TeX Live的编译工作基本上没什么大问题了。所以现在的重点基本上是转到开发上去了。开发的工作包括但不限于:XeTeX的字体查找库,更好一点的METAFONT的前端,DVI工具的整合,辅助程序和库的编写,移动平台的移植。
字体查找库这个。写起来确实不算难的。但是主要是编译系统对于很多人来说过于复杂,所以测试起来就不是特别容易了。
TeX Live的编译系统,使用的是autotools。MikTeX的系统是cmake。不得不说,现代化的编译系统,很多时候都显得过度设计,尤其是我想控制编译细节的时候,过度与否的设计都会成为非常大的阻碍。由于我一直是提供静态编译的exe文件,所以cmake的一些东西我是用不了的,甚至ninja之类的也不用。这个时候就得说Artifex的MuPDF了,就是一个Makefile,解决大问题。
关于METAFONT的前端,对于很多人的用处就不是很大了。但是对我来说还是有一点用的。这部分的开发就是写两个原生前端而已。这个事难度不大。
DVI工具的整合,主要是要把一些调试工具搞成一体的。我现在觉得DVI越来越重要。像什么呢?撕过LCD屏幕的人应该知道,屏幕是分开几层的,DVI这东西,基本上可以当作是PDF种的text层。当然DVI种含有大量的special操作(即一种文本意义上的协议),可以让host程序执行一些其他的操作。而且我也提到过,DVI很轻量,甚至在转换之后,绘制到GUI上面的性能代价都很低。现在的TeX编辑器,都上了PDF组件,让用户来看结果。这个绘制的代价很高:甚至是有些人揶揄LaTeX系统变得越大越慢的主要原因。
我也知道现在很多人在用Markdown。我对于这个东西的态度是开放性的。无论是LaTeX还是Markdown,都有优点和缺点。LaTeX可以变得很轻量很小(大的问题,甚至主要就是因为TeX Live中带了大量的字体和文档,实际上很多人是用不着的)。同理,Markdown也可以变得很重,功能很多。我也相信,就算是再推崇Markdown的人也不会在所有的场合都使用最原始的Markdown格式。现在大家都是在用Markdown扩展。
TeX本身的变化和演进其实是很慢的。但是相关的工具演进就略快一点。但是,开源有开源的问题。这些工具的构造跟人类制造大型系统有着一样的毛病:冗余过多,越做越大,越做越复杂,有很多低使用率的功能。TeX一个东西,能活用起来,首先是要读的文档多,其次是开发的工作量。读文档这事,历来是很难。所以这些工具大量使用PDF相关的库来做。我前几天吐槽过PDF渲染速度的问题:在工作站上编译文档和看PDF现在可能也会变得痛苦了。
用我经常举的例子:本应该轻松跑步的场景,变成了背着八十斤沙袋跑步。
但是,说归说,做归做。我这些话,只有我把这些东西做完了才更有力量。我以前讲过一个叫做Textures的mac版TeX软件。这东西只有5M大小,能实时预览,虽然它只能写标准的article,能用的包基本上是amsmath。但是,它小!小就是有意义的啊。拿现在环境来说,几十M到上百M,都可以说很小了。另一方面,我可以考虑字体层面上的优化,让整个系统一直维持在最小的状态。这个就是我想做的移动端的移植,一个终极目标。之前做的Android版TeX Live系统,虽然能用,但是在Android系统升级安全政策变更之后,就不能运行了。所以Android版也好,iOS也好,能搞出来,是要熟悉编译系统的,还要能写代码。
大学毕业以来这么多年,我就一直做这些东西,而现在也就能围绕TeX的技术栈做这些了。前些年也靠这个赚了些钱。疫情以来,收入大不如前。Android版TeX的收入虽然如毛毛雨,但是也让我看到了不小的希望。把这东西做好,做快,换取收入,是可能的。道阻且长,还需努力。
昨天跟人聊天的时候,我又查找了一下W32TeX的编译者角藤亮的信息。他今年76岁了。所以去年因为身体原因停止W32TeX项目,考虑到年龄因素,是一种必然结果。他是物理研究者。我似乎发现了一个有趣的现象。我这些年,认识的人里面,学物理的好像真是特别多。为什么多,这是一个可以研究的问题。
再,我找现在还不能公开姓名的一位网友代购了一个arm64开发套件,即Qualcomm Snapdragon 7c Compute Platform。

这个开发套件的实体机,能解决我测试的大问题。虽然,这个机器从美国飘洋过海过来需要半个月以上的时间。再等待机器到来的期间,我会试着使用m1版mac mini的虚拟化功能在Windows 11虚拟机上测试。当然了,还有另一位还不能公开姓名的网友会提供协助测试部分程序。
Windows的Arm版的TeX Live编译,其实算是一个间接的结果。用户能有多少,其实我不太清楚。但是这个东西,和iOS的一些,有着奇妙的关联,比如优化方面的。虽然微软在Arm平台上一直很拉跨,但是这几年的演进好了不少。所以多搞搞Arm相关的东西,是要逐步搬上日程的。