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 cmu
、fc-list | grep -i com
、fc-list | grep -i unic
、しかし、結果は得られませんでした。
このフォントをインストールするにはどうすればよいですか?これはNixOS17.09用です。
ちなみに、私はすでにLatin Modernフォントを手動でインストールする必要がありました。最初はXeLaTeXで選択できませんでしたが、nix-env -i
とともにlmodern
パッケージをインストールした後は、正常に機能します。
これをもう一度テストしました。lmodern
をnix-env -e
でアンインストールすると、fc-list
とfont-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;
};
}
lm
とcm-unicode
TeX Liveパッケージがあれば、Latin ModernフォントとCMUフォントをインストールするのに十分だと思っていましたが、機能しませんでした。
必要なフォントをmyTexLive
の依存関係として宣言する方法はありますか?
NixOSでは、フォントを見つけるには、ある種のデータベースを作成する必要があるため、nix-env
を介してフォントをインストールすることはできません。これには副作用が必要ですが、Nixパッケージは純粋関数です。一般に、副作用のあるコードはnixos-rebuild
によって処理されると考えることができます。したがって、configuration.nix
を使用する必要があります。
fonts.fonts = [ pkgs.cm_unicode ];
デモ用にNixOSフォントで私の ビデオ を見ることができます。私のロボットの声を許してください。
ラテックス固有の情報については、 https://nixos.org/nixpkgs/manual/#sec-language-texlive を参照してください。