如何修改考试类中的 \question 命令

如何修改考试类中的 \question 命令

\documentclass[legalpaper, 12pt]{exam}我使用和创建数学考试\usepackage[bookmarks]{hyperref}

每个问题都是通过插入\question[points]文档来创建的,并且问题的枚举是自动创建的。

为了在 Texmaker 中看到每个问题的标记,我使用\label{Q-number}和 为了在 pdf 中为每个问题创建书签,我使用\pdfbookmark[1]{Q-number}{Q-number}

例如,对于有 9 分的第 4 题,我会写:

\label{Q4}
\pdfbookmark[1]{Q4}{Q4}
\question[9] Solve the equation $x+1=3$.

问题 1:您知道如何创建如下所示的宏吗?

\def\macroquestion #1{\label{Q-number}
    \pdfbookmark[1]{Q-number}{Q-number}
    \question[#1] }

那么我只需要写

\macroquestion{9} Solve the equation $x+1=3$.

计数器 Q 号自动生成(仅取决于命令在文档中出现的位置)。

此外,当问题分为几个部分(分别为 3 和 4 分)时,我通常会输入如下内容:

\question Solve the following equations:
\begin{parts}
\part[3] \label{Q4(a)}
\pdfbookmark[2]{Q4(a)}{Q4(a)} Solve the equation $x+1=3$.
\part[4] \label{Q4(b)}
\pdfbookmark[2]{Q4(b)}{Q4(b)} Solve the equation $x+9=8$.
\end{parts}

问题2:您知道如何创建一个\macropart可以自动处理计数器 Q4(a) 和 Q4(b)、标签和书签的 吗\macroquestion

答案1

以下\newquestion和的定义\newpart似乎实现了您想要的效果。您所建议的(作为\macroquestion)的区别在于它仍然需要一个选修的参数并重新排列的设置\question,后跟和\label\pdfbookmark在您的原始设置中,标签或书签的超目标设置可能不正确。

在此处输入图片描述

\documentclass{exam}

\usepackage[bookmarks]{hyperref}

\NewDocumentCommand{\newquestion}{ o }{%
  \IfValueTF{#1}
    {\question[#1]}
    {\question}%
  \label{Q\thequestion}%
  \pdfbookmark[1]{Q\thequestion}{Q\thequestion}%
}
\NewDocumentCommand{\newpart}{ o }{%
  \IfValueTF{#1}
    {\part[#1]}
    {\part}%
  \label{Q\thequestion(\thepartno)}%
  \pdfbookmark[2]{Q\thequestion(\thepartno)}{Q\thequestion(\thepartno)}%
}

\begin{document}

\begin{questions}
  \newquestion[9] Solve the equation $x+1=3$.

  \newquestion Solve the following equations:
  \begin{parts}
    \newpart[3] Solve the equation $x+1=3$.
    \newpart[4] Solve the equation $x+9=8$.
  \end{parts}
\end{questions}

\end{document}

相关内容