将内联数学传递给自定义选择命令

将内联数学传递给自定义选择命令

我一直在尝试使用自定义“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}

在此处输入图片描述

相关内容