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

参考までに、私はXeTeXMacOSで使用しています。

答え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れた を必要としない場合に使用できる 1 つの解決策が Javier によって既に示されています(マニュアルと定義から推測すると、 はコサイン関数のシンボルです)。chrussian

しかし、chemmacros使用する必要がないので、別の解決策があります。化学式をchemformula使用することもできます。したがって、これは代替案になる可能性があります。mhchem

\documentclass{article}

\usepackage[russian]{babel}
\usepackage{chemmacros}
\usepackage[version=4]{mhchem}
\chemsetup{
  formula = mhchem
}

\begin{document}

\end{document}

3 番目の方法は、内部コマンドが使用可能な場合にのみ使用される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

関連情報