使用 subcaption 包将子标题标签放置在子图的右上角

使用 subcaption 包将子标题标签放置在子图的右上角

我正在尝试使用包将子标题标签放置在子图的右上角\subcaption。我已经设法通过设置做到这一点margin,但我遇到了一些问题:

  • 我希望有一个适用于所有数字的自动方法,而不是在正确的时间反复试验margin={a, b}
  • 我认为我不明白边距设置到底起什么作用。在我的论文中,一些图/子图在设置了相同的边距的情况下会有不同的结果,例如,不会向右移动太远,导致两个子图垂直偏移等。

下面是一个 MWE,显示了我希望标签放置的位置,但是我无法让第二点中描述的行为在我的论文文档之外复制(它相当大,我不知道是什么导致了交互不佳 - 希望有一种更好的方法可以将这些标签放在我想要的位置,或者正确理解设置,margin可以避免这些问题):

\documentclass[12pt]{report}

\usepackage{graphicx}
\usepackage{caption}
\usepackage{subcaption}

\captionsetup[subfigure]{
    singlelinecheck = off,
%   margin = {-6mm, 0mm},
}

\begin{document}
    
    %
    \begin{figure}[tbp]
        \centering
        %
        \begin{subfigure}[t]{0.4\linewidth}
            \captionsetup{margin={-4mm, 0mm}}
            \centering
            \subcaption{}
            \includegraphics[height=3cm, width=5cm]{example-image-a}
        \end{subfigure}
        %
        \qquad
        %
        \begin{subfigure}[t]{0.4\linewidth}
            \captionsetup{margin={8mm, 0mm}}
            \centering
            \subcaption{}
            \includegraphics[height=3cm, width=2.5cm]{example-image-b}
        \end{subfigure}
        %
        \caption{Figure caption.}
    \end{figure}
    %
    
\end{document}

答案1

需要两件事。

(1)使用全局变量\captionsetup将子标题放在所有图形的左上角。

\captionsetup[subfigure]{% changed <<<<<<<<<<<<<<<<
        singlelinecheck = false,
        justification=raggedright, 
        margin = {-3ex, 0mm}, % make margin font size dependent
}

(左边距取决于字体大小。)

(2)将子图的宽度设置为等于内部图的宽度。

您可以选择任意水平分隔。子图和主标题将在页面上水平居中。

A

\documentclass[12pt]{report}

\usepackage{graphicx}
\usepackage{caption}
\usepackage{subcaption}

\captionsetup[subfigure]{% changed <<<<<<<<<<<<<<<<
        singlelinecheck = false,
        justification=raggedright, 
        margin = {-3ex, 0mm}, % make margin font size dependent
}

\usepackage{showframe}% ONLY to show the margins <<<<<<<<<

\begin{document}

\begin{figure}[tbp]
\centering  
\begin{subfigure}[t]{5cm}% changed <<<<<
    \subcaption{}
    \includegraphics[height=3cm, width=5cm]{example-image-a}
\end{subfigure} 
\hspace*{70pt}% set figure separation
\begin{subfigure}[t]{2.5cm}% changed <<<<<
    \subcaption{}
    \includegraphics[height=3cm, width=2.5cm]{example-image-b}
    \end{subfigure}
\caption{Figure caption.}
\end{figure}

\end{document}

相关内容