如何防止列表中出现分页符?(“考试”课程)

如何防止列表中出现分页符?(“考试”课程)

我正在使用该exam课程来准备测试。

不幸的是,该软件包允许在问题的解决方案列表内进行分页。考虑这个小例子:

\question Example of question. Choose a solution:
\begin{checkboxes}
\choice A
\choice B
\choice C
\CorrectChoice D
\end{checkboxes}

可能pagebreak\choice B和之间发生\choice C。我该如何防止这种情况发生?

更新

Mico 提出的解决方案是有效的,除非我们想打印测试的解决方案并且问题的最后一个答案是\CorrectChoice

以下是重现该问题的 MWE:

\documentclass[answers]{exam}
\usepackage[utf8]{inputenc}
\usepackage[a4paper]{geometry}
\usepackage{etoolbox}
\AtBeginEnvironment{checkboxes}{\par\medskip%
     \begin{minipage}{\textwidth}}
\AtEndEnvironment{checkboxes}{%
     \end{minipage}}


\CorrectChoiceEmphasis{}

\begin{document}

\begin{questions}

\question Random text for question 1
\begin{checkboxes}
\choice answer 1
\choice answer 2
\choice answer 3
\choice answer 4
\choice answer 5
\CorrectChoice answer 6
\end{checkboxes}

\question Random text for question 2
\choice answer 1
\choice answer 2
\choice answer 3
\choice answer 4
\choice answer 5
\CorrectChoice answer 6
\end{checkboxes}
  
\question Random text for question 3
\choice answer 1
\choice answer 2
\choice answer 3
\choice answer 4
\choice answer 5
\CorrectChoice answer 6
\end{checkboxes}

\question Random text for question 4
\choice answer 1
\choice answer 2
\choice answer 3
\choice answer 4
\choice answer 5
\CorrectChoice answer 6
\end{checkboxes}
    
\question Random text for question 5
\choice answer 1
\choice answer 2
\choice answer 3
\choice answer 4
\choice answer 5
\CorrectChoice answer 6
\end{checkboxes}
    
\end{questions}

\end{document}

我按照给出的第二个建议解决了这个问题这里,即用 包围你不想被破坏的东西\parbox。(根据记录,使用\samepage不起作用。)

答案1

我建议您修改checkboxes环境以自动将它们放置在 LaTeX 中minipage,如以下 MWE 中所做的那样。请注意,命令引入的垂直间距量\medskip可以更改为,例如,更改为\smallskip\bigskip,或您喜欢的任何量。

附录,发布于 2011 年 10 月 25 日:OP 指出,我最初提供的答案会导致问题,如果选择列表结束使用 \CorrectChoice 选项。下面的答案已更新以纳入这种可能性;解决方案包括添加以下行

\if@correctchoice \endgroup \fi

到 中的代码\AtEndEnvironment{...}

完整的 MWE 为:

\documentclass[answers]{exam}
\usepackage{etoolbox}
\AtBeginEnvironment{checkboxes}{%
   \par\medskip\begin{minipage}{\linewidth}}
\makeatletter
\AtEndEnvironment{checkboxes}{%
   \if@correctchoice \endgroup \fi%
   \end{minipage}}
\makeatother

\begin{document}
\begin{questions}

\question Random text for question 1.

Choose a solution: 
\begin{checkboxes}
\choice A
\choice B
\choice C
\CorrectChoice D
\end{checkboxes}
\end{questions}
\end{document}

请注意,该解决方案实现了 Werner 的建议,即使用包提供的命令\AtBeginEnvironment和命令。\AtEndEnvironmentetoolbox

答案2

如果你用 包裹checkboxesminipage这将停止分页

\begin{minipage}{\linewidth}
\begin{checkboxes}
 \choice A
 \choice B
 \choice C
 \CorrectChoice D
 \end{checkboxes}
 \end{minipage}

如果你想允许某些选项之间有分页符,但不允许其他选项之间有分页符,你可以使用needspace包,它允许如下代码

\begin{checkboxes}
  \choice A
  \needspace{2\baselineskip}
  \choice B
  \choice C
  \CorrectChoice D
 \end{checkboxes}

此特定示例允许在之后休息choice A,但不允许在之间choice B休息choice C

相关内容