xr não consegue encontrar referências no documento externo

xr não consegue encontrar referências no documento externo

Eu tenteiuse o pacote xrpara obter referências cruzadas entre arquivos.

Meu documento principal é book.tex:

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

\begin{document}

\chapter{Beginning}
\label{ch1}

Foo

\input{chapter2.tex}

\end{document}

book.tex inclui capítulo2.tex:

\chapter{End}
\label{ch2}

Bar

Meu documento secundário é suplemento.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 compila bem usando pdflatex book.tex, mas quando latex supplement.texfico preso com

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

Todos os arquivos estão no mesmo diretório e estou executando pdflatexnesse latexdiretório sem usar o sinalizador -output-directory. Eu também tentei o xr-hyperpacote.

O que mais eu preciso fazer para que suplemento.tex pegue as referências de book.tex (e seu arquivo incluído, Chapter2.tex)?

Responder1

O estado atual da arte é que o \label- \(page)ref-mecanismo doLaTeX2e-kernel é modificado pelohiperref-pacote.

Assim - se book.tex carregar ohiperref-package, então é necessário que suplemento.tex

  1. carrega ohiperref-pacote também.
  2. carrega oxr-hiper-pacote em vez doxr-pacote.
    (Oxr-hiper-package deve ser carregado antes dohiperref-pacote.)

(Na plataforma usada por mim (MiKTeX 2.9) opowerdot-class parece funcionar apenas ao compilar no modo dvi, produzindo um arquivo .dvi que faz com que o dvi-previewer YaP do MiKTeX trave, mas que pode ser convertido sem problemas via dvips para um arquivo postscript que por sua vez pode ser convertido via ps2pdf para um arquivo .pdf.)

livro.tex:

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

\begin{document}

\chapter{Beginning}
\label{ch1}

Foo

\input{chapter2.tex}

\end{document}

capítulo2.tex:

\chapter{End}
\label{ch2}

Bar

suplemento.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}

A propósito: se você quiser usar oprojetor-class, isso também funciona usando oxr-hiper-pacote em vez doxr-pacote.

Neste caso, suplemento.tex poderia ficar assim:

\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}

informação relacionada