Fontspec 没有找到使用通用样式文件的字体

Fontspec 没有找到使用通用样式文件的字体

在 mydir/subdir 中,我有

\usepackage{../../latex/lecture/mylecture}

调用下面的mylecture.sty:

\usepackage{fontspec}
\usefonttheme{professionalfonts} % using non standard fonts for beamer
\usefonttheme{serif}
\definecolor{paleyellow}{RGB}{255,255,221}
\definecolor{myblue}{RGB}{0,0,144}
\setbeamercolor{frametitle}{fg=myblue}
\setbeamercolor{itemize item}{fg=myblue}
\setbeamercolor{title}{fg=myblue}
\setmainfont[
  Path           = ./ ,
  Extension      = .ttf ,
  UprightFont    = *-Regular ,
  BoldFont       = *-Bold ,
  ItalicFont     = *-Italic ,
  BoldItalicFont = *-BoldItalic
]{Alegreya}

XeLaTeX 说

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! fontspec error: "font-not-found"
! 
! The font "Alegreya-Regular" cannot be found.   

在 lesson/mylecture 中,有各种 Alegreya ttf 文件,当我将 mylecture.sty 和 ttf 文件复制到当前目录时,这些文件就可以工作。

XeLaTeX 是否会在 mydir/subdir 中查找 ttf 文件,并读取 \setmainfont 中的 ./ 路径规范,而不是我期望的 lesson/mylecture?

我只是不想将 mylecture.sty 和 ttf 文件复制到我想要编写新讲座幻灯片系列的每个目录中。

我怎样才能将 mylecture.sty 和 ttf 文件放在一个目录中,并从我的 git 存储库中的任何位置引用它?

答案1

我发现了关于这个话题的各种描述,尤其是

使用 fontspec 从包目录加载字体

它写道:

自动将字体与类或包一起分发是没有意义的。

我确实理解 LaTeX 在本地机器上安装字体的原始理念,但我的设置,拥有一个 git 存储库并在各种机器上使用它,是另一种工作方式。我想在不同的目录中编写讲座幻灯片,而不复制样式和字体文件,只需引用存储库树中的公共 latex 目录。

我使用 Google Web 字体。此处认为与主题无关:

我如何包含谷歌字体?

但人们确实使用这种字体。

我的解决方案是,通过 \usepackage 命令调用我的样式文件后,将 \setmainfont 命令包含到我的 LaTeX 文件中:

\usepackage{../../latex/mylecture/mylecture}
\setmainfont[
  Path           = ../../latex/mylecture/ ,
  Extension      = .ttf ,
  UprightFont    = *-Regular ,
  BoldFont       = *-Bold ,
  ItalicFont     = *-Italic ,
  BoldItalicFont = *-BoldItalic
]{Alegreya}

因此我只需要将此 \setmainfont 命令复制到我的 LaTeX 文件中即可使其工作。

相关内容