.tex
我的文件夹中有以下文件
main.tex
---
\documentclass[11pt]{article}
\usepackage{hyperref}
\title{}
\author{}
\begin{document}
\maketitle
\cite{entry}
\bibliography{bib}{}
\bibliographystyle{plain}
\end{document}
在同一个文件夹中,我有另一个文件,它使用主文件作为\externaldocument
,还entry
引用同一文件中的同一条目bib
:
secondary.tex
---
\documentclass[11pt]{article}
\usepackage{hyperref}
\usepackage{xr}
\externaldocument{main}
\title{}
\author{}
\begin{document}
\maketitle
\cite{entry}
\bibliography{bib}{}
\bibliographystyle{plain}
\end{document}
问题是,当我编译时,secondary.tex
出现以下错误,指向引用:
--- TeX said ---
<argument> ... {}\edef \Hy@tempb {cite.\XR@prefix
entry\@extra@b@citeb }\ifx...l.15 \cite{entry}
其他症状:
- 如果我删除则没有错误
hyperref
- 如果我关闭则没有错误
\externaldocument
- 如果
entry
仅在其中一份文档中被引用,则不会出现错误 - 即使出现错误,如果我坚持运行
bibtex
,然后pdflatex
再运行几次,文档实际上就可以编译成功,参考书目和所有内容。所以错误就被忽略了。
答案1
仅当 aux 文件不包含 bibentry 命令时才会出现错误(因此编译顺序至关重要)。
您可以使用 xr-hyper 包来避免该错误:
\usepackage{xr-hyper}
\usepackage{hyperref}
但这并不妨碍您获得多重定义的标签,因此也应该使用外部文档的前缀。