记录一次 LaTeX 不能编译的解决过程

同学把 LaTeX 源码文件夹从 Windows 电脑上拷贝给我,但是无法编译,说是里面有几个字体找不到。我改了 fontspec 的几个设置,包括 \setmainfont 等,向其中用 Path= 选项添加了 fonts/ 的路径(之前没有路径,找的是系统字体)。但是还是不能编译!

然后又慢慢排查,发现是 \maketitle 导致的不能编译,而且也是字体问题,只不过报错的位置变了,一时没看到。点进去看,cls 文件使用了 \arial,而这个字体是这样定义的:

\DeclareRobustCommand{\arial}{\fontspec{Arial}}

虽然 cls 文件设置了文件夹中的 Arial 字体为主字体,但是没有将其声明为一个可以被引用的字体。但是我尝试添加字体的声明也不能成功:

\newfontfamily\arial[Path=extrafonts/]{Arial}

之后我又改成如下才成功

\DeclareRobustCommand{\arial}{\fontspec[Path=extrafonts/]{Arial}}

https://texdoc.org/serve/fontspec/0

官方文档也有说 \fontspec 尽量不要用。

The plain \fontspec command is not generally recommended for document use. It is an ad hoc command best suited for testing and loading fonts on a one-off basis