我有一个自定义示例环境:
\newcounter{examplecounter}
\renewcommand{\theexamplecounter}{\arabic{examplecounter}}
\newenvironment{Beispiel}[1][]{%
\goodbreak%
\refstepcounter{examplecounter}%
\begin{list}{}{\setlength{\rightmargin}{\leftmargin}}%
\item[{\textbf{Beispiel~\theexamplecounter:}}]#1\item[]}{%
\end{list}}
这种方法很有效,除非出现错误的分页符:
打破这个环境是可以的(事实上这是必要的,因为有些例子很长),但我想强制 LaTeX 保留标题和一些文本(比如至少两行或完整的表格/图像)。我该怎么做?
完成最小示例
\documentclass[a4paper]{scrartcl}
\usepackage{blindtext}
\newcounter{examplecounter}
\renewcommand{\theexamplecounter}{\arabic{examplecounter}}
\newenvironment{Beispiel}[1][]{%
\goodbreak%
\refstepcounter{examplecounter}%
\begin{list}{}{\setlength{\rightmargin}{\leftmargin}}%
\item[{\textbf{Beispiel~\theexamplecounter:}}]#1\item[]}{%
\end{list}}
\begin{document}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla quam
elit, vestibulum nec facilisis at, condimentum id enim. Sed iaculis
lacinia quam, vel accumsan eros tempor in. Integer ipsum metus,
accumsan sit amet commodo a, egestas vitae sem. Mauris ut orci ut
dolor viverra convallis nec a erat. Aenean consequat elit vel eros
fermentum vestibulum id at ipsum. In vitae orci mauris, et rhoncus
odio. Pellentesque habitant morbi tristique senectus et netus et
malesuada fames ac turpis egestas.
\blindtext[4]
\begin{Beispiel}[A title]
\begin{tabular}{ccc}
1 & 2 & 3\\
4 & 5 & 6\\
7 & 8 & 9
\end{tabular}
\end{Beispiel}
\end{document}
答案1
\item
非常复杂。\item[]
用替换\par\nobreak
会插入间距相似的(垂直)分页符,但允许控制分页:
\newenvironment{Beispiel}[1][]
{% \begin{Beispiel}[<title>]
\goodbreak%
\refstepcounter{examplecounter}%
\begin{list}{}{\setlength{\rightmargin}{\leftmargin}}%
\item[{\textbf{Beispiel~\theexamplecounter:}}]#1\par\nobreak}%
{\end{list}}% \end{Beispiel}
答案2
一种方法是利用minipage
环境。
\begin{minipage}{\textwidth}
\begin{Beispiel}[A title]
\begin{tabular}{ccc}
1 & 2 & 3\\
4 & 5 & 6\\
7 & 8 & 9
\end{tabular}
\end{Beispiel}
\end{minipage}