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