페이지 나누기 전후에 줄 구분 기호를 사용하지 마세요.

페이지 나누기 전후에 줄 구분 기호를 사용하지 마세요.

내 문서의 요소를 구분하기 위해 수평선을 만들었습니다. 내 질문은 페이지 상단(예: 페이지 나누기 직후) 또는 페이지 하단(예: 페이지 나누기 직전)에 있을 때 사용되지 않도록 어떻게 설정할 수 있습니까?

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

여기에 이미지 설명을 입력하세요

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}

답변1

\cleaders이후에 사용하세요 \vskip. 한계점은 이 때 사라집니다 \vskip. 이들은 고전적인 TeX 기본 요소입니다.

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

답변2

페이지 하단에서 \Sep( 2\parskip+1cm+1.5pt)를 위한 공간이 충분한지 확인합니다. 그렇지 않은 경우 a가 \newpage다음 페이지에 다음 텍스트를 유지하도록 강제합니다 .

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

관련 정보