\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
命令。