考试文档类中的清除点列

考试文档类中的清除点列

问题:有没有办法使用考试文档类的成绩表来“清除”分数列的内容?

编辑(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}

在此处输入图片描述

相关内容