请参阅引用表格的页码

请参阅引用表格的页码

我使用 autoref 来引用文中的表格,例如

在 中\autoref{tab:main_result},您可以看到...

我希望能够引用一个列出所调用页面的变量tab:main_result。最终目标是能够将该引用放入表格注释中(例如“有关此表格的讨论,请参阅第 XX 页”)。

这可能吗?我知道我可以参考表格注释中的部分,但我希望能够参考页面。

答案1

像这样吗?

在此处输入图片描述

\documentclass{article}
\usepackage{varioref}
\usepackage[colorlinks]{hyperref}
\usepackage[noabbrev]{cleveref}  
\begin{document}  
\begin{table} \caption{A}\label{tab:main} \end{table}
\clearpage \null \clearpage

In \vref{tab:main}, you can see \dots

For a discussion of \cref{tab:main}, see \cpageref{tab:main}.
\end{document}

答案2

我第一次读到这个时,以为问题是在询问一个命令,该命令给出包含对给定表的引用的页面列表。也就是说,类似于反向引用for\autoref而不是 for \cite。重读该问题可能没有要求这样做,但尽管如此,我认为这是一个有趣的问题,下面的代码是提供此功能的一种方法。

该代码通过重新定义\autoref命令来工作,以便每当调用它时,它首先将当前页码添加到相应的latex3序列。在文档末尾,此序列将保存到辅助文件中。一旦文档至少被编译一次,该命令\pagerefs{...}可用于打印引用出现的页面列表。因此,例如,下面的 MWE 产生:

在此处输入图片描述

以下是代码:

\documentclass{article}
\usepackage{lipsum}
\usepackage{etoolbox}
\usepackage{xparse}
\usepackage{hyperref}

\ExplSyntaxOn
\NewDocumentCommand\PageReferences{mm}{
  \seq_if_exist:cF {g__pages_#1_seq}{
    \seq_new:c {g__pages_#1_seq}
    \seq_gset_from_clist:cn {g__pages_#1_seq} {#2}
  }
}
\RenewDocumentCommand\autoref{sm}{
  \seq_if_exist:cF {g_pages_#2_seq}{
    \seq_new:c {g_pages_#2_seq}
    \AtEndDocument{
      \iow_now:cx { @auxout } {
        \token_to_str:N \PageReferences{#2} { \seq_use:cn {g_pages_#2_seq}{,}}
      }
    }
  }
  \seq_if_in:cxF {g_pages_#2_seq} {\thepage} {
        \seq_gput_right:cx {g_pages_#2_seq} {\thepage}
  }

  % now call the real autoref, which is really \HyPsd@autoref
  \IfBooleanTF{#1}{\csuse{HyPsd@autoref}*{#2}}{\csuse{HyPsd@autoref}{#2}}
}
\NewDocumentCommand\pagerefs{m}{
  \seq_if_exist:cTF {g__pages_#1_seq}{
   \seq_use:cnnn {g__pages_#1_seq} { ~and~ } { ,~ } { ,~and~ }
  }{??}
}
\ExplSyntaxOff

\begin{document}

\begin{equation}\label{E:1} 1+1=2 \end{equation}
  Look at \autoref{E:1}! It occurs on pages \pagerefs{E:1}.

  \lipsum

  Look at \autoref{E:1}

  \lipsum

  Look at \autoref{E:1}

  \lipsum

  Look at \autoref{E:1}

  \lipsum

  Look at \autoref{E:1}

  \lipsum

  Look at \autoref{E:1}

  \lipsum

\end{document}

相关内容