仅当给出自己的命令时才显示保存框

仅当给出自己的命令时才显示保存框

我遇到了一个非常复杂且难以解释的问题:

我正在使用自己的命令,如果在主文件中调用它们,它们将创建并填充保存框tex。像这样:

\newcommand{\Hello}[1]{\newsavebox{\HelloBox}\sbox{\Hellobox}{#1}}

在文档的后面,这些框被调用并显示:

\usebox{\Hellobox}

这很好用。我通过这个实现的功能是,命令在主文档中给出,我可以按照我想要的方式对齐和布局它们,无论何时给出哪个命令。

我的问题:这必须是有条件的,即:如果\Hello在主文档中没有调用该命令,\usebox{\Hellobox}则也不能调用,因为显然它不会起作用,因为没有创建该框。不幸的是,我不能使用 if 建筑。

我试图通过伪代码实现以下目标:

if \Hello is being called in the main document
    create a savebox and fill it with content
if \Hello is not being called in the main document
    maybe create the savebox, but don't call it

答案1

在另一个宏中分配寄存器通常不是一个好主意,因为如果您重新运行该命令,则每次都会分配一个新寄存器。e-tex 比经典 TeX 拥有更多的寄存器(经典 TeX 只有 256 个,其中一半通常在您启动之前使用)

\newsavebox{\HelloBox}
\newcommand{\Hello}[1]{\sbox{\Hellobox}{#1}}

然后你可以使用

\usebox{\Hellobox}

它会表现得像\mbox{}没有设置一样,或者如果你不想要,你可以使用

\ifvoid\Hellobox\else\usebox{\Hellobox}\fi

相关内容