我同時使用index
和babel
包。他們都重新定義了\markboth
和\markright
。如果我包含babel
before index
,該index
套件會警告我有關雙重重新定義的資訊。代碼:
\documentclass{article}
\usepackage[english]{babel}
\usepackage{index}
\begin{document}
\end{document}
從 TeX 輸出中摘錄:
(/usr/share/texlive/texmf-dist/tex/latex/index/index.sty
LaTeX Warning: Command \markboth has changed.
Check if current package is valid.
LaTeX Warning: Command \markright has changed.
Check if current package is valid.
) (./a.aux) (./a.aux) )
如果我交換這兩\usepackage
行以便index
在之前加載babel
,則不會出現警告。但無論哪種方式,我都會從最後載入的命令中取得這些命令的定義。
我的目標是雙重的:我想擺脫警告(因為不可操作的警告淹沒了可操作的警告),我想了解我失去了什麼(到目前為止我還沒有發現任何問題,但我可以遺漏某些內容,或稍後在編寫更多文件時遇到意外問題)。據推測,如果兩個套件都重新定義了這些命令,它們就有充分的理由。
我應該包括babel
之前還是之後index
?如果之前,我該如何擺脫警告?
我可以/應該做些什麼來確保 和 都babel
正常index
工作?我應該尋找哪些問題?
答案1
編輯2023
同時,LaTeX 核心更改了\markboth
and\markright
命令(以支援擴展標記選項)。這意味著在任何情況下,無論有沒有 babel,也無論載入順序為何,index.sty 的檢查都會失敗。
除非對包進行調整,否則該警告是無法避免的。
舊答案
在加載index
之前babel
,您將獲得兩者:重新定義index
和語言添加,babel
因為 babel 會將定義儲存在其中\org@markboth
,然後使用它。