以下代码是我所面临的问题的精髓:
\documentclass{minimal}
\newbox\boxa
\newbox\boxb
\newbox\boxc
\parindent=0pt
\begin{document}
\setbox\boxc\hbox{Hello World!}
\def\foobar{MIST}
\setbox\boxa=\hbox{\foobar\space A}
\def\foobar{MOST}
\setbox\boxb=\hbox{\foobar\space B}
\setbox\boxc=\hbox{\unhbox\boxc\space \unhbox\boxa\space \unhbox\boxb.}
\unhbox\boxc
\end{document}
期望输出为
Hello World! MOST A MOST B.
但我只能得到
Hello World! MIST A MOST B.
从技术上讲,仅通过施展魔法就能获得所需的输出 \setbox\boxa
吗?
答案1
您可以通过保存宏而不是保存框来获得所需的内容。
一个框包含排版文本:框中根本没有 tex 控制结构,因此即使宏已经发生改变,每次使用框时都会获取相同的文本,这是“设计使然”。