我写了一个命令,用 collect 包来存储问题答案。@egreg 先生帮我扩展了辅助文件中的问题编号。现在我又遇到了答案方面的问题。当答案包含计数器时,它不会扩展。请帮我更正下面的代码。
此外,请提供一些“expandafter”和“.aux”命令的文档非常感谢!
\documentclass{article}
\usepackage{collect}
\definecollection{btcol}
\newcounter{cbt} %the number problems
\newcounter{anschoice} %the answer key
\newenvironment{bt}
{\refstepcounter{cbt}\par
\noindent{\bfseries Problem \thecbt}.}{}
\makeatletter
\newcommand{\loigiai}[1]{%
\@bsphack\expandafter\loigiai@aux\expandafter{\expanded{\thecbt}}{#1}\@esphack
}
\newcommand{\loigiai@aux}[2]{%
\begin{collect}{btcol}{\par\noindent {\bfseries AP #1}.\ignorespaces}{}{}{}
#2%
\end{collect}
}
\makeatother
\begin{document}
\setcounter{anschoice}{3}
\begin{bt}
Content 1
\loigiai{Answer for Pro.1 $ \rightarrow $ Choice: \Alph{anschoice}}
\end{bt}
\begin{bt}
Content 2
\end{bt}
\setcounter{anschoice}{2}
\begin{bt}
Content 3
\loigiai{Answer for Pro.3 $ \rightarrow $ Choice: \Alph{anschoice}}
\end{bt}
\includecollection{btcol}
\end{document}
答案1
我确信这可以更好地实现自动化,但是在这里,我在\edef
将其传递给之前,先用 , 扩展了有问题的短语\loigiai
。
已编辑以简化用户的输入。我没有强迫用户使用,而是创建了用户可以选择的\edef
宏,该宏在将参数传递给之前应用于该参数。\exloigiai
\expanded
\loigiai
\documentclass{article}
\usepackage{collect}
\definecollection{btcol}
\newcounter{cbt} %the number problems
\newcounter{anschoice} %the answer key
\newenvironment{bt}
{\refstepcounter{cbt}\par
\noindent{\bfseries Problem \thecbt}.}{}
\makeatletter
\newcommand{\loigiai}[1]{%
\@bsphack\expandafter\loigiai@aux\expandafter{\expanded{\thecbt}}{#1}\@esphack
}
\newcommand{\loigiai@aux}[2]{%
\begin{collect}{btcol}{\par\noindent {\bfseries AP #1}.\ignorespaces}{}{}{}
#2%
\end{collect}
}
\newcommand\exloigiai[1]{\expandafter\loigiai\expandafter{\expanded{#1}}}
\makeatother
\begin{document}
\setcounter{anschoice}{3}
\begin{bt}
Content 1
\exloigiai{Answer for Pro.1 $ \rightarrow $ Choice: \Alph{anschoice}}
\end{bt}
\begin{bt}
Content 2
\end{bt}
\setcounter{anschoice}{2}
\begin{bt}
Content 3
\exloigiai{Answer for Pro.3 $ \rightarrow $ Choice: \Alph{anschoice}}
\end{bt}
\includecollection{btcol}
\end{document}