如何多次打印同一份考试(可能长达多页)并使用不同的学生姓名?
类似的事情已经报道过这里。但是,我希望名称列表仅用换行符分隔(例如从 Google Drive 或 Excel 复制粘贴):
Sam Student
John Doe
Bat Man
答案1
这是除了学生名单之外仅使用一个文件的方法。在示例中,我使用filecontents*
环境使其自足。
\begin{filecontents*}{students.lst}
Sam Student
John Doe
Bat Man
\end{filecontents*}
\documentclass{article}
\usepackage{xparse,environ}
\ExplSyntaxOn
\NewDocumentCommand{\printexamtext}{m}
{
\ior_open:Nn \g_mappi_student_list_stream { #1 }
\ior_map_inline:Nn \g_mappi_student_list_stream
{
\tl_set:Nn \studentname {##1}
\mappi_print_exam:
}
}
\ior_new:N \g_mappi_student_list_stream
\cs_new_protected:Npn \mappi_print_exam:
{
\clearpage
\setcounter{page}{1}
\ExamHeader
\BODY
\ExamFooter
}
\ExplSyntaxOff
\NewEnviron{ExamText}[1]{%
\printexamtext{#1}%
}
\newcommand{\ExamHeader}{%
\begin{center}
\LARGE Linear Algebra -- 2014 -- Fall Session \\[2ex]
\large \studentname
\end{center}
\vspace{2cm}
}
\newcommand{\ExamFooter}{%
\vfill
\hrule
\vspace{2ex}
\noindent Please, answer all questions\par
}
\begin{document}
\begin{ExamText}{students.lst}
\noindent\textbf{Exercise 1}
Compute the rank of a matrix of your choice.
\bigskip
\noindent\textbf{Exercise 2}
What are the eigenvalues of the identity matrix?
\bigskip
\noindent\textbf{Exercise 3}
Prove that the zero matrix is not invertible.
\end{ExamText}
\end{document}
环境ExamText
包含问题,将其输入为普通文档。我拆分了页眉和页脚,将它们放在单独的位置(以便代码重用)。
xparse
并不是真正必要的,它只是使循环外部文件变得更容易。
答案2
厚颜无耻地基于egreg 的回答。
我会使用textmerg
。结合 和titling
,fancyhdr
您无需做任何特殊的事情即可获得针对每个学生的试卷定制的考试标题等。enumitem
如果需要,使用 可以轻松定制问题的格式。
\begin{filecontents*}{students.lst}
Sam Student
John Doe
Bat Man
\end{filecontents*}
\documentclass{article}
\usepackage{textmerg,titling,fancyhdr,enumitem,kantlipsum}
\newlist{examqns}{enumerate}{1}
\setlist[examqns]{label=Question \arabic*, font=\bfseries, wide, ref=\arabic*}
\begin{document}
\title{Introduction to Philosophy --- Autumn 2014}
\date{Date of Examination}
\pagestyle{fancy}
\fancyhf{}
\fancyhf[lh]{\thetitle}
\fancyhf[cf]{\theauthor}
\fancyhf[rh]{\thepage}
\renewcommand{\footrulewidth}{\headrulewidth}
\Fields{\studentname}
\Merge{students.lst}{%
\clearpage% use \cleardoublepage if printing double-sided
\author{\studentname}
\maketitle
\setcounter{page}{1}
\begin{center}
\fbox{\parbox{.5\linewidth}{%
\centering\bfseries
\large Answer ALL questions.\\
\normalsize There are \ref{lastone} questions.\\
}}
\end{center}
\bigskip
\begin{examqns}
\item Could this examination have been a surprise?
\item Prove God's existence. (Maximum 250 words)
\item Why does Russell's barber present a problem?
\item \label{lastone}Critically evaluate the following passage from Kant:
\begin{quote}
\kant[1-3]
\end{quote}
\end{examqns}
}
\end{document}