如何防止该彩色框与其后续文本之间出现分页符?

如何防止该彩色框与其后续文本之间出现分页符?

在下面的代码中,如何防止彩色框与其后续文本之间出现分页符?

\documentclass[a4paper]{book}
\usepackage{lipsum}
\usepackage[showframe]{geometry}
\usepackage[framemethod=TikZ]{mdframed}
\mdfsetup{skipbelow=2em,skipabove=2em}
\setlength{\parskip}{0pt}
\begin{document}
\lipsum[1-6]
\begin{mdframed}[innertopmargin=9pt,innerbottommargin=9pt,usetwoside=false,backgroundcolor=yellow]
\normalfont\Large\bfseries Notes
\end{mdframed}
\noindent Note 1: Bla bla\\
Note 2: Foo Bar\\
And other notes which can span several pages...
\end{document}

请注意,我希望至少三行注释始终位于同一页的框下,否则框及其注释都应该转到下一页。

答案1

虽然我最初needspace通过评论向 OP 提出了一种方法(并且仍然认为这是最好的方法),但 OP 更喜欢不加载其他包。所以这里有一个替代方案。

经过评论中的一些讨论,我认为这种方法解决了 OP 指出的两个问题。通过在\vspace{}之前发出\box并将其负数对应项作为框内的第一个项目发出,可以解决页面开头的垂直空间问题。这不会影响页面中间的结果,但只有当它出现在页面开头时才会应用负数\vspace(以抵消 的顶部跳过mdframe)。

至于第二个问题。人们不需要在方框内包含多页笔记...只需包含那些希望与页眉保持连续的行即可mdframe

应 OP 的要求,我将其包装成类似于的宏\section。语法是\mysection{Section name}{after text}保证“后文本”不会脱离标题。

\documentclass[a4paper]{book}
\usepackage{lipsum}
\usepackage[showframe]{geometry}
\usepackage[framemethod=TikZ]{mdframed}
\mdfsetup{skipbelow=2em,skipabove=2em}
\setlength{\parskip}{0pt}
\newcommand\mysection[2]{%
 \setbox0=\vbox{\vspace{-2em}%
  \begin{mdframed}[innertopmargin=9pt,innerbottommargin=9pt,usetwoside=false,backgroundcolor=yellow]
    \normalfont\Large\bfseries #1
  \end{mdframed}
  \noindent #2%
 }
 \vspace{2em}\box0\noindent\ignorespaces%
}
\begin{document}
\lipsum[1-3]
\mysection{Notes}{%
Note 1: Bla bla\\
Note 2: Foo Bar
}
And other notes which can span several pages...\par
\lipsum[1]
\mysection{Notes}{%
Note 1: Bla bla\\
Note 2: Foo Bar
}
And other notes which can span several pages...\par
\end{document}

在此处输入图片描述

在此处输入图片描述

答案2

如果tcolorbox可以作为解决方案,以下代码可以作为起点。它定义了一个notes环境,其中包含一个带有所有注释的默认“注释”标题。此框在页面之间可拆分,但分页符前至少包含 3 条注释行,否则整个框将从新页面开始。如果出于任何原因框不应拆分,则breakable=false可以使用以下选项:

\documentclass[a4paper]{book}
\usepackage{lipsum}
\usepackage[most]{tcolorbox}
\usepackage[showframe]{geometry}
\setlength{\parskip}{0pt}

\newtcolorbox{notes}[1][]{title=Notes, left=0pt, right=0pt, lefttitle=4mm, toptitle=3mm, bottomtitle=3mm, boxrule=0mm, sharp corners, fonttitle=\normalfont\Large\bfseries, colbacktitle=yellow, coltitle=black, colback=white, lines before break=3, breakable, enhanced,#1}

\begin{document}
\lipsum[1-5]
\begin{notes}[breakable=false]
\noindent Note 1: Bla bla\\
Note 2: Foo Bar\\
\lipsum[1]
\end{notes}
\end{document}

在此处输入图片描述

相关内容