我经历了一些疯狂的尝试才让 minipage 和 subfloat 很好地协同工作(?),但最后才发现我搞砸了图形引用。
我有一个带有两个子浮点的图形,一个在左边,一个在右边。左边由两个图形组成,一个在另一个上面。最后一个事实造成了很大的麻烦,因为我不能单独使用\\
或。所以我围绕它构建了一个,但然后不能\newline
subfloat
minipage
subfloat
包含,所以minipage
我反转了它们的嵌套:
\documentclass[a4paper]{book}
% note: the following packages are _givens_, I cannot change them at this point
\usepackage[top=35mm, bottom=38mm, inner=40mm, outer=24mm]{geometry}
\usepackage[hang,small]{caption}
\usepackage{subfig}
\usepackage{graphicx}
\begin{document}
As shown in Fig.~\ref{fig:right}...
\begin{figure}
\centering
\begin{minipage}{0.39\textwidth}%
\includegraphics[width=1\textwidth, trim=0 0 0 -70mm]{figures/zelle148_IMG_1903m.jpg}\\[2mm]%
\includegraphics[width=1\textwidth, trim=0 -60mm 0 0]{figures/zelle148_IMG_1901m.jpg}%
\\\centering \subfloat[Left]{\hspace{0.9\textwidth}}\label{fig:left}
\end{minipage}%
\begin{minipage}{0.58\textwidth}%
\includegraphics[width=1\textwidth, trim=-2mm 0 0 0]{figures/Zelle148ScoreCut.pdf}%
\\\centering \subfloat[Right]{\hspace{1\textwidth}}\label{fig:right}
\end{minipage}%
\caption{Full caption}
\label{fig:both}
\end{figure}
\end{document}
问题是,我收到错误
包标题警告:\label 在输入行 20 的 \caption 之前。
LaTeX 警告:第 1 页上的引用“fig:right”在输入行 9 上未定义。
LaTeX 警告:存在未定义的引用。
图形结果正如我想要的那样:
但文中的引用只显示为“??”而不是“1b”。
答案1
下面的代码能满足你的目的吗?它没有任何修饰或类似的东西。这里的基本思想是创建一个两列表格,两列都居中。左列又是一个有两行的单列表格,你可以在那里放置你的左边图片一张接一张。右列又是一个表格,只有一行,其中包含您的正确的图片。将最后两个表格对齐到底部。您需要调整列宽。这里我使用了0.4\textwidth
,但稍微宽一点也应该没问题。
\documentclass[a4paper]{book}
\usepackage[top=35mm, bottom=38mm, inner=40mm, outer=24mm]{geometry}
\usepackage[hang,small]{caption}
\usepackage{subfig}
\usepackage{graphicx}
\begin{document}
As shown in Fig.~\ref{fig:right}...
\begin{figure}[!tbp]
\centering
\begin{tabular}[c]{cc}
\subfloat[Left]{\label{fig:left}%
\begin{tabular}[b]{c}
\includegraphics[width=0.4\textwidth]{figures/zelle148_IMG_1903m.jpg}\\[2mm]
\includegraphics[width=0.4\textwidth]{figures/zelle148_IMG_1901m.jpg}
\end{tabular}}
&
\begin{tabular}[b]{c}
\subfloat[Right]{\label{fig:right}%
\includegraphics[width=0.4\textwidth]{figures/Zelle148ScoreCut.pdf}}
\end{tabular}
\end{tabular}
\caption{Full caption}
\label{fig:both}
\end{figure}
\end{document}
以下是输出,
答案2
使用subcaption
确实似乎解决了我的问题。我结合了minipage
和subfloat
:
\documentclass[a4paper]{book}
\usepackage[top=35mm, bottom=38mm, inner=40mm, outer=24mm]{geometry}
\usepackage[hang,small]{caption}
\usepackage{subcaption} % !!!
\usepackage{graphicx}
\begin{document}
As shown in Fig.~\ref{fig:right}...
\begin{figure}
\centering
\begin{subfigure}{0.39\textwidth}
\centering
\includegraphics[width=1\textwidth, trim=0 0 0 -70mm]{figures/zelle148_IMG_1903m.jpg}\\[2mm]%
\includegraphics[width=1\textwidth, trim=0 -60mm 0 0]{figures/zelle148_IMG_1901m.jpg}%
\caption{Left}\label{fig:left}
\end{subfigure}
\begin{subfigure}{0.58\textwidth}
\centering
\includegraphics[width=1\textwidth, trim=-2mm 0 0 0]{figures/Zelle148ScoreCut.pdf}%
\caption{Right}\label{fig:right}
\end{subfigure}
\caption{Full caption}
\label{fig:both}
\end{figure}
\end{document}
是否有人有比使用负面黑客技术更好的解决方案trim
来实现左侧和右侧的垂直居中,同时保持子标题处于相同的垂直位置?