我正在使用该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
和命令。\AtEndEnvironment
etoolbox
答案2
如果你用 包裹checkboxes
,minipage
这将停止分页
\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