如何创建带有运行编号的文档副本?

如何创建带有运行编号的文档副本?

我正在制作一份问卷,需要用笔和纸填写。我需要 40 份,每份大约 13 页。我预计有些参与者可能会将问卷拆开,所以我必须能够将样本中的页面相互匹配。我想用一种简单的方式做到这一点,在每份副本的页脚中打印一个从 1 到 40 的数字。

但是,我不知道如何从同一个 TeX 源生成不同的副本,而且我不想手动编译 40 次,每次都更改数字。我决定将 和 之间的所有内容放在\begin{document}循环中\end{document},使用计数器在页脚中打印数字。这会在单个文档中生成我需要的 40 份副本(从我的角度来看这不是问题),但当然,这会更改页码,因此第二个示例从第 14 页开始,而不是第 1 页。由于页码也打印在页脚中,因此这是不可接受的。\foreachpgffor

由于我仍在对问卷进行一些修改,我可能会突然发现自己有 12 或 14 页。因此,将页码模 13 以用于页脚打印不是一个好主意。

有什么办法可以让它工作吗?或者我必须回到硬编码模数,并在需要时手动更改数字?我更希望它真的来自 LaTeX 内部,而不是更改 .tex 文件中的数字并重新编译的脚本(我必须在不同的操作系统上编译)。我不在乎最终得到一个非常长的 .pdf 还是四十个小的 .pdf,只要它不是被覆盖四十次的相同 .pdf 即可。

\documentclass[a4paper,12pt]{article}

\usepackage{pgffor} 
\usepackage{fancyhdr} 

\newcounter{questionnaireNr}
\setcounter{questionnaireNr}{0}
\pagestyle{fancy}
\fancyfoot[C]{Questionnaire \arabic{questionnaireNr}} 
\fancyfoot[R]{page \thepage}

\begin{document}
    \foreach \x in {1,2,3,...40} 
    {
        \stepcounter{questionnaireNr}

        Lorem Ipsum %here are the questions 
    }
\end{document}

答案1

在你的开始处\foreach,添加

\newpage
\setcounter{page}{1}

循环运行时,这会将页面计数器重置为 1。(我假设您希望每个新副本都从新页面开始。)

答案2

我遇到过同样的问题,并想出了以下解决方案。随附的 LaTeX 输入采用给定的 PDF 文件(= 一份问卷)并创建 N 份副本,每份编号为 000..N。数字以浅灰色添加到右下角。您可以随意自定义。

% Print an exam N times, with serial numbers 000...N
% by Andreas Zeller, Saarland University

\documentclass[a4paper,10pt]{article}

\usepackage{pdfpages}
\usepackage{fancyhdr}
\usepackage{color}
\usepackage{multido}

% What is the starting number?
\def\startnumber{1}

% How many exams do we need?
\def\numberofexams{10}

% Which is the input PDF file?
\def\examfile{ping-exam-1-EN}

% This is to control the placement of the number.  
% I am using A4 format, so feel free to adapt to your page size.
\textwidth  16cm
\textheight 23cm

% We use headers to output the serial number
\pagestyle{fancy}
\renewcommand{\headrulewidth}{0pt} % No header line
\renewcommand{\footrulewidth}{0pt} % No footer line
\cfoot{}

% Actual command to include the serial number
\rfoot{\Huge\textcolor{gray!25}{\textsf{%
% Some number padding - for up to 999 exams
\ifnum\numberexam<100 0\fi%
\ifnum\numberexam<10 0\fi%
\numberexam}
}}

% And here comes the single loop across all documents
% pagecommand by itself adds nothing, 
% but causes our new headers and footers to be printed
\begin{document}
\multido{\numberexam=\startnumber+1}{\numberofexams}{%
    \includepdf[pages=-,pagecommand=\strut]{\examfile}
}
\end{document}

尽情享受吧!——安德烈亚斯

相关内容