TL;DR:我想阅读 LuaTeX 的源代码。如何阅读以及在哪里阅读?
我想知道 Knuth-Plass 换行算法在 LuaTeX 中的具体实现方式。不是解释,我想要源代码。该算法的 Lua 回调是tex.linebreak
。我从下载了“源代码”https://serveur-svn.lri.fr/svn/modhel/luatex并在所有文件中搜索linebreak
;它只出现在数据结构声明中。更烦人的是,我甚至找不到在哪里是 LuaTeX 引擎的源代码。我当然假设 LuaTeX 是开源的,但经过两天的搜索,我发现:)
答案1
主 luatex svn 源目前不在公共可访问的位置,我理解这基本上是由于托管安排的变更而导致的暂时情况,但是 luatex 开发人员会定期向 texlive svn 推送,因此通常只会滞后几天或最多几周。Texlive svn 可在以下位置浏览https://www.tug.org/svn/texlive/trunk/Build/source/texk/web2c/luatexdir/
具体来说
从评论开始
@ 现在我们来谈谈 \TeX 最有趣的算法:选择“最佳”断点的机制,这些断点将产生段落的各个行。 \TeX 的换行算法采用给定的水平列表,并将其转换为附加到当前垂直列表的框序列。在此过程中,它会创建一个特殊的数据结构,其中包含三种未在 \TeX 其他地方使用的记录。这些节点是在处理段落时创建的,之后会被销毁;因此,\TeX\ 的其他部分不需要知道有关如何进行换行的任何信息。
D Knuth 的文本,来自原始 tex.web 来源。