我正在使用包\subcaptionbox
提供的命令subcaption
来获取子图。
\documentclass{article}
\usepackage{graphicx}
\usepackage{subcaption}
\begin{document}
\begin{figure}
\centering
% \setcounter{subfloat}{10}
\subcaptionbox{exa\label{exa}}[.4\textwidth]{\includegraphics[width=2cm]{example-image-a}}
\subcaptionbox{exb\label{exb}}[.4\textwidth]{\includegraphics[width=2cm]{example-image-b}}
\caption{total}\label{total}
\end{figure}
\ref{exa}
\end{document}
现在我想更改 subcaptionbox 的计数器数字。例如,我想让 subcaptionbox 的计数器从 10 开始,而不是从 1 开始。我看过,subcaption.sty
但我没有得到计数器名称的信息\subcaptionbox
。我该如何更改它的计数器?
这里我要澄清一下我的问题。我希望子标题标记为(k)
、等(l)
,(m)
而不是(a)
、等(b)
。(c)
答案1
看起来很奇怪。在第一个命令之前\subcaptionbox
操作计数器的任何命令都不会起作用。但从第二个命令开始,一切正常。所以在前面添加一个subfigure
\subcaptionbox
\subcaptionbox
\subcaptionnox*{}{}
\setcounter{subfigure}{10}
\documentclass{article}
\usepackage{graphicx}
\usepackage{subcaption}
\begin{document}
\begin{figure}
\centering
\subcaptionbox*{}{}
\setcounter{subfigure}{10}
\subcaptionbox{exa\label{exa}}[.4\textwidth]{\includegraphics[width=2cm]{example-image-a}}
\subcaptionbox{exb\label{exb}}[.4\textwidth]{\includegraphics[width=2cm]{example-image-b}}
\caption{total}\label{total}
\end{figure}
\ref{exa}
\end{document}
答案2
第一个\subcaption
将执行\stepcounter{figure}
重置子图计数器的操作。它首先检查计数器caption@flags
以确定是否执行了步骤操作,代码有点像(在定义中\caption@subtypehook
,仅在 C++ 中说明)
enum CaptionFlag {
ContinuedFloat = 0b001;
Caption = 0b010;
Subcaption = 0b100;
};
int& flag= GetCounter("caption@flags");
if ((flag & Caption) == 0 && (flag & Subcaption) == 0)
{
if (flag & ContinuedFloat)
flag &= ~ContinuedFloat;
else
StepCounter("figure");
flag |= Subcaption;
}
为了避免这种情况,请手动\stepcounter{figure}
将其设置caption@flags
为 1-7(我没有深入研究,但 4 总是安全的)
\documentclass{article}
\usepackage{graphicx}
\usepackage{subcaption}
\begin{document}
\begin{figure}
\centering
\stepcounter{figure}
\setcounter{caption@flags}{4}
\setcounter{subfigure}{10}
\subcaptionbox{exa\label{exa}}[.4\textwidth]{\includegraphics[width=2cm]{example-image-a}}
\subcaptionbox{exb\label{exb}}[.4\textwidth]{\includegraphics[width=2cm]{example-image-b}}
\caption{total}\label{total}
\end{figure}
\ref{exa}
\end{document}
答案3
可以用来\phantomsubcaption
跳过子图(a)至(j):
\documentclass{article}
\usepackage{graphicx}
\usepackage{subcaption}
\begin{document}
\begin{figure}
\centering
{\phantomsubcaption}% (a)
{\phantomsubcaption}% (b)
{\phantomsubcaption}% (c)
{\phantomsubcaption}% (d)
{\phantomsubcaption}% (e)
{\phantomsubcaption}% (f)
{\phantomsubcaption}% (g)
{\phantomsubcaption}% (h)
{\phantomsubcaption}% (i)
{\phantomsubcaption}% (j)
\subcaptionbox{exa\label{exa}}[.4\textwidth]{\includegraphics[width=2cm]{example-image-a}}
\subcaptionbox{exb\label{exb}}[.4\textwidth]{\includegraphics[width=2cm]{example-image-b}}
\caption{total}\label{total}
\end{figure}
\ref{exa}
\end{document}
另外,也可以使用组合\phantomsubcaption
plus \setcounter{subfigure}{...}
。这基本上与 @Misaya 和 @TuffContender 的解决方案相同,但使用的\phantomsubcaption
是空\subcaptionbox
或内部标志操作。
\documentclass{article}
\usepackage{graphicx}
\usepackage{subcaption}
\begin{document}
\begin{figure}
\centering
{\phantomsubcaption}% (a)
\setcounter{subfigure}{10}
\subcaptionbox{exa\label{exa}}[.4\textwidth]{\includegraphics[width=2cm]{example-image-a}}
\subcaptionbox{exb\label{exb}}[.4\textwidth]{\includegraphics[width=2cm]{example-image-b}}
\caption{total}\label{total}
\end{figure}
\ref{exa}
\end{document}
(就我个人而言,我更喜欢我的第一个解决方案而不是第二个解决方案,因为它不依赖于子标题包的内部工作方式。)