xr-hyper는 amsart와 호환됩니까?

xr-hyper는 amsart와 호환됩니까?

xr-hyper클래스와 함께 (파일 간 상호 참조를 위해) 사용하는 데 문제가 있습니다 amsart.

다음 코드는 두 .tex파일을 모두 컴파일하려고 할 때 오류를 발생시킵니다(아래 참조). 처음 컴파일한 파일은 모두 통과하지만 두 번째 파일은 컴파일에 실패합니다. \usepackage{amsart}로 바꾸면 예상대로 작동합니다 \usepackage{article}.

\usepackage{xr}대신에 파일을 작성하면 파일이 컴파일되지만(올바른 참조가 표시됨) \usepackage{xr-hyper}이 경우 파일 간 하이퍼링크의 방향이 잘못된 것 같습니다(클래스 articleamsart클래스 모두에 대해).

어떤 제안이 있으십니까?


파일 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

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가 파일 정보를 추가했기 때문에 잘못된 값과 형식이 있음)과 오류만 보거나 \newlabel은 aux 파일 모두에서 발생하며 레이블이 증가한다고 불평합니다.

문제를 해결하는 유일한 방법은 접두사를 사용하여 이름이 겹치지 않도록 하는 것입니다 \externaldocument[A-]{my_part_II}.

참고로 현재 xr에서는 오류가 발생하지 않지만 그럼에도 불구하고 결과는 잘못되었습니다. 또한 다음 LaTeX에서는 xr과 xr-hyper가 병합되어 동일한 작업을 수행합니다.

관련 정보