我有几个页面包含两张图片。我希望这些图片在页面上居中。我尝试过这个
\newpage \vspace*{\fill}
\begin{figure}[H] \centering
\subfloat[Text]
{\includegraphics[height=18cm, width=0.8\textwidth, keepaspectratio]{figure/...}}
\hspace{2mm}
\subfloat[Text]
{\includegraphics[height=18cm, width=0.8\textwidth, keepaspectratio]{figure/...}}
\caption[Short-Text]{Long-Text}
\end{figure}
\vspace*{\fill} \newpage
但我不喜欢这个结果。图像上方和下方的空间不一样。我使用的文档类是book
答案1
这是一个最小的例子,它将您的方法(垂直填充,在我看来是可以的)与我在评论中提出的方法(将其全部放在在页面绝对中心绘制的 tikz 节点内)进行比较。
\documentclass{article}
%\usepackage[showframe]{geometry} % uncomment to see the margins
\usepackage{mwe}
\usepackage{float}
\usepackage{subfig}
\usepackage{tikz}
\begin{document}
% Your approach (enclose in vertical fills)
\newpage \vspace*{\fill}
\begin{figure}[H] \centering
\subfloat[Text]
{\includegraphics[height=18cm, width=0.7\textwidth, keepaspectratio]{example-image-a}}
\hspace{2mm}
\subfloat[Text]
{\includegraphics[height=18cm, width=0.7\textwidth, keepaspectratio]{example-image-b}}
\caption[Short-Text]{Long-text}
\end{figure}
\vspace*{\fill} \newpage
% My proposed approach (use a tikz node to put it in the absolute center of the page)
\begin{tikzpicture}[remember picture, overlay]
\node[anchor=center, text width=\textwidth, align=justify] at (current page.center) {
\begin{figure}[H]\centering
\subfloat[Text]
{\includegraphics[height=18cm, width=0.7\textwidth, keepaspectratio]{example-image-a}}
\hspace{2mm}
\subfloat[Text]
{\includegraphics[height=18cm, width=0.7\textwidth, keepaspectratio]{example-image-b}}
\caption[Short-Text]{Long-text}
\end{figure}
};
\end{tikzpicture}
\newpage
\end{document}
输出的差异很小。您必须编译两次才能让 TikZ 正确放置覆盖节点:
右边的那个(使用 TikZ)看起来有点凸起,但正如所说,差别很小。也许在你的实际使用案例中它更明显。