我正在尝试使用包将子标题标签放置在子图的右上角\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)将子图的宽度设置为等于内部图的宽度。
您可以选择任意水平分隔。子图和主标题将在页面上水平居中。
\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}