我试图弄清楚如何使用 tikz 包动态打印我的试卷的多项选择题答案。
这是我目前所拥有的:
\documentclass{exam}
\usepackage{tikz}
\newcounter{solcount}
\setcounter{solcount}{1}
\newcommand{\CC}{\CorrectChoice\label{sol:\arabic{solcount}}\stepcounter{solcount}}
\newcommand\MCanswers{\section*{\centering {\textbf{{\LARGE Multiple Choice Solutions}}}}
\foreach \x in {1,...,10}{\centering\noindent \x.~\ref{sol:\x}\par }}
\newcommand{\emptybox}[2][\textwidth]{% Empty Box
\begingroup
\setlength{\fboxsep}{-\fboxrule}%
\noindent\hspace*{-5mm}\framebox[#1]{\rule{0pt}{#2}}%
\endgroup
}
\begin{document}
\begin{questions}
\question[1] What is $1+1$?
\begin{choices} \choice 1 \CC 2 \choice 3 \choice 4 \end{choices}
\question[1] What is $2+1$?
\begin{choices} \choice 1 \choice 2 \CC 3 \choice 4 \end{choices}
\question[1] What is $2+2$?
\begin{choices} \choice 1 \choice 2 \choice 3 \CC 4 \end{choices}
\end{questions}
\MCanswers
\end{document}
问题是,我不想将问题 4-10 视为 ??。我需要更加动态,这样如果我有 3 个问题,它就会打印这 3 个问题的答案,依此类推。
我知道问题出在这里:
\foreach \x in {1,...,10}{\centering\noindent \x.~\ref{sol:\x}\par }}
但我不确定如何让 {1,... \numquestions} 发挥作用?
答案1
solcount
您可以通过在使用前(而不是使用后)增加代码来简化代码。
如果您感兴趣的话,可以使用\label
和 的替代方法\ref
是\csname ...\endscnane
和\xdef
。\expandafter
允许\csname
在运行 之前扩展宏名称\xdef
。虽然通常不能在宏名称中添加数字,但\csname
几乎可以使用任何数字。
优点是第一次运行就成功了。缺点是不能\MCanswers
在问题之前添加。
\documentclass{exam}
\usepackage{tikz}
\newcounter{solcount}% set to 0
\newcommand{\CC}{\CorrectChoice\stepcounter{solcount}%
\expandafter\xdef\csname sol.\thesolcount\endcsname{\thechoice}}
\newcommand\MCanswers{\section*{\centering{\textbf{{\LARGE Multiple Choice Solutions}}}}
\foreach \x in {1,...,\thesolcount}{\centering \x.~\csname sol.\x\endcsname\par }}
\newcommand{\emptybox}[2][\textwidth]{% Empty Box
\begingroup
\setlength{\fboxsep}{-\fboxrule}%
\noindent\hspace*{-5mm}\framebox[#1]{\rule{0pt}{#2}}%
\endgroup
}
\begin{document}
\begin{questions}
\question[1] What is $1+1$?
\begin{choices} \choice 1 \CC 2 \choice 3 \choice 4 \end{choices}
\question[1] What is $2+1$?
\begin{choices} \choice 1 \choice 2 \CC 3 \choice 4 \end{choices}
\question[1] What is $2+2$?
\begin{choices} \choice 1 \choice 2 \choice 3 \CC 4 \end{choices}
\end{questions}
\MCanswers
\end{document}