回忆录:使用 subbottom 对齐多个图形

回忆录:使用 subbottom 对齐多个图形

我在 2x2 矩阵中有 4 个子图,其中左侧的图是宽度不同的图例,右侧的图是宽度相等的图。我希望​​第一列的图左对齐,右侧的图居中。

我正在使用 Memoir 类。这是 MWE:

\documentclass{memoir}% http://ctan.org/pkg/memoir
\usepackage{graphicx}% http://ctan.org/pkg/graphicx
\newsubfloat{figure}% Allow subfloats in figure environment

\begin{document}

    \begin{figure}
        \centering

        \subbottom[]{%
            \includegraphics[width=0.5\linewidth]{example-image-a}}
        \subbottom[Fig. B]{%
            \includegraphics[width=0.4\linewidth]{example-image-b}}
        \subbottom[]{%
            \includegraphics[width=0.3\linewidth]{example-image-a}}
        \subbottom[Fig. B]{%
            \includegraphics[width=0.4\linewidth]{example-image-b}}

        \caption{Left-align the `A's and center the `B's}
    \end{figure}

\end{document}

编译后的数据如下: 在此处输入图片描述

奖金: 删除标签 (a) 和 (c),并将标签 (b) 和 (d) 分别重新编号为 (a) 和 (c)。

另外一个选择将在图形环境中使用 minipages,但如果我这样做,图形将重新编号。这种情况的 MWE:

\documentclass{memoir}% http://ctan.org/pkg/memoir
\usepackage{graphicx}% http://ctan.org/pkg/graphicx
\newsubfloat{figure}% Allow subfloats in figure environment

\begin{document}

\begin{figure}
    \centering

    \begin{minipage}{\linewidth}
        \begin{minipage}{0.3\linewidth}
            \includegraphics[width=0.5\linewidth]{example-image-a}
        \end{minipage}
        \begin{minipage}{0.6\linewidth}
            \includegraphics[width=0.4\linewidth]{example-image-b}
        \end{minipage}
        \caption{This is a very very very long caption for figure 1}

        \vspace*{5mm}

        \begin{minipage}{0.3\linewidth}
            \includegraphics[width=0.3\linewidth]{example-image-a}
        \end{minipage}
        \begin{minipage}{0.6\linewidth}
            \includegraphics[width=0.4\linewidth]{example-image-b}
        \end{minipage}
        \caption{This is a very very very long caption for figure 2}
    \end{minipage}

    \caption{Outer caption}

\end{figure}


\end{document}

编译后如下所示: 在此处输入图片描述

看看它们是如何而不是Figure 0.3(a)和的Figure 0.3(b),它们被编号为独立的图形而不是子图。

请告诉我如何解决这个问题。

谢谢,卡维

答案1

楼主可能不感兴趣,因为这是一个老问题了。不过我也遇到过同样的问题,所以我必须找到解决办法。

原始发帖者所建议的解决方案{minipage}在一定程度上是可行的,我们可以删除子标签 (a) 和 (c),将第一列数字左对齐,并将第二列数字居中。MWE:

\documentclass{memoir}% http://ctan.org/pkg/memoir
\usepackage{graphicx}% http://ctan.org/pkg/graphicx
\newsubfloat{figure}% Allow subfloats in figure environment

\begin{document}

    \begin{figure}
        \centering
        \begin{minipage}{.5\linewidth}
            \includegraphics[width=\linewidth]{example-image-a}
            \includegraphics[width=0.6\linewidth]{example-image-a}
            \end{minipage}\hfill
            \begin{minipage}{.4\linewidth}
            \centering
        \subbottom[Fig. B]{%
            \includegraphics[width=\linewidth]{example-image-b}}
        \subbottom[]{%
            \includegraphics[width=\linewidth]{example-image-b}}
            \end{minipage}

        \caption{Left-align the `A's and center the `B's}
    \end{figure}

\end{document}

使用 minipage 的解决方案

但是 A 和 B 不是垂直对齐的......

为了获得 OP 想要的第一行和第二行 v 居中、第一列左对齐和第二列居中的对齐,我们可以使用环境{tabular}以及valign引入的选项ajustbox

\documentclass{memoir}% http://ctan.org/pkg/memoir
\usepackage[export]{adjustbox}% http://ctan.org/pkg/graphicx
\newsubfloat{figure}% Allow subfloats in figure environment

\begin{document}
    \begin{figure}
        \centering
        \begin{tabular}{lc}
            \includegraphics[width=.5\linewidth,valign=c]{example-image-a} &\subbottom[Fig. B]{%
            \includegraphics[width=.4\linewidth,valign=c]{example-image-b}}\\
            \includegraphics[width=0.3\linewidth,valign=c]{example-image-a} &\subbottom[]{%
            \includegraphics[width=.4\linewidth,valign=c]{example-image-b}}\\
            \end{tabular}
        \caption{Left-align the `A's and center the `B's}
    \end{figure}
\end{document}

表格解决方案

相关内容