诗集或短篇散文集通常由装饰符分隔。我想要一个命令,在段落之间插入装饰符,但它会在页面顶部或底部消失。这样,当我排版大型集合时,我就不必手动插入装饰符了。(我正在考虑如何\vspace
自动消失在页面顶部。)在下面的 MWE 中,第三个分隔符理想情况下会消失,因为它位于页面顶部。
\documentclass[11pt]{article}
\usepackage[a4paper,bottom=4.8cm]{geometry}
\usepackage{lipsum,pgfornament}
\newcommand\MyDelimiter{\vspace{2em}\begin{center}\pgfornament[width=0.5*\textwidth]{86}\end{center}\vspace{2em}}
\begin{document}
\lipsum[1]
\MyDelimiter
\lipsum[1]
\MyDelimiter
\lipsum[1]
\MyDelimiter % this one should just disappear
\lipsum[1]
\MyDelimiter
\lipsum[1]
\end{document}
出于同样的原因,如果分隔符是页面上的最后一项,那么它应该消失:
\documentclass[11pt]{article}
\usepackage[a4paper,bottom=10.5cm]{geometry}
\usepackage{lipsum,pgfornament}
\newcommand\MyDelimiter{\vspace{2em}\begin{center}\pgfornament[width=0.5*\textwidth]{86}\end{center}\vspace{2em}}
\begin{document}
\lipsum[1]
\MyDelimiter
\lipsum[1]
\MyDelimiter % this one should just disappear
\lipsum[1]
\end{document}
答案1
这是 MWE,其分隔符在页面末尾消失。宏定义如下此链接,这是评论中建议的(感谢 Gustavo Mezzetti!)。
\documentclass[11pt]{article}
\usepackage[a4paper,bottom=14cm]{geometry}
\usepackage{lipsum,pgfornament}
\makeatletter
\newcommand*\MyDelimiter{\par
% Emulate LaTeX's \bigbreak (more or less):
\ifdim\lastskip<\bigskipamount
\removelastskip
\fi
\penalty -200
% Do not depend on e-TeX's \glueexpr:
\skip@ \medskipamount
\multiply \skip@ \tw@
\advance \skip@ \baselineskip
\dimen@ \skip@
\advance \dimen@ -8\p@
\cleaders \vbox to \dimen@ {%
\vss
\centerline{%
\vrule \@height 10\p@ \@depth\tw@\p@ \@width \z@
\pgfornament[width=0.5*\textwidth]{86}
}%
\vss
}\vskip \skip@
}
\makeatother
\begin{document}
\lipsum[1]
\MyDelimiter
\lipsum[1]
\MyDelimiter % this one should just disappear
\lipsum[1]
\end{document}
我没有遵循所有的代码,但我注意到可以通过添加来调整垂直间距\skip@
,例如通过替换:
\advance \skip@ \baselineskip
和:
\advance \skip@ \baselineskip
\advance \skip@ \baselineskip
\advance \skip@ \baselineskip