避免枚举标签和项目第一行之间出现分页符

避免枚举标签和项目第一行之间出现分页符

我定义了一个快捷方式来创建如下框式问题:

\usepackage{enumitem}
\usepackage{mdframed}
\newcommand{\questionlabel}{Question }
\newcommand{\restorequestionlabel}{\renewcommand{\questionlabel}{Question }}
\newenvironment{questions}
    {\begin{enumerate}[align=left,label=\textbf{\questionlabel\arabic*.}, wide]}
    {\end{enumerate}}
\newcommand{\itembr}{\item\mbox{}}
\newcommand{\question}[1]{\itembr\begin{mdframed}#1\end{mdframed}}

当这样使用时通常会产生我想要的结果:

\begin{questions}

\question{Lorem ipsum dolor sit amet?}
consectetur adipiscing elit

\question{sed do eiusmod tempor}
 incididunt ut labore et dolore

\end{questions}

问题显示正确

不幸的是,有时分页符出现在标签之间问题 ?。以及框的顶部。我正在使用mdframed,我确实希望框能够跨页面拆分,但不在第一行之前。

我尝试过将其\nopagebreak放在不同的地方,但都没有用。我看过其他帖子建议使用,minipage但这并不理想,因为它不允许在任何其他行上分页。

答案1

我跟着这个答案并使用该包needspace在每个命令中要求一定量的空间而不使用分页符question

\documentclass{article}
\usepackage{lipsum}
\usepackage{needspace}
\usepackage{enumitem}
\usepackage{mdframed}
\newcommand{\questionlabel}{Question }
\newcommand{\restorequestionlabel}{\renewcommand{\questionlabel}{Question }}
\newenvironment{questions}
    {\begin{enumerate}[align=left,label=\textbf{\questionlabel\arabic*.}, wide]}
    {\end{enumerate}}
\newcommand{\itembr}{\needspace{6\baselineskip}\item\mbox{}}
\newcommand{\question}[1]{\itembr\begin{mdframed}#1\end{mdframed}}

\begin{document}
\lipsum[1-4]
\begin{questions}
\question{Lorem ipsum dolor sit amet?}
consectetur adipiscing elit
\question{sed do eiusmod tempor}
 incididunt ut labore et dolore
\end{questions}
\end{document}

使用6\baselineskip只是通过反复试验,可能有更好的方法来获取所需的尺寸。

相关内容