我在使用 class 時遇到問題xr-hyper
(用於文件之間的交叉引用)amsart
。
當嘗試編譯這兩個文件時,以下程式碼給了我一個錯誤.tex
(見下文);我先編譯的檔案會通過,但第二個檔案無法編譯。如果我替換\usepackage{amsart}
為,它會按預期工作\usepackage{article}
。
\usepackage{xr}
如果我寫而不是,文件會編譯(顯示正確的引用)\usepackage{xr-hyper}
,但在這種情況下,跨文件超連結似乎被誤導了(對於類article
和amsart
類)。
有什麼建議麼?
文件一,名為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 將被合併並執行相同的操作。