xr 无法找到外部文档中的引用

xr 无法找到外部文档中的引用

我尝试过了使用 xr 包获取文件之间的交叉引用。

我的主要文件是book.tex:

\documentclass[a4paper,10pt]{scrbook}
\usepackage{hyperref}

\begin{document}

\chapter{Beginning}
\label{ch1}

Foo

\input{chapter2.tex}

\end{document}

book.tex 包括 chapter2.tex:

\chapter{End}
\label{ch2}

Bar

我的辅助文档是 supplement.tex:

\documentclass{powerdot}

\usepackage{xr}

\externaldocument{book}

\begin{document}

\begin{slide}{Slide Title}
Reference A: \ref{ch1} page \pageref{ch1}

Reference B: \ref{ch2} page \pageref{ch2}
\end{slide}

\end{document}

book.tex 可以很好地编译,pdflatex book.tex但是当我latex supplement.tex遇到

LaTeX Warning: Reference `ch1' on page 1 undefined on input line 13.
LaTeX Warning: Reference `ch2' on page 1 undefined on input line 13.

所有文件都位于同一目录中,并且我在该目录中运行pdflatexlatex没有使用 -output-directory 标志。我也尝试了该xr-hyper包。

我还需要做什么才能让 supplement.tex 从 book.tex (及其包含的文件 chapter2.tex)中获取参考资料?

答案1

目前最先进的技术是\label-\(page)refLaTeX2e-kernel 被修改了超链接-包裹。

因此,如果 book.tex 加载超链接-package,则需要 supplement.tex

  1. 确实加载超链接-包也。
  2. 确实加载xr-hyper-package 而不是負責-包裹。
    xr-hyper-package 必须在之前加载超链接-包裹。)

(在我使用的平台(MiKTeX 2.9)上电源点-class 似乎仅在 dvi 模式下编译时才有效,产生的 .dvi 文件会导致 MiKTeX 的 dvi 预览器 YaP 崩溃,但可以通过 dvips 毫无问题地转换为 postscript 文件,进而可以通过 ps2pdf 转换为 .pdf 文件。)

书籍.tex:

\documentclass[a4paper,10pt]{scrbook}
\usepackage{hyperref}

\begin{document}

\chapter{Beginning}
\label{ch1}

Foo

\input{chapter2.tex}

\end{document}

第2章.tex:

\chapter{End}
\label{ch2}

Bar

补充.tex:

\documentclass{powerdot}
\usepackage{xr-hyper}
\usepackage{hyperref}

\externaldocument{book}

\begin{document}

\begin{slide}{Slide Title}
Reference A: \ref{ch1} page \pageref{ch1}

Reference B: \ref{ch2} page \pageref{ch2}
\end{slide}

\end{document}

顺便说一句:如果你想使用投影机-class,这也适用于使用xr-hyper-package 而不是負責-包裹。

在这种情况下,supplement.tex 可能看起来像这样:

\documentclass{beamer}
\usepackage{xr-hyper}
\usepackage{hyperref}

\externaldocument{book}

\begin{document}

Reference A: \ref{ch1} page \pageref{ch1}

Reference B: \ref{ch2} page \pageref{ch2}

\end{document}

相关内容