定义一个命令打印稍后给出的文本

定义一个命令打印稍后给出的文本

我定义了一个带有参数的新命令,例如\mycmd{some text here}

此命令在文档中多次使用,例如:

\documentclass{a-latex-class}

\begin{document}

\mycmd{text number 1}
\mycmd{text number 2}
\mycmd{text number 3}
\end{document} 

这是我的问题。如何定义另一个命令,\whatiwant打印作为参数给出的所有文本\mycmd

此外,我希望\whatiwant在使用任何之前使用该命令\mycmd,例如:

\documentclass{a-latex-class}

\begin{document}
\whatiwant
\mycmd{text number 1}
\mycmd{text number 2}
\mycmd{text number 3}
\end{document} 

我尝试过使用临时/辅助文件来存储我想要的文本。但是,似乎我需要在使用临时文件之前排版文档,这种方式不太方便。

答案1

您可以使用类似 ToC 的界面,使得\whatiwant操作类似于\tableofcontents

在此处输入图片描述

\documentclass{article}

\makeatletter
\newcommand{\whatiwant}{\@starttoc{wiw}}
\newcommand{\l@whatiwant}[2]{#1\par}
\newcommand{\mycmd}[1]{\addcontentsline{wiw}{whatiwant}{#1}}
\makeatother

\begin{document}

Lorem ipsum 1 \ldots

\whatiwant

Lorem ipsum 2 \ldots

\mycmd{text number 1}
\mycmd{text number 2}
\mycmd{text number 3}

Lorem ipsum 3 \ldots

\whatiwant% Doesn't print anything

\end{document}

请注意,类似 ToC 的界面通常只使用一次。因此,\whatiwant只打印一次其内容,但这可以更改。

由于它是类似 ToC 的设置,因此您只有在第二次编译后才会看到变化。

相关内容