用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 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











전체 텍스트 검색을 위해 PHP 확장 Sphinx를 사용하는 방법 전체 텍스트 검색은 최신 웹 애플리케이션의 일반적인 요구 사항 중 하나입니다. 사용자의 효율적인 데이터 조회 및 검색을 만족시키기 위해 강력한 오픈소스 검색 엔진인 Sphinx를 사용하여 전체 텍스트 검색 기능을 구현할 수 있습니다. Sphinx는 C++로 작성되었으며 PHP 프로젝트에서 쉽게 사용할 수 있도록 PHP 확장을 제공합니다. 이 기사에서는 전체 텍스트 검색을 위해 PHP 확장 Sphinx를 사용하는 방법을 소개합니다.

C#을 사용하여 Bloom 필터 알고리즘을 작성하는 방법 Bloom Filter(BloomFilter)는 요소가 집합에 속하는지 확인하는 데 사용할 수 있는 매우 공간 효율적인 데이터 구조입니다. 기본 아이디어는 여러 개의 독립적인 해시 함수를 통해 요소를 비트 배열로 매핑하고 해당 비트 배열의 비트를 1로 표시하는 것입니다. 원소가 집합에 속하는지 판단할 때 해당 비트 배열의 비트가 모두 1인지 여부만 판단하면 된다. 비트 중 하나라도 0이면 해당 원소가 집합에 속하지 않는 것으로 판단할 수 있다. 블룸 필터는 빠른 쿼리와

C언어에서 지수함수 작성법 지수화(exponential)는 수학에서 흔히 사용되는 연산으로, 숫자 자체를 여러 번 곱하는 연산을 나타냅니다. C 언어에서는 거듭제곱 함수를 작성하여 이 함수를 구현할 수 있습니다. 다음은 C 언어로 거듭제곱 함수를 작성하는 방법을 자세히 소개하고 구체적인 코드 예제를 제공합니다. 함수의 입력과 출력을 결정합니다. 거듭제곱 함수의 입력에는 일반적으로 밑수와 지수라는 두 가지 매개변수가 포함되며 출력은 계산된 결과입니다. 그러므로 우리는

C#을 사용하여 동적 프로그래밍 알고리즘을 작성하는 방법 요약: 동적 프로그래밍은 최적화 문제를 해결하기 위한 일반적인 알고리즘이며 다양한 시나리오에 적합합니다. 이 기사에서는 C#을 사용하여 동적 프로그래밍 알고리즘을 작성하는 방법을 소개하고 특정 코드 예제를 제공합니다. 1. 동적 프로그래밍 알고리즘이란 무엇입니까? DP(동적 프로그래밍)는 중첩되는 하위 문제 및 최적의 하위 구조 속성 문제를 해결하는 데 사용되는 알고리즘 아이디어입니다. 동적 프로그래밍은 문제를 여러 하위 문제로 분해하여 해결하고 각 하위 문제에 대한 솔루션을 기록합니다.

간단한 학생 과목 선택 시스템을 작성하기 위해 C++를 사용하는 방법은 무엇입니까? 지속적인 기술의 발전으로 컴퓨터 프로그래밍은 필수적인 기술이 되었습니다. 프로그래밍을 배우는 과정에서 간단한 학생 과목 선택 시스템은 프로그래밍 언어를 더 잘 이해하고 적용하는 데 도움이 될 수 있습니다. 이 기사에서는 C++를 사용하여 간단한 학생 과목 선택 시스템을 작성하는 방법을 소개합니다. 먼저, 본 과목선정제도의 기능과 요구사항을 명확히 할 필요가 있다. 기본적인 학생교과목 선택시스템은 일반적으로 학생정보관리, 교과목정보관리, 선택과목으로 구성된다.

호텔 예약 시스템은 호텔을 보다 효율적으로 관리하고 더 나은 서비스를 제공할 수 있도록 돕는 중요한 정보 관리 시스템입니다. C++를 사용하여 간단한 호텔 예약 시스템을 작성하는 방법을 배우고 싶다면 이 기사에서 기본 프레임워크와 자세한 구현 단계를 제공할 것입니다. 호텔 예약 시스템의 기능적 요구 사항 호텔 예약 시스템을 개발하기 전에 구현을 위한 기능적 요구 사항을 결정해야 합니다. 기본적인 호텔 예약 시스템은 최소한 다음 기능을 구현해야 합니다. (1) 객실 정보 관리: 객실 유형, 객실 번호, 객실 포함

C++로 간단한 지뢰 찾기 게임을 작성하는 방법은 무엇입니까? 지뢰 찾기(Minesweeper)는 플레이어가 지뢰를 밟지 않고 알려진 지뢰밭의 배치에 따라 모든 블록을 드러내야 하는 고전적인 퍼즐 게임입니다. 이 기사에서는 C++를 사용하여 간단한 지뢰 찾기 게임을 작성하는 방법을 소개합니다. 먼저 지뢰찾기 게임의 지도를 표현하기 위해 2차원 배열을 정의해야 합니다. 배열의 각 요소는 공개 여부, 지뢰 유무 등 블록의 상태를 저장하는 데 사용되는 구조일 수 있습니다. 또한, 우리는 또한 정의해야

Python에서 KNN 알고리즘을 작성하는 방법은 무엇입니까? KNN(K-NearestNeighbors, K 최근접 이웃 알고리즘)은 간단하고 일반적으로 사용되는 분류 알고리즘입니다. 아이디어는 서로 다른 샘플 사이의 거리를 측정하여 테스트 샘플을 가장 가까운 K개의 이웃으로 분류하는 것입니다. 이 기사에서는 Python을 사용하여 KNN 알고리즘을 작성 및 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 먼저, 몇 가지 데이터를 준비해야 합니다. 2차원 데이터 세트가 있고 각 샘플에 두 가지 특징이 있다고 가정합니다. 우리는 데이터 세트를 다음과 같이 나눕니다.
