Конфликт пакетов между chemmacros и русским

Конфликт пакетов между chemmacros и русским

Я пытаюсь настроить свой документ с помощью 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.

Связанный контент