ElegantPaper
ElegantPaper copied to clipboard
中文编译时字体丢失
全部字体都无法找到。
详细情况: Texlive版本2021,xelatex-bib-2*xelatex编译,Elegantpaper-009,win10中文版 报错代码Package fontspec: The font "xxxx" cannot be found.xxxx是在cls里声明的所有字体,切了方正字体也无法编译。 但是这些字体我都是有安装的,且几个月前还能正常编译,主要变化就是之前在这台机器上新建了另一个用户, 随后全部字体都重新为所有用户安装了一遍,但是编译依旧无法通过。
更加清楚的描述下你的问题吧,代码,系统,编辑器,模板版本,TeX Live 版本。
我在 Mac 上也遇到类似的问题,因为系统安装是英文系统,所以没有 Kaishu SC
等字体。
解决方案
下载 cls
文件,将所有与 fontspec
有关语句注释,即可避免报错,但是字体会使用默认字体替换,效果不一定最佳。
% \PassOptionsToPackage{no-math}{fontspec}
% \PassOptionsToPackage{quiet}{fontspec}
\RequirePackage{iftex}
\ifXeTeX
% \RequirePackage[no-math]{fontspec}
% \setmainfont{texgyretermes}[
% UprightFont = *-regular ,
% BoldFont = *-bold ,
% ItalicFont = *-italic ,
% BoldItalicFont = *-bolditalic ,
% Extension = .otf ,
% Scale = 1.0]
% \setsansfont{texgyreheros}[
% UprightFont = *-regular ,
% BoldFont = *-bold ,
% ItalicFont = *-italic ,
% BoldItalicFont = *-bolditalic ,
% Extension = .otf ,
% Scale = 0.9]
\else
\RequirePackage{newtxtext}
\RequirePackage[scaled=.90]{helvet}
\fi
我个人认为开发者可能最好需要设计一个 fallback 或其他选项之类的,并不是所有人电脑上都有所有对应的字体。所以我自己在创作 LaTeX cls
的时候会尽量避免暴力调用 fontspec
。
- 如果你是中文系统,那么你会有楷体之类的字体,默认不会出现问题(win 更不用说);
- 如果你是中文系统,在极端情况下,你没有楷体等中文字体,你可以参考字体设置部分的自定义字体或者使用方正字体;
- 如果你不是中文系统,你没有中文字体,你不能用中文选项;
- 如果你不是中文系统,你有中文字体,你应该看文档说明,写了默认调用的 ctex 选项,会自动处理各个系统下字体的 fallback;如果你还要最佳效果,也请安装字体。
- 你所注释的只是 TeX Live 安装之后带的字体,并不是你所说的其他人没有对应字体,本模板现在绑定 TeX Live/MacTeX 发布,正常来说是不会缺失英文字体的。
- 如果你是中文系统,那么你会有楷体之类的字体,默认不会出现问题(win 更不用说);
- 如果你是中文系统,在极端情况下,你没有楷体等中文字体,你可以参考字体设置部分的自定义字体或者使用方正字体;
- 如果你不是中文系统,你没有中文字体,你不能用中文选项;
- 如果你不是中文系统,你有中文字体,你应该看文档说明,写了默认调用的 ctex 选项,会自动处理各个系统下字体的 fallback;如果你还要最佳效果,也请安装字体。
- 你所注释的只是 TeX Live 安装之后带的字体,并不是你所说的其他人没有对应字体,本模板现在绑定 TeX Live/MacTeX 发布,正常来说是不会缺失英文字体的。
摸摸头~