生成 Django 中文文档 PDF 版

文章目录

    • 背景
    • 克隆 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

运行 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.rhkb.cn/news/470165.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 实现分库分表之 --- 基于 MyCAT 的分片策略详解

引言 在我们日常工作的项目中,特别是面向 C 端用户的产品,随着业务量的逐步扩大,数据量也呈指数级增长。为了应对日益增长的数据库压力,数据库优化已成为项目中不可或缺的一环,而分库分表则是海量数据优化方案中的重要…

JUC-locks锁

JUC-locks锁 1、JUC-locks锁概述2、管程模型3、ReentrantLock可重入锁3.1 ReentrantLock源码3.2 Sync静态内部类3.3 NonfairSync非公平锁3.4 FairSync公平锁 如有侵权,请联系~ 如有错误,也欢迎批评指正~ 1、JUC-locks锁概述 java…

GEE 数据集——美国gNATSGO(网格化国家土壤调查地理数据库)完整覆盖了美国所有地区和岛屿领土的最佳可用土壤信息

目录 简介 代码 引用 网址推荐 知识星球 机器学习 gNATSGO(网格化国家土壤调查地理数据库) 简介 gNATSGO(网格化国家土壤调查地理数据库)数据库是一个综合数据库,完整覆盖了美国所有地区和岛屿领土的最佳可用土…

kettle开发-Day43-数据对比

前言: 随着数字化的深入,各种系统及烟囱的建立,各系统之间的架构和数据存储方式不同,导致做数据仓库或数据湖时发现,因自建的系统或者非标准化的系统经常存在物理删除而不是软删除。这就延伸出一个问题,经常…

哪款开放式耳机好用?5款实力出众的开放式耳机按头安利!

随着耳机市场日益火爆,许多品牌与款式不断涌现。但是,不少劣质产品在核心性能上缺乏专业优化,且选用低质材料,在音质还原度和佩戴舒适性等关键方面存在明显短板,导致性能欠佳,聆听体验不佳,还可…

Unity资源打包Addressable资源保存在项目中

怎么打包先看“Unity资源打包Addressable AA包” 其中遗留一个问题,下载下来的资源被保存在C盘中了,可不可以保存在项目中呢?可以。 新建了一个项目,路径与“Unity资源打包Addressable AA包”都不相同了 1.创建资源缓存路径 在…

矩阵的各种计算:乘法、逆矩阵、转置、行列式等——基于Excel实现

在Excel中,可以使用内置的函数和公式来实现矩阵的各种计算。以下是具体方法: 矩阵乘法: 使用MMULT函数。如图矩阵A在单元格范围A1:B2,矩阵B在单元格范围D1:E2,结果矩阵的左上角单元格为G1:选中结果矩阵的区域(如G1:H2)。输入公式:=MMULT(A1:B2, D1:E2)。按Ctrl+Shift…

[ComfyUI]Flux:繁荣生态魔盒已开启,6款LORA已来,更有MJ6写实动漫风景艺术迪士尼全套

今天,我们将向您介绍一款非常实用的工具——[ComfyUI]Flux。这是一款基于Stable Diffusion的AI绘画工具,旨在为您提供一键式生成图像的便捷体验。无论您是AI绘画的新手还是专业人士,这个工具都能为您带来极大的便利。 在这个教程中&#xff…

【设计模式】关联关系与依赖关系

UML 图将事物之间的联系分为 6 种:关联、依赖、聚合、组合、泛化、实现 我认为关联关系和依赖关系非常不好理解。 我们看下定义: 关联:表示一种拥有的关系。具有方向性。如果一个类单方向的访问另一个类,称为单向关联。如果两个类…

前端Cypress自动化测试全网详解

Cypress 自动化测试详解:从安装到实战 Cypress 是一个强大的端到端(End-to-End, E2E)功能测试框架,基于 Node.js 构建,支持本地浏览器直接模拟测试,并具有测试录屏功能,极大地方便了测试失败时的…

#渗透测试#SRC漏洞挖掘#云技术基础02之容器与云

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…

Android 下内联汇编,Android Studio 汇编开发

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ 内联汇编 Android 内联汇编非常适用于 ARM 架构的性能优化和底层操作,通常用于加密、解密、特定指令优化等领域。 1. 基础语法 内联汇编在 C/C …

深入剖析【C++继承】:单一继承与多重继承的策略与实践,解锁代码复用和多态的编程精髓,迈向高级C++编程之旅

​​​​​​​ 🌟个人主页:落叶 🌟当前专栏: C专栏 目录 继承的概念及定义 继承的概念 继承定义 定义格式 继承基类成员访问⽅式的变化 继承类模板 基类和派⽣类间的转换 继承中的作⽤域 隐藏规则 成员函数的隐藏 考察继承【作⽤…

RHCE的学习(16)(shell脚本编程)

第一章、shell入门基础 1.1 为什么学习和使用Shell编程 对于一个合格的系统管理员来说,学习和掌握Shell编程是非常重要的。通过编程,可以在很大程度上简化日常的维护工作,使得管理员从简单的重复劳动中解脱出来。 Shell程序的特点&#xff…

信号量和线程池

1.信号量 POSIX信号量&#xff0c;用与同步操作&#xff0c;达到无冲突的访问共享资源目的&#xff0c;POSIX信号量可以用于线程间同步 初始化信号量 #include <semaphore.h> int sem_init(sem_t *sem, int pshared, unsigned int value); sem&#xff1a;指向sem_t类…

docker运行ActiveMQ-Artemis

前言 artemis跟以前的ActiveMQ不是一个产品&#xff0c;原ActiveMQ改为ActiveMQ Classic, 现在的artemis是新开发的&#xff0c;和原来不兼容&#xff0c;全称&#xff1a;ActiveMQ Artemis 本位仅介绍单机简单部署使用&#xff0c;仅用于学习和本地测试使用 官网&#xff1a;…

区块链技术在电子政务中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 区块链技术在电子政务中的应用 区块链技术在电子政务中的应用 区块链技术在电子政务中的应用 引言 区块链技术概述 定义与原理 发…

【AI换装整合包及教程】CatVTON与其他虚拟试衣技术的详细对比

一、概述 虚拟试衣技术近年来发展迅猛&#xff0c;尤其在电商领域的应用备受瞩目。CatVTON作为一种新兴的虚拟试衣技术&#xff0c;凭借其轻量化设计和高效训练策略脱颖而出。本文将从网络结构、训练策略、推理过程及应用场景四个方面详细对比CatVTON与其他主流虚拟试衣技术。…

图论基本术语

图论算法 —— 图论概述-CSDN博客 理论基础 —— 图_依附于顶点v是什么意思-CSDN博客 理论基础 —— 图 —— 图的存储结构_十字链表和链式前向星-CSDN博客 语雀版本 概括&#xff1a;图是计算机中常用的一种存储结构&#xff0c;图论是数学的一个分支&#xff0c;他以图为…

ffmpeg内存模型

文章目录 展示图拷贝packet 重要&#xff01;&#xff01;&#xff01;avpacket.c相关函数av_packet_alloc 简单的赋值 里面的还有没有进行初始化的指针av_packet_ref 展示图 拷贝packet 拷贝packet有两种情况 1&#xff1a; 两个packet的buf引用的是同一个数据缓冲空间&#…