突出问题——pdftex 错误、microtype 错误还是 LaTeX 错误?

突出问题——pdftex 错误、microtype 错误还是 LaTeX 错误?

在完成 TUGboat 的一篇文章时,我发现 pdfTeX 的突出机制(由该microtype包实现)出现了奇怪的行为。打字机中的字符\具有负的左边距突出,即它通常向左边距突出 1.57498pt。但是,如果在 LaTeX 环境中使用相同的文本quote,第一行的突出就会消失,如下例所示:

\documentclass{article}

\usepackage{microtype}
\microtypesetup{protrusion=true}

\begin{document}

\noindent
\verb=\foo= \\
\verb=\foo= \\
\smash{\rule{.4pt}{34pt}}aaaaaaaa

\begin{quote}
\verb=\foo= \\
\verb=\foo= \\
\smash{\rule{.4pt}{34pt}}aaaaaaaa
\end{quote}
\end{document}

结果我们得到

在此处输入图片描述

现在问题显然与 pdfTeX 如何实现突出有关,并且微类型与 \parindent 之间意外的交互这已经在意图框中讨论过了。

在这种情况下,这里没有缩进框。相反,我们有一个由quote环境添加的隐藏“标签”框,因为这实际上是一种简单的列表形式。因此,有一个隐藏的\item没有任何可见输出(如零宽度缩进框)。

以下是我的问题:

  • 我的分析正确吗(这基本上只是午夜时分的一个假设)
  • 如果是这样,pdfTeX 是否应该更加努力地在行尾的“不可见”材料上进行凸出处理?也就是说,这会是 pdfTeX 的一个错误,至少是一个改进主题?
  • 或者应该/可以通过 LaTeX 中的代码来解决这个问题(或microtype)以不同的方式实现这些事情?

答案1

  • 你的分析是正确的。

  • 几年前,pdftex 团队一直在讨论 pdftex 是否应该更加努力。除了在所有情况下都正确处理可能太难之外,没有得出明确的结论,因此这个问题被推迟到以后再考虑……现在对 pdftex 来说可能已经太晚了,应该交给 luatex。

  • microtype如果 pdftex 没有提供任何合适的方法,解决这个问题将非常困难;参见这个拼凑物。使用命令告诉 pdftex 应该将当前点视为行的开始/结束,这样做会更容易(尽管仍然很混乱)。甚至还有一个修补提供这样的命令,但似乎从未正式发布。

  • (当然,将quote环境实现为一个带有空项的列表(verbatim另一种情况)可能被 LaTeX2e 视为一个相当不幸的选择,无论如何 - 我认为应该对 LaTeX3 进行调查。)

相关内容