考试文档类中的恒定解决方案间距

考试文档类中的恒定解决方案间距

我正在使用 documentclass exam,并且无论是否使用打印解决方案,我都希望保持问题之间的间距相同\printanswers(因此,如果解决方案“写在”原始考试上,则会产生影响)。我在这个网站上看到过这些类似的问题,但它们提供的答案要么直接相关tikz(我没有使用),要么感觉很做作,似乎规避了环境的正确使用solution

班上exam文档(第 8.3.3 节高级自定义)似乎表明,保持间距的唯一方法是TheSolutionexam.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}

这是并排输出。我修剪了最后一个问题的多余空间以减少图片的一侧。

在此处输入图片描述

相关内容