请你首先保证你.tex文件调用的exam-zh.cls的版本是v0.2.1及以上....
因为你的代码有点乱,版本也有点乱,MWE也太长,下面的介绍将告诉你如何在TeXLive2024下编译exam-zh v0.2.1实现所谓的师生两版.
下面是我构造的一个最简单的MWE:
% TeXLive2024 其下的 texmf 树的 exam-zh版本是v0.2.1
\documentclass{exam-zh}
\examsetup{
style/student-version-suffix=第二版, % default value = "_student_version"
page/size=a4paper,
paren/show-paren=true,
paren/show-answer=false,
fillin/show-answer=false,
solution/show-solution=hide,
}
% 下面\ExamPrintAnswerSet的设置会继承\examsetup之后补充上面的设置
\ExamPrintAnswerSet[
\geometry{showframe}
]{
page/size=a4paper,
paren/show-answer=true,
fillin/show-answer=true,
solution/show-solution=show-stay,
}
% \ExamPrintAnswer % 可以省略 -shell-escape选项命令已经实现了这一行
\title{Exam-zh使用考试招生全国统一考试}
\subject{\LaTeX{}}
\begin{document}
% 1.
\begin{question}[points = 2]
设集合 $A = \{x \mid -2 < x < 4\}$,$B = \{2, 3, 4, 5\}$,则 $A \cap B = $ \paren[A]
\begin{choices}
\item $\{2\}$
\item $\{2, 3\}$
\item $\{3, 4\}$
\item $\{2, 3, 4\}$
\end{choices}
\end{question}
% 14.
\begin{question}
已知 $O$ 为坐标原点,抛物线 $C \colon y^2 = 2px$($p > 0$)的焦点为 $F$,
$P$ 为 $C$ 上一点,$PF$ 与 $x$ 轴垂直,$Q$ 为 $x$ 轴上一点,且 $PQ \perp OP$,
若 $|FQ| = 6$,则 $C$ 的准线方程为 \fillin[$\dfrac{1}{3}$] 。
\end{question}
% 22.
\begin{problem}[points = 12]
已知函数 $f(x) = x (1 - \ln x)$。
\begin{enumerate}
\item 讨论 $f(x)$ 的单调性;
\item 设 $a$,$b$ 为两个不相等的正数,且 $b \ln a - a \ln b = a - b$,
证明:$2 < \frac{1}{a} + \frac{1}{b} < \eu$。
\end{enumerate}
\end{problem}
\begin{solution}
函数的定义域为 $(0, +\infty)$,
又 \[f^{\prime}(x) = 1 - \ln x-1 = -\ln x, \score{2}\]
当 $x \in(0, 1)$ 时, $f^{\prime}(x) > 0$, 当 $x \in(1, +\infty)$ 时, $f^{\prime}(x) < 0$,
故 $f(x)$ 的递增区间为 $(0,1)$, 递减区间为 $(1, +\infty)$.
\end{solution}
\end{document}如果使用latexmk -xelatex mwe编译,效果是出现一个仅有三道题的mwe.pdf文件如下:
请仔细理解文档中关于师生两版的内容:
一言以蔽之:\ExamPrintAnswerSet的设置会继承\examsetup的内容之后补充(append)其设置
如果使用latexmk -xelatex -shell-escape mwe编译,效果是在当前目录下出现的两个mwe.pdf以及mwe-第二版.pdf文件如下:

按照文档默认值的说明:
student-version-suffix = 〈suffix〉
师生两版的第二个版本的 PDF 名称的后缀。即第二个 PDF 的名称为 <jobname><suffix>.pdf。
默认值为 _student_version。
这意味着夏老师设计的时候本身是希望\examsetup生成的第一版是带答案的"老师版",附加上\ExamPrintAnswerSet之后的第二版是不带答案的"学生版"
上面的情况,需要在\examsetup中设置show-answer,之后在\ExamPrintAnswerSet中设置hide-answer,这样后面hide-answer的命令会覆盖前面的配置,实现原版是教师版,新版是学生版的效果。
以上面MWE代码设置为例:
\examsetup{
style/student-version-suffix=第二版, % default value = "_student_version"
page/size=a4paper,
paren/show-paren=true,
paren/show-answer=false,
fillin/show-answer=false,
solution/show-solution=hide,
}
% 下面\ExamPrintAnswerSet的设置会继承\examsetup之后补充上面的设置
\ExamPrintAnswerSet[
\geometry{showframe}
]{
page/size=a4paper,
paren/show-answer=true,
fillin/show-answer=true,
solution/show-solution=show-stay,
}这意味着对于第一份文件mwe.pdf,他的设置为:
page/size=a4paper,
paren/show-paren=true,
paren/show-answer=false,
fillin/show-answer=false,
solution/show-solution=hide,对于第二份,注意\ExamPrintAnswerSet会覆盖前面的信息,其配置等价于
\geometry{showframe}
------继承第一份pdf的配置--------
page/size=a4paper,
paren/show-paren=true,
paren/show-answer=false,
fillin/show-answer=false,
solution/show-solution=hide,
-------在其后追加第二份pdf的补充配置----------
page/size=a4paper, % 其实这行可以省略,因为已经继承了page/size=a4paper
paren/show-answer=true, % 覆盖上面的 false
fillin/show-answer=true, % 覆盖上面的 false
solution/show-solution=show-stay, % 覆盖上面的 hide只要你弄懂上面不同设置的区别和逻辑,就可以自行灵活调整和设置,想怎么出题怎么出题,想让什么文档呈现什么效果都行(【第一份老师-第二份学生】或者【第一份学生-第二份老师】),当然,不要忘记使用-shell-escape选项编译。
明确使用的版本,仔细研究所使用版本的文档,用正确版本的正确选项,多用最小的例子去尝试,提问给严格规范的MWE。
如果你弄懂了最简单的例子实现了师生两版,那么用到你庞大的工程中想必是事半功倍的。希望以上对你有所帮助。























问 exam-zh 师生两版问题