如何记录变量的值?

如何记录变量的值?

我正在调试一组宏。错误似乎来自\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 文件中。

相关内容