-
Notifications
You must be signed in to change notification settings - Fork 932
字体配置
ucasthesis 默认根据操作系统调用和配置中英文字体:
- Windows(fontset=windows): 中文-SIM 类字体,英文-Times New Roman
- MacOS (fontset=mac): 中文-SC 类字体,英文-Times New Roman
- Linux (fontset=fandol): 中文-fandol 字体,英文-Times New Roman
- Adobe (fontset=adobe):中文-Adobe 中文字体,英文-Times New Roman
如果想手动调用特定字体,只须在 Thesis.tex 中给定 fontset 选项即可 (需确保当前操作系统已安装 'fontset=选项' 所需要的相应字体):
\documentclass[twoside,fontset=选项]{Style/ucasthesis}%
'选项' 可为 'windows' 或 'mac' 或 'adobe' 或 'none' 或 'fandol'
如果使用 'fontset=adobe',则需:
1)下载 'Adobe' 字体集(下载地址见下面),2)将字体安装至系统字库。
(Windows:双击各字体文件即可安装;Linux:自行查阅资料)
如果使用 'fontset=none',则需:
1)下载 'Adobe' 字体集(下载地址见下面)
2)在 'ucasthesis' 下建立 'Font' 文件夹
3)将下载的字体文件放入 'Font' 文件夹。
为了和Word版本相近(许多人有此诉求),当前数学公式字体使用 XITS 。 如果需要改为传统的公式字体,可按如下方案修改:
然后在此后设定你需要的math字体,比如:
\setmathfont{Latin Modern Math}
\setmathfont{TeXGyrePagellaMath-Regular}[range={\mathbb}]
源自 Issue 406
使用 Windows (fontset=windows) 系统字体时可能会导致拷贝 PDF 中的文本到其他文本编辑器时出现乱码,这个问题主要由在 Windows 字体库缺陷上使用加粗宋体所导致,其底层原因部分源于 xelatex 的一个 bug(ctex issue, tex.se, xetex bug),其可能导致论文查重率偏低而无法反映真实重复率,问题的解决可以考虑如下方案中的一个:
- 使用
最新版 ucasthesis (版本 >= 2019年4月24日) + 最新版 MikTex (>= MikTex 2.9.7)/Texlive (>=2019) + Windows 10 (可能需要)
初步测试表明在如上配置下,编译生成的 PDF 中的所有内容皆可正确复制拷贝而不产生乱码。
-
在 MacOS 系统而不是 Windows 系统上编译。
-
在 Windows 系统上安装 Adobe 字体并启用
fontset=adobe
,关于 fontset 的使用问题见上面的手动配置字体一节。
在 Overleaf 上使用 ucasthesis 等价于在 Linux 系统上使用 ucasthesis,它们的核心要点为:
- 必须使用 'xelatex' 而不是 'pdflatex' 进行编译
- 'Overleaf/Linux' 上中文字体将默认调用开源的 Fandol 字集,其无法显示某些生僻字,如果需要纠正此问题,需配置 Adobe 字体,并使用
fontset=none
(overleaf/Linux)或fontset=adobe
(Linux,因为 Linux 可以将外部字体安装为系统字体,而 Overleaf 上用户无法修改系统字体),关于 fontset 的使用问题见上面的手动配置字体一节。
Overleaf 的样例:
-
ucasthesis at Overleaf (注:若启用
fontset=none
需自行下载并放入 Adobe 字体) -
ucasproposal at Overleaf (注:若启用
fontset=none
需自行下载并放入 Adobe 字体) - latexspine at Overleaf
Adobe 字体的下载只需 Google Adobe 字体的各个名字即可找到源,如:
Adobe 下载源1
Adobe字体下载源2 (需对照上面的四个字体名,将下载的字体名称进行更正,去掉多余字符):
- 若使用 pdflatex,为通过 newtxtext 宏包使用 TeX Gyre Termes 字体
- 若使用 xelatex,且字体文件 XITS-Regular.otf 不存在,为通过 newtxtext 宏包使用 TeX Gyre Termes 字体
- 若使用 xelatex,且字体文件 XITS-Regular.otf 存在,则使用 XITS 字体
TeX Gyre Termes 和 XITS 两款字体都是 Times-like 字体,其与 Times New Roman 的区别几可忽略,详细讨论可见 tex.se
需要指出的是,当出现 1. 和 2. 的情形时,ucasthesis 将不修改 sans font 为 times 字体,即标题中的英文文本将使用默认的 sans 字体,而不是像正文那样使用 times 字体。其解决办法为:
- 使用 xelatex 编译而不是 pdflatex 编译。
- 使用 xelatex 编译后标题中的英文仍不为 times 字体,则说明所使用的 LaTeX 编译器版本过旧,其解决办法为:
- 更新 LaTeX 编译器为最新版(推荐)。
- 若不更新编译器,则可手动设定英文字体采用 times 字体,即
在标题中使用 {\rmfamily English Text}
替换在标题中使用 English Text
。
问题的出现可有多方面的原因(详情见下面),如果不想修改图本身,则可考虑对每一个
\includegraphics{your_figure_name}
命令替换为为如下命令集合:
\begingroup
\fontspec{Times New Roman}{\color{white}.}%
\includegraphics{your_figure_name}
\endgroup
测试发现,此异常加粗主要缘于加粗图标题文字所导致,从而,如果不想采用上述方案,则可考虑取消对标题加粗即可,即在 artratex.sty 中将
\RequirePackage[font={small,bf},skip=8pt,labelsep=space]{caption}% options: [margin=10pt,labelfont=bf]
改为
\RequirePackage[font={small},skip=8pt,labelsep=space]{caption}% options: [margin=10pt,labelfont=bf]
详细的可能原因有:
- 导出图时启用了透明度(transparency),导致 Adobe Reader PDF 阅读器的 anti-aliasing 处理异常, 而换其他阅读器或打印时不会有渲染问题。 此问题一般只发生于位图格式,如 .jpg 或 .png,解决办法就是去掉图的透明度(transparency)。
- 据 tex.se 源一 和 tex.se 源二,若图格式为 .pdf 或 .eps 等矢量图时出现字体加粗问题,则为 xetex 的一个 bug 所导致(已对英文字体进行了修复,中文字体仍存在问题)。其解决方法为:
- 输出图时选择不嵌入字体在图中,特别是 Windows 系统上所生成的图,比如模板所采用的 .pdf 图都没有嵌入字体,测试发现似乎不会出现异常加粗的问题。
检查 PDF 中字体的方法:
- Windows:
findstr FontName document.pdf
- MacOS:
strings document.pdf | grep -i FontName
- Linux:
pdffonts document.pdf
- Windows:
- 避免在矢量图中使用中文可消除此问题。如果有大量中文,可考虑使用 .jpg 或 .png 等位图格式, 亦可消除问题。
- 输出图时选择不嵌入字体在图中,特别是 Windows 系统上所生成的图,比如模板所采用的 .pdf 图都没有嵌入字体,测试发现似乎不会出现异常加粗的问题。
检查 PDF 中字体的方法: