我正在使用xr
和cleveref
包来引用另一个文档中的图表,使用与其他文档相同的图表和表格编号,如下所示这里。但是,对于非浮动图形和表格,我无法使用\@captype
。\extref
因此,我想获得cleveref
类型给定参考。但是,我找不到实现此目的的技术。
这是一个没有外部文档的 MWE xr
(因为我不认为这些复杂性对于这个问题并不重要,除非没有办法提取类型cleveref
)。
更新的 MWE(更准确地显示问题):
\documentclass{article}
\usepackage{graphicx}
\usepackage{cleveref}
\usepackage{caption}
\makeatletter
\newcommand{\extref}[1]{%
\@namedef{the\@captype}{\ref{#1}}%
}
\makeatother
\begin{document}
\begin{center}
\includegraphics{example-image-a.jpg}
\captionof{figure}{caption\label{fig:example}}
\end{center}
\begin{center}
\includegraphics{example-image-a.jpg}
\extref{fig:example}
\captionof{figure}{repeated}
\end{center}
Here is a reference: \cref{fig:example}.
\end{document}
答案1
这就是\namecref
目的:
\documentclass{article}
\usepackage{graphicx}
\usepackage{cleveref}
\begin{document}
\begin{figure}
\includegraphics{example-image-a.jpg}
\caption{caption\label{fig:example}}
\end{figure}
Here is a reference: \cref{fig:example}.
Now I want to know the label type: \namecref{fig:example}
\end{document}
编辑:获取正确的类型,而不是类型名称,如评论中所要求的那样:
\documentclass{article}
\usepackage{graphicx}
\usepackage{cleveref}
\makeatletter
\newcommand{\mycreftype}[1]{%
\cref@gettype{#1}{\@mytempvar}%
\@mytempvar}
\makeatother
\begin{document}
\begin{figure}
\includegraphics[width=\linewidth]{example-image-a.jpg}
\caption{caption\label{fig:example}}
\end{figure}
Here is a reference: \cref{fig:example}.
Now I want to know the label type: \mycreftype{fig:example}
\end{document}