LyX 中的 Mhchem 错误:内核/命令未定义和控制序列未定义

LyX 中的 Mhchem 错误:内核/命令未定义和控制序列未定义

我在 Windows 10 Pro 上使用 MiKTeX (Console) 2.9.6673。请考虑以下最小不工作示例。

\documentclass{article}

\usepackage{mhchem}

\begin{document}
\ce{H2O}
\end{document}

文档主体除了 之外什么都没有\ce{},并且无法编译,抛出大量错误。我不明白问题所在。我拥有所有必需的包(mhchem、chemgreek、l3kernel、l3packages)。一些错误:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! LaTeX error: "kernel/command-not-defined"
! 
! Control sequence \regex_match:NnTF undefined.
! 
! See the LaTeX3 documentation for further information.
! 
! For immediate help type H <return>.
!............................................... 

l.53 ...nerate_variant:Nn \regex_match:NnTF { NV }

|'''''''''''''''''''''''''''''''''''''''''''''''
| This is a coding error.
| 
| LaTeX has been asked to use a control sequence '\regex_match:NnTF':
| this has not been defined yet.
|...............................................

这里这是完整日志(第一个错误在第 375 行)。它们似乎都包含与正则表达式相关的内容。我该怎么做才能解决这个问题?

答案1

似乎放置\usepackage{l3regex} \usepackage{mhchem}解决了问题。我不确定为什么l3regex默认情况下不包含它,mhchem如果它使用前者,在重新安装 MiKTeX 之前我没有遇到这个问题。

答案2

您没有expl3安装当前软件包,因此缺少该l3regex功能。

您可以尝试使用\usepackage{l3regex},但这不是一个好的解决方案。在我的输出中,这会写入

** 软件包 l3regex 已过时并已被删除!
**
** 其功能现在仅作为 expl3 软件包的一部分提供。
**
** 旧软件包将于 2018 年底全部删除。
** ** 因此,请 尽快在您的文档中将
“\usepackage{l3regex}”** 替换为“\usepackage{expl3}”。

答案3

添加\RequirePackage{l3regex}解决mhchem.sty了这个问题。如果您不能\usepackage{l3regex}在 之前放置 ,这将很有用\usepackage{mhchem}。例如在 LyX 中,如果 LyX 在您插入化学式时自动加载包。

相关内容