Я использую оба пакета 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
и \markright
(для поддержки расширенных параметров отметки). Это означает, что проверка из index.sty не проходит в любом случае, с babel и без него, а также независимо от порядка загрузки.
Предупреждение невозможно избежать, если упаковка не будет адаптирована.
Старый ответ
Загрузите index
прежде, чем babel
вы получите и то, и другое: переопределение из index
и языковые дополнения из, babel
поскольку Babel сохранит определение \org@markboth
и затем будет использовать его.