与其他文件中的定理的交叉引用

与其他文件中的定理的交叉引用

非常简单的例子。假设我有两个文件:

# first.tex:
\documentclass[acmtog,anonymous,review]{acmart}

\begin{document}

\section{}\label{sec:first}

\begin{theorem}\label{thm:first}
\end{theorem}

\end{document}

# second.tex:
\documentclass[acmtog,anonymous,review]{acmart}
\usepackage{xr}

\externaldocument{first}

\begin{document}

\section{Proofs of \autoref{sec:first}}

\begin{theorem}
\end{theorem}

\end{document}

我想我想要实现的目标很明显:我想在 second.tex 中有一个标题为“第 1 节的证明”的部分。出于某种原因,这行不通。我收到警告:软件包 xr 警告:输入第 4 行无文件 first.aux 标签未导入。。 但为什么?

我还想在 second.tex 中拥有一个类似于定理的环境,例如“\autoref{thm:first} 的证明”。我该如何获得它?

答案1

为了实现这一目标,您必须处理许多问题。

首先,鉴于您报告的错误(“Package xr 警告:没有文件 first.aux 标签未导入。”),@DavidCarlisle 是正确的(像往常一样),您缺少文件first.aux。因此,您必须first.tex首先运行 latex,这将创建first.aux包含要导入的标签的文件。

掌握了这些后,如果您在second.tex标签上运行 latex,则将导入这些标签,但您将获得许多“多次定义”的标签,因为acmart设置了许多内部标签(用于目录、总页数等),并且这些标签在两个文档之间必然相同,因此会发生冲突。因此,您可以使用前缀来导入标签first.aux(可选参数\externaldocument):

\externaldocument[F-]{first}

F-表示“第一个”,但您喜欢任何前缀)。

然后您可以引用通过向标签添加前缀second.tex而导入的标签,例如。firstF-sec:first

此外,acmart将章节标题大写,因此如果您使用\section{Proofs of \autoref{F-sec:first}},您将收到警告“第 1 页上的引用‘F-SEC:FIRST’未定义”。发生的情况是标签本身与标题一起大写,因此找不到标签。 acmart用于textcase该作业,它提供\NoCaseChange在这种情况下保护材料片段的功能。但\autoref事情有点复杂,因为如果您将其包装在\NoCaseChange引用名称中,则将保持小写。我认为这里最简单的方法是只使用标准引用:

\section{Proofs of section~\NoCaseChange{\ref{F-sec:first}}}

此外,使用\NoCaseChange会报错“PDF 字符串中不允许使用令牌”。您可以通过本地禁用生成书签来hyperref解决这个问题:\NoCaseChange

\pdfstringdefDisableCommands{%
  \renewcommand{\NoCaseChange}[1]{#1}%
}

最后,由于acmart加载hyperref,为了获取到其他文档的正确超链接,您应该加载xr-hyper(一只鸟告诉我这在未来可能不再需要,但目前仍然需要)。

把东西放在一起。first.tex

\documentclass[acmtog,anonymous,review]{acmart}

\begin{document}

\section{}\label{sec:first}

\begin{theorem}\label{thm:first}
\end{theorem}

\end{document}

second.tex

\documentclass[acmtog,anonymous,review]{acmart}
\usepackage{xr-hyper}

\externaldocument[F-]{first}

\pdfstringdefDisableCommands{%
  \renewcommand{\NoCaseChange}[1]{#1}%
}

\begin{document}

\section{Proofs of section~\NoCaseChange{\ref{F-sec:first}}}

\begin{theorem}
\end{theorem}

\end{document}

将导致:

在此处输入图片描述

相关内容