10 exam-zh 师生两版问题

发布于 2024-11-19 15:27:00

折腾许久,在群里面也问询了几次后,实在是没有解决的地方,总是会报错。还是回到论坛上来请教下看有无大神来帮忙答疑下。

夏师的 exam-zh-main 原始模板中,正常编译,以及使用 -shell-escape 都是没有问题的。

exam-zh-main 里面是这样设置的:

\examsetup{
  page/size=a4paper,
  paren/show-paren=true,
  paren/show-answer=true,
  fillin/show-answer=false,
  solution/show-solution=false
}

\ExamPrintAnswerSet{
  sealline/show=true,
  page/size=a3paper,
  paren/show-answer=false,
  fillin/show-answer=false,
  solution/show-solution=false,
}

我前几天使用论坛上夏师上传的另外一个语文试卷模板,编译了一套语文试卷,里面没有这么多设置,正常编译成功。

但我把上面 exam-zh-main 里面的设置放在了 MWE 中,就出现了报错,正常编译及 -shell-escape 都会报错。

正常编译报错如下:

600fc04bd1824d1a27cd0d79b0bca80a.png

-shell-escape 编译报错如下:

546c7131a8b2d56516e73bdfe1c1cb5b.png

应该是同一个地方的问题。

其实在我最开始试用 exam-zh 时,也有遇到这样的问题,就是 show 这里不晓得什么时候就报错,也解决不了。

求救大佬们!

附件见后。

d279431d374c5d5eca65f9ce96503835.zip

  • texlive 版本 2022 -

查看更多

关注者
1
被浏览
148
Sagittarius Rover
我要成为TikZ糕手/(ㄒoㄒ)/~~

请你首先保证你.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文件如下:
image.png

请仔细理解文档中关于师生两版的内容:
image.png

一言以蔽之:\ExamPrintAnswerSet的设置会继承\examsetup的内容之后补充(append)其设置

如果使用latexmk -xelatex -shell-escape mwe编译,效果是在当前目录下出现的两个mwe.pdf以及mwe-第二版.pdf文件如下:

image.png

按照文档默认值的说明:
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

如果你弄懂了最简单的例子实现了师生两版,那么用到你庞大的工程中想必是事半功倍的。希望以上对你有所帮助。

1 个回答

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览