![重复代码块](https://linux22.com/image/395358/%E9%87%8D%E5%A4%8D%E4%BB%A3%E7%A0%81%E5%9D%97.png)
我正在寻找一种重复文档整个部分 n 次的方法。我创建的文档如下所示:大多数时候,我重复半页。这是因为我打印这些文档以分发给我的学生。
现在,我只是在我的 Tex 编辑器中复制和粘贴,但我正在寻找更好的解决方案,因为有时我必须重复 5 次以上,如果我想更改某些内容,这会浪费很多时间。
谢谢 !
编辑 :
我希望不必创建另一个文档来完成此任务。我每天已经创建了 10 份文档,这会变得难以控制。
我被要求展示我的代码示例,问题是我正在使用多年来自己构建的(质量很差的)命令,所以我的代码很难读懂。但无论如何,它是由小页面、多列、数学方程式、一些带计数器的环境组成的。基本上,我希望能够重复 n 次看起来像这样的东西(一个非常简化的版本):
\begin{document}
\setcounter{exCounter}{1}
\begin{multicols}{2}
\begin{ex}
math math math
\end{ex}
\columnbreak
\begin{ex}
\begin{minipage}{0.4\textwidth}Image\end{minipage}
\begin{minipage}{0.6\textwidth}Text\end{minipage}
\end{ex}
\end{multicols}
\end{document}
答案1
延续 Zarko 使用盒子的想法,这里是latex3使用框实现。只要重复的内容完全相同,这种方法就会奏效,您的 MWE 似乎就是这种情况。我用于执行此类操作的代码略有不同,因为我的内容每次重复都会以各种方式发生变化。如果您需要这种灵活性,我们很乐意提出其他解决方案。
下面的代码定义了一个RepeatedBlock
环境,它接受一个参数。它的工作方式是:
\begin{RepeatedBlock}{<number of repetitions>}
...content to be repeated...
\end{RepeatedBlock}
有了这个,你的 MWE 的4
重复变化会产生:
以下是代码:
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\box_new:N \l_krirkrirk_box
\NewDocumentEnvironment{RepeatedBlock}{m +b}{
\box_clear:N \l_krirkrirk_box
\vbox_set:Nn \l_krirkrirk_box {#2}
\prg_replicate:nn {#1} {\box_use:N \l_krirkrirk_box }
}{}
\ExplSyntaxOff
\usepackage{enumitem,multicol}
\begin{document}
\begin{RepeatedBlock}{4}
\begin{multicols}{2}
\begin{enumerate}
\item math math math
\end{enumerate}
\columnbreak
\begin{enumerate}[resume]
\item \begin{minipage}{0.4\textwidth}Image\end{minipage}
\item \begin{minipage}{0.6\textwidth}Text\end{minipage}
\end{enumerate}
\end{multicols}
\end{RepeatedBlock}
\end{document}
警告:这需要最新版本的latex3因为它使用+b
来自的参数选项解析。您可能需要更新l3 软件包这样您就有了 2019-05-03 或更高版本的软件包。