处理考试包中的问题名称/编号

处理考试包中的问题名称/编号

我很喜欢exam这个包,但在我的用例中,每个问题都有一个标题和一个编号。与\section具有名称和编号的文章的相同。因此,我想在标题中显示当前问题编号/或名称,就像我们使用的一样\rightmark。最后但并非最不重要的一点是,我希望成绩表显示完整的问题名称。

在我的例子中,第一个问题名为Foo,有编号1,其全名是:Problem 1: Foo

\documentclass[addpoints]{exam}

\firstpageheader{Exam}{}{}
\runningheader{Exam / Problem \thecurrentquestionnumber}{}{}

\newcounter{questioncounter}
\newcommand\thequestionnumber[1]{\thequestioncounter}

\qformat{%
  \addtocounter{questioncounter}{1}
  \large\textbf{Problem \thequestionnumber~:~\thequestiontitle}
  \quad (\thepoints)\hfill
  \vrule depth 1.5em width 0pt
}

\begin{document}

\begin{center}
    % In this table I would like the question number instead of the question name
    \gradetable[v][questions]  \vspace*{10ex}
\end{center}
  
\begin{questions}
    \newpage
    \titledquestion{Foo}[10] % Question 1
    ...\par
    \newpage
    \titledquestion{Bar}[10] % Question 2
    ...\par
    \newpage
    \titledquestion{Baz}[10] % Question 3
    ...\par

\end{questions}
\end{document}

如何使用考试包执行以下操作?我应该在哪里查看?

  1. 在标题中插入当前问题名称/编号
  2. 在成绩表中显示全名和问题编号
  3. 处理问题名称和问题编号

编辑

exam.cls一种可能性是通过添加以下内容来修补:

\newenvironment{questions}{%
  ...
  \def\@queslevel{question}%
  \def\titledquestion##1{%
    \@bonusfalse
    \def\thequestiontitle{##1}%    
    \process@question
  }%
  ...
  \def\process@question{%
    ...
    \xdef\rightmark{Problem \thenumquestions~\thequestiontitle}

但我想知道是否有更好的选择......

答案1

这回答了你的大部分问题。(对于未来的读者,你最好一次问一个问题。)

该命令\qtitle处理等级表的第一列。

我不知道如何轻松地在标题中插入“完整”问题名称。但也许它是多余的,问题编号就足够了。

C

d

% !TeX TS-program = pdflatex

\documentclass[addpoints]{exam}

\firstpageheader{\large Exam}{}{}
\runningheader{\large Exam / Problem \thequestion}{}{}% changed <<<<

\qformat{% changed <<<<
\large\textbf{\thequestiontitle}
\parbox{\textwidth}{\quad (\thepoints)\hfill}
\vrule depth 1.5em width 0pt
}

\newcommand{\qtitle}[1]{Problem \thequestion: \enspace  #1\hfill}% added <<<<<<<<<<<<<<

\begin{document}

\begin{center}
    \gradetable[v][questions]  \vspace*{10ex}
\end{center}

\newpage

\begin{questions}   

    \titledquestion{\qtitle{Everything}}[30] What is the answer to everything?
        \begin{solutionordottedlines}[1cm]
            42
        \end{solutionordottedlines} 
    
    \newpage
    
    \titledquestion{\qtitle{Foo}}[20] Do you know foo?
        \begin{solutionordottedlines}[1cm]
            yes
        \end{solutionordottedlines}
    
    \newpage
    
    \titledquestion{\qtitle{Bar}}[15]Do you know bar?
        \begin{solutionordottedlines}[1cm]
            yes
        \end{solutionordottedlines}
    
    \newpage
    
    \titledquestion{\qtitle{Baz}}[10] Do you know baz?
        \begin{solutionordottedlines}[1cm]
            no
        \end{solutionordottedlines} 
    
    \end{questions}

\end{document}

相关内容