在 LaTeX3 中使用 \dim_set_eq 后线宽失败

在 LaTeX3 中使用 \dim_set_eq 后线宽失败

当我想将尺寸变量与当前线宽进行比较时,我使用以下 MWE 代码:

\documentclass{article}
\begin{document}
\ExplSyntaxOn
\dim_new:N \l_line_width_dim
\dim_set_eq:NN \l_line_width_dim \linewidth
\ExplSyntaxOff
\linewidth
\end{document}

但我发现使用后\dim_set_eq\linewidth\textwidth失败,并且消息是

Missing number,treated as zero.

Illegal unit of measure (pt inserted).

我不知道它出了什么问题。

答案1

如果删除从\ExplSyntaxOn到的代码\ExplSyntaxOff,您会得到同样的错误。

这是因为\linewidth是长度寄存器的名称;当 TeX 需要长度时,你可以单独使用它,例如

\setlength{\mylength}{0.5\linewidth}

或者

\parbox{\linewidth}{...}

当然也

\dim_set_eq:NN \l_line_width_dim \linewidth

因为需要一个长度寄存器。

如果脱离上下文使用,TeX 的语法规则会让它认为你想要分配一个值\linewidth,因此出现缺少数字的错误消息。

如果你想打印的当前值\linewidth,你需要

\the\linewidth

相关内容