我有一份文档,其中有一个命名的命题,我希望用它的首字母缩略词来引用它。由于它有名称,所以不应该编号。不过,我还是想使用交叉引用来引用它,而不是对首字母缩略词进行硬编码,以防我更改它(这样它会在所有地方更新)或删除它(这样我会收到警告)。
我能想到的最好的方法是结合使用thmtools
,cleveref
以及参考格式的手动定义cleveref
和相关 LaTeX 计数器的表示。
所有这些看起来都相当迂回,而且——至少对于我根本不需要的计数器来说——毫无必要。然而,似乎没有更简单的方法可行。
放弃以下内容目前对我来说并不是真正可行的选择,因为现在很多事情都依赖于它们:mathtools
,amsthm
和cleveref
。
但是,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=no
或numbered=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}