You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在NixOS上安装CMU字体后XeLaTeX无法识别的问题求助

解决NixOS上XeLaTeX无法找到CMU字体的问题

我之前在NixOS上也碰到过一模一样的坑!装了cm-unicode包但XeLaTeX就是认不到,Ubuntu上能正常编译的文件到NixOS就报错,折腾了好一阵才摸清楚门道,给你几个实用的排查和解决方向:

  • 先确认字体缓存与系统配置
    NixOS的声明式特性导致字体安装后不是立刻生效的,先试试手动更新字体缓存:

    fc-cache -fv
    

    更新完再用fc-list | grep -i cmu检查字体是否被识别。如果还是没结果,得确认你的configuration.nix里已经添加了CMU字体的配置:

    fonts.fonts = [ pkgs.cm-unicode ];
    

    保存配置后执行sudo nixos-rebuild switch重新构建系统,这样字体才会被加入系统的字体搜索路径。

  • 直接在LaTeX文件中指定字体路径
    如果系统层面的配置还是卡壳,可以绕过系统字体路径,直接给XeLaTeX指定字体文件的位置。先用命令找到CMU字体的安装目录:

    nix-locate --top-level cmunrm.otf
    

    输出会是类似/nix/store/xxxxxx-cm-unicode-xxxx/fonts/opentype/cmu/的路径,然后在你的LaTeX文件里修改字体设置:

    \usepackage{fontspec}
    \setmainfont[Path=/nix/store/xxxxxx-cm-unicode-xxxx/fonts/opentype/cmu/]{CMU Serif}
    \setsansfont[Path=/nix/store/xxxxxx-cm-unicode-xxxx/fonts/opentype/cmu/]{CMU Sans Serif}
    

    把路径替换成你实际查到的,这样XeLaTeX就能直接定位到字体文件了。

  • 用Nix Shell隔离LaTeX环境(推荐)
    NixOS下最省心的方式是用Nix Shell搭建独立的LaTeX环境,避免系统配置的干扰。创建一个shell.nix文件:

    { pkgs ? import <nixpkgs> {} }:
    pkgs.mkShell {
      buildInputs = [
        pkgs.texlive.combined.scheme-full
        pkgs.cm-unicode
      ];
      # 让fontconfig自动识别CMU字体
      FONTCONFIG_FILE = pkgs.makeFontsConf {
        fontDirectories = [ pkgs.cm-unicode ];
      };
    }
    

    然后在终端执行nix-shell进入这个环境,再编译你的LaTeX文件,这时候fontconfig会自动加载CMU字体,不用再折腾系统配置了。

我当时就是用Nix Shell的方法一下子解决问题的,你可以优先试试这个!

内容的提问来源于stack exchange,提问作者Alexey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:43:28