chemmacros 和 Russian 之间的软件包冲突

chemmacros 和 Russian 之间的软件包冲突

我正在尝试使用包设置我的文档chemmacros,但它似乎与babel

以下是 MWE:

\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}

当我删除其中一个babelchemmacros全部时,一切都正常。否则会出现错误:

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。Javier 已经展示了一个解决方案,如果您不需要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

相关内容