包裹xr-hyper

包裹xr-hyper

我尝试使用 xr 进行交叉引用,但得到的不是引用而是问号,并且还出现了警告:

Reference updateEq on page 1
undefined on input line 93

在我所指的文档中(文件名是 comet_main_NIPS.tex),我使用(如网络上的帖子所建议的那样):

\usepackage{hyperref}
\usepackage{xr}

我的方程定义为:

\begin{equation}
    \newW = \W^t +\eta G.
\label{updateEq}
\end{equation}

在我引用的文档中,我使用:

\usepackage{xr}
\externaldocument{comet_main_NIPS}

some text \ref{updateEq} some text

非常感谢你的帮助!

EDIT2:还注意到另一个警告

Warning: File 'tmp2.aux' not found or empty

问题集中在我的 sharelatex 环境上

EDIT1:正如评论中所建议的,这里有一个小例子:

文件:tmp2.tex

\documentclass{article} % For LaTeX2e

\usepackage{hyperref}
\usepackage{url}

\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{hyperref}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

\section{SECTION}
Here is an equation
\begin{equation}
    3 = 2+1 
\label{eq321}
\end{equation}
\end{document}

文件 tmp1.tex

\documentclass{article} % For LaTeX2e

\usepackage{hyperref}
\usepackage{url}

%% packages
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{hyperref}


\usepackage{xr}
\externaldocument{tmp2}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

\section{SECTION}
\subsection{TBD}
TBD \eqref{eq321} TBD
\subsection{TBD}
TBD
\end{document}

答案1

包裹xr-hyper

两个文件都使用包hyperref,然后xr-hyper可以使用:

文件tmp1.tex

\documentclass{article}              

\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{xr-hyper} 
\usepackage{hyperref} 

\externaldocument{tmp2}

\begin{document}
\section{SECTION}
\subsection{TBD} 
TBD \ref{eq321} TBD or \eqref{eq321}
\subsection{TBD}
TBD
\end{document}

xr-hyper需要加载包 hyperref

包裹zref-xr

zref-xr软件包的外部交叉引用模块zref也可用于导入普通的 LaTeX 标签。软件包通过/和包zref-xr支持标签扩展。hyperrefnamereftitlerefntheorem

在通过 导入外部引用之前,必须先存在这些包,以便\zexternaldocument使用正确的内部标签格式加载它们。由于nameref通常通过 加载hyperref\AtBeginDocument因此可以在 之前显式加载\zrefexternaldocument。例如:

\documentclass{article}

\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{hyperref}
\usepackage{nameref} 

\usepackage{zref-xr}

\zxrsetup{tozreflabel=false, toltxlabel=true, verbose}
\zexternaldocument*{tmp2}

\begin{document}
\section{SECTION}
\subsection{TBD} 
TBD \ref{eq321} TBD
\subsection{TBD}   
TBD
\end{document}

答案2

正如@user2476373 和@Heiko 所建议的,这是一个 ShareLatex 问题。以下是他们关于如何解决该问题的建议: https://www.sharelatex.com/learn/Kb/Cross_referencing_with_the_xr_package_in_ShareLaTeX

Overleaf.com 是 sharelatex 的替代品之一,它对这个问题的处理方式略有不同 - 请参阅此处:https://www.overleaf.com/latex/examples/example-using-xr-package-on-overleaf/tzzwtzrkjcpm#.WGjTQrZ95sO

答案3

在与@Heiko 的评论讨论后,我了解到该问题与 sharelatex 环境有关。

WRT 最小示例:我下载了为 tmp2 编译生成的 aux 文件。将其重命名为 tmp2.aux,然后将其上传到 ShareLatex 项目。之后,问题就解决了。

相关内容