chemfig 和 MinionPro 问题

chemfig 和 MinionPro 问题

嗯,这没什么大不了的,但是

\documentclass{minimal}
\usepackage{chemfig}
\usepackage{MinionPro}
\begin{document}
Hello, World!
\chemfig{*6(=N-*6(-N-=N)=--N-)}
\end{document}

生产

! Undefined control sequence.
<everyeof> @nil

但据我所知,输出是正常的。为什么?(顺便说一句,使用 MinionPro 偶尔会产生未定义的错误。)

谢谢!

答案1

这是因为\chemfig设置了一些处理,在读取的每个文件末尾执行\everyeof{\@nil}(我不确定为什么这样做,但\@nil它故意不定义,LaTeX 程序员用它来表示列表的结尾,所以似乎 chemfig 想要在输入文件末尾自动终止一些列表)。同时,minionpro 字体文件是“按需”加载的(就像其他 latex 字体文件一样(除了 computer modern,它是“预加载的”))。

在您的示例中,第一次需要数学模式字符恰好在里面,\chemfig因此字体文件被加载,但是随后在文件末尾会\@nil插入该字符,从而导致观察到的错误。

一种解决方法是强制在\chemfig命令之前加载字体。例如,\setbox0\vbox{$N$}这样做不会产生任何输出(通过排版数学模式$N$然后丢弃结果)。

相关内容