避免在题词后立即分页的最佳方法

避免在题词后立即分页的最佳方法

\epigraph避免在命令之后立即出现分页符的最佳方法是什么题词包?我在章节标题后添加了题词。

\documentclass{article}
\usepackage[nopar]{lipsum}
\usepackage{epigraph}

\begin{document}

    \section{Aaaa}
    \epigraph{$1+2 \neq 3$}{Matlab}

    \lipsum[1-4]


    \section{Bbbb}
    \epigraph{$1+2 \neq 3$}{Matlab}

    \lipsum[1-4]

\end{document}

我尝试了\penalty1000、用\nopagebreak和用,但\clubpenalties没有成功。

\needspace我成功地做到了这个答案,在序言中补充:

\usepackage{etoolbox}
\usepackage{needspace}
\preto\section{\needspace{7\baselineskip}}

这是个好方法吗?还有更好的方法吗?

答案1

来自我的一个旧答案这里

\documentclass{article}
\usepackage[nopar]{lipsum}
\usepackage{epigraph}


\newsavebox{\mybottombox} % Box to save the text of the command 
\newlength{\mybottomlength} % The length of our text inside the command
\newlength{\availafter} 
% Optional argument is the minimum length after the nobottom text for not pagebreak. Change it to your needs
\newcommand{\nobottom}[2][60pt]{\savebox{\mybottombox}{\vbox{#2}}\setlength{\mybottomlength}{\ht\mybottombox}%
\setlength{\availafter}{\dimexpr\textheight-\mybottomlength-\pagetotal\relax}\ifdim\availafter<#1%
\pagebreak\noindent\usebox{\mybottombox}%
\else%
\noindent\usebox{\mybottombox}%
\fi%
}%
\begin{document}

    \section{Aaaa}
    \epigraph{$1+2 \neq 3$}{Matlab}

    \lipsum[1-4]


    \section{Bbbb}
    \nobottom{\epigraph{$1+2 \neq 3$}{Matlab}}

    \lipsum[1-4]

    \nobottom[90pt]{\section{Cccc}}
    \epigraph{$1+2 \neq 3$}{Matlab}

    \lipsum[1-4]

\nobottom[90pt]{\section{Dddd}
\epigraph{$1+2 \neq 3$}{Matlab}}

\lipsum[1-4]

\end{document}

我给出了第二个使用示例,其中包括\section我的命令\nobottom,以防您希望像这样使用它(对我来说更可取),但添加了第三个示例,在我的命令中包含\section\epigraph命令。

相关内容