使用 cleveref 和 amsthm 的交叉引用来引用命名命题的最优雅的方法是什么?

使用 cleveref 和 amsthm 的交叉引用来引用命名命题的最优雅的方法是什么?

我有一份文档,其中有一个命名的命题,我希望用它的首字母缩略词来引用它。由于它有名称,所以不应该编号。不过,我还是想使用交叉引用来引用它,而不是对首字母缩略词进行硬编码,以防我更改它(这样它会在所有地方更新)或删除它(这样我会收到警告)。

我能想到的最好的方法是结合使用thmtoolscleveref以及参考格式的手动定义cleveref和相关 LaTeX 计数器的表示。

所有这些看起来都相当迂回,而且——至少对于我根本不需要的计数器来说——毫无必要。然而,似乎没有更简单的方法可行。

放弃以下内容目前对我来说并不是真正可行的选择,因为现在很多事情都依赖于它们:mathtoolsamsthmcleveref

但是,thmtools如果出于某种原因,不使用 可以得到更好的解决方案,则可以删除 。(我只是开始使用它来尝试处理这种情况 - 我可以轻松恢复为普通的amsthm。)

加载hyperref不是一种选择,因为如果论文中有超链接,我就无法向期刊提交论文。所以,即使这会有所帮助,我也不能使用这种方法。

梅威瑟:

\documentclass{article}
\usepackage{mathtools,amsthm,thmtools,cleveref}
\declaretheorem[numbered=yes, name=Big Friendly Giant, refname={BFG,BFG}]{bfg}
\crefformat{bfg}{#2BFG#3}
\let\thebfg\unskip

\begin{document}
\begin{bfg} Big Friendly Giant theorem \label{thm:bfg}
\end{bfg}

Here's a reference: \cref{thm:bfg}.
\end{document}

输出(目标和期望)

请注意,这个输出既是我得到的,也是我想要的。获取它的最优雅的方式是什么?

如果我使用numbered=nonumbered=unless unique,我会得到一个未编号的命题(好),但没有交叉引用(坏)。如果我不重新定义\thebfg,我会得到一个交叉引用(好),但会得到一个编号的命题(坏)。如果我设置\thebfg\relax,我会得到一个不需要的空格,它\unskip会被删除。等等。也就是说,虽然这个代码有点老套,但它是我能想到的最优雅的——或者说最不粗俗的——代码。

答案1

我不太确定我是否理解了这个问题。但我可能会这样做:

\documentclass{article}
\usepackage{mathtools,amsthm,thmtools}
\makeatletter
\declaretheorem[numbered=no,name=Big Friendly Giant, postheadhook=\def\@currentlabel{BFG}]{bfg}

\begin{document}
\begin{bfg}[label=thm:bfg] Big Friendly Giant theorem 
\end{bfg}

Here's a reference: \ref{thm:bfg}.
\end{document}

在此处输入图片描述

相关内容