我读到的是NTS(新排版系统)是一个用 Java 重新实现 TeX 的项目。根据当前版本在 Wikipedia 文章中,它被寄予厚望(并有足够的资金),例如希望更容易扩展,但最终它被放弃了,因为:
- 太慢了,
- 那时已经有了 e-TeX 和 pdfTeX 扩展,而该程序仅实现了核心“Knuth”TeX,而没有这些扩展。
不过,至少在实现核心 TeX 方面,它似乎已经达到了相当的完成度:据说它甚至通过了 TRIP 测试(TeX 程序需要通过的“折磨测试”,才能被称为 TeX)。
但那是在 2000 年。17 年后的今天,计算机速度更快了,可能 2000 年认为太慢的东西现在也可以接受(即使比“常规”TeX 慢很多倍)。因此问题是:nts
今天是否可以使用它编译纯 TeX(仅因为 LaTeX 需要 e-TeX 扩展)文档?看到 Java 程序执行 WEB-b-Pascal 转换为 C 程序所做的事情,可能会引起一些兴趣,或者至少是好奇。
答案1
(回答我自己的问题以保留这些信息,但仍然欢迎更好的答案......)
kpsewhich
是的,如果您拥有 TeX 生态系统的一些基本二进制文件(如) ,以及某些“数据”(如、字体和其他文件),则可以使用 NTS plain.tex
。您可以通过安装 TeX Live(或类似系统)获得这些。
以下是似乎有效的步骤(在 Mac 和 Linux 上测试过)。
先决条件:确保
kpsewhich
和java
命令存在且有效。您可以通过安装 TeX Live 来执行前者(如果您已经有可用的 TeX 系统,请跳过此步骤)。例如在 Ubuntu 上:$ sudo apt install texlive-binaries $ sudo apt install default-jre
获取 NTS 源并解压缩:
$ mkdir nts && cd nts $ wget http://mirrors.ctan.org/systems/nts/ntsbase-1.0-beta.zip $ unzip ntsbase-1.0-beta.zip
使其中一个
nts
脚本可执行(我认为哪个脚本并不重要),然后可以选择尝试运行它:$ chmod +x ./bin/i386-linux/nts $ ./bin/i386-linux/nts nts: NTS Java Executable nts.rt.jar or Nts.class not found.
移动到包含该文件的目录
.jar
:$ cd texmf/nts/base
可选:尝试运行它:
$ ../../../bin/i386-linux/nts nts: Can't find requested NTS .nfmt file >nts<.
转储格式文件:
$ ../../../bin/i386-linux/nts -ini plain '\dump' This is NTS, Version 1.00-beta NTS comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions; for details see the file COPYING in the distribution (/usr/share/texlive/texmf-dist/tex/plain/base/plain.tex Preloading the plain format: codes, registers, parameters, fonts, more fonts, macros, math definitions, output routines, hyphenation (/usr/share/texlive/texmf-dist/tex/generic/hyphen/hyphen.tex))format file stored in 689 milliseconds No pages of output. Transcript written on plain.log.
现在可以使用了!
$ ../../../bin/i386-linux/nts -fmt=plain '\input story \bye' This is NTS, Version 1.00-beta NTS comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions; for details see the file COPYING in the distribution ./plain.nfmt loaded in 1120 milliseconds (/usr/share/texlive/texmf-dist/tex/plain/knuth-lib/story.tex [1]) Output written on story.dvi (1 page, 668 bytes). Transcript written on story.log.
这story.dvi
就是我们熟悉又喜爱的故事:
我尝试使用其他一些更大的纯 TeX 文件,例如gentle.tex
本书的源代码TeX 简介。 有用。
它明显变慢了(即使在 2017 年):whiletex gentle.tex
需要 0.05 秒,../../../bin/i386-linux/nts -fmt=plain gentle.tex
而 3.71 秒。不过这可能是可以接受的。请注意,虽然字体文件和其他文件是从 TeX Live 安装中加载的(可能是在使用 查找之后kpsewhich
),但实际进行排版的代码都是 Java 代码。
奇怪的是,由 TeX Live 生成的 dvi 文件nts
和tex
由 TeX Live 生成的 dvi 文件略有不同:您可以dvitype
在相应的 DVI 文件上运行,以查看计算出的位置有微小的差异,甚至命令顺序也不同。所以我对“通过行程测试”的评论感到好奇(但行程测试可能也不需要相同的 DVI 文件)。尽管如此,就我所见,从视觉上看,换行符或分页符或字符位置没有差异。