我定义了一个快捷方式来创建如下框式问题:
\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
只是通过反复试验,可能有更好的方法来获取所需的尺寸。