问题:有没有办法使用考试文档类的成绩表来“清除”分数列的内容?
编辑(2):我能够使用一些代码来exam.cls
打印使用给定数字(在本例中为 9)的表格,但如果问题没有给出分值而只是给出一个空格,我希望不要默认为 0。如果我尝试用这个而不是 9,那么我会得到! Missing number, treated as zero
错误。我觉得我快要找到解决问题的办法了,但我很难解决它。(请参阅本问题末尾的新代码和输出。)
使用代码
\documentclass[addpoints]{exam}
\begin{document}
\gradetable[v]
\begin{questions}
\question[10] Question 1
\question[20] Question 2
\end{questions}
\end{document}
生产
虽然听起来有点奇怪,但我希望能够清除分数列的内容(这样我就只有空框或空格)。我尝试了很多方法,包括\pointformat
查看了 TeX.SE 上的一些问题,了解如何在文档主体本身中“隐藏”分数总数(即不在页边打印分数),但我无法想出任何解决方法,将每个分数值打印在表格中或{}
类似内容中。
有没有办法使用\renewcommand
或类似的东西来做到这一点?[我不知道如何完全理解包代码本身,也不知道要“更新”什么命令最终会在表中打印点值。](我最终试图利用gradetable结构exam
,但我无法找到一种方法来改变表格。)
编辑(2):
以上内容由以下过程生成:
\documentclass[addpoints]{exam}
\makeatletter
\renewcommand*\set@hlfcntr[2]{%
\begingroup
\global\csname #1@halffalse\endcsname
% If there as a `\half' present, it will be executed
% right after the assignment of the digit part of #2
% to the counter #1.
\def\half{%
\global\csname #1@halftrue\endcsname
}%
% We insert a `0' in case there are no digits present:
% We avoid using \setcounter, because calc.sty redefines
% \setcounter in a way that conflicts with the \half trick
% we're using:
% \setcounter{#1}{0#2}\relax
%%%\global\csname c@#1\endcsname 0#2\relax%%% <== ORIGINAL CODE
\global\csname c@#1\endcsname 9\relax
\endgroup
}% set@hlfcntr
\makeatother
\begin{document}
\gradetable[v]
\begin{questions}
\question Question 1
\question Question 2
\end{questions}
\end{document}
答案1
已更新,还涵盖了部分表格。请注意,和的参数顺序\emptypartialgradetable
与\emptypartialbonusgradetable
类中相应的宏不同 - 在这里,可选参数在前面,在范围之前。那是因为我曾经\newcommandtwoopt
定义过它们。
\documentclass[addpoints]{exam}
\usepackage{twoopt}
\makeatletter
\newcommandtwoopt{\emptygradetable}[2][v][questions]{{%
\renewcommand{\pointsofquestion}[1]{}
\renewcommand{\prt@tablepoints}{}
\@scorestrue
\@bonusfalse
\@partialfalse
\@combinedfalse
\ii@gtable{#1}[#2]%
}}
\newcommandtwoopt{\emptybonusgradetable}[2][v][questions]{{%
\renewcommand{\bonuspointsofquestion}[1]{}
\renewcommand{\prt@tablebonuspoints}{}
\@scorestrue
\@bonustrue
\@partialfalse
\@combinedfalse
\ii@gtable{#1}[#2]%
}}
\newcommandtwoopt{\emptypartialgradetable}[3][v][questions]{{%
\renewcommand{\pointsofquestion}[1]{}
\renewcommand{\prt@tablepoints}{}
\@scorestrue
\@bonusfalse
\@partialtrue
\@combinedfalse
\def\tbl@range{#3}%
\ii@gtable{#1}[#2]%
}}%
\newcommandtwoopt{\emptypartialbonusgradetable}[3][v][questions]{{%
\renewcommand{\bonuspointsofquestion}[1]{}
\renewcommand{\prt@tablebonuspoints}{}
\@scorestrue
\@bonustrue
\@partialtrue
\@combinedfalse
\def\tbl@range{#3}%
\ii@gtable{#1}[#2]%
}}%
\makeatother
\begin{document}
\emptygradetable[h]
\bigskip
\emptybonusgradetable[v]
\bigskip
\emptypartialgradetable[h][questions]{myrange}
\bigskip
\emptypartialbonusgradetable[v][questions]{myrange}
\bigskip
\begin{questions}
\question[10] Question 1
\question[20] Question 2
\begingradingrange{myrange}
\bonusquestion[15] Question 3
\question[10] Question 4
\question[15] Question 5
\endgradingrange{myrange}
\end{questions}
\end{document}