我尝试使用 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
支持标签扩展。hyperref
nameref
titleref
ntheorem
在通过 导入外部引用之前,必须先存在这些包,以便\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 项目。之后,问题就解决了。