如何在NixOS上安装LaTeX的ragged2e CTAN包?
在NixOS上安装LaTeX的ragged2e包
别担心,这其实比你想的简单——ragged2e确实在Nixpkgs的texlive集合里,只是你可能没找到正确的属性名或者补全没触发而已。下面是两种解决方法,从全局安装到项目本地环境都有:
方法一:全局安装(修改NixOS配置)
你现在已经在用texlive.combine来组合需要的TeXLive组件,只需要把ragged2e添加到你的组合列表里就行:
修改你的configuration.nix(或者对应的系统配置文件)中的environment.systemPackages部分:
environment.systemPackages = with pkgs; [ # ... 保留你已有的其他包 texlive.combine { inherit (texlive) scheme-basic latexmk etoolbox babel-german ragged2e; } ];
保存配置后,运行以下命令应用更改:
sudo nixos-rebuild switch
这样ragged2e就会被全局安装,你在任何地方编译LaTeX项目都能用到它。
为什么之前Tab补全没找到?
可能是你在nix repl里输入texlive.ragged<TAB>的时候,补全还没加载完或者需要更完整的前缀——试试输入texlive.ragged2e,应该就能看到这个包了。
方法二:为单个项目创建本地TeX环境(更推荐给新手)
如果你不想全局安装,只想让这个包在你的LaTeX项目中可用,可以用shell.nix来创建一个专属环境:
在你的LaTeX项目根目录下创建一个名为shell.nix的文件,内容如下:
{ pkgs ? import <nixpkgs> {} }: pkgs.mkShell { buildInputs = with pkgs.texlive; [ scheme-basic latexmk etoolbox babel-german ragged2e ]; }
然后在项目目录下运行:
nix-shell
进入这个shell环境后,你就可以用latexmk或者其他工具编译你的项目了,ragged2e会被自动加载,不需要全局修改系统配置。
关于自定义包的说明
你提到看了NixOS手册里的「自定义包」部分,那部分其实是给那些不在Nixpkgs官方集合里的CTAN包准备的。ragged2e是很常用的LaTeX包,已经被收录在Nixpkgs里了,所以完全不需要走自定义编译的路线~
内容的提问来源于stack exchange,提问作者Kaligule
相关产品推荐
相关产品推荐

