我有以下main.tex
文件:
\documentclass{examdesign}
\begin{document}
\begin{examtop}
{\LARGE Math Test}
\end{examtop}
\begin{multiplechoice}[rearrange=no]
\input{myquestion.tex}
\end{multiplechoice}
\end{document}
myquestion.tex 文件如下:
\begin{question}
What is 2+2?
\choice{1}
\choice{2}
\choice[!]{4}
\choice{-3}
\choice{7}
\end{question}
这导致 main.tex 中的输入语句出现错误。错误信息如下:
扫描使用 \get@instructions 时文件结束
但我不知道这是什么意思。但是,当我将输入行替换为问题时,错误消失了。我怎样才能输入代码而不复制粘贴?
答案1
您可以在序言中写入以下宏:
\newread\questionfile
\long\def\addto#1#2{\expandafter\def\expandafter#1\expandafter{#1#2}}
\def\inputquestion #1{\par
\def\tmpa{\begin{multiplechoice}[rearrange=no]}
\openin\questionfile=#1
\loop
\unless\ifeof\questionfile
\read\questionfile to\tmpb
\expandafter\addto\expandafter\tmpa\expandafter{\tmpb}
\repeat
\closein\questionfile
\tmpa \end{multiplechoice}
}
然后你可以使用这个宏:
\begin{document}
\begin{examtop}
{\LARGE Math Test}
\end{examtop}
\inputquestion{myquestion.tex}
\end{document}
您的问题是,LaTeX 宏的内部\begin{multiplechoice}
运行以扫描以下文本作为宏定义,直到\end{multiplechoice}
发生。但这\end{multiplechoice}
与扫描的文本不在同一文件级别。扫描以 TeX 错误结束,因为传统 TeX 不允许继续扫描除开始文件之外的其他文件。
答案2
这应该可以解决问题。-> 将 begin{multiplechoice} 环境添加到 myquestion.tex。
这是 myquestion.tex 文件
\begin{multiplechoice}[rearrange=no]
\begin{question}
What is 2+2?
\choice{1}
\choice{2}
\choice[!]{4}
\choice{-3}
\choice{7}
\end{question}
\end{multiplechoice}
主文件:
\documentclass{examdesign}
\begin{document}
\begin{examtop}
{\LARGE Math Test}
\end{examtop}
\input{myquestion.tex}
\end{document}