xr-hyper は amsart と互換性がありますか?

xr-hyper は amsart と互換性がありますか?

xr-hyperクラスで (ファイル間の相互参照用)を使用する際に問題が発生していますamsart

次のコードでは、両方のファイルをコンパイルしようとするとエラーが発生します(下記参照)。最初にコンパイルしたファイルはコンパイルされますが、2 番目のファイルはコンパイルに失敗します。を に.tex置き換えると、期待どおりに動作します。\usepackage{amsart}\usepackage{article}

\usepackage{xr}の代わりにと記述すると、ファイルはコンパイルされます (正しい参照が表示されます) 。\usepackage{xr-hyper}ただし、その場合、ファイル間のハイパーリンクが誤っているように見えます (articleクラスとamsartクラスの両方について)。

助言がありますか?


ファイル1、my_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}


ファイル2、my_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}


編集: リクエストに応じて、エラーに関する詳細情報をここに示します。

正直に言うと、私は LaTeX の専門家ではないので、正しいエラーを見ているかどうかはわかりません。

--

私のTeXworksコンソールは私に

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

コンパイルしようとするとmy_part_II.tex

--

Overleaf で同じことを試したところ( では何らかの回避策が必要ですxr-hyperが、私はarticleクラスで定期的に使用しています)、ファイルはコンパイルされますが、いくつかの警告が表示されます( ではファイル間の参照が「??」と表示されますmy_part_II.pdf)。 をコンパイルするとmy_part_I.tex

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

コンパイルするとmy_part_II.tex

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

答え1

ファイルの 1 つを (xr-hyper なしで) コンパイルし、aux ファイルを確認すると、次のようなラベル定義が表示されます。

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

amsart はこれを使用して、次回の実行のためのインデント値を保存します。

これらは\newlabelコマンド\r@tocindent0などを定義します。外部ドキュメントをロードすると、amsart は外部ドキュメントからの \newlabel のみ (xr-hyper がファイル情報を追加したため、値と形式が間違っています) とエラーを認識するか、または両方の aux ファイルからの \newlabel を認識してラベルが重複しているとエラーを出力します。

私の意見では、この問題を回避する唯一の方法は、名前が重複しないようにプレフィックスを使用することです\externaldocument[A-]{my_part_II}

補足として: 現在 xr ではエラーは発生しませんが、それでも結果は間違っています。また、次の LaTeX では xr と xr-hyper が統合され、同じ動作をします。

関連情報