![平衡页面中图片或框之间的垂直间距](https://linux22.com/image/346773/%E5%B9%B3%E8%A1%A1%E9%A1%B5%E9%9D%A2%E4%B8%AD%E5%9B%BE%E7%89%87%E6%88%96%E6%A1%86%E4%B9%8B%E9%97%B4%E7%9A%84%E5%9E%82%E7%9B%B4%E9%97%B4%E8%B7%9D.png)
我有一个由文本和图片组成的系列组(每组 1 到 6 张图片)。我希望页面中图片之间的垂直间距保持平衡。
这是一个最小的工作示例(为了便于说明,这里用黑框替换真实图像并显示页面框架):
https://fr.sharelatex.com/project/5860184917ccee00403ef8ca
\documentclass[DIV=12,paper=a4,10pt,notitlepage]{report}
\usepackage[
showframe,
paperwidth=210mm,
paperheight=297mm,
top=27.5mm,
bottom=27.5mm,
inner=20mm,
outer=20mm,
marginparsep=7mm,
marginparwidth=48mm,
]{geometry}
\usepackage{blindtext}
\begin{document}
\section{Section}
\blindtext[5]
\vfill
\makebox[\textwidth]{
\centering
\rule{8cm}{5cm}
}
\vfill
\clearpage
\section{Section}
\blindtext[5]
\vfill
\makebox[\textwidth]{
\centering
\rule{8cm}{5cm}
}
\vfill
\vfill
\makebox[\textwidth]{
\centering
\rule{8cm}{5cm}
}
\vfill
\vfill
\makebox[\textwidth]{
\centering
\rule{8cm}{5cm}
}
\vfill
\clearpage
\section{Section}
\blindtext[5]
\vfill
\makebox[\textwidth]{
\centering
\rule{8cm}{5cm}
}
\vfill
\vfill
\makebox[\textwidth]{
\centering
\rule{8cm}{5cm}
}
\vfill
\vfill
\makebox[\textwidth]{
\centering
\rule{8cm}{2cm}
}
\vfill
\vfill
\makebox[\textwidth]{
\centering
\rule{8cm}{5cm}
}
\vfill
\end{document}
典型案例:
- 第一种情况:看起来不错!图片上方(到文本底部)和下方(到页面底部)似乎有相等的可用空间
- 第二种情况:第一张图片下方缺少一些垂直间距,第二张图片顶部缺少空间,第三张图片看起来不错
- 第三种情况:与前一种情况相同,第三和第四张图片看起来不错
实际文档约有 450 页,包含 200 个不同的部分(组),其中文本的长度和图像的数量各不相同。
答案1
除了垂直空间外,每幅图像还提供了
Overfull \hbox (15.0pt too wide) in paragraph at lines 70--74
由于段落缩进。
在里面也不\centering
执行任何操作\makebox
(因为它是水平模式)。
但是,通常情况下,分页符处的空格会被丢弃,但在这里,你似乎想保留它,以便可以使用\vspace*
\documentclass[DIV=12,paper=a4,10pt,notitlepage]{report}
\usepackage[
showframe,
paperwidth=210mm,
paperheight=297mm,
top=27.5mm,
bottom=27.5mm,
inner=20mm,
outer=20mm,
marginparsep=7mm,
marginparwidth=48mm,
]{geometry}
\usepackage{blindtext}
\begin{document}
\section{Section}
\blindtext[5]
\nopagebreak
\vspace*{\fill}
\noindent\makebox[\textwidth]{
\rule{8cm}{5cm}
}
\nopagebreak
\vspace*{\fill}
\clearpage
\section{Section}
\blindtext[5]
\nopagebreak
\vspace*{\fill}
\noindent\makebox[\textwidth]{
\rule{8cm}{5cm}
}
\nopagebreak
\vspace*{\fill}
\pagebreak[0]
\vspace*{\fill}
\noindent\makebox[\textwidth]{
\rule{8cm}{5cm}
}
\nopagebreak
\vspace*{\fill}
\pagebreak[0]
\vspace*{\fill}
\noindent\makebox[\textwidth]{
\rule{8cm}{5cm}
}
\vspace*{\fill}
\clearpage
\section{Section}
\blindtext[5]
\nopagebreak
\vspace*{\fill}
\noindent\makebox[\textwidth]{
\rule{8cm}{5cm}
}
\nopagebreak
\vspace*{\fill}
\pagebreak[0]
\vspace*{\fill}
\noindent\makebox[\textwidth]{
\rule{8cm}{5cm}
}
\nopagebreak
\vspace*{\fill}
\pagebreak[0]
\vspace*{\fill}
\noindent\makebox[\textwidth]{
\rule{8cm}{2cm}
}
\nopagebreak
\vspace*{\fill}
\pagebreak[0]
\vspace*{\fill}
\noindent\makebox[\textwidth]{
\rule{8cm}{5cm}
}
\nopagebreak
\vspace*{\fill}
\end{document}