我可能在 20 年后就死了(与年龄有关),但我想知道 TeX(我最常用的程序)最终会走向何方。我认为核心开发团队的大多数人比我还要老。TeX 的设计并不容易理解,对新一代程序员没有吸引力。
(学习曲线和单片设计可能是为什么没有人编写一个版本,将由\clearpage
宏分隔的文档部分 [包括章节] 调度到不同的处理器核心。这真的不应该太难……除了它是 TeX。更正:因为宏可以出现在任何地方,而不仅仅是在序言中,所以这是一个错误的说法。只有包含序言中的所有宏的文档才能被调度。)
是否有希望新一代人接过接力棒,让 TeX 焕发新生?还是说我们已经快走到尽头了?
答案1
以下是一些内容:
luaTeX
我对此并不太感兴趣,只是因为它有很多小的不兼容性(例如,默认情况下不启用破折号后的换行),并且它的字体处理与 XeTeX 或 pdfTeX 不太兼容。一些 TeX 宏包已经开始要求使用 luaTeX 作为引擎(如果我没记错的话,ConTeXt 就是这样的一个,但我可能错了)。与 TeX 宏扩展相比,Lua 的优势在于它是一种不那么晦涩难懂的编程语言。
西莱
我还没有仔细研究过这个,但它在布局上有点从外向内工作,而且最近才开始支持数学。它与 TeX 的联系有点牵强,而且 TeX 风格的数学输入显然不是首选输入。
结束
这是我的。最后估计我有29年我希望有足够的结束在我之前完成的,让它在没有我的情况下也能有自己的生命。目前,我正在开发一种类似 LaTeX 的标记语言的解析器(大多数样式将是 yaml 文件中指定的简单声明性内容,但可以通过嵌入式解释器进行编程,其语言将是普通的编程语言)。用户命令是可能的,但会故意非图灵完备(整个宏扩展的事情有点像一场噩梦——我的一部分想说用户命令(和类似的命令\input
应该有不同的符号,以清楚地表明它们的行为与“正确”的 finl 命令不同,因为它们会立即执行。
该程序的结构更类似于当代的编译器体系结构,因为第一步是获取输入文件并将其编译为中间表示,因此从示意图上看,如下所示:
\section{This is a section\footnote{It
has a footnote with \verb+\verbatim+ text}}
and it's followed by text
首先会简化为:
- 部分
- 包含的标记参数
This is a section
- 脚注
- 包含的标记参数
It has a footnote containing
- 动词
- 未解析的参数包含
\verbatim
- 未解析的参数包含
text
- 包含的标记参数
- 包含的标记参数
and it's followed by text
\verb
基本标记语言的设计让 LaTeX 用户熟悉,并消除了一些痛点(例如,请注意,将参数放入另一个命令中没有问题)。
然后可以将其呈现为所需的输出格式(例如,PDF,HTML,ePub,屏幕显示,Word,inDesign等)。
同样,前端解析器可以轻松地用其他东西替换,但仍然可以解析为中间格式,因此等效输入可以说是 markdown:
# This is a section[^1]
[^1]: It has a footnote with `\verbatim` text
and it's followed by text
或者可能是基于 XML 的输入:
<h1>This is a section<footnote>It has
a footnote
with<verbatim><![CDATA[\verbatim]]></verbatim>
text</h1>
<p>and it's followed by text</p>
(这种处理方式类似于现代编译器(如 gcc 或 llvm)如何支持多种语言和多种目标)。