请考虑以下示例:
\newlength{\textsize}
\makeatletter
\setlength{\textsize}{\f@size pt}
\makeatother
\setlength{\parskip}{12pt plus 1pt} % WORKS
\setlength{\parskip}{\textsize plus 1pt} % FAIL
如何使故障的线路恢复工作?
这意味着:如何将长度设置为另一个长度加上和/或减去其他值?
答案1
\newlength{\textsize}
\makeatletter
\setlength{\textsize}{\f@size pt}
\makeatother
\setlength{\parskip}{12pt plus 1pt} % WORKS
\setlength{\parskip}{1\textsize plus 1pt} % FAIL
\showthe\parskip
LaTeX 长度是跳过寄存器,因此\textsize
是完整的粘合规范,不能采用其他plus
组件。1\textwidth
将其强制转换为维度,丢弃任何正负组件,以便您可以添加新的正组件。
答案2
David 的两种替代方案回答:
e-TeX 提供了
\glueexpr
,允许添加粘合规范:\newlength{\textsize} \makeatletter \setlength{\textsize}{\f@size pt} \makeatother \setlength{\parskip}{\glueexpr\textsize + 0pt plus 1pt\relax}
如果
\textsize
不打算使用拉伸或收缩组件,则可以使用 dimen 而不是跳跃寄存器。LaTeX\newlength
会分配一个跳跃寄存器,\newdimen
即 dimen 寄存器:\newdimen{\textsize} \makeatletter \setlength{\textsize}{\f@size pt} \makeatother \setlength{\parskip}{\textsize plus 1pt}