我发现我需要卡内基梅隆大学字体能够使用 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 com
fc-list | grep -i unic
我怎样才能安装这个字体? 这是针对 NixOS 17.09 的。
顺便说一句,我已经必须手动安装 Latin Modern 字体:它最初在 XeLaTeX 中不可选择,但在我安装了lmodern
软件包后nix-env -i
,它工作正常。
我刚刚又测试了一遍:卸载lmodern
会从和 的nix-env -e
结果中删除 Latin Modern ,而安装会恢复它。但对 不起作用。fc-list
font-manager
nix-env -i
cm_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;
};
}
我希望拥有lm
TeX cm-unicode
Live 软件包就足以安装 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