我知道我可以从外部文档中引用方程式、章节等,如下例所示。
但是在我的示例中,如何包含外部文档的名称
主要结果可以在 \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 或更新版本可获得最佳效果。