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

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

我同时使用了indexbabel包。它们都重新定义了\markboth\markright。如果我babel在之前包含indexindex包会警告我双重重新定义。代码:

\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?如果在之前,我该如何消除警告?

我可以/应该做什么来确保babelindex正常工作?我应该寻找哪些问题?

答案1

编辑 2023

与此同时,LaTeX 内核已经更改了\markbothand\markright命令(以支持扩展标记选项)。这意味着 index.sty 的检查在任何情况下都会失败,无论有没有 babel,也无论加载顺序如何。

除非包装经过调整,否则无法避免警告。

旧答案

然后indexbabel您将获得以下两者:来自的重新定义index和来自的语言添加,babel因为 babel 会将定义存储在其中\org@markboth,然后使用它。

相关内容