![确定交叉引用的位置](https://linux22.com/image/371450/%E7%A1%AE%E5%AE%9A%E4%BA%A4%E5%8F%89%E5%BC%95%E7%94%A8%E7%9A%84%E4%BD%8D%E7%BD%AE.png)
我试图确定哪些交叉引用远离其标签/锚点,或者更一般地确定整个文档中交叉引用的位置。
\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
在这种情况下使用有所帮助,但有没有更简单的解决方案?