重复代码块

重复代码块

我正在寻找一种重复文档整个部分 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 或更高版本的软件包。

相关内容