我正在使用 documentclass exam
,并且无论是否使用打印解决方案,我都希望保持问题之间的间距相同\printanswers
(因此,如果解决方案“写在”原始考试上,则会产生影响)。我在这个网站上看到过这些类似的问题,但它们提供的答案要么直接相关tikz
(我没有使用),要么感觉很做作,似乎规避了环境的正确使用solution
:
考试类别:相同空间解与无解
(用户托马斯·F·斯特姆是正确的,这个问题不是重复的)
班上exam
文档(第 8.3.3 节高级自定义)似乎表明,保持间距的唯一方法是TheSolution
在exam.cls
文件(搜索\newenvironment{TheSolution}
),但这有点超出我的能力。有没有一种简单的方法来保持我缺少的间距?或者有没有一种简单的方法来编辑环境TheSolution
来实现这一点?
强制性 MWE。取消注释\stretch{1}
后,空格将被消除。\printanswers
\documentclass[12pt]{exam}
\usepackage[margin=1in]{geometry}
\unframedsolutions
\renewcommand{\solutiontitle}{}
% \printanswers
\begin{document}
\begin{questions}
\question
Ask some question here.
\begin{solution}[\stretch{1}]
The answer is 42.
\end{solution}
\question
Ask some other question
\begin{solution}[\stretch{1}]
I'm way up on the page if there are solutions.
\end{solution}
\end{questions}
\end{document}
答案1
代替其他答案,我将我的评论转换为以下答案:
您可以使用以下方法etoolbox
来自动化您的黑客攻击:
\AfterEndEnvironment{solution}{\ifprintanswers\vspace{\stretch{1}}\fi}
答案2
@SeanAllred 的回答很有用,但(我认为)限制了你的问题之间的间距。如果你想为某些问题提供更多空间,而为其他问题提供更少空间,那么该解决方案将不起作用。例如,
\begin{solution}[\stretch{2}]
The answer is 42.
\end{solution}
\question
Ask some other question
\begin{solution}[\stretch{1}]
I'm way up on the page if there are solutions.
\end{solution}
第一个问题的答案空间将是第二个问题的两倍,但如果是\ifprintanswers
真的,它们的间距将相等。试卷和答案之间的问题将不再对齐。
这是我用来避免该问题的解决方案。它\vspace*{\stretch{1}}
在每个问题的末尾添加,但允许您指定空间的设置高度。\vspace
然后将任何额外的页面空间分配给问题。
我创建了两个选项来为问题添加空间。第一个选项是一个名为的新命令\AnswerBox
。它使用\parbox
不需要段落元素的答案。将高度尺寸传递给\AnswerBox
第一组括号,然后将答案传递给第二组括号。第二个选项称为\AnswerPage
。它是一个使用的环境,minipage
因此您可以包含段落元素。如上所述,在指定后在括号中指定高度\begin{AnswerPage}
。下面的 MWE 中包含了每个示例。根据您的需要使用其中一个或两个(或都不使用!)。
您也可以选择定义长度,以建立答案的基本最小高度,此处称为\basespace
。然后,您可以定义答案的倍数的空间\basespace
,例如2\basespace
。这是 MWE。我欢迎改进代码的建议。
\documentclass[11pt]{exam}
%% Remove comment %% to print answer key.
%\printanswers
\unframedsolutions
\renewcommand{\solutiontitle}{}
\SolutionEmphasis{\bfseries}
\newcommand*\AnswerBox[2]{%
\parbox[t][#1]{0.95\textwidth}{%
\begin{solution}#2\end{solution}}
\vspace*{\stretch{1}}
}
\newenvironment{AnswerPage}[1]
{\begin{minipage}[t][#1]{\textwidth}%
\begin{solution}}
{\end{solution}\end{minipage}
\vspace*{\stretch{1}}}
\newlength{\basespace}
\setlength{\basespace}{5\baselineskip}
\begin{document}
\begin{questions}
\question[4]
Here is a question.
\AnswerBox{2\basespace}{%
Here is an answer.
}
\question[2]
Write a math formula.
\AnswerBox{1in}{%
$y = mx + b$
}
\question[4]
Write your philosophy of life.
\AnswerBox{1in}{%
Music in the soul can he heard by the universe.
}
\question[4]
Write a haiku.
\begin{AnswerPage}{2\basespace}
useful assistance
polite, effective, helpful
will always be here
\end{AnswerPage}
\end{questions}
\end{document}
这是并排输出。我修剪了最后一个问题的多余空间以减少图片的一侧。