根据编译器定义不同的字体

根据编译器定义不同的字体

我正在编写一个类文件,如果编译器是或,我想使用fontspec和。如果编译器是 ,我想定义默认字体,如和。我试图在-file 中使用,但出现错误:系统未定义或类似错误。我可以解决这个问题吗?unicode-mathluatexxetexpdftexcmrphv\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.
}

相关内容