web-dev-qa-db-ja.com

NixOSへのCMUフォントのインストール

XeLaTeXでロシア語のテキストを植字するには CMU fonts が必要であることがわかりました。 NixOSの下に cm-unicode パッケージがあり、私はそれをインストールしました

nix-env -iA nixos.cm_unicode

しかし、XeLaTeXはまだそれを見つけることができません。 UbuntuでXeLaTeXを使用してコンパイルできるLaTeXファイルがNixOSでXeLaTeXを使用してコンパイルされず、指定したCMUフォントが見つからないというエラーが表示されます。

システムにインストールされているすべてのフォントを fc-list で一覧表示できることを知ったので、fc-list | grep -i cmufc-list | grep -i comfc-list | grep -i unic、しかし、結果は得られませんでした。

このフォントをインストールするにはどうすればよいですか?これはNixOS17.09用です。


ちなみに、私はすでにLatin Modernフォントを手動でインストールする必要がありました。最初はXeLaTeXで選択できませんでしたが、nix-env -iとともにlmodernパッケージをインストールした後は、正常に機能します。

これをもう一度テストしました。lmodernnix-env -eでアンインストールすると、fc-listfont-managerの結果からLatinModernが削除され、nix-env -iでインストールすると復元されます。 。同じことはcm_unicodeでは同じようには機能しません。


関連する可能性のある質問があるので、ここに置きます。 (関係がないことが判明した場合は、簡単なコメントや説明をお願いします。)

.nixpkgs/config.nixにすべての依存関係があるTeXLive環境を定義したかったので、

# .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-unicode TeX Liveパッケージがあれば、Latin ModernフォントとCMUフォントをインストールするのに十分だと思っていましたが、機能しませんでした。

必要なフォントをmyTexLiveの依存関係として宣言する方法はありますか?

3
Alexey

NixOSでは、フォントを見つけるには、ある種のデータベースを作成する必要があるため、nix-envを介してフォントをインストールすることはできません。これには副作用が必要ですが、Nixパッケージは純粋関数です。一般に、副作用のあるコードはnixos-rebuildによって処理されると考えることができます。したがって、configuration.nixを使用する必要があります。

fonts.fonts = [ pkgs.cm_unicode ];

デモ用にNixOSフォントで私の ビデオ を見ることができます。私のロボットの声を許してください。

ラテックス固有の情報については、 https://nixos.org/nixpkgs/manual/#sec-language-texlive を参照してください。

3
Emmanuel Rosa