确定交叉引用的位置

确定交叉引用的位置

我试图确定哪些交叉引用远离其标签/锚点,或者更一般地确定整个文档中交叉引用的位置。

\documentclass{article}
\usepackage{varioref}
\usepackage{hyperref}
\usepackage{cleveref}

\begin{document}

\section{Some section}
A cross-reference to \Vref{fig:1} and to \Cref{fig:2}

\begin{figure}
\caption{First figure\label{fig:1}}
\vspace{50pt}
\end{figure}

\section{Some other section}
Another cross-reference to \Vref{fig:1}.

\clearpage

\begin{figure}
\caption{Second figure\label{fig:2}}
\vspace{50pt}
\end{figure}

\end{document} 

我一直在使用\Cref,或者\Vref我的想法是使用以下方法来修补\@cref和记录位置\zsavepos

\usepackage{etoolbox}
\usepackage{zref-savepos}
\makeatletter
\newcounter{crefa}
\pretocmd{\@cref}{\stepcounter{crefa}\label{crefa@@@#2@@@\thecrefa}\zsavepos{crefa@@@#2@@@\thecrefa}}{}
\makeatother

但是这会在每个数字后面留下一个空格(IE第一个交叉引用是(Figure 1 )而不是(Figure 1)。碰巧的是,\apptocmd在这种情况下使用有所帮助,但有没有更简单的解决方案?

相关内容