如何在“枚举”和“子图”项目中制作一致的参考标签?

如何在“枚举”和“子图”项目中制作一致的参考标签?

我有一张有四个子图的图,每个子图对应一个定理中的一个子情况,标记为(A), (b, 和 (b分别使用enumitem包(参见下面的 MWE 和插图;注意定理后段落中的参考样式)。

梅威瑟:

\documentclass[a5paper]{scrartcl}

\usepackage{enumitem}
\setlist[enumerate,1]{label=\textnormal{(\emph{\alph*})}}
\setlist[enumerate,2]{labelindent=2\parindent,
label=\textnormal{(\emph{\roman*})},ref=\theenumi\textnormal{\emph{\roman*}}}

\usepackage{subcaption}

\newtheorem{theorem}{Theorem}

\begin{document}

\begin{theorem}
There are two cases and three subcases in this theorem:
\begin{enumerate}
\item \label{itm.a} About the first figure.
\item   About the other figures.
    \begin{enumerate}
    \item \label{itm.bi} About the second figure.
    \item \label{itm.bii} About the third figure.
    \end{enumerate}
\end{enumerate}
\end{theorem}

The theorem talks about \ref{itm.a}, \ref{itm.bi}, and \ref{itm.bii}.

See Figures~\ref{fig.a}, \ref{fig.bi}, and \ref{fig.bii}.

\begin{figure}
\begin{center}
\begin{subfigure}[t]{0.3\textwidth}
\centering
A
\caption{The first picture} \label{fig.a}
\end{subfigure}
%
\begin{subfigure}[t]{0.3\textwidth}
\centering
BI
\caption{The second picture} \label{fig.bi}
\end{subfigure}
%
\begin{subfigure}[t]{0.3\textwidth}
\centering
BII
\caption{The third picture} \label{fig.bii}
\end{subfigure}
\caption{Three different pictures.}
\end{center}
\end{figure}

\end{document}

平均能量损失

由于每个子图都与定理中的一个子情况完全对应,因此我希望子图的标签与相应的子情况相同,即(A), (b, 和 (b,并且对这些图的引用也应如此显示。具体来说,我希望子图标签为(A), (b, 和 (b(而不是(a)、(b)和(c)),因此该文件最后一段带有参考文献的段落应为“参见图 1(A), 1(b,以及 1(b“”。

我怎样才能做到这一点?我想更大的问题是如何让两个不同的东西有相同的标签。

答案1

放置\renewcommand\thesubfigure{\ref{itm.a}}在子图内(标题之前)会将其名称替换为\ref{itm.a},无论其是什么。这也适用于引用子图。

括号会带来一些麻烦\ref{itm.a},当它出现在子图标题中时,默认情况下会被更多括号括起来。下面的示例通过包含\thesubfigure括号解决了这个问题。

\documentclass[a5paper]{scrartcl}

\usepackage{enumitem}
\setlist[enumerate,1]{label=\textnormal{(\emph{\alph*})}}
\setlist[enumerate,2]{labelindent=2\parindent,
label=\textnormal{(\emph{\roman*})},ref=\theenumi\textnormal{\emph{\roman*}}}

%% Remove the automatic parentheses and make them part of the label
\usepackage[labelformat=simple]{subcaption}
\renewcommand{\thesubfigure}{(\alph{subfigure})}

\newtheorem{theorem}{Theorem}

\begin{document}

\begin{theorem}
There are two cases and three subcases in this theorem:
\begin{enumerate}
\item \label{itm.a} About the first figure.
\item   About the other figures.
    \begin{enumerate}
    \item \label{itm.bi} About the second figure.
    \item \label{itm.bii} About the third figure.
    \end{enumerate}
\end{enumerate}
\end{theorem}

The theorem talks about \ref{itm.a}, \ref{itm.bi}, and \ref{itm.bii}.

See Figures~\ref{fig.a}, \ref{fig.bi}, and \ref{fig.bii}.

\begin{figure}
\begin{center}
\begin{subfigure}[t]{0.3\textwidth}\renewcommand{\thesubfigure}{\ref{itm.a}}
\centering
A
\caption{The first picture} \label{fig.a}
\end{subfigure}
\quad
\begin{subfigure}[t]{0.3\textwidth}\renewcommand\thesubfigure{\ref{itm.bi}}
\centering
BI
\caption{The second picture} \label{fig.bi}
\end{subfigure}
\quad
\begin{subfigure}[t]{0.3\textwidth}\renewcommand\thesubfigure{\ref{itm.bii}}
\centering
BII
\caption{The third picture} \label{fig.bii}
\end{subfigure}
\caption{Three different pictures.}
\end{center}
\end{figure}

\begin{figure}
  \begin{subfigure}[t]{0.5\textwidth}
    \centering
    Another subfigure
    \caption{Testing to ensure that captions on other subfigures still show with parentheses}
  \end{subfigure}
  \caption{Testing captions on other figures}
\end{figure}

\end{document}

当然,如果您经常这样做,您可能需要为其定义一个宏。同样的技巧也适用于重命名表格、图形等(分别使用\thetable、 、 代替)。\thefigure\thesubfigure

相关内容