![根据编译器定义不同的字体](https://linux22.com/image/424258/%E6%A0%B9%E6%8D%AE%E7%BC%96%E8%AF%91%E5%99%A8%E5%AE%9A%E4%B9%89%E4%B8%8D%E5%90%8C%E7%9A%84%E5%AD%97%E4%BD%93.png)
我正在编写一个类文件,如果编译器是或,我想使用fontspec
和。如果编译器是 ,我想定义默认字体,如和。我试图在-file 中使用,但出现错误:系统未定义或类似错误。我可以解决这个问题吗?unicode-math
luatex
xetex
pdftex
cmr
phv
\sys_if_engine*
cls
答案1
我意识到这些包没有使用\ProvidesPackage
但是\ProvidesExplPackage
所以我研究了这一点并找到了这个解决方案:
\newif \if@luatex
\newif \if@xetex
\@luatexfalse
\@xetexfalse
\ExplSyntaxOn
\sys_if_engine_luatex:T {\@luatextrue}
\sys_if_engine_xetex:T {\@xetextrue}
\ExplSyntaxOff
...
\ifthenelse{\boolean{@luatex} \OR \boolean{@xetex}}{
\RequirePackage{unicode-math}
\RequirePackage{fontspec}
\setmainfont{Times New Roman}
\newfontfamily \arial {Arial}
\setmathfont{Cambria Math}
}{
% Have not solved this part yet.
}