我正在调试一组宏。错误似乎来自\vspace*{\dimexpr0.000000cm-\topskip plus 1fill}
。
我如何记录长度的值?
我已尝试过\typeout{\dimexpr0.000000cm-\topskip plus 1fill}
,但没有效果。
答案1
\dimexpr
仅接受刚性长度;如果你传递一个橡胶长度参数,它会通过抑制拉伸和收缩分量而被强制为刚性长度;所以你可以说
\dimexpr 0pt - \topskip\relax
这是一种复杂的说法-1\topskip
。然而,plus
在 是非法的\dimexpr
。你想
\vspace*{\glueexpr 0pt plus 1fill - \topskip\relax}
这是一个交互式会话,请注意以下位置的错误plus
:
> pdflatex
This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014) (preloaded format=pdflatex)
restricted \write18 enabled.
**\relax
entering extended mode
LaTeX2e <2014/05/01>
Babel <3.9l> and hyphenation patterns for 79 languages loaded.
*\showthe\topskip
> 10.0pt.
<*> \showthe\topskip
?
*\showthe\dimexpr0.000000cm-\topskip plus 1fill\relax
> -10.0pt.
<to be read again>
p
<*> \showthe\dimexpr0.000000cm-\topskip p
lus 1fill\relax
? 11
<*> ...dimexpr0.000000cm-\topskip plus 1fill\relax
?
*\showthe\glueexpr0pt plus 1fill - \topskip\relax
> -10.0pt plus 1.0fill.
<*> ...the\glueexpr0pt plus 1fill - \topskip\relax
?
*\stop
No pages of output.
Transcript written on texput.log.
如果你想以\vspace
非交互方式调试,可以使用类似
\typeout{***This vertical space will be \the\glueexpr0pt plus 1fill - \topskip\relax}
这会将胶水写入 .log 文件中。