复制页面的命令

复制页面的命令

我正在创建考试,所以我需要制作(几乎)相同的考试版本,但会有几个字符不同。例如

\documentclass{article}

\begin{document}

Here I use the variable $x$

\newpage

Here I use the variable $y$

\end{document}

为了避免在尝试复制不同页面的编辑时出现错误,我想做的是

\documentclass{article}

\begin{document}

\page{Here I use the variable #1}

\pages{$x$,$y$}

\end{document}

关于如何高效地执行此操作,有什么建议吗?我知道如何创建宏,然后可以在每个页面上重复该宏。具体问题是如何使用可变参数执行命令,该命令遍历参数并将宏 \page 应用于每个参数。

答案1

根据以下详细信息如何迭代以逗号分隔的列表?,您可以按照以下方式定义\page和的版本:\pages

在此处输入图片描述

\documentclass{article}

\usepackage[paper=a6paper]{geometry}% Just for this example

\usepackage{etoolbox}

\makeatletter
\newcommand{\page}{\long\def\@page##1}% \page defines \@page
\newcommand{\pages}[1]{%
  \renewcommand{\do}{\@page}% Each element will be passed to \@page
  \docsvlist{#1}% Iterate over CSV list
}
\makeatother

\begin{document}

\page{%
  \newpage
  Here I use the variable #1?%
}

\pages{$x$,$y$}

% ====================

\newcounter{mycounter}
\page{%
  \newpage
  \stepcounter{mycounter}\themycounter: \quad Solve #1
}

\pages{
  $a^2 + b^2 ={} ?$,
  $\displaystyle \sum_{i=1}^\infty \frac{1}{i} ={} ?$,
  $1 + (-1) ={} ?$
}

\end{document}

\page将其参数传递给\def名为的初始化\@page\pages遍历 CSV 列表,将每个项目传递给\@page执行。

相关内容