chemmacros 與俄語之間的包衝突

chemmacros 與俄語之間的包衝突

我正在嘗試使用包設置我的文檔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 已經展示了一種解決方案,如果您不需要定義chrussian如果我必須從手冊和定義中猜測,則為餘弦函數的符號),您可以使用該解決方案。

但既然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

相關內容