我刚刚开始使用该类exam
来排版考试,当使用该\gradetable
命令创建最终成绩表时,它仅向我显示问题粒度的要点,但不显示该问题的部分(或子部分等),如下例所示:
\documentclass[addpoints]{exam}
\begin{document}
\begin{questions}
\question
What if there were no air?
\begin{parts}
\part[4]
Describe the effect on the balloon industry.
\part[6]
Describe the effect on the aircraft industry.
\end{parts}
\question
\begin{parts}
\part[12]
Define the universe.
Give three examples.
\part[8]
If the universe were to end, how would you know?
\end{parts}
\end{questions}
\gradetable
\end{document}
有没有办法让成绩表将分数分成几部分,还是我应该自己做?
答案1
抱歉,无法让成绩表列出各个部分。您可以按问题编号或页码列出分数,但这些是唯一的选择。
答案2
虽然考试类不提供此功能,因此很少无法在 LaTeX 中执行某些操作。问题更多的是做你想做的事情有多难,而在这个例子中,这并不难。
将\part
's 的标记添加到等级表的一种方法是重新定义\part
命令,以便它提取每个部分的点数。这有点棘手,因为命令\part
实际上是由环境(重新)定义的parts
。但是,一旦您弄清楚该怎么做,您就可以使用每个部分的标记动态构建等级表,以便上面的 MWE 产生:
请注意,我已经沦为我自己偏好的牺牲品,并使用了书签创建由该\GradeTable
命令生成的新成绩表。下面的代码可能会破坏考试包。例如,我注意到exam.cls
“奖励标记”以某种方式得到支持,但我不知道它们是什么、它们如何工作,或者我的代码是否与它们兼容。但据我所知,我的代码不应该破坏任何东西。另一方面,该\GradeTable
命令不支持命令的全部功能\gradetable
。例如,无法按页码列出标记等。
\documentclass[addpoints]{exam}
\usepackage{xparse,booktabs,xpatch}
% redefine \part command to be \mypart
\appto\parts{\let\exampart\part\let\part\mypart}
\makeatletter
\ExplSyntaxOn
\tl_new:N \g_grade_table_tl% this will; become the new grade table
\int_new:N \g_score_int% this will be the exam score
\NewDocumentCommand\mypart{o}{
\IfNoValueTF{#1}{\exampart}{
% don't do anything special inside solutions
\if@insolution\exampart[#1]
\else\exampart[#1]
\int_compare:nNnT {\arabic{partno}} = {1} {
\tl_gput_right:Nn \g_grade_table_tl { \midrule }
}
\tl_gput_right:Nx \g_grade_table_tl {
\arabic{question}\alph{partno}
}
\tl_gput_right:No \g_grade_table_tl {& #1 & \\}
\int_gadd:Nn \g_score_int {#1}
\fi
}
}
\NewDocumentCommand\GradeTable{}{% the new grade table
\begin{tabular}{ccc}\toprule Question & Points & Score \\
\tl_use:N \g_grade_table_tl \midrule
Total & \int_use:N \g_score_int & \\\bottomrule
\end{tabular}
}
\ExplSyntaxOff
\makeatother
\begin{document}
\begin{questions}
\question
What if there were no air?
\begin{parts}
\part[4]
Describe the effect on the balloon industry.
\part[6]
Describe the effect on the aircraft industry.
\end{parts}
\question
\begin{parts}
\part[12]
Define the universe.
Give three examples.
\part[8]
If the universe were to end, how would you know?
\end{parts}
\end{questions}
\GradeTable
\end{document}