麥克考試mcquestions 環境中似乎不允許 \input 指令。此 MWE 使用 mcexam 套件建立包含三個 mc 問題的考試。 \input 行從檔案 q1.tex 中讀取問題的內容,但 LaTeX 顯示該檔案的頂行(即 \question ...)是未定義的控制序列。然後它會合併第一個問題和第二個問題的答案清單。
您可以註解掉 \input 行以確認 MWE 在沒有外部輸入的情況下也能正常運作。並且可以將q1.tex的內容複製到test.tex來取代輸入行並確認q1的內容是好的。
% test.tex
\documentclass{article}
\usepackage[output=exam,numberofversions=1,version=1,seed=1,randomizeanswers=false,randomizequestions=false]{mcexam}
\begin{document}
\begin{mcquestions}
\question The sky is
\begin{mcanswerslist}
\answer green.
\answer yellow.
\answer[correct] blue.
\end{mcanswerslist}
\input{q1.tex}
\question $1+1$ equals
\begin{mcanswerslist}
\answer 1.
\answer[correct] 2.
\answer 3.
\end{mcanswerslist}
\end{mcquestions}
\end{document}
這是外部文件。
% q1.tex
\question Who was in the Beatles?
\begin{mcanswerslist}
\answer[correct] John Lennon
\answer Elton John
\answer Buddy Holly
\end{mcanswerslist}
這是已編譯文檔的螢幕截圖。
為什麼我要從外部文件讀取問題,每個問題都有一個輸入行?我正在為一本教科書開發一個包含 1300 個問題的測驗庫。我希望有一個簡單的解決方案,因為當我們向教師推出這個解決方案時,複雜的解決方案將無法運作。
答案1
該套件會掃描並將\question
它們全部保存起來,可能是為了支援隨機化順序,即使隨機化已停用。
最簡單的方法就是搬到\question
外面去:
\documentclass{article}
\usepackage[output=exam,numberofversions=1,version=1,seed=1,randomizeanswers=false,randomizequestions=false]{mcexam}
\begin{document}
\begin{mcquestions}
\question The sky is
\begin{mcanswerslist}
\answer green.
\answer yellow.
\answer[correct] blue.
\end{mcanswerslist}
\question \input{q1.tex}
\question $1+1$ equals
\begin{mcanswerslist}
\answer 1.
\answer[correct] 2.
\answer 3.
\end{mcanswerslist}
\end{mcquestions}
\end{document}
和q1.tex
Who was in the Beatles?
\begin{mcanswerslist}
\answer[correct] John Lennon
\answer Elton John
\answer Buddy Holly
\end{mcanswerslist}