この問題を解決する解決策をオンラインで見つけることができなかったので、ここで誰かが助けてくれることを願っています :)
これが私の main.tex ファイルです:
\documentclass[a4paper,12pt,headsepline]{article}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage{mathtools}
\usepackage[a4paper,left=3.125cm, right=3.125cm, top=2.5cm, bottom=3.0cm]{geometry}
\usepackage{filecontents}
\renewcommand{\baselinestretch}{1.3}
\usepackage{graphicx}
\usepackage{amsthm}
\usepackage{amssymb}
\usepackage{caption}
\usepackage{cite}
\usepackage{float}
\usepackage{subfiles}
\usepackage{xr}
\usepackage[breaklinks=true]{hyperref}
\usepackage{amsmath}
\newtheorem{theorem}{Theorem}[section]
\newtheorem{corollary}{Corollary}[theorem]
\newtheorem{lemma}[theorem]{Lemma}
\externaldocument[X-]{file1}
\externaldocument[G-]{file2}
\begin{document}
\section{abc}
\subfile{file1.tex}
\subfile{file2.tex}
\end{document}
file1は次のようになります:
%!TeX root = file1.tex
\documentclass[main.tex]{subfiles}
\begin{document}
\subsection{bla}
\begin{theorem}\label{theorem:fix}
blabla
\end{theorem}
\end{document}
ファイル2では、次のように定理を相互参照しようとしています。
%!TeX root = file2.tex
\documentclass[main.tex]{subfiles}
\begin{document}
... Theorem~\ref{X-theorem:fix} ...
\end{document}
コンパイル中にこの警告が表示されます
name{theorem.0.1} has been referenced but does not exist, replaced by a fixed one
これがこの問題を引き起こすのではないかと思います...
PDFの出力は次のようになります
Theorem 0.1
ハイパーリンクはドキュメントの先頭のみを指しています。main.tex をコンパイルしてすべてのサブファイルを含む大きなファイルを生成するか、file2.tex だけを生成するかは変わりません。興味深いのは、私がすでにラベル付けされているものを参照しようとしていることを何らかの方法で認識している点です。そうでなければ、0.1 の代わりに ?? がそこに表示されます。そのため、\label{theorem:fi}
の代わりにと記述すると\label{theorem:fix}
、0.1 ではなく ?? がここに記述されます。