Estoy intentando configurar mi documento con chemmacros
el paquete y parece que tiene un conflicto conbabel
Aquí está 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}
Cuando elimino cualquiera babel
de los dos, chemmacros
todo funciona bien. De lo contrario hay un error:
LaTeX3: Command '\ch' already defined!
desde el archivochemformula.sty
Como referencia, lo uso XeTeX
en MacOS.
Respuesta1
\ch
es definido por russian
. Simplemente anulelo:
\usepackage[russian]{babel}
\let\ch\undefined
\usepackage{csquotes}
\usepackage{chemmacros}
Respuesta2
Al reducir el MWE se convierte en
\documentclass{article}
\usepackage[russian]{babel}
\usepackage{chemformula}
\begin{document}
\end{document}
lo que demuestra que el conflicto es entre russian
y chemformula
. Javier ya muestra una solución que puedes usar si no necesitas la ch
definida por russian
(un símbolo para la función coseno si tuviera que adivinar del manual y la definición).
Pero como chemmacros
no hay que usarlo chemformula
hay otra solución. También se puede utilizar mhchem
por sus fórmulas químicas. Entonces esta podría ser una alternativa:
\documentclass{article}
\usepackage[russian]{babel}
\usepackage{chemmacros}
\usepackage[version=4]{mhchem}
\chemsetup{
formula = mhchem
}
\begin{document}
\end{document}
Una tercera forma sería cambiar el nombre chemformula
del comando ya que chemmacros
solo usa el comando interno si está disponible:
\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}
El comando de química a partir de chemformula
entonces estaría disponible como chem
.