如何在嵌套子图环境中增加计数器?

如何在嵌套子图环境中增加计数器?

我想添加嵌套子图环境的自动编号。我发现以下回答,它显示了如何手动向我的子图添加额外的阿拉伯数字,但我希望在另一个“子图”环境内的每个“子图”上都有这个编号。

有没有办法检查AtBeginEnvironment它是否是嵌套环境并自动执行此操作?并在外部子图环境之后重置子子图计数器,并在最后一个嵌套子图之后重置子图计数器?

\documentclass{scrbook}
\usepackage[demo]{graphicx}
\usepackage{cleveref}
\usepackage{subcaption}
\newcounter{subsubfigure}

\begin{document}
\chapter{Test}
\section{Test}
\begin{figure}
  \begin{subfigure}{0.4\textwidth}
    \centering
    \includegraphics[width=.95\textwidth]{figa}
    \caption{}
    \label{fig:a}
  \end{subfigure}%
  \hfill
  \begin{subfigure}{0.6\textwidth}
    \begin{subfigure}{0.64\textwidth}
      \refstepcounter{subsubfigure} %TODO
      \renewcommand\thesubfigure{\alph{subfigure}\arabic{subsubfigure}} %TODO
      \centering
      \includegraphics{figb1}
      \caption{}
      \label{fig:b1}
    \end{subfigure}
    \hfill
    \begin{subfigure}{0.32\textwidth}
      \addtocounter{subfigure}{-1} %TODO
      \refstepcounter{subsubfigure} %TODO
      \renewcommand\thesubfigure{\alph{subfigure}\arabic{subsubfigure}} %TODO
      \centering
      \includegraphics{figb2}
      \caption{}
      \label{fig:b2}
    \end{subfigure}
    \addtocounter{subfigure}{-1} %TODO
    \caption{Example}
  \end{subfigure}
  \setcounter{subsubfigure}{0} %TODO
  \caption[Examples]{Example \subref{fig:a}, Example \subref{fig:b1} and Example \subref{fig:b2}}
  \label{fig:Examples}
\end{figure}

\end{document}

图形部分的输出: 图形环境的输出

答案1

我不确定如何从 完成AtBeginEnvironment,但您可以定义环境以自动对计数器进行适当的更改。在此示例中,我采用了您的代码并添加了一个subsubfigure环境,以及一个subsubfigures环境,其中应放置单个子图的所有子子图,以便subsubfigure在子图末尾重置计数器。

它可能不是最好的实现,但它确实正确地更新了计数器。

\documentclass{scrbook}
\usepackage[demo]{graphicx}
\usepackage{cleveref}
\usepackage{subcaption}

\newcounter{subsubfigure}
\newenvironment{subsubfigures}{
  \refstepcounter{subfigure}
  }{
  \addtocounter{subfigure}{-1}
  \setcounter{subsubfigure}{0}
}
\newenvironment{subsubfigure}[1]{
  \renewcommand{\thesubfigure}{\alph{subfigure}\arabic{subsubfigure}}
  \begin{subfigure}{#1}
    \refstepcounter{subsubfigure}
    \addtocounter{subfigure}{-1}
  }{
  \end{subfigure}
  \renewcommand{\thesubfigure}{\alph{subfigure}}
}

\begin{document}

\chapter{Test}
\section{test}

\begin{figure}[h]
  \begin{subfigure}{0.4\textwidth}
    \centering
    \includegraphics[width=.95\linewidth]{figa}
    \caption{}
    \label{fig:a}
  \end{subfigure}%
  \hfill
  \begin{subfigure}{0.64\textwidth}
  \begin{subsubfigures}
    \begin{subsubfigure}{0.32\textwidth}
      \centering
      \includegraphics[width=\linewidth]{figb1}
      \caption{}
      \label{fig:b1}
    \end{subsubfigure}
    \hfill
    \begin{subsubfigure}{0.32\textwidth}
      \centering
      \includegraphics[width=\linewidth]{figb2}
      \caption{}
      \label{fig:b2}
    \end{subsubfigure}
    \end{subsubfigures}
    \caption{Example}
  \end{subfigure}
  \caption[Examples]{Example \subref{fig:a}, Example \subref{fig:b1} and Example \subref{fig:b2}}
  \label{fig:Examples}
\end{figure}

\begin{figure}[h]
  \begin{subfigure}{0.64\textwidth}
  \begin{subsubfigures}
    \begin{subsubfigure}{0.32\textwidth}
      \centering
      \includegraphics[width=\linewidth]{figb1}
      \caption{}
      \label{fig:a1}
    \end{subsubfigure}
    \hfill
    \begin{subsubfigure}{0.32\textwidth}
      \centering
      \includegraphics[width=\linewidth]{figb2}
      \caption{}
      \label{fig:a2}
    \end{subsubfigure}
    \end{subsubfigures}
    \caption{Example}
  \end{subfigure}%
  \hfill
  \begin{subfigure}{0.4\textwidth}
    \centering
    \includegraphics[width=.95\linewidth]{figa}
    \caption{}
    \label{fig:b}
  \end{subfigure}
  \caption[Examples]{Example \subref{fig:a1}, Example \subref{fig:a2} and Example \subref{fig:b}}
  \label{fig:Examples2}
\end{figure}

\end{document}

相关内容