\input 给出错误,但复制粘贴代码不会

\input 给出错误,但复制粘贴代码不会

我有以下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}

在此处输入图片描述

相关内容