我想学习如何创建一个命令,以便我可以轻松地在问题下的虚线或解决方案或甚至空白(无空格)之间切换。
我知道考试类有一个answer
参数允许你在问题下显示你的解决方案但这只完成了一半的工作因为它还显示上面的虚线。
我的 MWE:
\documentclass[a4paper,answers,12pt]{exam}
\begin{document}
\begin{questions}
\question[1] $1+1$?
\begin{choices} \choice 1\correctchoice 2\choice 3\choice 4\end{choices}
\question[1]
What is $1+1$?
\fillwithdottedlines{2cm}
\begin{solution}
$2$
\end{solution}
\question Answer the following questions.
\begin{parts}
\part[1] What is $1-1$?
\fillwithdottedlines{2cm}
\begin{solution}
$2$
\end{solution}
\end{parts}
\end{questions}
\end{document}
答案1
以下是一种方法。
我们定义一个新的“if” dotsolution
,使用如果那么已经加载的包exam
。然后,我们存储旧的定义\solution
(在 时发生的事情\begin{solution
),并向其中添加内容。我们添加的内容检查\ifdotsolution
和\ifprintanswers
。如果\ifprintanswers
为真,我们直接跳到解决方案。如果不是,我们检查\dotsolution
;如果为真,我们打印点,否则我们什么也不做。
因此,要切换这 3 种情况,您可以:a) 使用选项answers
,b) 不使用answers
并设置\dotsolutionfalse
,或 c) 不使用answers
并设置\dotsolutiontrue
。
\begin{solution}
奖励:我们为 的高度添加了一个参数\fillwithdottedlines
。但是,当然,如果您愿意,您可以将其删除并硬编码一个值。
\documentclass[a4paper,12pt]{exam}
\newif\ifdotsolution
\dotsolutiontrue
\let\osolution\solution
\def\solution#1{%
\ifprintanswers\else%
\ifdotsolution%
\fillwithdottedlines{#1}%
\fi%
\fi%
\osolution%
}
\begin{document}
\begin{questions}
\question[1] $1+1$?
\begin{choices}
\choice 1
\correctchoice 2
\choice 3
\choice 4
\end{choices}
\question[1] What is $1+1$?
\begin{solution}{2cm}
$2$
\end{solution}
\question Answer the following questions.
\begin{parts}
\part[1] What is $1-1$?
\begin{solution}{2cm}
$2$
\end{solution}
\end{parts}
\end{questions}
\end{document}