澄清

澄清

我使用“xr”包进行文件间交叉引用。我有三个文件,分别名为“main”、“file1”和“file2”,其中所有包都标注在主文件中。我使用 \include 命令将文件包含在主文件中。

内容在另外两个文件中。现在我必须从文件 2 中引用文件 1 中的公式。

因此我在 file2 中使用了 \externaldocument{file1}。结果出现了错误。

“LaTeX 错误:只能在序言中使用”

然后我在主程序中使用了 \externaldocument{file1},但它导致了许多警告,指出
“LaTeX 警告:标签‘kcl’被多次定义”。

请帮助消除这些警告

答案1

澄清

如果我正确理解了你的问题,这就是你的文件的结构。

文件:main.tex

\documentclass[a4paper]{article}

% ---- Load Packages ----
\usepackage[utf8]{inputenc} % Use UTF8 encoding
\usepackage{fullpage}
\usepackage{lipsum}
\usepackage{hyperref}

\begin{document}

    \title{Some MWE}
    \author{Samuel}
    \maketitle

    % Include file1.tex
    \input{./file1}

    % Include file2.tex
    \input{./file2}

\end{document}

文件:file1.tex

\section{Introduction}
\label{sec:intro}
\lipsum[1-2]

\section{Method}
\label{sec:method}
\lipsum[1-2]

文件:file2.tex

\section{Results}
\label{sec:results}
\lipsum[1-2]

\section{Conclusion}
\label{sec:conc}
\lipsum[1-2]
\par As seen in section~\ref{sec:intro}, we know that we can
link back to it from a separate file!

解决方案

如果你注意到的话,我在上面偷偷地给出了解决方案。在主文件中,我指定了序言、要使用的包并声明了文档结构。

在主文档的主体中(main.tex),我使用命令获取名为和的其他文件的\input{...}内容并将其注入到指定的点。.texfile1.texfile2.tex

编译后,文件如下所示:(为清晰起见已整理)

\documentclass[a4paper]{article}

% ---- Load Packages ----
\usepackage[utf8]{inputenc} % Use UTF8 encoding
\usepackage{fullpage}
\usepackage{lipsum}
\usepackage{hyperref}

\begin{document}

    \title{Some MWE}
    \author{Samuel}
    \maketitle

    % Include file1.tex
    \section{Introduction}
    \label{sec:intro}
    \lipsum[1-2]

    \section{Method}
    \label{sec:method}
    \lipsum[1-2]

    % Include file2.tex
    \section{Results}
    \label{sec:results}
    \lipsum[1-2]

    \section{Conclusion}
    \label{sec:conc}
    \lipsum[1-2]
    \par As seen in section~\ref{sec:intro}, we know that we can
    link back to it from a separate file!

\end{document}

从上面可以看出,交叉引用可以很好地与标准\ref以及\ref*它们的增强形式(例如与hyperref上面的包一起使用时)配合使用。

相关内容