Zeilentrennzeichen dürfen nicht vor oder nach Seitenumbrüchen verwendet werden.

Zeilentrennzeichen dürfen nicht vor oder nach Seitenumbrüchen verwendet werden.

Ich habe eine horizontale Linie erstellt, um Elemente in meinem Dokument zu trennen. Meine Frage ist, wie ich sie so einstellen kann, dass sie nicht verwendet wird, wenn sie sich oben auf der Seite (also direkt nach einem Seitenumbruch) oder unten (also direkt vor einem Seitenumbruch) befindet?

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

Bildbeschreibung hier eingeben

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}

Antwort1

Verwenden Sie \cleadersnach \vskip. Es verschwindet, wenn der Bruchpunkt dieser ist \vskip. Es handelt sich um klassische TeX-Grundelemente:

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

Antwort2

Beachten Sie, dass ich unten auf der Seite überprüfe, ob genügend Platz für \Sep( 2\parskip+1cm+1.5pt) vorhanden ist. Wenn nicht, erzwinge ich ein , \newpageum den nachfolgenden Text auf der nächsten Seite beizubehalten.

\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}

verwandte Informationen