生成 Django 中文文档 PDF 版

server/2024/11/15 1:40:24/

文章目录

    • 背景
    • 克隆 Django 文档和翻译仓库
    • 配置 `conf.py`
    • 设置和同步翻译
      • 生成 `.pot` 文件
      • 运行 `sphinx-intl update`
      • 复制翻译文件
    • 构建 PDF
      • 生成 tex 文件
      • 安装 MikTeX
      • 生成 PDF
    • Sphinx 生成文档

背景

浏览看到一个帖子,有个评论说可以用 sphinx 构建一个 pdf,正好最近用到了 sphinx,于是试了下,最终构建了一个关于 Django 官方文档的中文版 PDF 文件。

在这里插入图片描述


克隆 Django 文档和翻译仓库

打开命令行,执行以下命令克隆仓库:

git clone https://github.com/django/django.git
git clone https://github.com/django/django-docs-translations.git

切换到需要的版本的分支

# django-docs-translations
git checkout stable/4.2.x
# django
git checkout stable/4.2.x

安装第三方库

pip install sphinx sphinx-rtd-theme sphinx-intl  # 用于安装 Sphinx 和多语言支持
pip install -U sphinx_rtd_theme recommonmark latexmk  # 用于生成 PDF 所需的依赖

配置 conf.py

django/docs/conf.py 中添加或修改以下配置来启用中文翻译:

# 设置语言
language = 'zh_CN'# 加入 PDF 输出格式
latex_engine = 'xelatex'
latex_elements = {"fontpkg": r"""\setmainfont{Symbola}""","preamble": r"""\usepackage{newunicodechar}\usepackage[UTF8]{ctex}\newunicodechar{π}{\ensuremath{\pi}}\newunicodechar{≤}{\ensuremath{\le}}\newunicodechar{≥}{\ensuremath{\ge}}\newunicodechar{♥}{\ensuremath{\heartsuit}}\newunicodechar{…}{\ensuremath{\ldots}}\usepackage{ctex}  % 中文支持\usepackage{fontspec}  % 字体支持\setmainfont{Times New Roman}  % 英文主字体\setsansfont{Arial}  % 英文无衬线字体\setmonofont{Courier New}  % 英文等宽字体\setCJKmainfont{SimSun}  % 中文字体""",
}# Sphinx theme,可以不改
html_theme = "sphinx_rtd_theme"

设置和同步翻译

进入 django/docs 目录,用 sphinx-intl 设置语言环境。在生成多语言支持的翻译文件时,Sphinx 首先需要生成 .pot 文件。

生成 .pot 文件

django/docs 目录中运行以下命令,会将所有可翻译的文本提取为 .pot 文件,并放在 _build/gettext 目录中。

sphinx-build -b gettext . _build/gettext

sphinxintl_update_84">运行 sphinx-intl update

在生成 .pot 文件后,接着运行 sphinx-intl update 命令,这一步将根据 .pot 文件创建或更新 zh_CN 语言的 .po 文件,这里是在 doc 目录下创建了 locale/zh_CN\LC_MESSAGES,并生成了一些后缀是po的文件。

sphinx-intl update -p _build/gettext -l zh_CN

复制翻译文件

django-docs-translations/zh_Hans/LC_MESSAGES 下的 .po 文件复制到 django/docs/locale/zh_CN/LC_MESSAGES,替换掉相应的 .po 文件。


构建 PDF

生成 tex 文件

django/docs 目录中运行以下命令生成 tex 文件(这里是在windows命令行):

sphinx-intl build
make.bat latex

成功后,这会在 _build/latex 文件夹中生成一个 django.tex 文件。

安装 MikTeX

安装 MikTeX 或 TeX Live 作为 LaTeX 引擎,用于生成 PDF。

我尝试下载 MikTeX下载_latex文本编辑器最新64位版v21.8_3DM软件 (3dmgame.com),安装目录是 D:\Program Files\MiKTeX

生成 PDF

