用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编写技术文档, 感谢原作者分享。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

如何使用C#編寫布林過濾器演算法布隆過濾器(BloomFilter)是一種空間效率非常高的資料結構,可以用來判斷一個元素是否屬於集合。它的基本思想是透過多個獨立的雜湊函數將元素映射到一個位數組中,並將對應位數組的位元標記為1。當判斷一個元素是否屬於集合時,只需要判斷對應位數組的位是否都為1,如果有任何一位為0,則可以判定元素不在集合中。布隆過濾器具有快速查詢和

如何使用PHP擴充Sphinx進行全文搜尋全文搜尋是現代Web應用程式中的常見需求之一。為了滿足使用者對資料的高效查詢和檢索,我們可以使用Sphinx這個功能強大的開源搜尋引擎來實現全文搜尋功能。 Sphinx使用C++編寫,提供了PHP的擴展,方便我們在PHP專案中使用。本文將介紹如何使用PHP擴充Sphinx進行全文搜索

如何在C語言中編寫乘方函數乘方(exponentiation)是數學中常用的運算,表示將一個數自乘若干次的操作。在C語言中,我們可以透過寫一個乘方函數來實現這個函數。以下將詳細介紹如何在C語言中編寫乘方函數,並給出具體的程式碼範例。確定函數的輸入和輸出乘方函數的輸入通常包含兩個參數:底數(base)和指數(exponent),輸出為計算得到的結果。因此,我們

飯店預訂系統是一種重要的資訊管理系統,它可以幫助飯店實現更有效率的管理和更良好的服務。如果你想學習如何使用C++來編寫一個簡單的飯店預訂系統,那麼這篇文章將為您提供一個基本的框架和詳細的實作步驟。飯店預訂系統的功能需求在開發飯店預訂系統之前,我們需要確定其實現的功能需求。一個基本的飯店預訂系統至少需要實現以下幾個功能:(1)客房資訊管理:包括客房類型、房間號碼、房

如何透過C++寫一個簡單的掃雷遊戲?掃雷遊戲是一款經典的益智類遊戲,它要求玩家根據已知的雷區佈局,在沒有踩到地雷的情況下,揭示所有的方塊。在這篇文章中,我們將介紹如何使用C++來寫一個簡單的掃雷遊戲。首先,我們需要定義一個二維陣列來表示掃雷遊戲的地圖。數組中的每個元素可以是一個結構體,用於儲存方塊的狀態,例如是否揭示、是否有雷等資訊。另外,我們還需要定義

如何使用C++寫一個簡單的學生選課系統?隨著科技的不斷發展,電腦程式設計成為了一種必備的技能。而在學習程式設計的過程中,一個簡單的學生選課系統可以幫助我們更好地理解和應用程式語言。在本文中,我們將介紹如何使用C++來寫一個簡單的學生選課系統。首先,我們需要先明確這個選課系統的功能和需求。一個基本的學生選課系統通常包含以下幾個部分:學生資訊管理、課程資訊管理、選

如何使用C#撰寫動態規劃演算法摘要:動態規劃是求解最最佳化問題的常用演算法,適用於多種場景。本文將介紹如何使用C#編寫動態規劃演算法,並提供具體的程式碼範例。一、什麼是動態規劃演算法動態規劃(DynamicProgramming,簡稱DP)是一種用來求解具有重疊子問題和最優子結構性質的問題的演算法想法。動態規劃將問題分解成若干個子問題來求解,透過記錄每個子問題的解,

如何使用C#編寫二分查找演算法二分查找演算法是一種高效率的查找演算法,它在有序數組中尋找特定元素的位置,時間複雜度為O(logN)。在C#中,我們可以透過以下幾個步驟來編寫二分查找演算法。步驟一:準備資料首先,我們需要準備一個已經排好序的陣列作為尋找的目標資料。假設我們要在陣列中尋找特定元素的位置。 int[]data={1,3,5,7,9,11,13
