我同时使用了index
和babel
包。它们都重新定义了\markboth
和\markright
。如果我babel
在之前包含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
命令(以支持扩展标记选项)。这意味着 index.sty 的检查在任何情况下都会失败,无论有没有 babel,也无论加载顺序如何。
除非包装经过调整,否则无法避免警告。
旧答案
然后index
,babel
您将获得以下两者:来自的重新定义index
和来自的语言添加,babel
因为 babel 会将定义存储在其中\org@markboth
,然后使用它。