sphinx的初衷是为开发人员编写文档提供工具,但是用来编写电子书也非常方便。
需求和工具选择
制作电子书的需求,来自要为自己开发的策略平台编写用户文档,几个要求如下:
- 使用轻量级标记语言
- 能够预览
- 能够生成html和pdf
- 能够嵌入公式
- 能够嵌入graphviz, plantuml等图形描述语言
我找到了GitBook 和 Sphinx Doc。主要的区别在于:
- 设计目的
GitBook的目的就是制作电子书,而Sphinx Doc的目的是为python项目编写文档 - 开发语言
GitBook使用javascript开发,Sphinx Doc使用python开发 - 标记语言
GitBook支持markdown, Sphinx Doc最开始只支持rst, 现在同时也支持markdown
应该说,两个工具都很棒。二者都可以通过进行插件扩展,所以在功能上没有本质上的区别:一方能有的功能,另一方也可以有。
本文整理一下 Sphinx 的使用。Sphinx默认使用rst,下面是一个 .rst 的简单示例:
1 | This is a Title |
快速开始
安装
1 | pip install sphinx |
初始化
1 | mkdir mybook |
预览
sphinx默认是生成html文件:
1 | make html |
如果要在浏览器中预览,可以使用插件:
1 | pip install sphinx-serve |
可以用浏览器访问 http://localhost:4000
生成
make html
命令会生成html 。
生成epub:
1 | make epub |
生成pdf:
sphinx提供了生成latex:
1 | make latex |
如果安装了latex工具,可以在 build/latex
目录执行 make
命令生成pdf。
可选的LaTeX:
- LaTex
- ReTeX
- MiKTeX
发布
可以发布到readthedocs, 当然也可以把 html 发布到 github。
扩展
配置
生成目录时,会生成一个 conf.py
文件,在这里进行所有的配置。
Math
从GitBook v1.1.0 开始,内置了使用KaTeX支持 数学公式。比如:
1 | The quadratic formula is$$-b \pm \sqrt{b^2 - 4ac} \over 2a$$ |
效果:
The quadratic formula is$$-b \pm \sqrt{b^2 - 4ac} \over 2a$$
graphviz
安装graphviz后,在 conf.py
中配置:
1 | # 配置graphviz插件 |
嵌入式:
1 | .. graphviz:: |
引用式:
1 | .. graphviz:: external.dot |
plantuml
安装:
1 | pip install sphinxcontrib-plantuml |
配置:
在 conf.py
中配置插件:
1 | # Add any Sphinx extension module names here, as strings. They can be |
嵌入式:
1 | .. uml:: |
引用式:
1 | .. uml:: external.uml |
支持markdown
sphinx官方已经支持Markdown, 使用recommonmark解析CommonMark Markdown。
安装:
1 | pip install recommonmark |
配置:
1 |
|
主题(Theme)
Sphinx支持theme。比如,如果你喜欢Read the Docs Sphinx Theme,
只需安装 pip install sphinx_rtd_theme
并配置 html_theme = "sphinx_rtd_theme"
即可。
也可以配置该主题支持的个性化选项,比如:
1 | html_theme_options = { |