我使用“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{...}
内容并将其注入到指定的点。.tex
file1.tex
file2.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
上面的包一起使用时)配合使用。