我正在尝试将subcaption
子图居中这个答案。
但是,编译失败,
! Argument of \subcaption@minipage has an extra }.
<inserted text>
\par
l.6 \g@addto@macro\subcaption@minipage\centering
?
Process interrupted by user
有任何想法吗?
\documentclass{article}
\usepackage{subcaption}
\makeatletter
\g@addto@macro\subcaption@minipage\centering
\makeatother
\begin{document}
\begin{figure}
\begin{minipage}[b]{.5\linewidth}
\large A
\subcaption{A subfigure}\label{fig:1a}
\end{minipage}%
\begin{minipage}[b]{.5\linewidth}
\large B
\subcaption{Another subfigure}\label{fig:1b}
\end{minipage}
\caption{A figure}\label{fig:1}
\end{figure}
\end{document}
答案1
该函数\g@addto@macro
只能与无参数的宏一起使用。
\apptocmd
有了以下选择,您将更加幸运etoolbox
:
\usepackage{etoolbox}
\makeatletter
\apptocmd\subcaption@minipage{\centering}{}{}
\makeatother
但是,当然,您必须使用subfigure
而不是minipage
。
完整示例:
\documentclass{article}
\usepackage{subcaption}
\usepackage{etoolbox}
\makeatletter
\apptocmd\subcaption@minipage{\centering}{}{}
\makeatother
\begin{document}
\begin{figure}
\begin{subfigure}[b]{.5\linewidth}
\large A
\subcaption{A subfigure}\label{fig:1a}
\end{subfigure}%
\begin{subfigure}[b]{.5\linewidth}
\large B
\subcaption{Another subfigure}\label{fig:1b}
\end{subfigure}
\caption{A figure}\label{fig:1}
\end{figure}
\end{document}
答案2
在 2020 年,subcaption
将使用minipage
而不是subcaption@minipage
来创建新的“子”环境。这意味着\apptocmd\subcaption@minipage ....
不会改变包的实际行为,因为\subcaption@minipage
从未使用过。
subcaption
从1.3 版的源代码来看-
\caption@For{subtypelist}{%
\newenvironment{sub#1}%
{ ....
\subcaption@iminipage
....}%
{\subcaption@endminipage
\endminipage}}%
\def\subcaption@iminipage[#1]{%
\caption@withoptargs{\subcaption@iiminipage{#1}}}
\newcommand*\subcaption@iiminipage[3]{%
....
\minipage[#1]#2{#3}%
....}
修补所subcaption@iiminipage
取得的效果与七年前相同。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{subcaption}
\usepackage{etoolbox}
\usepackage{lipsum}
\makeatletter
\apptocmd\subcaption@iiminipage{\centering}{}{}
\makeatother
\begin{document}
\section{Introduction}
\lipsum[1][1-2]
\begin{figure}
\begin{subfigure}{\textwidth}
B
\caption{A}
\end{subfigure}
\caption{Caption}
\end{figure}
\end{document}