用Sphinx编写技术文档
用Sphinx编写技术文档 大家会发现,如果一个项目主要是用Python写的,其文档都很类似,比如:Python在线的HTML官方手册。这些项目的文档都来源于一个很不错的项目:Sphinx。这个Sphinx特指Sphinx doc这个项目(另一个也叫Sphinx的search的项目,虽然都叫一个
用Sphinx编写技术文档
大家会发现,如果一个项目主要是用Python写的,其文档都很类似,比如:Python在线的HTML官方手册。这些项目的文档都来源于一个很不错的项目:Sphinx。这个Sphinx特指Sphinx doc这个项目(另一个也叫Sphinx的search的项目,虽然都叫一个名字)。
官网:http://sphinx-doc.org/
以下出现Sphinx的地方,都特指Sphinx doc这个项目
使用场景
- 很多开源Python库项目的API手册都是用这个写的,可以看Sphinx官网给的链接:http://sphinx-doc.org/examples.html
- 如果是用Python写的商业软件,也可以用这个来写技术文档,纯文本管理研发文档,保证功能代码、测试代码、相关文档同时更新
- 直接拿来写在线书。比如,这个《软件构建实践系列》就是:https://github.com/akun/pm
- 直接用来做slide等演示幻灯片,从一定程度上替代PowerPoint。比如,http://example.zhengkun.info/slide.html
功能
这里就列举个人关心的几个特性:
- 文本是rst格式语法
- 生成HTML、PDF、Slide(需要插件)等格式的文档
- 支持文档、代码等引用
- 支持自定义样式
- 支持插件扩展
- 直接看官网手册了解更多:http://sphinx-doc.org/contents.html
语法简介
就是rst的语法,这里就列举几个常用的:
标题等级
rst如下:
一级标题 ======== 二级标题 -------- 三级标题 ^^^^^^^^
效果如下:
习惯上,可以用以下字符:“= - ` : ‘ ” ~ ^ _ * + # ”。最好能约定个依次标题等级。
列表
rst如下:
* 列表1 * 列表2 * 列表3
效果如下:
- 列表1
- 列表2
- 列表3
列表写法除了用“*”,还可以用:“-”,“+”,最后效果一样。
上面说的是无序列表,如果想用有序列表,可以用“#.”。
rst如下:
#. 列表1 #. 列表2 #. 列表3
效果如下:
- 列表1
- 列表2
- 列表3
表格
rst如下:
===== ===== ===== 第1列 第2列 第3列 ===== ===== ===== 8 1 6 3 5 7 4 9 2 ===== ===== =====
效果如下:
第1列 | 第2列 | 第3列 |
---|---|---|
8 | 1 | 6 |
3 | 5 | 7 |
4 | 9 | 2 |
插入图片
rst如下:
.. image:: images/ball1.gif
效果如下:

插入代码
展示代码示例,经常会用到:
默认
rst如下:
:: print 'Hello World!'
效果如下:
print 'Hello World!'
自定义
rst如下:
.. code-block:: python :linenos: print 'Hello World!'
效果如下:
print 'Hello World!'
引用代码文件
rst如下:
.. literalinclude:: code/example.js :language: javascript :linenos:
效果如下:
提供下载文件链接
直接下载该RST本身。
rst如下:
:download:`sphinx.rst <sphinx.rst>` </sphinx.rst>
效果如下:
sphinx.rst
目录索引
example1对应sphinx.rst所在目录下的example1.rst文件,example2类似。
rst如下:
.. toctree:: :maxdepth: 2 example1 example2
效果如下:
- 二级标题1
- 二级标题2
引用
可以用于跨rst文档间的内容互相引用。这里以本文档内为例。
rst如下:
.. _my-reference-label: 用Sphinx编写技术文档 ==================== 很长的文字内容 点击回到顶部, :ref:`my-reference-label`.
效果如下:
点击回到顶部, 用Sphinx编写技术文档 .
文字效果
斜体
rst如下:
*斜体*
效果如下:
斜体
粗体
rst如下:
**粗体**
效果如下:
粗体
下标
斜杠是为了空格转义,最后显示无空格。
rst如下:
H\ :sub:`2`\ O
效果如下:
H2O
上标
rst如下:
E = mc\ :sup:`2`
效果如下:
E = mc2
参见
- 更多说明,详见rst文档:http://docutils.sourceforge.net/rst.html
- 另外,这本书本身就是个示例:https://github.com/akun/pm
Hello World
根据上面的介绍,其实常用的语法不多,现在直接用下,自己感受下吧!
安装 & 初始化
常用Python安装方式,创建个文件夹,执行命令,按提示自己选择即可。
pip install Sphinx mkdir docs cd docs sphinx-quickstart
根据提示输入相应参数即可,可以一路默认。
尝试编辑
编辑index.rst,只写入以下内容
用Sphinx编写技术文档 ==================== 使用场景 --------
生成HTML
很简单,默认支持就很好。
make html python -m SimpleHTTPServer 9527
直接浏览器访问9527端口,就可以看到类似Python官方文档的效果。
生成PDF
麻烦些,需要依赖库,且需要简单修改下配置。
- 安装依赖库
pip install rst2pdf
- 编辑conf.py,增加或修改如下配置:
- 编辑Makefile,增加如下代码:
Linux下的Makefie:
Windows下的批处理:
- 执行生成PDF
make pdf python -m SimpleHTTPServer 9527
参见
有关PDF的更多配置,可以阅读这个文档:http://ralsina.me/static/manual.pdf
生成Slide
Slide就是我们常说的演示文档,如:Windows下的PowerPoint(PPT);Mac下Keynote等等。这里用Sphinx生成在线的HTML5形式的Slide,操作也相对简单,也是需要依赖库和简单修改下配置。
- 安装依赖库
pip install hieroglyph
- 编辑conf.py,修改如下配置:
- 编辑Makefile,增加如下代码:
Linux下的Makefie:
- 执行生成Slides
make slides python -m SimpleHTTPServer 9527
参见
有关Slide的更多信息,可以直接查看这个项目:https://github.com/nyergler/hieroglyph
自定义样式
直接拿来主义,直接用别人写的Trac的样式
- 复制样式文件到静态资源目录,比如,这里是:
cp tracsphinx.css _static/
- 编辑conf.py,增加或修改如下配置:
- 执行生成HTML
make html python -m SimpleHTTPServer 9527
直接浏览器访问9527端口,就可以看到类似Trac的官方样式效果。
汇总到一块
可以直接看Python项目模板:https://github.com/akun/aproject/只看docs目录即可。
这里提到的几个核心文件示例如下:
- index.rst
- conf.py
- Makefile
- css
另外推荐一个服务:https://readthedocs.org/
如果你的项目研发文档用Sphinx写的,可以用来做文档的持续集成,相当方便。
这个《软件构建实践系列》就是用的这个服务。
最后
这是一篇很简单的项目推广文章,在自己的Python项目中把Sphinx用起来吧!
当然Sphinx不仅支持Python源码的Domain,而且支持C、C++、JavaScript等Domain,即使没有你所用的语言的Domain,它本身还支持写插件扩展,所以其它类型语言的项目也不妨用一下。
注解
这篇是个人总结的《软件构建实践》系列的一篇文章,更多更新内容,可以直接在线查看:http://pm.readthedocs.org。并且部分内容已经公布在GitHub上:https://github.com/akun/pm
原文地址:用Sphinx编写技术文档, 感谢原作者分享。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Comment utiliser l'extension PHP Sphinx pour la recherche en texte intégral La recherche en texte intégral est l'une des exigences courantes des applications Web modernes. Afin de satisfaire les requêtes et la récupération efficaces des données par les utilisateurs, nous pouvons utiliser Sphinx, un puissant moteur de recherche open source, pour implémenter la fonction de recherche en texte intégral. Sphinx est écrit en C++ et fournit des extensions PHP pour faciliter notre utilisation dans les projets PHP. Cet article explique comment utiliser l'extension PHP Sphinx pour la recherche en texte intégral

Comment écrire une fonction d'exponentiation en langage C L'exponentiation (exponentiation) est une opération couramment utilisée en mathématiques, qui représente l'opération de multiplication d'un nombre par lui-même plusieurs fois. En langage C, on peut implémenter cette fonction en écrivant une fonction puissance. Ce qui suit présentera en détail comment écrire une fonction de puissance en langage C et donnera des exemples de code spécifiques. Déterminer l'entrée et la sortie de la fonction L'entrée de la fonction puissance contient généralement deux paramètres : la base et l'exposant, et la sortie est le résultat calculé. Par conséquent, nous

Comment utiliser C# pour écrire un algorithme de filtre Bloom Le filtre Bloom (BloomFilter) est une structure de données très économe en espace qui peut être utilisée pour déterminer si un élément appartient à un ensemble. Son idée de base est de mapper des éléments dans un tableau de bits via plusieurs fonctions de hachage indépendantes et de marquer les bits du tableau de bits correspondant comme 1. Pour juger si un élément appartient à un ensemble, il vous suffit de juger si les bits du tableau de bits correspondant sont tous à 1. Si un bit est à 0, on peut juger que l'élément n'est pas dans l'ensemble. Les filtres Bloom proposent des requêtes rapides et

Comment utiliser C# pour écrire un algorithme de programmation dynamique Résumé : La programmation dynamique est un algorithme courant pour résoudre des problèmes d'optimisation et convient à une variété de scénarios. Cet article explique comment utiliser C# pour écrire des algorithmes de programmation dynamique et fournit des exemples de code spécifiques. 1. Qu'est-ce qu'un algorithme de programmation dynamique ? La programmation dynamique (DP) est une idée algorithmique utilisée pour résoudre des problèmes avec des sous-problèmes qui se chevauchent et des propriétés de sous-structure optimales. La programmation dynamique décompose le problème en plusieurs sous-problèmes à résoudre et enregistre la solution à chaque sous-problème.

Le système de réservation hôtelière est un système de gestion d'informations important qui peut aider les hôtels à parvenir à une gestion plus efficace et à de meilleurs services. Si vous souhaitez apprendre à utiliser C++ pour écrire un système de réservation d'hôtel simple, cet article vous fournira un cadre de base et des étapes de mise en œuvre détaillées. Exigences fonctionnelles d'un système de réservation d'hôtel Avant de développer un système de réservation d'hôtel, nous devons déterminer les exigences fonctionnelles pour sa mise en œuvre. Un système de réservation hôtelière de base doit mettre en œuvre au moins les fonctions suivantes : (1) Gestion des informations sur les chambres : y compris le type de chambre, le numéro de chambre, la

Comment utiliser C++ pour écrire un système simple de sélection de cours pour les étudiants ? Avec le développement continu de la technologie, la programmation informatique est devenue une compétence essentielle. Dans le processus d'apprentissage de la programmation, un simple système de sélection de cours pour les étudiants peut nous aider à mieux comprendre et appliquer les langages de programmation. Dans cet article, nous présenterons comment utiliser C++ pour écrire un système simple de sélection de cours pour les étudiants. Premièrement, nous devons clarifier les fonctions et les exigences de ce système de sélection de cours. Un système de base de sélection de cours pour étudiants comprend généralement les parties suivantes : gestion des informations sur les étudiants, gestion des informations sur les cours, sélection

Comment écrire l’algorithme KNN en Python ? KNN (K-NearestNeighbours, algorithme K plus proche voisin) est un algorithme de classification simple et couramment utilisé. L’idée est de classer les échantillons de test selon les K voisins les plus proches en mesurant la distance entre les différents échantillons. Cet article expliquera comment écrire et implémenter l'algorithme KNN à l'aide de Python et fournira des exemples de code spécifiques. Tout d’abord, nous devons préparer quelques données. Supposons que nous ayons un ensemble de données bidimensionnelles et que chaque échantillon possède deux caractéristiques. Nous divisons l'ensemble de données en

Comment écrire un jeu simple de démineur en C++ ? Minesweeper est un jeu de réflexion classique dans lequel les joueurs doivent révéler tous les blocs selon la disposition connue du champ de mines sans marcher sur les mines. Dans cet article, nous présenterons comment écrire un jeu simple de dragueur de mines en utilisant C++. Tout d’abord, nous devons définir un tableau bidimensionnel pour représenter la carte du jeu Minesweeper. Chaque élément du tableau peut être une structure utilisée pour stocker l'état du bloc, par exemple s'il est révélé, s'il y a des mines, etc. De plus, nous devons également définir
