如何获取由于 \hskip 而在输出文件中实际产生的间隙的宽度?

如何获取由于 \hskip 而在输出文件中实际产生的间隙的宽度?

如何获取由于而在输出文件中实际产生的间隙的宽度\hskip

我想知道在 Knuthian TeX 中是否有办法获取由于而实际在输出文件中产生的间隙的宽度\hskip

我尝试过,\lastskip但似乎并不能让你知道实际产生的间隙的宽度,但确实能让你知道\hskip指令的样子:

\newskip\scratchskip

\noindent This is the textwidth:

\smallskip

\noindent\hrule

\smallskip

\hfill These are 2cm: \leaders\hrule\hskip 2cm \null

\hfill These are 4cm: \leaders\hrule\hskip 4cm \nobreak\hskip 2cm \null

\noindent
This is the width of the gap produced by the
{\tt\string\hskip}-directive:

\noindent
\nobreak \leaders\hrule\hskip 4cm plus 1 fill
\nobreak \kern 2cm \null 

\noindent
This is the width of the {\tt\string\vbox}:

\noindent
\nobreak \hskip 4cm plus 1 fill
\scratchskip=\lastskip
\llap{\vbox{\hsize=\scratchskip \hrule\hfill}}%
\nobreak \kern 2cm \null 

\smallskip

\noindent
Seems {\tt\string\lastskip} gets you what the preceding
{\tt\string\hskip}-directive looked like and that at
specifying the width/\hskip0pt {\tt\string\hsize} of the
{\tt\string\vbox} the {\tt plus}-part (and the {\tt minus}-%
part if present) of that directive is ignored.

\noindent
Seems {\tt\string\lastskip} does not get you the width of
the gap actually produced due to the preceding
{\tt\string\hskip}-directive---otherwise the
{\tt\string\vbox} would have a larger width and reach the
left margin of the text.

\bye

在此处输入图片描述

答案1

你可以从日志中获取信息,在某些受控情况下,你事先知道盒子里的所有东西,因此可以通过减去已知长度来推断胶水。但一般来说通过设计这些信息是无法访问的。例如 Knuth 写道tex.web

当 TeX 将列表“打包”到盒子中时,它需要计算盒子内的胶合物应拉伸或收缩的比例。此计算不会影响 TeX 的决策,因此胶合计算中的舍入等精确细节对于不同计算机上结果的一致性并不重要。

因此(与使用缩放点中的精确整数计算来计算并可供 tex 宏访问的框宽度不同)粘合拉伸可以使用浮点数,但不可访问。

相关内容