我想定义一个命令来增加计数器,并创建一个新的保存框,其名称由计数器值生成。例如:
\documentclass{article}
\newcounter{mycounter}
\newcommand{\mycommand}[1]{%
\addtocounter{mycounter}{1}%
\newsavebox{\csname foobox\roman{mycounter}\endcsname}%
\savebox{\csname foobox\roman{mycounter}\endcsname}{#1}%
}
\begin{document}
\mycommand{This is the content of fooboxi.}
\mycommand{This is the content of fooboxii.}
\usebox{\fooboxi}
\usebox{\fooboxii}
\end{document}
我的 Google 能力太弱了,无法找到编写此代码的方法。有什么建议吗?
答案1
你可以做
\documentclass{article}
\newcounter{mycounter}
\newcommand{\mycommand}[1]{%
\addtocounter{mycounter}{1}%
\expandafter\newsavebox\csname foobox\roman{mycounter}\endcsname
\expandafter\savebox\csname foobox\roman{mycounter}\endcsname{#1}%
}
\begin{document}
\mycommand{This is the content of fooboxi.}
\mycommand{This is the content of fooboxii.}
\usebox{\fooboxi}
\usebox{\fooboxii}
\end{document}
虽然一般情况下你不应该这样做。通常的模式是只分配几个寄存器并尽可能地重复使用它们。经典的 TeX 只有 256 个盒子寄存器,而 latex 内核在你开始之前就用完了其中的一半。(e-tex 还有数千个,但一般原则保持不变)