\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}