如何防止考试中的问题分散到各个页面?例如,在下面的 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 论坛