NixOSにCMUフォントをインストールする

NixOSにCMUフォントをインストールする

私が必要だとわかったCarnegie Mellon University フォント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しかし、うまくいきません。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 Liveパッケージがあれば、Latin ModernとCMUフォントをインストールするのに十分だろうと期待していましたが、うまくいきませcm-unicodeんでした。

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

答え1

nix-envNixOSでは、フォントを見つけるためにデータベースの種類を作成する必要があるため、フォントをインストールできません。これには副作用が必要ですが、Nixパッケージは純粋な機能です。通常、副作用コードはnixos-rebuild;によって処理されると考えることができます。したがって、以下を使用する必要がありますconfiguration.nix

fonts.fonts = [ pkgs.cm_unicode ];

あなたは私のものを見てもいい動画NixOSフォントでデモンストレーションされます。私のロボットの声をすみません。

ラテックスに関する情報については、以下を参照してください。https://nixos.org/nixpkgs/manual/#sec-言語-texlive

関連情報