我正在尝试为乳胶文档中的图像设置基于网格的结构。
目前,我使用图形环境下的表格来实现这一点。但是,结果对齐不佳并且超出了框架。如何正确对齐图像?
\begin{figure*}
% \setlength{\abovecaptionskip}{6pt}
% \setlength{\belowcaptionskip}{6pt}
\centering
\begin{tabular}{ccc}
& \subfloat[B]{\includegraphics[width=0.30\textwidth]{images/2.png}} &
\subfloat[C]{\includegraphics[width=0.30\textwidth]{images/3.png}} \\
\multirow[t]{-2}{*}{\subfloat[A]{\includegraphics[width=0.40\textwidth]{images/1.png}}} &
\multicolumn{2}{c}{\subfloat[D]{\includegraphics[width=0.60\textwidth]{images/4.png}}} \\
\end{tabular}
\caption{Many figures}
\end{figure*}
当前输出如下。黑线仅表示使用 showframe 进行调试时启用的框架边框。通过编辑宽度百分比,我可以改进它,但并不完美。
例如,使用子图是否可以更好地做到这一点?另外,我想将第一个大型垂直图像标记为 (a),但它被标记为 (c)
任何帮助/文档/教程都值得赞赏。谢谢!
更新 1
根据@liandriis 的要求,我附上了使用的图像(a、b、c、d)尺寸:
- 答:417 x 476,
Imgur: P0NIeKI
- b:255 x 254,
Imgur: 4JROoAO
- c:301 x 255,
Imgur: xcAkKXp
- 尺寸:565 x 203,
Imgur: qvlItEf
更新 2 以下是我根据@David_Carlisle 分享的方法获得的结果
问题在于如何将字幕放到合适的位置。此外,需要反复试验才能得到正确的数字,但为了在给定的文档/环境中实现完美定位,这一切都是值得的。
更新 3
因此,继续遵循 @David_Carlisle 的建议,我现在能够完美地获得所有位置。正如我之前提到的,它只需要微调位置值。我仍在尝试了解这些数字是什么(绝对位置或从哪里偏移)。我仍然遇到的问题是 1) 子图和主图的图形计数按顺序递增(即 a、b、c、d、5 而不是 a、b、c、d、1)。2) 子图的标题不可见。
\begin{figure}
\begin{picture}(0,240)
\renewcommand\thefigure{\alph{figure}}%
\renewcommand\caption[1]{\refstepcounter{figure}%
\par\centering(\thefigure)\par}%
\put(0,0){\begin{minipage}[b]{.43\textwidth}
\includegraphics[width=\linewidth]{images/a.png}
\caption{zz a test}
\end{minipage}}
\put(228,130){\begin{minipage}[b]{.24\textwidth}
\includegraphics[width=\linewidth]{images/b.png}
\caption{zz b}
\end{minipage}}
\put(370,130){\begin{minipage}[b]{.285\textwidth}
\includegraphics[width=\linewidth]{images/c.png}
\caption{zz c}
\end{minipage}}
\put(228, 0){\begin{minipage}[b]{.56\textwidth}
\includegraphics[width=\linewidth]{images/d.png}
\caption{zz d}
\end{minipage}}
\end{picture}
\caption{Figures zzz}
\end{figure}
更新 4 根据@Zarko 分享的这个答案,我使用了 minipages,经过一些微调后,我能够实现所需的结果。在此与感兴趣的人分享:
\begin{figure*}
\begin{minipage}{0.425\textwidth}%
\begin{subfigure}{\linewidth}%
\includegraphics[width=\textwidth]{images/a.png}
\caption{A figure.}
\label{fig:merge-scenario}
\end{subfigure}
\end{minipage}%
\hspace{0.5mm}
\begin{minipage}{0.545\textwidth}%
\begin{minipage}{0.47\textwidth}%
\begin{subfigure}{\linewidth}%
\includegraphics[width=\linewidth]{images/b.png}
\caption{State A}
\label{fig:case-a}
\end{subfigure}
\end{minipage}
\begin{minipage}{0.55\textwidth}%
\begin{subfigure}{\linewidth}%
\includegraphics[width=\linewidth]{images/c.png}
\caption{State A}
\label{fig:case-a}
\end{subfigure}
\end{minipage}
\begin{subfigure}{\textwidth}%
\includegraphics[width=1.03\linewidth]{images/d.png}
\caption{State C}
\label{fig:case-c}
\end{subfigure}
\end{minipage}
\caption{Another figure.}
\end{figure*}
答案1
对图像进行分组时,如果它们不是像这样的人工矩形,则最好“用眼睛”进行调整,而不是仅仅机械地定位它们,而不考虑由于图像中的白色空间或对比区域造成的任何光学错位。
在这里我将它们定位在手动选择的坐标上。我还缩放了图像的高度和深度,以获得不同纵横比的图像。通常最好只在一个方向上缩放以避免失真。
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\begin{figure}
\begin{picture}(0,200)
\renewcommand\thefigure{\alph{figure}}%
\renewcommand\caption[1]{\refstepcounter{figure}%
\par\centering(\thefigure)\par}%
\put(0,-10){\begin{minipage}[b]{.2\textwidth}
\includegraphics[width=\linewidth, height=6cm]{example-image}
\caption{zz a}
\end{minipage}}
\put(80,120){\begin{minipage}[b]{.2\textwidth}
\includegraphics[width=\linewidth, height=2cm]{example-image}
\caption{zz b}
\end{minipage}}
\put(160,120){\begin{minipage}[b]{.5\textwidth}
\includegraphics[width=\linewidth, height=2cm]{example-image}
\caption{zz c}
\end{minipage}}
\put(80,0){\begin{minipage}[b]{.7\textwidth}
\includegraphics[width=\linewidth, height=3cm]{example-image}
\caption{zz d}
\end{minipage}}
\end{picture}
\caption{Figures zzz}
\end{figure}
\noindent X\dotfill X
\end{document}
答案2
感谢@DavidCarlisle、@Zarko 提供的所有意见以及这个有用的答案https://tex.stackexchange.com/a/494135/204652
我在这里整理我的更新作为答案,因为它恰好解决了这个问题。关键思想是有效地使用迷你页面来排列图形环境中的元素。与上一个答案不同,此示例显示了单个图像分布在多行或多列上的情况。这种方法可以推广到任何其他布局。
\usepackage{subcaption}
\usepackage{graphicx}
\begin{figure*}
\begin{minipage}{0.425\textwidth}%
\begin{subfigure}{\linewidth}%
\includegraphics[width=\textwidth]{images/a.png}
\caption{A figure.}
\label{fig:merge-scenario}
\end{subfigure}
\end{minipage}%
\hspace{0.5mm}
\begin{minipage}{0.545\textwidth}%
\begin{minipage}{0.47\textwidth}%
\begin{subfigure}{\linewidth}%
\includegraphics[width=\linewidth]{images/b.png}
\caption{State A}
\label{fig:case-a}
\end{subfigure}
\end{minipage}
\begin{minipage}{0.55\textwidth}%
\begin{subfigure}{\linewidth}%
\includegraphics[width=\linewidth]{images/c.png}
\caption{State A}
\label{fig:case-a}
\end{subfigure}
\end{minipage}
\begin{subfigure}{\textwidth}%
\includegraphics[width=1.03\linewidth]{images/d.png}
\caption{State C}
\label{fig:case-c}
\end{subfigure}
\end{minipage}
\caption{Another figure.}
\end{figure*}
其结果如下:
请注意,代码中使用的数字是硬编码的,以匹配图像的纵横比。这需要根据需要进行适当调整。
希望以上内容能够帮助那些对在 Latex 中以网格形式排列图像感兴趣的人。