我怎样才能附加\centering
到\begin{subfigure}
(从副标题包)?我试过使用etoolbox
,但由于某种原因,它不适用于subfigure
环境(仅适用于figure
环境)。
这里有一个 MWE 来演示我的问题。
\documentclass{article}
\usepackage{etoolbox}
\usepackage[margin=1em]{subcaption}
\usepackage{mwe}
\apptocmd\figure{\centering}
\apptocmd\subfigure{\centering}
\begin{document}
\begin{figure}
\includegraphics[width=4cm]{example-image}
\caption{qqq qqq qqq qqq qqq qqq }
\end{figure}
\begin{figure}
\begin{subfigure}{4cm}
\includegraphics[width=2cm]{example-image-a}
\caption{abc abc abc abc abc }
\end{subfigure}%
\begin{subfigure}{4cm}
\includegraphics[width=2cm]{example-image-b}
\caption{abc abc abc abc abc abc abc abc abc abc }
\end{subfigure}
\caption{qqq qqq qqq qqq qqq qqq }
\end{figure}
\end{document}
结果(图像 a、b 放错位置):
我也尝试过\AtBeginEnvironment{subfigure}{\centering}
并用 手动修补它\let
,但没有成功。
答案1
您的修补程序\figure
不正确:您失去了指定浮动定位参数的可能性,因此不行\begin{figure}[htp]
。
最好深入一点。我建议使用两个补丁figure
:第一个\centering
补丁只添加它(如果需要,请取消注释这三行),第二个补丁只是将它添加到所有浮点数中。
很难区分subfigure
和subtable
。将它们居中的补丁可以在使用 \g@addto@macro 将 \centering 添加到 subcaption 中的所有子图
\documentclass{article}
\usepackage{etoolbox}
\makeatletter
% Do the patch before loading caption!
% This patch adds \centering only to figure
%\apptocmd{\@xfloat}{\position@float{#1}}{}{}
%\def\position@float#1{\csname position#1\endcsname}
%\def\positionfigure{\centering}
% This patch adds \centering to all floats
\appto\@floatboxreset{\centering}
\makeatother
\usepackage[margin=1em]{subcaption}
\makeatletter
\apptocmd\subcaption@minipage{\centering}{}{}
\makeatother
\usepackage{mwe}
\begin{document}
\begin{figure}
\includegraphics[width=4cm]{example-image}
\caption{qqq qqq qqq qqq qqq qqq }
\end{figure}
\begin{figure}
\begin{subfigure}{4cm}
\includegraphics[width=2cm]{example-image-a}
\caption{abc abc abc abc abc }
\end{subfigure}%
\begin{subfigure}{4cm}
\includegraphics[width=2cm]{example-image-b}
\caption{abc abc abc abc abc abc abc abc abc abc }
\end{subfigure}
\caption{qqq qqq qqq qqq qqq qqq }
\end{figure}
\end{document}
请注意必须\@xfloat
在加载之前修补subcaption
或caption
。
答案2
说到使用表格......
\documentclass{article}
\usepackage{mwe}
\begin{document}
\null\vfil\begin{figure}[h]
\centering
\includegraphics[width=4cm]{example-image}
\caption{qqq qqq qqq qqq qqq qqq }
\end{figure}
\begin{figure}[h]
\centering
\begin{tabular}{cc}
\includegraphics[width=2cm]{example-image-a}&
\includegraphics[width=2cm]{example-image-b}\\
(a) abc abc abc abc abc&
\parbox[t]{4cm}{(b) abc abc abc abc abc abc abc abc abc abc}
\end{tabular}
\caption{qqq qqq qqq qqq qqq qqq }
\end{figure}
\end{document}