插入图像顶部和底部的垂直空间与 vfill 不相等?

插入图像顶部和底部的垂直空间与 vfill 不相等?

我有一个标题页,它使用\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 损坏了一些字体;单击可查看高分辨率图片):

测试c.png

因此,顶部和底部的长度应该相等,但顶部的高度为 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在带有图片的框之前和带有最后一行的框之前插入。

相关内容