记录一次 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