Ist XR-Hyper mit Amsart kompatibel?

Ist XR-Hyper mit Amsart kompatibel?

Ich habe Probleme bei der Verwendung xr-hyper(für Querverweise zwischen Dateien) mit der Klasse amsart.

Der folgende Code erzeugt einen Fehler, wenn ich versuche, beide .texDateien zu kompilieren (siehe unten); egal, welche Datei ich zuerst kompiliere, es funktioniert, aber die Kompilierung der zweiten Datei schlägt fehl. Es funktioniert wie erwartet, wenn ich \usepackage{amsart}durch ersetze \usepackage{article}.

Die Dateien werden kompiliert (mit der Anzeige der korrekten Referenzen), wenn ich \usepackage{xr}statt schreibe \usepackage{xr-hyper}, aber in diesem Fall scheinen die dateiübergreifenden Hyperlinks fehlgeleitet zu sein (sowohl für die articleKlasse als auch für amsartdie Klasse).

Irgendwelche Vorschläge?


Datei eins, genanntmy_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}


Datei zwei, genanntmy_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}


Edit: Auf Anfrage hier noch ein paar Infos zu den Fehlern.

Ich muss gestehen, dass ich kein LaTeX-Experte bin und daher nicht sicher bin, ob ich die richtigen Fehler sehe.

--

Meine TeXworks-Konsole gibt mir

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

wenn ich versuche zu kompilierenmy_part_II.tex

--

Wenn ich dasselbe auf Overleaf versuche (was einige Workarounds für erfordert xr-hyper, das ich aber regelmäßig mit der articleKlasse verwende), werden die Dateien kompiliert, aber mit mehreren Warnungen (und die dateiübergreifenden Verweise werden als „??“ in angezeigt my_part_II.pdf). Beim Kompilieren my_part_I.texerhalte ich

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

Wenn ich dann kompiliere my_part_II.tex, bekomme ich

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

Antwort1

Wenn Sie eine Ihrer Dateien kompilieren (ohne xr-hyper) und in die AUX-Datei schauen, sehen Sie Label-Definitionen wie diese:

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

amsart verwendet dies, um Einrückungswerte für den nächsten Lauf zu speichern.

Diese \newlabeldefinieren Befehle \r@tocindent0usw. Wenn Sie ein externes Dokument laden, sieht amsart entweder nur die \newlabels aus dem externen Dokument (das einen falschen Wert und ein falsches Format hat, da xr-hyper eine Dateiinfo hinzugefügt hat) und Fehler, oder es sieht die \newlabels aus beiden AUX-Dateien und beschwert sich über multiplizierte Labels.

Meiner Meinung nach besteht die einzige Möglichkeit, das Problem zu umgehen, darin, durch ein Präfix sicherzustellen, dass sich die Namen nicht überschneiden: \externaldocument[A-]{my_part_II}.

Nebenbemerkung: Auch wenn es derzeit mit xr keinen Fehler gibt, ist das Ergebnis trotzdem falsch. Auch mit dem nächsten LaTeX werden xr und xr-hyper zusammengeführt und tun dasselbe.

verwandte Informationen