段落分隔符在页面的顶部和底部消失(例如 \vspace)

段落分隔符在页面的顶部和底部消失(例如 \vspace)

诗集或短篇散文集通常由装饰符分隔。我想要一个命令,在段落之间插入装饰符,但它会在页面顶部或底部消失。这样,当我排版大型集合时,我就不必手动插入装饰符了。(我正在考虑如何\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

相关内容