当一个图形包含多个子图形时,我试图找到一种方法来引用主图形的计数器。使用\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
希望这对某人有帮助。