在 NixOS 上安装 CMU 字体

在 NixOS 上安装 CMU 字体

我发现我需要卡内基梅隆大学字体能够使用 XeLaTeX 排版俄语文本。 NixOS下有cm-unicode包,我已经安装了

nix-env -iA nixos.cm_unicode

但 XeLaTeX 仍然找不到它。我可以在 Ubuntu 上使用 XeLaTeX 编译的 LaTeX 文件无法在 NixOS 上使用 XeLaTeX 进行编译,并且出现错误,指出未找到我指示的 CMU 字体。

我了解到我可以列出系统上安装的所有字体fc-list,所以我尝试运行,,,fc-list | grep -i cmu但没有结果。fc-list | grep -i comfc-list | grep -i unic

我怎样才能安装这个字体? 这是针对 NixOS 17.09 的。


顺便说一句,我已经必须手动安装 Latin Modern 字体:它最初在 XeLaTeX 中不可选择,但在我安装了lmodern软件包后nix-env -i,它工作正常。

我刚刚又测试了一遍:卸载lmodern会从和 的nix-env -e结果中删除 Latin Modern ,而安装会恢复它。但对 不起作用。fc-listfont-managernix-env -icm_unicode


我有一个可能相关的问题,所以我将其放在这里。 (如果事实证明它不相关,我将不胜感激简短的评论或解释。)

我想定义我的 TeX Live 环境及其所有依赖项在我的 中.nixpkgs/config.nix,所以我这样做了

# .nixpkgs/config.nix
{ # ...
  packageOverrides = pkgs: {
    myTexLive = pkgs.texlive.combine {
      inherit (pkgs.texlive) scheme-basic
                             collection-bibtexextra
                             collection-fontsrecommended
                             collection-genericrecommended
                             collection-langcyrillic
                             collection-langfrench
                             collection-latex
                             collection-latexextra
                             collection-latexrecommended
                             collection-mathextra
                             collection-xetex
                             cm-unicode  # from `collection-fontsextra`
                             latexmk
                             lm       # from `collection-fontsrecommended`
                             lm-math  # from `collection-fontsrecommended`
                             texdoc;
    };
}

我希望拥有lmTeX cm-unicodeLive 软件包就足以安装 Latin Modern 和 CMU 字体,但它不起作用。

有没有办法将必要的字体声明为 的依赖项myTexLive

答案1

在 NixOS 上,无法安装字体,nix-env因为要找到字体,需要创建某种数据库。这需要副作用,但 Nix 包是纯函数。一般来说,您可以将副作用代码视为由nixos-rebuild;处理。因此你需要使用configuration.nix

fonts.fonts = [ pkgs.cm_unicode ];

你可以看我的视频在 NixOS 字体上进行演示。请原谅我的机器人声音。

有关 Latex 特定信息,请参阅https://nixos.org/nixpkgs/manual/#sec-language-texlive

相关内容