我正在制作一份问卷,需要用笔和纸填写。我需要 40 份,每份大约 13 页。我预计有些参与者可能会将问卷拆开,所以我必须能够将样本中的页面相互匹配。我想用一种简单的方式做到这一点,在每份副本的页脚中打印一个从 1 到 40 的数字。
但是,我不知道如何从同一个 TeX 源生成不同的副本,而且我不想手动编译 40 次,每次都更改数字。我决定将 和 之间的所有内容放在\begin{document}
循环中\end{document}
,使用计数器在页脚中打印数字。这会在单个文档中生成我需要的 40 份副本(从我的角度来看这不是问题),但当然,这会更改页码,因此第二个示例从第 14 页开始,而不是第 1 页。由于页码也打印在页脚中,因此这是不可接受的。\foreach
pgffor
由于我仍在对问卷进行一些修改,我可能会突然发现自己有 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}
尽情享受吧!——安德烈亚斯