¿Xr-hyper es compatible con amsart?

¿Xr-hyper es compatible con amsart?

Tengo problemas para usar xr-hyper(para hacer referencias cruzadas entre archivos) con la clase amsart.

El siguiente código me da un error al intentar compilar ambos .texarchivos (ver más abajo); el archivo que compilo primero pasa, pero luego el segundo archivo no se compila. Funciona como se esperaba si lo reemplazo \usepackage{amsart}con \usepackage{article}.

Los archivos se compilan (con las referencias correctas mostradas) si escribo \usepackage{xr}en lugar de \usepackage{xr-hyper}, pero en ese caso los hipervínculos entre archivos parecen mal dirigidos (tanto para la articleclase como para amsartla clase).

¿Alguna sugerencia?


Archivo uno, llamadomy_part_I.tex


\documentclass{amsart}

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

\externaldocument{my_part_II}

\begin{document}

\section{Introduction for Part I}
\label{sec:part_I}

See \ref{sec:part_I} or \ref{sec:part_II}.

\end{document}


Archivo dos, llamadomy_part_II.tex


\documentclass{amsart}

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

\externaldocument{my_part_I}

\begin{document}

\addtocounter{section}{1}
\section{Introduction for Part II}
\label{sec:part_II}

See \ref{sec:part_I} or \ref{sec:part_II}.

\end{document}


Editar: a pedido, aquí hay más información sobre los errores.

Debo confesar que no soy un experto en LaTeX, por lo que no estoy seguro de estar viendo los errores correctos.

--

Mi consola TeXworks me da

! Missing number, treated as zero.
<to be read again> 
                   {
l.11 \section{Introduction for Part II}

cuando intento compilarmy_part_II.tex

--

Cuando intento lo mismo en Overleaf (que requiere alguna solución alternativa xr-hyper, pero que uso regularmente con la articleclase), los archivos se compilan pero con varias advertencias (y las referencias entre archivos se muestran como "??" en my_part_II.pdf). Al compilar my_part_I.tex, obtengo

Label `tocindent-1' multiply defined.
Label `tocindent0' multiply defined.
Label `tocindent1' multiply defined.
Label `tocindent2' multiply defined.
Label `tocindent3' multiply defined.

Si luego compilo my_part_II.tex, obtengo

Reference `sec:part_I' on page 1 undefined on input line 50.

Respuesta1

Si compila uno de sus archivos (sin xr-hyper) y mira el archivo auxiliar, verá definiciones de etiquetas como esta:

\newlabel{tocindent-1}{0pt}
\newlabel{tocindent0}{0pt}
\newlabel{tocindent1}{17.77782pt}
\newlabel{tocindent2}{0pt}
\newlabel{tocindent3}{0pt}

amsart usa esto para almacenar valores de sangría para la siguiente ejecución.

Estos \newlabeldefinen comandos \r@tocindent0, etc. Cuando carga un documento externo, amsart ve solo el \newlabel del documento externo (que tiene un valor incorrecto y un formato incorrecto ya que xr-hyper ha agregado información de archivo) y errores, o ve el \newlabel proviene de ambos archivos auxiliares y se queja de etiquetas multiplicadas.

En mi humilde opinión, la única forma de solucionar el problema es utilizar un prefijo para garantizar que los nombres no se superpongan: \externaldocument[A-]{my_part_II}.

Como nota al margen: si bien actualmente no produce un error con xr, el resultado es incorrecto. Además, con el próximo LaTeX xr y xr-hyper se fusionarán y harán lo mismo.

información relacionada