当我尝试在 XeLaTeX 中使用 fontspec 和 OpenType 字体时出现 xkeyval 错误

当我尝试在 XeLaTeX 中使用 fontspec 和 OpenType 字体时出现 xkeyval 错误

我似乎无法让 XeLaTeX 使用 加载 OpenType 字体\fontspecfontspec 文档说我需要通过文件名而不是字体名来加载 OpenType 字体,但是当我编译以下内容时:

\documentclass[letterpaper]{scrartcl}

    \usepackage{xltxtra}

    \fontspec[Path = /home/[MYHOME]/.fonts/]{lmroman10-regular.otf}
    \begin{document}

    0123456789.

    The quick brown fox jumped over the lazy dogs.

    ``firefly''

    \end{document}

XeLaTeX 会产生以下错误:

 [XeLaTeX] finished with exit code 1

./xelatexbase.tex:12:Undefined control sequence ... /home/[MYHOME]/.fonts/{lmroman10-regular.otf}

./xelatexbase.tex:12:Package xkeval Error: 'Path' undefined in families 'options' ... /home/[MYHOME]/.fonts/ 

我已经验证了lmroman10-regular.otf/home/[MYHOME]/.fonts/。我肯定对​​ Path 参数做了一些错误,我怀疑这是一些简单的事情,但我不明白是什么。

我发布了生成此错误的最小示例,但使用\fontspec参数的文档与文档第 4 部分中的示例更接近,也会出现同样的错误。当我注释掉时,文档可以编译\fontspec

这是在 Ubuntu 10.10 上从存储库安装的最新 TexLive 完整版本。

答案1

对我来说,它与完全更新的 Tex Live 2010 配合使用。不要当您想使用时,请使用 Ubuntu texlive 软件包fontspec(或任何其他现代软件包)。Ubuntu 中的版本现已有一年半多了,因此有很多错误早已被修复。直接安装 TeX Live

还有几点值得指出:

  • 手册上说(第 4.2 节)

    [您的字体可能位于] 系统字体目录之外。

    由于它~/.fonts是系统字体目录,您可以从那里按名称加载字体。

  • 我认为fontspec默认加载 Latin Modern 字体。如果您想明确加载它们,从系统 TEXMF 树加载它们会更方便(TeX Live 应该包含这些字体)。

  • \fontspec在序言中不会影响任何内容,因为它会更改当前字体,而序言中没有当前字体。请改用\setmainfont
  • 总之,要从 TeX Live 字体目录显式加载 LM Roman 10 字体,您应该使用

    \setmainfont[
      Extension = .otf,
      UprightFont = *-regular,
      BoldFont = *-bold,
      ItalicFont = *-italic,
      BoldItalicFont = *-bolditalic,
    ]{lmroman10}
    

    请注意,TeX Live 字体目录是自动搜索的。您可能应该使用 和 执行类似的操作\setsansfont\setmonofont此外,您可能还想添加选项Ligatures=TeX

[备注:MikTeX 中的 XeLaTeX 和所有系统上的 LuaLaTeX 都可以通过名称从 TEXMF 树中加载字体。]

相关内容