将图片置于页面中央,不受其他内容影响

将图片置于页面中央,不受其他内容影响

这是我的原始文件:

-------------------
|sec 1            |
|-----            |
||fig|            |
|-----            |
|                 |
|                 |
|      page1      |
-------------------

我希望将图形定位到页面的中心,但添加到后[p]\begin{figure}[p]我得到了 2 页:

-------------------
|sec 1            |
|                 |
|                 |
|                 |
|                 |
|                 |
|      page1      |
-------------------

-------------------
|                 |
|                 |
|      -----      |
|      |fig|      |
|      -----      |
|                 |
|      page2      |
-------------------

是否可以将图像放置在页面的中心,即使其中包含其他内容,就像这样?

-------------------
|sec 1            |
|                 |
|      -----      |
|      |fig|      |
|      -----      |
|                 |
|      page1      |
-------------------

现在我们假设“其他内容”只是章节标题。

我现在唯一的解决方案是测量部分标题带来的垂直空间,然后在页面底部补偿相同的长度,并使用两个\vfill将图形垂直居中。但是可以更简单地做到这一点吗?

开始代码:

\documentclass{article}
\usepackage[demo]{graphicx}
\setlength{\parindent}{0pt}

\begin{document}
\section*{sec 1}
\begin{figure}[p]
\centering
\includegraphics{noimage}
\end{figure}

\end{document}

答案1

您可以使用 tikz 来实现这一点。我假设您希望图形及其标题居中。

\documentclass{article}
\usepackage[demo]{graphicx}
\setlength{\parindent}{0pt}
\usepackage{lipsum}
\usepackage{tikz}
\usetikzlibrary{positioning}
\usepackage{capt-of}
\begin{document}
    \section*{sec 1}
    \lipsum[1]
    
    \begin{tikzpicture}[inner sep=0pt, overlay, remember picture]
    \node at (current page.center) {\begin{tikzpicture}
            \node (fig) {\includegraphics{noimage}};
            \node [below=\belowcaptionskip of fig,text width=\linewidth] {\captionof{figure}{Caption}\label{fig}};
        \end{tikzpicture}};
    \end{tikzpicture}
\end{document}

如果你只想要页面中心的图片,我们可以删除第二个 tikzpicture:

\documentclass{article}
\usepackage[demo]{graphicx}
\setlength{\parindent}{0pt}
\usepackage{lipsum}
\usepackage{tikz}
\usetikzlibrary{positioning}
\usepackage{capt-of}
\begin{document}
    \section*{sec 1}
    \lipsum[1]
    
    \begin{tikzpicture}[inner sep=0pt, overlay, remember picture]
            \node (fig) at (current page.center) {\includegraphics{noimage}};
            \node [below=\belowcaptionskip of fig,text width=\linewidth] {\captionof{figure}{Caption}\label{fig}};
    \end{tikzpicture}
\end{document}

编辑

对于子图,我使用一个矩阵:

\documentclass{article}
\usepackage[demo]{graphicx}
\setlength{\parindent}{0pt}
\usepackage{lipsum}
\usepackage{tikz}
\usetikzlibrary{matrix,positioning}
\usepackage{caption}
\begin{document}
    \section*{sec 1}
    \lipsum[1]
    
    \begin{tikzpicture}[inner sep=0pt, outer sep=0pt, overlay, remember picture]
        \matrix[name=F, matrix of nodes, row sep=1ex, column sep={2em}, nodes={text width=.45\linewidth, anchor=center, align=center}] at (current page.center) {%
            \includegraphics[width=\linewidth]{example-image-a} & \includegraphics[width=\linewidth]{example-image-b}\\
            Subcaption a & Subcaption b\\
            \includegraphics[width=\linewidth]{example-image-c} & \includegraphics[width=\linewidth]{example-image}\\
            Subcaption c & Subcaption d\\
        };
        \node [below =\belowcaptionskip of F, text width=\linewidth] {\captionof{figure}{Caption}\label{fig}};
    \end{tikzpicture}
    
\end{document}

在此处输入图片描述

相关内容