我有两份文件:a.tex
\documentclass[12pt,longbibliography]{article}
\usepackage{hyperref}
\usepackage{xr}
\begin{document}
\section{Section}\label{sec}
Read this \cite{book}.
\begin{equation}\label{eq}
1+1=2
\end{equation}
\begin{thebibliography}{10}
\bibitem{book}
Henry James
\newblock Book .
\bibitem{book2}
Mark Smith
\newblock Book 2.
\end{thebibliography}
\end{document}
和b.tex
:
\documentclass{article}
\usepackage{xr}
\externaldocument{a}
\usepackage{xcite}
\externalcitedocument{a}
\begin{document}
Read Eq. (\ref{eq}) in \cite{book2}.
\end{document}
这里我引用book
了a.pdf
,并book2
在引用了b.pdf
,并且book
和book2
都出现在了的参考文献列表中a.pdf
。这样就很好了。
a.tex
但是,当我还需要交叉引用来自的方程式时b.tex
,我在 pdf 中得到了一个奇怪的方程式名称:这里是 b.pdf
你们知道如何解决这个问题并在 b.pdf 中获得适当的方程参考吗?
答案1
注意在最近的版本中xcite
已合并,xr
因此您不需要同时加载两者,但它应该基本上以相同的方式工作,并且在 texlive 2019 中为我工作
a.tex
没有提到b
所以应该看起来像
\documentclass{article}
\begin{document}
This interesting book \cite{book}.
\begin{thebibliography}{10}
\bibitem{book}
M. Hill.
\newblock Book.
\newblock 2018.
\bibitem{book2}
M. Grace.
\newblock Other book.
\newblock 2019.
\end{thebibliography}
\end{document}
您需要先处理它,而不是删除它a.aux
。
然后b.tex
应该看起来像
\documentclass{article}
\usepackage{xr}
%\usepackage{xcite}
\externaldocument{a}
%\externalcitedocument{a}
\begin{document}
Please read \cite{book2}.
\end{document}
您需要在a.aux
可用的情况下处理该问题。在旧版本中,您需要xcite
取消注释这些行。
答案2
正如评论中指出的那样,问题在于hyperref
和xr
包之间的冲突。通过删除hyperref
并替换xr
,xr-hyper
它就可以正常工作了。以下是a.tex
:
\documentclass[12pt,longbibliography]{article}
\begin{document}
\section{Section}\label{sec}
Read this \cite{book}.
\begin{equation}\label{eq}
1+1=2
\end{equation}
\begin{thebibliography}{10}
\bibitem{book}
Henry James
\newblock Book .
\bibitem{book2}
Mark Smith
\newblock Book 2.
\end{thebibliography}
\end{document}
这是b.tex
\documentclass{article}
\usepackage{xr-hyper}
\externaldocument{a}
\usepackage{xcite}
\externalcitedocument{a}
\begin{document}
Read Eq. (\ref{eq}) in \cite{book2}.
\end{document}