
Я пытаюсь настроить свой документ с помощью chemmacros
пакета, и, похоже, он конфликтует сbabel
Вот МВЭ:
\documentclass[12pt, a4paper, final]{extarticle}
\usepackage{fontspec}
\usepackage{xunicode}
\usepackage{xltxtra}
\defaultfontfeatures{Ligatures=TeX}
\setmainfont{Times New Roman}
\newfontfamily\cyrillicfont{Times New Roman}
\usepackage[russian]{babel}
\usepackage{csquotes}
\usepackage{chemmacros}
\begin{document}
Just some text
\end{document}
Когда я удаляю babel
или chemmacros
все работает нормально. В противном случае возникает ошибка:
LaTeX3: Command '\ch' already defined!
из файлаchemformula.sty
Для справки, я использую XeTeX
на MacOS.
решение1
\ch
определяется как russian
. Просто отменим его определение:
\usepackage[russian]{babel}
\let\ch\undefined
\usepackage{csquotes}
\usepackage{chemmacros}
решение2
Если свести MWE к минимуму, то получается
\documentclass{article}
\usepackage[russian]{babel}
\usepackage{chemformula}
\begin{document}
\end{document}
что показывает, что конфликт возникает между russian
и chemformula
. Одно решение уже показано Хавьером, которое вы можете использовать, если вам не нужно, чтобы ch
определено russian
(символ для функции косинуса, если мне пришлось угадывать из руководства и определения).
Но так как chemmacros
не нужно использовать, chemformula
есть другое решение. Его можно использовать mhchem
для его химических формул. Так что это может быть альтернативой:
\documentclass{article}
\usepackage[russian]{babel}
\usepackage{chemmacros}
\usepackage[version=4]{mhchem}
\chemsetup{
formula = mhchem
}
\begin{document}
\end{document}
Третий способ — переименовать chemformula
команду, поскольку chemmacros
она использует только внутреннюю команду, если она доступна:
\documentclass{article}
\usepackage{chemformula}
\ExplSyntaxOn
\NewDocumentCommand \chem { O{}m }
{ \chemformula_ch:nn {#1} {#2} }
\cs_undefine:N \ch
\ExplSyntaxOff
\usepackage[russian]{babel}
\usepackage{chemmacros}
\begin{document}
\end{document}
С этого момента команда химии chemformula
будет доступна как chem
.