如何编写可正常使用字体包的TeXLive Docker镜像
解决Docker自定义TeXLive镜像字体找不到的问题
1. 检查TeXLive Profile的字体集合配置
确保你的texlive.profile包含必要的字体相关集合,避免因仅安装最小化方案缺失字体:
# 至少包含以下字体集合,也可以直接用scheme-full selected_scheme scheme-medium collection-fontsrecommended 1 collection-fontsextra 1 collection-fonts-latex 1 collection-fonts-cjk 1
2. 安装系统基础字体与依赖
Docker基础镜像默认缺少常用字体和字体配置工具,需手动添加:
- Debian/Ubuntu 镜像:
RUN apt-get update && apt-get install -y --no-install-recommends \ fontconfig fonts-dejavu-core fonts-noto-cjk fonts-noto-color-emoji \ wget perl xz-utils && \ rm -rf /var/lib/apt/lists/*
- Arch 镜像:
RUN pacman -Sy --noconfirm \ fontconfig ttf-dejavu ttf-noto ttf-noto-cjk && \ pacman -Sc --noconfirm
3. 配置TeXLive环境变量并更新字体缓存
TeXLive安装后必须更新字体缓存,同时要确保其bin目录在系统PATH中:
# 替换为你的TeXLive版本号 ENV TEXLIVE_VERSION=2024 ENV PATH="/usr/local/texlive/${TEXLIVE_VERSION}/bin/x86_64-linux:${PATH}" ENV MANPATH="/usr/local/texlive/${TEXLIVE_VERSION}/texmf-dist/doc/man:${MANPATH}" ENV INFOPATH="/usr/local/texlive/${TEXLIVE_VERSION}/texmf-dist/doc/info:${INFOPATH}" # 更新TeX字体数据库和fontconfig缓存 RUN mktexlsr && fc-cache -fv
4. 完整示例Dockerfile(Debian基础)
FROM debian:bookworm ENV TEXLIVE_VERSION=2024 ENV PATH="/usr/local/texlive/${TEXLIVE_VERSION}/bin/x86_64-linux:${PATH}" # 安装依赖与系统字体 RUN apt-get update && apt-get install -y --no-install-recommends \ fontconfig fonts-dejavu-core fonts-noto-cjk \ wget perl xz-utils && \ rm -rf /var/lib/apt/lists/* # 复制自定义profile COPY texlive.profile /tmp/texlive.profile # 安装TeXLive RUN wget -qO- https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz | tar xz && \ cd install-tl-* && \ ./install-tl --profile=/tmp/texlive.profile && \ cd .. && rm -rf install-tl-* # 更新字体缓存 RUN mktexlsr && fc-cache -fv # 验证安装 RUN xelatex --version && fc-list | grep "DejaVu"
5. 验证方法
构建镜像后,运行容器测试字体识别:
docker run --rm -it your-image-name bash # 测试xelatex调用字体 xelatex '\fontspec{DejaVu Sans}Hello World\bye'
若能正常生成PDF,说明字体配置生效。
内容的提问来源于stack exchange,提问作者Aaron Chan
相关产品推荐
相关产品推荐

