我正在尝试使用包设置我的文档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}
当我删除其中一个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
。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
。