有時有人警告我不要使用,cleveref
因為它對一些基本的 LaTeX 命令進行了根本性的改變,例如\label
.這種擔心是否合理?有充分的理由嗎不是使用它?
答案1
聰明的工作原理
Cleveref 增強了該\label
命令,以便將一些附加資訊寫入.aux
檔案中。這部分並不是特別具有侵入性,因為它保持了原始實現的\label
完整性,並且依賴它的所有標準功能仍然可以工作(例如正常\ref
命令)。增強的第二個命令是\refstepcounter
- 再次保留原始功能,這應該不會引起任何問題。
幾乎所有功能增強包都以某種方式重新定義標準命令(例如修改列表、部分、方程式...)。所有進一步的功能(即\cref
命令)都在完全獨立的函數中處理。
潛在問題
幾乎所有問題都來自該命令的使用\refstepcounter
- 或者更確切地說是缺乏它的使用。所有使用它的軟體包都可以開箱即用地使用 smartef。對於那些不這樣做的人,有兩種選擇:
- Cleveref 對此軟體包有內建支持,一切都會正常運作。
- Cleveref 不支持,使用
\cref{label}
會產生不正確的輸出(不正確意味著缺少標籤和可能不正確的數字)。它會導致警告,但仍會編譯。您現在有兩個選擇:- 使用普通
\ref
命令。這永遠有效。 - 向 Toby Cubitt 發送電子郵件,並要求他添加對該軟體包的支援。
- 使用普通
如果您想了解人們在 smartef 方面遇到的問題,只需瀏覽https://tex.stackexchange.com/questions/tagged/cleveref!
Cleveref 和 breqn 軟體包無法很好地協同工作和使 refcheck 與 smartef 一起工作以下是您可能遇到的一些典型問題。
最後,cleveref 的文檔中有一個部分是關於poor mans cleveref
- 當您需要將 LaTeX 原始程式碼發送給其他人,而他們沒有安裝 Cleveref 時。我認為這在這個包的早期可能是一個問題,但它已經成為所有主要 tex 發行版的標準包可能已經有 5 年了 - 所以這不太可能是一個問題。
為什麼你應該使用 smartef
因為它很聰明並且確實簡化了您的交叉引用。我想向你指出ref、varioref 和 Cleveref 之間的區別。論文決定,交叉引用包:使用哪一個,哪個衝突?和如何獲得更完整的參考資料。