babel 和 index 都重新定義了 \markboth 和 \markright

babel 和 index 都重新定義了 \markboth 和 \markright

我同時使用indexbabel包。他們都重新定義了\markboth\markright。如果我包含babelbefore 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 核心更改了\markbothand\markright命令(以支援擴展標記選項)。這意味著在任何情況下,無論有沒有 babel,也無論載入順序為何,index.sty 的檢查都會失敗。

除非對包進行調整,否則該警告是無法避免的。

舊答案

在加載index之前babel,您將獲得兩者:重新定義index和語言添加,babel因為 babel 會將定義儲存在其中\org@markboth,然後使用它。

相關內容