LuaTeX 与其他引擎之间的连字差异

LuaTeX 与其他引擎之间的连字差异

我希望了解 LuaTeX 文档中的哪些内容可以帮助我预测 LuaTex 连字行为的差异。

我回答了一个关于将已经连字符的单词连字符化(例如“already-hyphenated”或“often-hungry”),然后出现了这个。考虑以下输入文件(如果您更喜欢使用 LaTeX 而不是纯 TeX 运行,请取消注释前三行):

% \documentclass{article}
% \newcommand{\bye}{\end{document}}
% \begin{document}

\hsize = 0pt
\overfullrule = 0pt
\parindent = 0pt
\parskip=3\baselineskip

a often\penalty10000-\penalty10000\hskip0pt hungry

b often\penalty10000-\hskip0pt hungry

c often-\penalty10000\hskip0pt hungry

d often-\penalty0\hskip0pt hungry

\bye

(我知道以 结尾是个好习惯,\hskip 0pt以防\relax下一个单词以plus或 开头,但我在这里省略了它以避免混乱。)输出如下 — 左侧是 TeX / pdfTeX / XeTeX 的结果,右侧是 LuaTeX 的结果。“a”和“b”的情况有所不同:

输出

LuaTeX 中是否有记录这两个差异(在“a”和“b”情况下)?如何解释这种差异?

  • 在“a”的情况下,连字符前后的惩罚为 10000,连字符后面有一个空的粘连符,乍一看,LuaTeX 的行为对我来说似乎很有意义:我们在连字符后指定了\penalty10000(又名\nobreak),因此 LuaTeX 不会在那里中断。但是 TeX中断了。这是 LuaTeX 的一个错误,还是 LuaTeX 认为的改进?

  • 在“b”情况下,除 LuaTeX 之外的所有引擎都会以某种方式引入一个空行……这是正确的吗?

  • “c” 和 “d” 的情况类似:“d” 情况下有一个空行。请注意,“d” 情况实际上是(通常非常出色)中推荐的情况TeX 常见问题解答但它根本不起作用:它没有将第一个单词连字符连接起来,它会留下一行空白。

  • 期望的输出是左侧的“a”情况,或右侧的“b”情况。是否有一些框、粘合和惩罚序列既适用于非 LuaTeX,又适用于 LuaTeX?

相关内容