저는 여러 개인 각각에 대한 "평가" 섹션이 있는 보고서 템플릿을 만들고 있습니다. 각 평가 섹션은 제목과 두 개의 텍스트 블록(각각 tcolorbox 내부에 배치됨)의 세 가지 구성 요소로 구성됩니다. 평가 섹션은 템플릿 엔진을 사용하여 동적으로 생성되므로 섹션의 내용과 수는 미리 알 수 없습니다.
공간을 절약하기 위해 필요한 경우 각 섹션을 두 페이지에 걸쳐 배포할 수 있도록 하고 싶습니다. 그러나 제목과 첫 번째 텍스트 블록이 분리되는 것을 원하지 않습니다. 이를 처리하기 위해 동일한 페이지 블록 내에 배치했습니다. 이제 내용의 분포는 정확하지만 각 페이지의 간격을 개선하고 싶습니다. 위, 사이, 아래의 간격이 모두 균일하도록 각 페이지의 섹션을 균등하게 분배하고 싶습니다(상단 요소 위와 하단 요소 아래에 공간이 없는 플러시바텀과 달리).
이 작업을 어느 정도 수행하는 데 사용할 수 있지만 \vspace*{\vfill}
전체 평가 섹션이 한 페이지에 맞는 경우 두 텍스트 블록 사이에 추가 공간이 없는지 확인하고 싶습니다. 나는 이 작업을 수행하기 위해 간격과 파의 다양한 조합을 시도했지만 내 문제를 간결하게 설명하고 연구할 수 있는 용어가 부족한 것 같습니다.
다음은 콘텐츠의 일반적인 구조를 보여주는 MWE입니다. 나는 몇 가지 의견을 기록하고 도움이 될 수 있다고 생각되는 곳에 몇 가지 vfill 명령을 배치해 보았습니다. 일반적으로 페이지당 1.5개의 보고서가 들어가게 됩니다. 이상적으로는 첫 번째 보고서 위, 첫 번째 보고서와 두 번째 보고서 사이, 두 번째 보고서 아래의 간격이 모두 동일합니다.
\documentclass{report}
\usepackage[letterpaper,margin=0.5in]{geometry}
\usepackage[most]{tcolorbox}
\usepackage{parskip}
\usepackage{pgffor}
\usepackage{lipsum}
\usepackage{showframe}
%\flushbottom
\newtcolorbox{containingBox}[1][]{%
width=16cm,
arc=0mm,
colframe=blue,
colback=blue,
nobeforeafter,
after skip=15pt,
#1,
}%
\pagestyle{empty}
\begin{document}
\foreach \n in {0,...,5} {
\vspace*{\fill}
% Heading and first text block
\begin{samepage}
{\fontsize{24pt}{1em}\bfseries Header Text}
\begin{center}
\begin{containingBox}
\lipsum[1]
\end{containingBox}
\end{center}
\end{samepage}
% Second section that can break to another page, but
% should stay close if on same page
% This is where I want to put a vfill only if
% this block has gotten separated
%\vspace*{\fill}
\begin{center}
\begin{containingBox}
\lipsum[1-2]
\end{containingBox}
\end{center}
\vspace*{\fill}
}
\end{document}
답변1
여기서 내가 한 일은 \vspace{\fill}
첫 번째 블록 뒤에 를 추가한 다음 두 번째 center
블록 안에 \vspace{-\fill}
. 동일한 페이지에 나타나면 두 개의 \vspace
가 취소되지만, 분리된 경우 첫 번째 블록 이후의 잔류 양성은 \vspace
페이지 하단에 활성 상태로 유지됩니다. \vspace
다음 페이지 상단의 부정적인 내용은 순 효과가 없습니다.
center
환경이 추가 수직 공간을 추가하고 동일한 페이지에 있는 경우 블록을 함께 유지하도록 표시된 OP가 있기 때문에 \vspace{-2\topsep}
블록 사이에도 추가했습니다.
\documentclass{report}
\usepackage[letterpaper,margin=0.5in]{geometry}
\usepackage[most]{tcolorbox}
\usepackage{parskip}
\usepackage{pgffor}
\usepackage{lipsum}
\usepackage{showframe}
%\flushbottom
\newtcolorbox{containingBox}[1][]{%
width=16cm,
arc=0mm,
colframe=blue,
colback=blue,
nobeforeafter,
after skip=15pt,
#1,
}%
\pagestyle{empty}
\begin{document}
\foreach \n in {0,...,5} {
\vspace*{\fill}
% Heading and first text block
\begin{samepage}
{\fontsize{24pt}{1em}\bfseries Header Text}
\begin{center}
\begin{containingBox}
\lipsum[1]
\end{containingBox}
\end{center}
\end{samepage}
% Second section that can break to another page, but
% should stay close if on same page
% This is where I want to put a vfill only if
% this block has gotten separated
\vspace{-2\topsep}
\vspace{\fill}
\begin{center}
\vspace{-\fill}
\begin{containingBox}
\lipsum[1-2]
\end{containingBox}
\end{center}
\vspace*{\fill}
}
\end{document}