引用类定理环境的更好方法?

引用类定理环境的更好方法?

我知道如何使用 \label 和 \ref 来获取我之前在文档中创建的结果(或其他任何内容)的引用。但这很繁琐,每次都需要我创建标签名称。

我想知道的是,是否有更系统/更强大的方法来实现这一点。我想有很多方法可以解决一个问题,所以我将这样表述这个问题;

您如何在 LaTeX 文档中引用类似定理的环境,以及为什么以这种方式这样做?

由于我提问的方式会给出多个答案和一些观点,因此我标记了此 CW 并加上了 Big-list 标签。如果这是错误的,请随意更改。

答案1

几年前,我在不了解theoremrefntheorem包的情况下自己解决了这个问题,但是它们本身并不能满足你的要求。

我在使用标准设置时遇到的问题如下:

  1. 您必须为每种定理类型赋予不同的环境,该环境具有包含定理名称的“开始”和“结束”标签。如果您想进行更改,则必须更改两个不相邻的单词。

  2. \label每次你都必须写。

  3. 无论何时使用,你都必须记住定理类型的名称\ref。这也是要解决的问题theoremref,尽管我认为他们解决的方式与我略有不同。

  4. ref(使用时)产生的超链接hyperref仅包含数字而不包含名称(“定理 2”等),这是一个很小的目标,但更改它却很尴尬。

theorem我通过使用具有以下语法的环境来处理 1 和 2

\begin{theorem}{theorem type}{name of label} ... \end{theorem}

从而解决了定理类型的局部性问题,也允许我省略\label。对于 3,我使用fncylab包来完成工作theoremref(请注意,当时有一个错误,如果amsthm不做一些工作,就无法完成这项工作。现在可能已经修复了)。这也解决了 4,因为现在单词“定理”是 生成的文本的一部分\ref,它全部包裹在超链接中,我不需要做任何事情。

我非常喜欢这个解决方案。我写了类似的东西

\begin{theorem}{lem}{little lemma} This is a small lemma. \end{theorem}
It follows from \ref{little lemma} that we have
\begin{theorem*}{thm} The main result. \end{theorem*}

theorem*当然,你可以猜测环境的影响。如果你有兴趣,你可以在我的网站上看到 .sty 文件。

之后:我刚刚发现了这个thmtools软件包。天哪,那东西太棒了。我真希望我早知道它。它可以完成上述所有功能(甚至更多),并使用 keyval 语法来设置参数,这比使用多个参数要好得多。阅读其手册的第 8 页,看看我的 hack 是否正确。(它并不完全相同:它没有解决第 1 点。但是,我可以想象编写一个包装器环境,采用一个可以重复上述示例的键“类型”。)

答案2

如果您使用ntheorem包,这将允许您\thref以智能方式引用定理环境。因此,它将自动将定理引用为“定理 1”,将引理引用为“引理 2”。

hyperref也会自动用其命令做同样的事情\autoref

答案3

查看该coolthms软件包(诚然,我是它的作者之一)。我们遇到了类似的问题,尤其是关于嵌套在定理环境中的标签列表(参见这个相关问题) 并用于ntheorem格式化和cleveref引用,允许单个 (!) 引用具有以下形式(例如)“定理 1 (a)”。我们仍在寻找可以测试并提供反馈的人 :)

\Label这个想法是为嵌套在“类似定理”环境中的列表创建一个新命令,该列表的格式包括定理名称和编号。

答案4

自动标记如何工作​​?如果有一种方法可以生成,比如说,,\label{thm1}等等\label{thm2},那么你就无法重新排列定理或插入新定理,而不会自动更改标签。如果你愿意放弃这样的编辑,那么你不妨Theorem 1在源代码中写入,\label完全跳过这一步。

相关内容