我尝试过了使用 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.
所有文件都位于同一目录中,并且我在该目录中运行pdflatex
,latex
没有使用 -output-directory 标志。我也尝试了该xr-hyper
包。
我还需要做什么才能让 supplement.tex 从 book.tex (及其包含的文件 chapter2.tex)中获取参考资料?
答案1
目前最先进的技术是\label
-\(page)ref
的LaTeX2e-kernel 被修改了超链接-包裹。
因此,如果 book.tex 加载超链接-package,则需要 supplement.tex
- 确实加载超链接-包也。
- 确实加载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}