使用“俄语”语言设置时,chemmacros 和 polyglossia 之间存在兼容性问题

使用“俄语”语言设置时,chemmacros 和 polyglossia 之间存在兼容性问题

我想在我的文档中同时使用两个包chemmacrospolyglossia,但出于某种原因,我不想使用mhchembabel等来代替它们。以下是一些简化的示例。

当将语言设置为时,一切都表现良好english

\documentclass{article}

\usepackage{polyglossia}
\usepackage{chemmacros}

\setotherlanguage{english} % Produces correct results under language `english'.

\begin{document}

\ch{H2O}

\end{document}

在此处输入图片描述

但是,当我将语言切换为时russian\ch{H2O}似乎产生了意想不到的结果,类似于\operatorname{ch}H2O

\documentclass{article}

\usepackage{polyglossia}
\usepackage{chemmacros}

\setotherlanguage{russian} % Produces incorrect results under language `russian'.

\begin{document}

\ch{H2O} % An error `Missing $ inserted.' is reported, and the result is incorrect.

$\ch{H2O}$ % No error is reported, but the result is still incorrect.

$\operatorname{ch}H2O$ % As a comparison.

\end{document}

在此处输入图片描述

chemmacros当文档语言是 时,我该如何解决这个问题并使其正确运行russian

我使用 XeLaTeX 作为编译器和 TeX Live 版本 2023。

答案1

默认情况下,russianPolyglossia 模块根据俄罗斯传统定义了一些运算符,特别\sh\ch双曲函数。

当然,\ch定义了与之冲突chemmacros

如果您不需要它们,您可以在加载时将它们排除:

\documentclass{article}

\usepackage{polyglossia}
\usepackage{chemmacros}

\setmainfont{Libertinus Serif}

\setmainlanguage[mathfunctions=false]{russian}

\begin{document}

\ch{H2O}

\end{document}

在此处输入图片描述

会发生什么?在文档开始时chemmacros定义了自己的版本,而在切换语言时定义了双曲余弦运算符的含义,这在稍后发生。所以获胜。\chpolyglossia\chpolyglossia

如果您想保留俄罗斯风格的操作员,您需要\chchemmacros(实际上chemformula)更改为其他内容:

\documentclass{article}

\usepackage{polyglossia}
\usepackage{chemmacros}

\setmainfont{Libertinus Serif}

\setmainlanguage{russian}

\AddToHook{file/chemformula.sty/after}{%
  \NewCommandCopy{\CH}{\ch}%
}

\begin{document}

\CH{H2O}

$\ch x=(e^x+e^{-x})/2$

\end{document}

在此处输入图片描述

相关内容