django\docs\_build\latex 目录下,执行生成 pdf

cd _build/latex
"D:\Program Files\MiKTeX\miktex\bin\x64\lualatex" -interaction=nonstopmode django.tex# "D:\Program Files\MiKTeX\miktex\bin\x64\pdflatex" django.tex  # 有报错,没搞成
# "D:\Program Files\MiKTeX\miktex\bin\x64\xelatex" -interaction=nonstopmode django.tex  # 书签没有标题

最后生成了如下 pdf。期间试了好几个方法,不是编译报错,就是生成了空白的 pdf,或者生成的 pdf 没有书签。

在这里插入图片描述


Sphinx 生成文档

也能在本地生成文档。

sphinx-build -b html . _build/html -D html_theme=sphinx_rtd_theme

进入 docs/_build/html,通过浏览器打开 index.html,看到文档。

在这里插入图片描述


http://www.ppmy.cn/server/141627.html

相关文章

Linux将二进制软件包编译成rpm软件包教程详解

在Linux系统中,RPM(Red Hat Package Manager)是一种广泛使用的软件包管理工具,它能够帮助用户方便地安装、卸载和管理软件包。本文将详细介绍如何将二进制软件包编译成RPM软件包,以便在不同的Linux发行版上进行分发和安…

go T 泛型

目录 1、类型约束 2、泛型函数 3、泛型结构体 4、泛型接口 5、以接口作为类型约束 关键词:泛型、类型参数、类型约束 Go 语言在 1.18 版本引入了泛型(Generics)特性,可以编写更通用、可复用的代码,泛型可以用于&a…

【服务器】使用命令行文本编辑器(如 vim、nano 或 vi)创建文件并编辑

【服务器】使用命令行文本编辑器(如 vim、nano 或 vi)创建文件并编辑 准备:连接至服务器(如ssh)创建 .ncl 文件方法 1: 使用 vim 创建 .ncl 文件方法 2: 使用 nano 创建 .ncl 文件确认文件已创建运行 .ncl 文件 总结参…

OceanBase JDBC (Java数据库连接)的概念、分类与兼容性

本章将介绍 OceanBase JDBC的 概念与分类,已帮助使用 JDBC 的用户及技术人员更好的 了解JDBC,以及 OceanBase JDBC在与 MySQL 及 Oracle 兼容性方面的相关能力。 一、JDBC 基础 1.1 JDBC 的概念 JDBC 一般指 Java 数据库连接。Java 数据库连接&#xf…

【全栈开发平台】全面解析 StackBlitz 最新力作 Bolt.new:AI 驱动的全栈开发平台

文章目录 [TOC]🌟 Bolt.new 的独特价值1. **无需配置,立刻开发**2. **AI 驱动,智能生成代码**3. **极致的速度与安全性**4. **一键部署,轻松上线**5. **免费开放,生态丰富** 🛠️ Bolt.new 使用教程一、快速…

无人机避障——2D栅格地图pgm格式文件路径规划代码详解

代码和测试效果请看上一篇博客: 无人机避障——使用三维PCD点云生成的2D栅格地图PGM做路径规划-CSDN博客 更换模型文件.dae: 部分模型文件可以从这里下载: https://github.com/ethz-asl/rotors_simulator/wiki 将原先代码中的car.dae文件…

科技云报到:数字化转型,从不确定性到确定性的关键路径

科技云报到原创。 数字化转型是VUCA时代最大的确定性。 如果说,过去是数字化转型的试验阶段,实施的是开荒动土、选种育苗,那么当前要进行的是精耕细作、植树造林,数字化转型已进入了由个别行业、个别场景的“点状应用”向各行各业…

【LeetCode】【算法】461. 汉明距离

LeetCode 461. 汉明距离 题目描述 两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。 给你两个整数 x 和 y,计算并返回它们之间的汉明距离。 思路 思路:将两个数转成二进制后求异或结果,就是它们之间的汉明距离。…