有时会有人警告我不要使用,cleveref
因为它会对一些基本的 LaTeX 命令(例如)进行非常根本性的更改\label
。这种担忧是否合理?加载它时会出现哪些问题?是否有充分的理由不是如何使用它?
答案1
cleveref 的工作原理
Cleveref 增强了\label
命令,以便将一些附加信息写入文件.aux
。这部分并不特别具有侵入性,因为它保持了原始实现的\label
完整性,并且所有依赖它的标准函数仍将起作用(例如正常\ref
命令)。增强的第二个命令是\refstepcounter
- 同样,原始功能被保留,这不会造成任何问题。
几乎所有功能增强包都以某种方式重新定义标准命令(例如修改列表、部分、方程式……)。所有进一步的功能(即命令\cref
)都在完全独立的函数中处理。
潜在问题
几乎所有问题都源于\refstepcounter
命令的使用 - 或者说缺乏使用。所有使用它的软件包都可以与 cleveref 配合使用。对于那些不能使用 cleveref 的软件包,有两种选择:
- Cleveref 内置了对该包的支持,所以一切都能正常工作。
- Cleveref 不支持,使用
\cref{label}
会产生不正确的输出(不正确意味着缺少标签并且可能数字不正确)。它会引起警告但仍会编译。您现在有两个选择:- 使用正常
\ref
命令。这总是有效的。 - 发送一封电子邮件给 Toby Cubitt,并请他添加对该软件包的支持。
- 使用正常
如果你想了解人们在使用 cleveref 时遇到的问题,只需浏览https://tex.stackexchange.com/questions/tagged/cleveref!
Cleveref 和 breqn 软件包不能很好地协同工作和使用 cleveref 使 refcheck 工作以下是您可能会遇到的一些典型问题。
最后,cleveref 的文档中有一节介绍poor mans cleveref
- 当您需要将 LaTeX 源代码发送给其他人,而他们没有安装 cleveref 时。我认为这在该软件包的早期可能是一个问题,但它已经成为所有主要 tex 发行版的标准软件包,大概已经有 5 年了 - 所以这不太可能成为问题。
为什么应该使用 cleveref
因为它很聪明,确实简化了你的交叉引用。我想指出ref、varioref 和 cleveref 之间的区别。论文决策,交叉引用包:使用哪一个,哪些有冲突?和如何获取更完整的参考文献。