如何避免考试中的问题分散在各个页面?

如何避免考试中的问题分散在各个页面?

如何防止考试中的问题分散到各个页面?例如,在下面的 MWE 中,我想在问题 2 之后设置分页符,以便问题 3 可以从新页面开始。我并不特别关心如何做到这一点,但我认为垂直填充应该可以工作。是否有命令可以exam执行此操作?我只看到指定如果有连续性时如何处理页眉/页脚的命令,但没有看到有关禁用连续性的命令。

编辑:有没有办法可以exam自动完成这个操作,而不必让我指定分页符的位置?

\documentclass[addpoints]{exam}
\usepackage{blindtext}

\begin{document}

\begin{questions}

\question
\blindtext[3]
\begin{choices}
\choice 
\choice 
\choice 
\choice 
\choice 
\end{choices}

%

\question
\blindtext
\begin{choices}
\choice 
\choice 
\choice 
\choice 
\choice 
\end{choices}

%

\question
\blindtext
\begin{choices}
\choice 
\choice 
\choice 
\choice 
\choice 
\end{choices}

%

\end{questions}
\end{document}

答案1

答案如何防止列表中出现分页符?(“考试”课程)@Mico 仅用于保护多项选择列表中的选项,而不是整个问题。它仍然允许在问题提示和其选项列表之间进行分页。为了避免这种情况,只需定义一个新环境(此处显示多项选择):

\documentclass[%answers,
addpoints,12pt]{exam}
\boxedpoints
% \pointsinmargin % Not compatible with the minipaging of multichoice questions
\newenvironment{mcquestion}[3]{    \begin{minipage}{\linewidth}    \question[#1][#2] #3    \begin{choices}}{ \end{choices} \end{minipage}}

\begin{document}
\gradetable[h]

 \begin{questions}
\begin{mcquestion}{1}{2 min}{Foodle:}
\choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \end{mcquestion}
\begin{mcquestion}{1}{2 min}{Foodle:}
\choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \end{mcquestion}
\begin{mcquestion}{1}{2 min}{Foodle:}
\choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \choice fish A    \end{mcquestion}

\end{questions}
\end{document}

这现在可以保护整个问题不被破坏。

注意:上面的一个问题是,如果我想使用选项\pointsinmargin,他们会覆盖问题编号。但我无法multichoice像他那样将@Mico的代码应用于环境()。使用以下内容(和multichoice环境而不是mcquestion)无法编译:

\newenvironment{multichoice}[3]{
\question[#1][#2]#3
\begin{choices}}{ \end{choices} 
}
\usepackage{etoolbox}
\AtBeginEnvironment{multichoice}{%
   \par\medskip\begin{minipage}{\linewidth}}
\makeatletter
\AtEndEnvironment{multichoice}{%
   \if@correctchoice \endgroup \fi%
   \end{minipage}}
\makeatother

答案2

在我看来,如果其他方法都失败了,你可以将问题选择块包装在

\begin{minipage}{\linewidth}
\question \dots
\end{minipage}

答案3

我发现这个建议可以解决问题,而且非常紧凑/易于与现有代码集成:

如果您有一连串的小文本块需要单独保存在自己的页面上,Knuth 的另一个技巧就很有用。在每个小文本块前插入命令 \filbreak,即可实现效果。

来源:LaTeX 论坛

相关内容