Fonts

在 NixOS 上安裝 CMU 字型

  • March 1, 2018

我發現我需要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 com, fc-list | grep -i unic,但沒有得到任何結果。

我怎樣才能安裝這個字型? 這是針對 NixOS 17.09 的。


順便說一句,我已經不得不手動安裝拉丁現代字型:它最初無法在 XeLaTeX 中選擇,但是在我安裝了帶有 的lmodern包後nix-env -i,它工作正常。

我剛剛再次對此進行了測試:解除安裝lmodernwith會從和nix-env -efrom 的結果中刪除 Latin Modern ,安裝 with會恢復它。與.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;
   };
}

我希望擁有lmcm-unicodeTeX Live 軟體包足以安裝 Latin Modern 和 CMU 字型,但它不起作用。

有沒有辦法將必要的字型聲明為依賴項myTexLive

在 NixOS 上無法安裝nix-env字型,因為要找到字型,需要創建各種數據庫。這需要副作用,但 Nix 包是純函式。通常,您可以將副作用程式碼視為由nixos-rebuild;處理。因此您需要使用configuration.nix

fonts.fonts = [ pkgs.cm_unicode ];

您可以觀看我關於 NixOS 字型的影片以進行展示。請原諒我的機器人聲音。

有關 Latex 特定資訊,請參閱https://nixos.org/nixpkgs/manual/#sec-language-texlive

引用自:https://unix.stackexchange.com/questions/427263