xr-hyper 與 amsart 相容嗎?

xr-hyper 與 amsart 相容嗎?

我在使用 class 時遇到問題xr-hyper(用於文件之間的交叉引用)amsart

當嘗試編譯這兩個文件時,以下程式碼給了我一個錯誤.tex(見下文);我先編譯的檔案會通過,但第二個檔案無法編譯。如果我替換\usepackage{amsart}為,它會按預期工作\usepackage{article}

\usepackage{xr}如果我寫而不是,文件會編譯(顯示正確的引用)\usepackage{xr-hyper},但在這種情況下,跨文件超連結似乎被誤導了(對於類articleamsart類)。

有什麼建議麼?


文件一,名為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}


文件二,名為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

如果您編譯其中一個文件(沒有 xr-hyper)並查看 aux 文件,您將看到以下標籤定義:

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

amsart 使用它來儲存下次執行的縮排值。

這些\newlabel定義命令\r@tocindent0等。輔助文件,並抱怨標籤倍增。

恕我直言,解決該問題的唯一方法是使用前綴來確保名稱不重疊:\externaldocument[A-]{my_part_II}

附註:雖然 xr 目前沒有錯誤,但結果仍然是錯誤的。另外,下一個 LaTeX xr 和 xr-hyper 將被合併並執行相同的操作。

相關內容