xr-hyper 在对外部文档的引用中包含文件名

xr-hyper 在对外部文档的引用中包含文件名

我知道我可以从外部文档中引用方程式、章节等,如下例所示。

但是在我的示例中,如何包含外部文档的名称

主要结果可以在 \nameref{B-sec:main-result} 中找到

应该显示(可能包含在我使用 [] 指示的超链接中

主要结果可以在[docB Main result]中找到

docA.tex

\documentclass{article} 
\usepackage{xr-hyper} 
\usepackage[colorlinks]{hyperref} 
\externaldocument[B-]{docB}% <- full or relative path 
\externaldocument[C-]{./external/docC}% <- full or relative path 
\begin{document}
\section{Introduction}
\label{sec:introduction}
This is a test for math.
\begin{equation}
  E=mc^2 \label{eq:1}
\end{equation}
This is a second test for math.
\begin{equation}
  r = \sqrt{x^2 + y^2} \label{eq:2}
\end{equation}
In document B Eq.~~(\ref{B-eq:x})

Now test  (\autoref{C-eq:docC:1})

The main result can be found in \nameref{B-sec:main-result}
\end{document}

docB.tex

\documentclass{article}
\usepackage{xr-hyper}
\usepackage[colorlinks]{hyperref}
\externaldocument[A-]{docA}
\begin{document}
\setcounter{equation}{5}
\section{Main result}
\label{sec:main-result}
  As was shown in Eq.~(\ref{A-eq:1}) is it
  ... or in Eq.~(\ref{A-eq:2}) is ...
  \begin{equation}
    \mathrm{e}^{i\pi}-1=0 \label{eq:x}
  \end{equation}
\end{document}

答案1

xr-hyper 将文件名存储在 \newlabel 的最后一个参数中,您可以使用 \refcount 等方式检索它。您还可以使用 \externaldocument 的第二个可选参数更改路径:

\documentclass{article} 
\usepackage{xr-hyper} 
\usepackage[colorlinks]{hyperref} 
\externaldocument[B-]{docB}% <- full or relative path 
\externaldocument[C-]{docB}[some-other-path]% <- full or relative path 
\usepackage{refcount}
\begin{document}
The main result can be found in \nameref{B-sec:main-result}
in file \getrefbykeydefault{B-sec:main-result}{url}{??}
and file \getrefbykeydefault{C-sec:main-result}{url}{??}
\end{document}

给出

在此处输入图片描述

确切的输出取决于是否使用了 hyperref(在主文档和外部文档中),也取决于 LaTeX 和 hyperref 的版本,因为我们最近扩展了 LaTeX-\newlabel 以与 hyperref 用法保持一致。使用新的 LaTeX hyperref 并非严格需要获取文件名。但将 xr-hyper 与所涉及的更改对齐并非易事,并且至少一个先前的 hyperref 版本存在错误并丢失了文件名。使用 hyperref v7.01g 和 latex 2023-11-01 或更新版本可获得最佳效果。

相关内容