![LuaLaTeX 使用 Noto CJK 和 babel onchar=ids 字体时出现奇怪错误](https://linux22.com/image/473442/LuaLaTeX%20%E4%BD%BF%E7%94%A8%20Noto%20CJK%20%E5%92%8C%20babel%20onchar%3Dids%20%E5%AD%97%E4%BD%93%E6%97%B6%E5%87%BA%E7%8E%B0%E5%A5%87%E6%80%AA%E9%94%99%E8%AF%AF.png)
我正在将一个多语言项目转换为 LuaLaTeX,但chemfig
命令中出现了一个奇怪的错误:
! LaTeX Error: Command \rmfamily invalid in math mode.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.13 \chemfig{\charge{135:4pt={+}}{H}-{F}}
将代码拆开后,似乎使用配置babel
和onchar=ids fonts
拉动NotoSerifCJK-VF
是问题的根源(字体文件已下载这里,即“变量 OTC -- TTF”)。我怀疑chemfig
这可能不是问题的一部分,但我无法在其他地方重现它。
最小失败示例:
\documentclass{article}
% Loading chemfig before, between, or after the babel stuff does not change the error
\usepackage{chemfig}
\usepackage[main=english]{babel}
% Either of these two lines,
\babelprovide[import,onchar=ids fonts]{chinese}
\babelprovide[onchar=ids fonts]{french}
% combined with this line, will cause the error
\babelfont[chinese]{rm}[Path=./assets/fonts/]{NotoSerifCJK-VFttf.ttc} % make sure file name has only one dot
\begin{document}
\chemfig{\charge{135:4pt={+}}{H}-{F}}
\end{document}
答案1
这似乎是 中的一个错误babel
。尝试在序言中进行以下破解:
\makeatletter
\let\bblorg@mapselect\bbl@mapselect
\def\bbl@mapselect{\ifmmode\else\bblorg@mapselect\fi}
\makeatother
但我还得进一步调查。