参考几个子图的主图计数器

参考几个子图的主图计数器

当一个图形包含多个子图形时,我试图找到一种方法来引用主图形的计数器。使用\ref我得到例如“1a”,使用\subref我只得到“a”。有没有办法只获取主计数器,即“1”

当然,我可以\label在主标题中添加另一个标签,但我想知道是否还有其他方法,而不必在文档中添加更多标签。

谢谢你的帮助!

梅威瑟:

\documentclass{scrartcl}
\usepackage{graphicx, caption, subcaption}
\begin{document}
\begin{figure}
    \centering
    \begin{subfigure}{0.48\linewidth}
        \includegraphics[width=\linewidth]{example-image-a}
        \caption{}\label{fig:image_a}
    \end{subfigure}
    \hfill
    \begin{subfigure}{0.48\linewidth}
        \includegraphics[width=\linewidth]{example-image-b}
        \caption{}\label{fig:image_b}
    \end{subfigure}
    \caption{Figure \subref{fig:image_a}) and Figure \subref{fig:image_b}).}
\end{figure}
This is a reference to the subfigure: Figure \ref{fig:image_a}.

This is a reference to the letter of the subfigure: Figure \subref{fig:image_a}

This is a reference to the number of the figure only: ??? (wanted result: Figure 1)
\end{document}

在此处输入图片描述

答案1

我最终找到了解决方案。您可以修改该问题的答案:仅参考小节编号

您定义一个新的 referece 命令,例如,\mainref它仅返回图形计数器。实际语法取决于您是否使用 hyperref 包以及计数器中是否有子部分。您只需查看\newlabel辅助文件中的语法。对于上述问题中的 MWE,解决方案如下所示:

\makeatletter
\def\@firstoftwo@second#1#2{%
    \def\temp##1##2\@nil{##1}%
    \temp#1\@nil}
\newcommand\mainref[1]{%
    \expandafter\@setref\csname r@#1\endcsname\@firstoftwo@second{#1}%
}
\makeatother

如果您使用 hyperref 包并在标签中包含章节编号,则解决方案如下所示:

\makeatletter
\def\@firstoftwo@second#1#2#3#4#5{%
    \def\temp##1.##2##3\@nil{##1.##2}%
    \temp#1\@nil}
\newcommand\mainref[1]{%
    \expandafter\@setref\csname r@#1\endcsname\@firstoftwo@second{#1}%
}
\makeatother

希望这对某人有帮助。

相关内容