为什么具有 varwidth 选项的独立类会使用 pdftex 和 luatex 给出不同的输出?

为什么具有 varwidth 选项的独立类会使用 pdftex 和 luatex 给出不同的输出?

请考虑以下示例:

\documentclass[varwidth]{standalone}
\begin{document}
\begin{equation}
  x
\end{equation}
\end{document}

使用 进行编译pdftex,我得到:

在此处输入图片描述

使用 进行编译luatex,我得到:

在此处输入图片描述

是我遗漏了什么还是这是一个错误?

附注一下,上面的图像是根据手册中所述的类别convert选项生成的:standalone

\documentclass[varwidth,convert={size=640}]{standalone}

奇怪的是,Imagemagickconvert产生的结果与我的查看器中看到的结果完全相反pdf(即上面的图片显示了输出发生的情况pdftexluatex convert反之亦然)。

答案1

varwidth 的工作原理是将所有内容放入一个盒子(一个小页面),然后移除外壳,并测量内容的宽度。

问题在于,该公式为 pdflatex 和 lualatex 给出了不同的宽度。编译此文件,然后检查日志文件(\eqno是打印数字的原语):

\documentclass{article}

\begin{document}

\setbox0=\vbox{$$ x \eqno{x} $$}
\showoutput\showbox0      
\end{document}

使用 pdflatex 显示数学给出这个 hbox:

.\hbox(4.30554+0.0)x175.35764, shifted 169.64236

这是一个相当小的框,向右移动。当 varwidth 测量内容时,这种移动会消失。

使用 lualatex(我使用 0.95 进行测试)可以得到

 .\hbox(4.30554+0.0)x345.0, direction TLT
 ..\kern169.64236

这是一个较大的盒子,里面有一个字粒,不会丢失。

因此,问题在于引擎级别对数字显示数学的不同处理。我怀疑 luatex 维护者会改变这一点,而 varwidth 在我看来没有机会删除额外的空间。因此,如果您想要相同的输出,则必须避免使用编号方程式...

相关内容