为什么 pdfTeX 和 XeTeX/LuaTeX 中使用 STEP 的换行输出不同?

为什么 pdfTeX 和 XeTeX/LuaTeX 中使用 STEP 的换行输出不同?
\documentclass[12pt]{article}
\usepackage[LY1]{fontenc}\usepackage[]{step}
\usepackage{lipsum}
\begin{document}
\lipsum
\end{document}

由于某种原因我无法弄清楚,这会导致根据引擎的不同而产生不同的位置(无论如何它都使用相同的 Type 1 字体)。不同的引擎似乎不想在同一个地方中断,因此,页面之间存在一行差异(在 Lua/Xe 中,以“port-”结尾的最后一行被推到下一页)。其他字体似乎不会发生这种情况(我尝试过和,timesstix在不同引擎中得到了相同的中断)。这是怎么回事?

带有 pdfLaTeX 的第 1 页(在 DVI 和 PDF 模式下相同): 第 1 页带有 pdfLaTeX(DVI 和 PDF 模式相同)

使用 LuaLaTeX 和 XeLaTeX 的第 1 页:

使用 LuaLaTeX 和 XeLaTeX 的第 1 页

答案1

虽然已知 luatex 在换行方面可能与 pdftex 不兼容,但实际上情况并非如此。 (此外,据我所知,xetex应该会产生相同的换行符。)

相反,差异在于 的值\parindent。当文档类加载时,当设置为 1.5em(在 中size12.clo)时,这个问题会得到修复。现在,1em 在 pdftex 和 xetex/luatex 中转换为不同的长度,因为默认字体不同:OT1/cmr,其中 1.5em=17.62482pt,以及 TU/lmr,其中 1.5em=18pt。

这个微小的差异足以使第三段的第一行采用不同的连字符。

\parindent修复方法是在定义新的默认字体后重置(即之后\usepackage{step}):

\normalfont
\parindent=1.5em

相关内容