如何扩展提取盒子的长度

如何扩展提取盒子的长度

我以为这个构造\wd\bopxcontrolsequence是可扩展的。但在乱搞事情时,似乎并非如此。至少在下文中,代码表明\wd\aetmpbox在 的定义中从未完全展开\aewidth

\documentclass{article}
\usepackage{pgffor}
\newsavebox\aetmpbox
\begin{document}

\def\aewidth{0pt}%%
\foreach \myitem in {first,a,a bit longer,shorter,very very very very very long}
{\savebox\aetmpbox{\myitem}%%
 \ifdim\wd\aetmpbox>\aewidth\relax
    \xdef\aewidth{\wd\aetmpbox}%%
    \typeout{---> \detokenize\expandafter{\aewidth} :L: \myitem }%%
  \else 
    \typeout{---> \detokenize\expandafter{\aewidth} :s: \myitem }%%
  \fi
}

hello

\end{document}

我不想创建新的长度(无论出于什么原因)。我只想获取框的宽度值,并将其保存在宏中\aewidth以供以后使用。

答案1

\wd是不可扩展的原语;\aetempbox字符定义标记,所以它是不可扩展的。因此

\xdef\aewidth{\wd\aetmpbox}

完全等同于\def\aewidth{\wd\aetmpbox}

但是,\the是可扩展的!

\xdef\aewidth{\the\wd\aetmpbox}

\命令

相关内容