这是我的原始文件:
-------------------
|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}