{}\edef \Hy@tempb {cite.\XR@prefix 在 \externaldocument 中引用相同 bibtex 条目时出错

{}\edef \Hy@tempb {cite.\XR@prefix 在 \externaldocument 中引用相同 bibtex 条目时出错

.tex我的文件夹中有以下文件

main.tex
---
\documentclass[11pt]{article}
\usepackage{hyperref}

\title{}
\author{}

\begin{document}

\maketitle

\cite{entry}

\bibliography{bib}{}
\bibliographystyle{plain}


\end{document}

在同一个文件夹中,我有另一个文件,它使用主文件作为\externaldocumententry引用同一文件中的同一条目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}

但这并不妨碍您获得多重定义的标签,因此也应该使用外部文档的前缀。

相关内容