如何在两个不同的 tex 文件(一个用于主要文件,一个用于补充文件)之间创建一致的编号/标签

如何在两个不同的 tex 文件(一个用于主要文件,一个用于补充文件)之间创建一致的编号/标签

我需要向一家期刊提交一篇论文,该期刊要求提供不带补充部分的 main.tex 以及用于补充部分的单独 pdf。

目前我有这两个文档的 main.tex 和 supp.tex。

(1) 问题是文档中有一些我需要的“联合”信息。例如在 main.tex 中,我需要引用 supp.tex 中定义的标签。

(2) 我还需要确保 main.tex 和 supp.tex 之间的定理/属性编号一致。例如,如果 main.tex 以定理 3 结尾,则 supp.tex 应该以定理 4 开头。

(3) 最后一个问题是,补充材料中的某些定理与main.tex 中的相同:因此它们应该具有相同的编号。

对于 (1):我发现一个解决方案是 xr 包。对于 (3):如果相同的定理出现在同一个 .tex 中,我可以使用 restatable,但我的问题不同,因为我有两个不同的文件。

解决我的问题最简单的方法是什么?我认为这是期刊投稿中一个相当常见的问题,但我还没有找到解决这些问题的明确答案。

答案1

我将在这里讨论问题 (1) 和 (2)。对于 (3),有许多相关问题(例如https://tex.stackexchange.com/a/51288/105447如何重复定理编号?),我不确定它们在各个文档中的行为方式,但这超出了我的专业知识范围。

我不确定是否没有更好的方法,我在这里建议的方法需要一些手动工作(从某种意义上说,您必须满足从一个文档传递到另一个文档的任何计数器的要求),但这种方法似乎是合理的。归根结底,就是在文档main.tex末尾设置一个标签,存储感兴趣的计数器,然后使用xr检索所有标签supp.tex,并使用该标签通过 恢复refcount计数器\setcounterref

main.tex

\documentclass{article}

\usepackage{amsmath,amsthm}
\newtheorem{theorem}{Theorem}
\usepackage{hyperref}

\makeatletter
\AddToHook{enddocument}{%
  \def\@currentlabel{\arabic{theorem}}%
  \label{last-theorem}%
}
\makeatother

\begin{document}

\setcounter{theorem}{5} % just as an example

\begin{theorem}\label{th:main-last}
  my theorem
\end{theorem}

\end{document}

supp.tex

\documentclass{article}

\usepackage{amsmath,amsthm}
\newtheorem{theorem}{Theorem}
\usepackage{xr-hyper}
\usepackage{hyperref}

\externaldocument[main-]{main}
\setcounterref{theorem}{main-last-theorem}

\begin{document}

I can reference any labels from main.tex: \ref{main-th:main-last}

And the theorem counter follows the sequence from main.tex:
\begin{theorem}\label{th:supp-first}
  my theorem
\end{theorem}

\end{document}

后者的输出是:

在此处输入图片描述

相关内容