图形的垂直对齐

图形的垂直对齐

考虑下面的代码。

\documentclass{article}
\usepackage{graphicx}
\begin{document}
\begin{figure}[htbp]
  \includegraphics[width = \linewidth]{example-image-golden}
\end{figure}
\begin{figure}[htbp]
  \includegraphics[width = \linewidth]{example-image-golden}
\end{figure}
\end{document}

输出为:

第 1 页

第2页

我的问题是为什么第一个图形没有垂直居中以及如何使其居中无需改变htbp参数

答案1

最简单的方法是用一些垂直空间填充图形:

\documentclass{article}
\usepackage{graphicx}
\begin{document}
\begin{figure}[htbp]
  \vspace{5cm}
  \includegraphics[width = \linewidth]{example-image-golden}
\end{figure}
\begin{figure}[htbp]
  \includegraphics[width = \linewidth]{example-image-golden}
\end{figure}
\end{document}

另一个更好的选择是使用\vfill

\documentclass{article}
\usepackage{graphicx}

\begin{document}
\null
\vfill
\begin{figure}[htbp]
  \includegraphics[width = \linewidth]{example-image-golden}
\end{figure}
\vfill

\begin{figure}[htbp]
  \includegraphics[width = \linewidth]{example-image-golden}
\end{figure}
\end{document}

请注意,您需要在开始时使用 \null 来为 LaTeX 提供一些参考。

至于为什么这种现象会发生。我认为这与 LaTeX 从页面顶部向下排版的方式有关。如果你在两张图片之间添加\newpage或 ,\clearpage那么第二张图片也不会居中。

第一页是普通页面,图形位于 here[h] 和 on top[t]。第二页是图形 page[p],图形位于中间。如果您定义\newpage第二页将是“普通”页面,图形也将放在顶部。

- 编辑 -

最好的选择取决于常见问题页面。将计数器设置totalnumber为 0,这样每个图形都会被推送到图形页面,即使它是第一个并且可以与文本一起容纳。此外,在浮动之间定义一个非常大的间隔fpsep,以强制每个浮动到其自己的页面:

\documentclass{article}
\usepackage{graphicx}
\usepackage{lipsum}

\setcounter{totalnumber}{0}
\makeatletter
\setlength\@fpsep{\textheight}
\makeatother

\begin{document}
%\lipsum[1-2] %with or without text, the figure will get pushed to a float page

\begin{figure}[htbp]
  \includegraphics[width = \linewidth]{example-image-golden}
\end{figure}


\begin{figure}[htbp]
  \includegraphics[width = \linewidth]{example-image-golden}
\end{figure}
\end{document}

这是一种 hack:将计数器设置为 0 基本上意味着 LaTeX 根本无法将图形放在此处[h]、顶部[t] 或底部[b]。这是因为您不能在同一页上放置文本和图形。它强制任何图形转到浮动页面。

相关内容