如何显示交叉引用对象的页码,但前提是该对象位于不同的页面上?

如何显示交叉引用对象的页码,但前提是该对象位于不同的页面上?

我正在创建一个名为的命令,\fullref{<label>}该命令接受一个标签并输出标记对象的编号和名称,以及可选的页码,如果该对象位于与交叉引用调用发生的页面不同的页面上,则可以在该页上找到该对象。

例子:

让一个标签\label{chap_intro}和一个文本… as seen in chapter \fullref{chap_intro}.

如果它们在同一页面上,则文本将输出:

…如第 1.1 章“简介”所示。

如果它们在不同的页面上,则文本将输出:

…如第 1.1 章第 2 页“简介”所示。

到目前为止,这是我的命令:

乳胶

\newcommand{\fullref}[1]{\ref{#1}: "\nameref{#1}" \ifthenelse{
  \equal{\thepage}{\pageref{#1}} % if the current page and the referenced page are the same
 }
 {} % then do nothing
 { on page \pageref{#1}} % else append "on page …" if different
}

即使在同一页面上,它也显示“在第...页”。

我做错了什么?

答案1

瓦里雷夫包及其\vref用户宏可以完成您的\fullref宏所要完成的任务。

该软件包与 配合使用babel,并且它提供了自定义方法,当交叉引用对象恰好位于交叉引用调用上、附近或远处时,应如何排版。此自定义通过重新定义宏\reftextbefore\reftextfacebefore\reftextafter\reftextfaceafter和来实现\reftextfaraway;有关完整详细信息,请参阅软件包用户指南的第 5 节。

相关内容