我有一个标题页,它使用\vfill
页面中间的 来将一行文本推到底部。我在这个页面中插入了一张图片,并希望它位于页面中间和底部文本之间的中间(垂直方向),因此在\vfill
那里插入了另一张图片。然而,这似乎并没有使图像顶部和底部的空间完全相等。
我认为这在 MWE 上有所体现:
\documentclass{book}
\usepackage{filecontents}
\begin{filecontents*}{test-image.tex}
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
%\draw[thick] (0,0) rectangle (3cm,3cm);
\draw[line width=2mm] (2.8cm,1.5cm) arc [start angle=0, end angle=-240, radius=13mm];
\end{tikzpicture}
\end{document}
\end{filecontents*}
\immediate\write18{pdflatex test-image.tex}
\usepackage{graphicx}
\usepackage[
paperwidth=15cm,
paperheight=20cm,
outer=2cm,
inner=2cm,
top=2cm,
bottom=2cm
]{geometry}
\usepackage[a4,center]{crop}
\crop[cam,info] % info is default, noinfo has to be set; use [off] to turn off all marks
\usepackage{lua-visual-debug}
\begin{document}
\frontmatter
\begin{titlepage}
\begin{center}
{\Huge Testing the testing test, of the testing test}
\end{center}
%
\vspace{4 cm}
\begin{center}
{\large
Line One
}\\
\vspace{0.2cm}
{\Large
Line Two
}
\end{center}
% BOTTOM PART
\vfill
\begin{center} % INSERT
\includegraphics[width=4.75cm]{test-image.pdf} % INSERT
\end{center} % INSERT
\vfill % INSERT
\begin{center}
The bottom line is here.
\end{center}
\end{titlepage}
\end{document}
使用 编译此lualatex -shell-escape test.tex
文件。我在 Inkscape 中打开生成的 PDF,并添加尺寸线及其长度(Inkscape 认为以毫米为单位),得到以下结果(注意 Inkscape 损坏了一些字体;单击可查看高分辨率图片):
因此,顶部和底部的长度应该相等,但顶部的高度为 18.34 毫米,底部的高度为 19.72 毫米(在我的实际示例中,我认为差异更加极端,我只是无法在这里重建它)。
基本上,我的理解是\vfill
,如果有两个\vfill
,由于它们具有相同的“无穷级”,剩余空间应该在它们之间平均分配;但显然存在差异。为什么会出现这种差异 - 我如何定位插入的徽标,以便其上方和下方的垂直空间完全相等?
答案1
问题在于您必须思考 TeX 是如何将框放入垂直列表中的。想象一下\vfill
从那里移除 ,即没有空间。那么您的第一个空间(测量为 18.34mm)将为 1pt,因为下面的框无法适合基线网格,所以\interlineskip
在这里插入 。Plain TeX 将此寄存器设置为 1pt(我不知道在 LaTeX 中如何设置寄存器,但我希望这是一个类似的值)。第二个空间将减去\baselineskip
底线的高度。典型的 10pt 字体的行高度约为 7pt,\baselineskip
设置为 12pt。所以,空间(这里测量为 19.72mm)将约为 5pt。现在将相同量的 添加到\vfill
两个空间。当然第二个空间将大约大 4pt,即约 1.4mm。
如果您需要完全相同的空间(按您显示的尺寸测量),那么您可以\nointerlineskip
在带有图片的框之前和带有最后一行的框之前插入。