我一直在尝试使用自定义“CorrectChoice”命令来添加对答案的引用。具体来说,通过此设置,我可以轻松地在文本中的其他地方引用正确选项及其对应的答案:
\documentclass[addpoints,12pt]{exam}
\usepackage{amsmath}
\makeatletter
\newcommand\CC[1]{%
\def\@currentlabel{#1}\label{anst:\thequestion}%
\CorrectChoice\label{ans:\thequestion} #1
}
\makeatother
\begin{document}
\begin{questions}
\question This is a question
\begin{choices}
\choice 8
\CC 1
\choice 3
\choice 4
\end{choices}
\end{questions}
The correct answer for question 1 is choice \ref{ans:1}, \ref{anst:1}
\end{document}
上面的代码运行得很好。问题是当给 CC 的参数是内联数学时,即在以下形式中$...$
例如
...
CC $\frac{3}{2}$
...
我收到一个编译错误:!缺少 $ 插入。因此我认为我没有正确处理传递给 newcommand 的参数。我在进行一些研究时遇到了 \tags,但无法理解它。
答案1
\choice
只是发布\item
并进行一些检查。
您的调用应该是\CC{$\frac{3}{2}$}
因为您想要将文本作为参数抓取\CC
。
在 的情况下\CC 1
,TeX 的规则使其抓取1
作为参数;但\CC 12
不起作用。
\documentclass[addpoints,12pt]{exam}
\usepackage{amsmath}
\makeatletter
\newcommand\CC[1]{%
\def\@currentlabel{#1}\label{anst:\thequestion}%
\CorrectChoice\label{ans:\thequestion} #1
}
\makeatother
\begin{document}
\begin{questions}
\question This is a question
\begin{choices}
\choice 8
\CC{$\frac{3}{2}$}
\choice 3
\choice 4
\end{choices}
\end{questions}
The correct answer for question 1 is choice \ref{ans:1}, \ref{anst:1}
\end{document}