Separador de linha não deve ser usado antes ou depois das quebras de página

Separador de linha não deve ser usado antes ou depois das quebras de página

Criei uma linha horizontal para separar os elementos do meu documento. Minha pergunta é como posso configurá-lo para não ser usado quando estiver no topo da página (ou seja, logo após uma quebra de página) ou na parte inferior (ou seja, logo antes de uma quebra de página)?

\newcommand{\Sep}
{
    \vspace{0.5cm}
    \begin{center}
    \rule{3cm}{1.5pt}
    \end{center}
    \vspace{0.5cm}
}

insira a descrição da imagem aqui

MWE

\documentclass{article}

\newcommand{\Sep}
{
\vspace{0.5cm}
\begin{center}
\rule{3cm}{1.5pt}
\end{center}
\vspace{0.5cm}
}

\begin{document}

Text

\Sep

More text


\end{document}

Responder1

Usar \cleadersdepois \vskip. Ele desaparece quando o ponto de ruptura é este \vskip. Eles são primitivos clássicos do TeX:

\def\Sep{\vskip 0.5cm
   \cleaders\hbox to\hsize{\hss\vrule height1.5pt width3cm\hss}\vskip 2pt
   \nobreak\vskip 0.5cm \relax
}

Responder2

Observe que na parte inferior da página verifico se há espaço suficiente para \Sep( 2\parskip+1cm+1.5pt). Caso contrário, forço a \newpagemanter o texto seguinte na próxima página.

\documentclass{article}
\usepackage{tikzpagenodes}
\usepackage{lipsum}

\newlength{\tempdima}

\newcommand{\Sep}%
{\tikz[remember picture,overlay]{%
  \pgfextracty{\tempdima}{\pgfpointdiff{\pgfpointorigin}%
    {\pgfpointanchor{current page text area}{north}}}
  \global\tempdima=\tempdima}%
\ifdim\tempdima<\baselineskip
\else\ifdim\tempdima>\dimexpr\textheight-2\parskip-1cm-1.5pt\relax\newpage
  \else
    \vspace{0.5cm}
    \begin{center}
    \rule{3cm}{1.5pt}
    \end{center}
    \vspace{0.5cm}
  \fi
\fi}

\begin{document}
\Sep
\lipsum[1]
\Sep
\lipsum[2]
\rule{1pt}{20\baselineskip}\par
\Sep
\lipsum[3]
\end{document}

informação relacionada