在命令中输入西里尔字母\ce{}
会导致错误:
包 mhchem 错误:断言失败:意外的输入字符。
通过在命令中输入西里尔文可以解决此错误\text{}
。但是,如果我写
$$
\ce{A + B -> Продукты}
$$
在化学 StackExchange 论坛中,这给出了我想要的结果(没有产生错误):
所以,我的问题是,为什么它在 MathJax 中可以工作,而在我的桌面或 overleaf 上却不行? 有没有什么方法可以更改 mhchem 的配置或做其他事情让它在桌面上运行?
如果需要的话,这里是完整的代码。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T2A]{fontenc}
\usepackage[version=4]{mhchem}
\author{Azamat}
\date{January, 2023}
\title{Cyrillic letters do not work in \texttt{mhchem}}
\begin{document}
\maketitle
\begin{equation*}
\ce{A + B -> Products}
\end{equation*}
\begin{equation*}
\ce{A + B -> Продукты}
\end{equation*}
\end{document}
期望的输出是:
答案1
MathJax 不是 LaTeX。
该mhchem
软件包仅“知道”它期望在化学公式中找到的一些字符。即使使用 XeLaTeX 或 LuaLaTeX(以及支持西里尔文的合适字体),代码也会中断
! Package mhchem Error: Assertion failed: Unexpected input character. In case
(mhchem) you think this is a bug, please contact the package
(mhchem) author.
使用\text
(在 MathJax 中也应该有效)。
另一方面,chemformula
XeLaTeX 或 LuaLaTeX 支持内部的西里尔文\ch
(但babel
定义\ch
为双曲余弦)。
\documentclass{article}
%\usepackage[utf8]{inputenc}
\usepackage[T2A]{fontenc}
\usepackage[ukrainian]{babel}
\usepackage{chemformula}
\NewCommandCopy{\CH}{\ch}
\let\ch\relax
\author{Azamat}
\date{January, 2023}
\title{Cyrillic letters do not work in \texttt{mhchem}}
\begin{document}
\maketitle
\CH{A + B -> Products}
\CH{A + B -> Продукты}
\end{document}