\newcommand 定义中的逐字代码

\newcommand 定义中的逐字代码

关于这个主题,我发现的所有问题都是关于那些想要\verb在传递给命令的参数中使用的人,或者那些想要在 \newcommand 中包装其中一个参数的人\verb(atim)

相反,我只想\verbatim在 \newcommand 之类的命令中使用环境。更具体地说,我尝试了以下方法:

\newcommand \MyFoo {
blabla
\begin{verbatim}
hihi
\end{verbatim}
}

你们可能都知道,这是行不通的:定义通过了,但是当我尝试使用时,\MyFoo出现了一个关于File ended while scanning use of \@xverbatim.) 的错误。

严格来说,我不需要使用\newcommand。我有一堆块(包含纯文本以及逐字元素)存储在一个文件中,然后我想通过选择其中的各个块来构建各种文档:在一个文档中我可能想要使用块 4、7 和 9,而在另一个文档中我可能需要 4、6、7 和 8。

到目前为止我能找到的唯一解决方案是将每个块存储在单独的文件中(因此我只存储\input相关块而不是调用包含该块的命令),但是编辑数百个小文件太不方便了,所以我宁愿将所有块保存在一个文件中。

我正在考虑编写一个脚本来提取相关块,但我仍然希望有一个更直接的解决方案。现在我想到了,我也可以接受某种方式在某处设置启用块的列表,然后设置\input块文件,并在该文件中让每个块都取决于它是否包含在启用块的列表中。

答案1

在此处输入图片描述

\documentclass{article}

\begin{document}

\newsavebox\MyFooA
\begin{lrbox}{\MyFooA}
\begin{minipage}{\textwidth}
 blabla
\begin{verbatim}
hihi
\some \command
& % in verbatim
\end{verbatim}
\end{minipage}
\end{lrbox}

\newsavebox\MyFooB
\begin{lrbox}{\MyFooB}
\begin{minipage}{\textwidth}
 a second
\begin{verbatim}
in classic \TeX you 
would run out of boxes
but have ~32 thousand these days
\end{verbatim}
\end{minipage}
\end{lrbox}

\begin{center}
\usebox{\MyFooB}  
\end{center}


and

\begin{center}
\usebox{\MyFooA}  
\end{center}

and B again

\begin{center}
\usebox{\MyFooB}  
\end{center}




\end{document}

相关内容