我正在使用 Moodle 套件。我想打印一份没有正确答案的 PDF。我该怎么做?
通过以下代码,pdf 包含答案和问题。
\documentclass[12pt]{article}
\usepackage{moodle}
\usepackage{amsmath}
\begin{document}
\begin{quiz}{Quizz 2}
\begin{numerical}[points=2]{Addition}
2+2=
\item 4
\end{numerical}
\begin{shortanswer}[case sensitive=false]{Hugo}
Firstname of Hugo
\item Victor
\end{shortanswer}
\end{quiz}
\end{document}
我怎样才能在生成的 pdf 文件中只包含问题?
谢谢你的帮助。
答案1
据我所知,没有针对此问题的包选项。但是,您可以通过将相关命令重新定义为\relax
(即不执行任何操作)来阻止执行内部答案处理例程的 Latex 输出部分。有五个这样的命令,分别用于简答题、数字题、多项选择题、匹配题和论述题。
对于多项选择题,仍然显示答案但不显示正确答案的勾号会很有用。因此,对于这种问题类型,不应通过将命令替换为 来完全关闭答案处理\relax
。相反,您可以重新定义命令,首先在本地重新定义命令\checkmark
以不打印任何内容,(\checkmark
来自amssymb
包,此命令用于在 Moodle 中打印正确答案后的勾号),然后继续执行其余代码。在下面的代码中,这是通过使用 将处理代码复制到第二个命令来完成的\let
,然后重新定义原始命令以首先更改 的定义\checkmark
,然后调用原始命令的副本。
\checkmark
内部的定义multi@latexprocessing
允许您在问题本身或文档的其他位置使用复选标记符号(如果需要),但是不再可能在任何多项选择题的答案之一中使用该符号。
对于匹配问题,情况会稍微复杂一些,因为理想情况下,您希望同时显示问题和答案,但要进行打乱。但在处理问答对时,其他问题和答案并不容易获得,因此需要对代码进行更大规模的重写,因此以下代码中未实现此功能。
梅威瑟:
\documentclass[12pt]{article}
\usepackage{moodle}
\usepackage{amsmath}
\makeatletter
\def\moodle@shortanswer@latexprocessing{\relax}
\def\moodle@numerical@latexprocessing{\relax}
\let\origmultiprocessing\moodle@multi@latexprocessing
\def\moodle@multi@latexprocessing{\let\checkmark\relax\origmultiprocessing}
%\def\moodle@matching@latexprocessing{\relax} % it's complicated
\def\moodle@essay@latexprocessing{\relax}
\makeatother
\begin{document}
\begin{quiz}{Quizz 2}
\begin{numerical}[points=2]{Addition}
2+2=
\item 4
\end{numerical}
\begin{shortanswer}[case sensitive=false]{Hugo}
Firstname of Hugo
\item Victor
\end{shortanswer}
\begin{multi}[points=3]{A first derivative}
What is the first derivative of $x^3$?
\item $\frac{1}{4} x^4+C$
\item* $3x^2$
\item $51$
\end{multi}
\end{quiz}
\end{document}
结果:
这不会影响 XML 输出,答案仍然存在。
<?xml version="1.0" encoding="UTF-8"?>
<quiz>
<question type="category">
<category>
<text>$module$/Quizz 2</text>
</category>
</question>
<question type="numerical">
<name>
<text>Addition</text>
</name>
<questiontext format="html">
<text><![CDATA[<p>2+2= </p>]]></text>
</questiontext>
<defaultgrade>2</defaultgrade>
<generalfeedback format="html"><text/></generalfeedback>
<penalty>0.1000000</penalty>
<hidden>0</hidden>
<answer fraction="100" format="plain_text">
<text>4</text>
<tolerance>0</tolerance>
</answer>
</question>
<question type="shortanswer">
<name>
<text>Hugo</text>
</name>
<questiontext format="html">
<text><![CDATA[<p>Firstname of Hugo </p>]]></text>
</questiontext>
<defaultgrade>1.0</defaultgrade>
<generalfeedback format="html"><text/></generalfeedback>
<penalty>0.1000000</penalty>
<hidden>0</hidden>
<usecase>0</usecase>
<answer fraction="100" format="plain_text">
<text>Victor</text>
</answer>
</question>
<question type="multichoice">
<name>
<text>A first derivative</text>
</name>
<questiontext format="html">
<text><![CDATA[<p>What is the first derivative of \(x^3\)? </p>]]></text>
</questiontext>
<defaultgrade>3</defaultgrade>
<generalfeedback format="html"><text/></generalfeedback>
<penalty>0.1000000</penalty>
<hidden>0</hidden>
<single>true</single>
<shuffleanswers>1</shuffleanswers>
<answernumbering>abc</answernumbering>
<answer fraction="0" format="html">
<text><![CDATA[<p>\(\frac {1}{4} x^4+C\)</p>]]></text>
</answer>
<answer fraction="100" format="html">
<text><![CDATA[<p>\(3x^2\)</p>]]></text>
</answer>
<answer fraction="0" format="html">
<text><![CDATA[<p>\(51\)</p>]]></text>
</answer>
</question>
</quiz>
答案2
@Marijn 的回答moodle
如果您使用版本0.5
并且既不关心类型问题cloze
,也不关心类型问题matching
的改组选项,那么这是一个非常好的选择。multichoice
否则,所需功能已添加到0.8
版本moodle
包裹,作为封装选项:handout
。
来自文档:
handout
[...] 如果调用包选项(\usepackage[handout]{moodle}
),则 PDF 文件将完全去除教师独有的信息(答案、分数、惩罚、反馈、标签),因此可以提供给学生用于课堂作业。具体来说,就像 Moodle 所做的那样,匹配问题的答案会被打乱,而选项打乱会触发提供的选项(多项和匹配)的打乱。这要归功于包randomlist
,如果调用该选项,则会加载。 XML 文件照常生成。