我需要创建一个由 A 和 B 两部分组成的考试。根据这两部分,我需要创建三个版本:一个包含 A 和 B 部分,一个仅包含 A 部分,一个仅包含 B 部分。每个版本都需要有一个自定义标题页、自己的页面和问题编号以及一个积分表。
我最终想要得到的是一个具有以下结构的单个 PDF 文件:
- A + B 的标题页(第 1 页)
- 从 A 开始编号为 1 到 n 的问题
- 来自 B 的问题编号为 n + 1 至 m
- A 的标题页(重新开始页面和问题编号,将分数总和设置回 0)
- 从 A 开始编号为 1 到 n 的问题
- B 的标题页(重新开始页面和问题编号,将分数总和设置回 0)
- B 中编号为 1 至 m 的问题
目前,我使用以下方法:一个文件包含来自 A 的问题;一个文件包含来自 B 的问题。主文件包含这些文件,并在适当的时候使用自定义计数器重新开始页面/问题编号。这种方法行得通,但如果我可以使用类中的某些功能exam
(例如,可选地显示解决方案、相对于页面高度的答案框),那就太好了。我知道这些功能可以手动实现,但这很耗时,而且结果可能不如使用维护良好、文档齐全的外部包/类那么用户友好。
这最终让我想到了我的问题:可以使用考试类(特别是在一个文件中包含多个分数总和)或不同的包来实现吗?
编辑:使用评论中链接的问题的答案,我能够非常接近我需要的内容。我现在有三个文件:
a.tex
:
\question A's first question
\begin{parts}
\part[1] part 1
\part[2] part 2
\part
\begin{subparts}
\subpart[1] 3a
\subpart[2] 3b
\end{subparts}
\end{parts}
\question[2] A's second question
b.tex
:
\question B's first question
\begin{parts}
\part[2] part b1
\part[2] part b2
\end{parts}
\question[1] B's second question
\question[2] B's third question
main.tex
:
\documentclass[a5paper, addpoints]{exam}
\pointsinrightmargin
\usepackage[T1]{fontenc}
\usepackage[utf8x]{inputenc}
\usepackage[english]{babel}
\begin{document}
\begin{questions}
\begingradingrange{AB}
\uplevel{
% Title page for A + B
\partialgradetable{AB}[h][questions]
}
\input{a.tex}
\input{b.tex}
\endgradingrange{AB}
\clearpage
\setcounter{page}{1}
\begingradingrange{onlyA}
\uplevel{
% Title page for A
\partialgradetable{onlyA}[h][questions]
}
\input{a.tex}
\endgradingrange{onlyA}
\clearpage
\setcounter{page}{1}
\begingradingrange{onlyB}
\uplevel{
% Title page for B
\partialgradetable{onlyB}[h][questions]
}
\input{b.tex}
\endgradingrange{onlyB}
\clearpage
\end{questions}
\end{document}
编译后main.tex
会创建三个页面:
第一页正是我想要的样子。但是,第二页和第三页的问题编号(尤其是成绩表中的问题编号)必须再次从问题 1 开始。
我希望这能解答我的问题。
答案1
这是一个解决方案
\documentclass[a5paper, addpoints]{exam}
\pointsinrightmargin
\usepackage[T1]{fontenc}
\usepackage[utf8x]{inputenc}
\usepackage[english]{babel}
%---------------------------------------------------
\newcounter{mtexo}
\newcommand{\setpart}{%
\setcounter{page}{1}\setcounter{mtexo}{0}%
\renewcommand{\thequestion}{\themtexo}}
%---------------------------------------------------
\begin{document}
\begin{questions}
%---------------------------------------------------
\let\mtquestion\question
\def\question{\refstepcounter{mtexo}\mtquestion}
%---------------------------------------------------
\begingradingrange{AB}
\uplevel{
% Title page for A + B
\partialgradetable{AB}[h][questions]
}
\input{a.tex}
\input{b.tex}
\endgradingrange{AB}
\clearpage
\setpart%\setcounter{page}{1}
\begingradingrange{onlyA}
\uplevel{
% Title page for A
\partialgradetable{onlyA}[h][questions]
}
\input{a.tex}
\endgradingrange{onlyA}
\clearpage
\setpart%\setcounter{page}{1}
\begingradingrange{onlyB}
\uplevel{
% Title page for B
\partialgradetable{onlyB}[h][questions]
}
\input{b.tex}
\endgradingrange{onlyB}
\clearpage
\end{questions}
\end{document}
您可以将 \clearpage 命令添加到 \setpart