用sphinx写文档

2023-05-16

1 Sphinx简介

Sphinx是一个开源的文档工具。最开始被设计用于创建新的Python文档,后来被广泛应用与Python项目,现在对C/C++的支持也已经相当不错。并且正在逐步增加对更多其他编程语言的支持。Sphinx有以下主要功能:

1,支持多种输出格式,HTML,LaTeX, ePub, Texinfo, manual pages, plain text

2,支持大量交叉引用,语法标记,函数、类,引用、术语等类似信息的自动链接;

3,支持文档层次结构,通过兄弟,父亲孩子节点间的自动链接实现轻松定义文档树形结构;

4,自动索引;

5,代码高亮处理

6,更多的扩展支持

Sphinx使用reStructuredText做为文档标记语言。很多开源项目都使用Sphinx写官方文档,在日常的工作,学习、生活中,我们不仅可以用Sphinx写项目文档,还可以利用reStructuredText所见及所得特性,以及Sphinx其他方便的功能写博客,记笔记等。

2 安装和配置

2.1 安装

Sphinx的安装可以使用源码包,esay-insall和PyPI等多种方式。
$ sudo pip install Sphinx

2.2 快速配置

Sphinx提供了一个交互式的快速配置命令sphinx-quickstart。执行sphinx-quickstart,并根据提示指定工程目录,及配制。
$ sphinx-quickstart
最后sphinx-quickstart会在指定的工程目录下自动生成y一些文件及文件夹。执行过程中,输入的配置项不同,生成的目录层次结构可能不同。但主要会有以下几个文件或文件夹。
1,build 文件夹,用于存放生成的目标我文件的目录
2,Makefile,执行make命令生成相应格式的目标文件
3,conf.py,配置文件,内容为执行shpinx-quickstart选择的配置内容
4,_static目录,所有不属于源代码的文件,如图像等都放在这个目录中
5,index.rst,文档项目的根目录,如果有其他文档文件,此文件用于自动链接组织其他文件。(注:index可在配置时指定是否使用其他名字,默认为index)
</pre><pre name="code" class="plain">.
├── build
├── make.bat
├── Makefile
└── source
    ├── conf.py
    ├── _static
    ├── _templates
    └── index.rst

3, 编辑文档

Sphinx使用reStructuredText作为文档标记语言,语法简单,所见即所得。如果在执行sphinx-quickstart时使用默认的index.rst做为项目根目录,则项目根目录下的index.rst将是整个项目文档的入口文件。在index.rst中根据reStructuredText语法编辑文档,最后就可以通过Makefile编译出各种格式的文档。
由于reST并没有多文档相互链接引用的机制,或者使用多个源文件编译文档。Sphinx使用用户定制的指令增加了可以将多个源文件相互链接形成最终文档的机制。toctree(Table of Content Tree) 就是这种机制的核心组成。
.. toctree::
   :maxdepth: 2

   intro
   strings
   datatypes
   usr/index
   (many more documents listed here)
maxdepth表示最大的嵌入是层级,2表示还可以再嵌入一层父层级结构。子层级中的toctree也应当要计算在内。需要引用的源文档,直接列在toctree目录中即可,Sphinx默认使用".rst"扩展名的文档,所以不用指定后缀名。如果源文件在其他目录中,需要指定路径。
自动生成的配置文件“conf.py"是一个python源文件,如果需要更改配置,可以直接修改配置文件,而不用重新执行sphinx-quickstart。同时如果在文档中需要引用某些在配置文件中定义的变量,可以直接使用reST的引用格式引用该变量,引用后编译文档时会进行自动替换。

4,编译

Sphinx安装后支持多种格式的输出,如html,latex,epub等。检查Makefile及可知道默认支持的编译格式。但是如果想要直接编译成pdf则需要安装python rst2pdf模块,还需要修改conf.py和Makefile。或者先编译成latex格式,然后再转换成pdf格式,同样也需要pdflatex的支持。
直接执行make命令即可得到相应格式的输出:
$ make html
$ make latex
编译完成后,相应的输出文档将在_build目录下生成。

5, 总结

工作中,python相关的项目技术文档使用Sphinx完成,实际使用中给项目带来相当大的便利。生成的HTML文档可以方便的转换成confluence页面,也可以方便的生成PDF文档,省去了很多不同格式间转换的麻烦。同时reST简单的格式,可以让开发者将更多的精力放在文档正文上,而不用过多的纠结文档编排。
由于日常工作中主要接触的是英文文档,还没有尝试过用Sphinx写中文文档,听说如果需要支持中文格式,还需要额外的配置。下一篇Blog将尝试用Sphinx写,同时研究下Sphinx的中文支持。
Stay tune!

参考资料

  1. Sphinx Overview: http://sphinx-doc.org/
  2. First steps with Sphinx:http://sphinx-doc.org/tutorial.html
  3. reStructuredText入门:http://sphinx-doc-zh.readthedocs.org/en/latest/rest.html
  4. reStructuredText简明教程: http://jwch.sdut.edu.cn/book/rst.html
  5. Quick reStructuredText : http://docutils.sourceforge.net/docs/user/rst/quickref.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用sphinx写文档 的相关文章

  • Ubuntu下好用的录屏和视频格式转换工具

    xff08 1 xff09 Ubuntu录屏工具 kazam 安装 sudo apt get install kazam 安装完之后 xff0c 命令行中输入 xff1a kazam 就可以启动工具了 xff0c 可以看到工具界面如下 xf
  • linux的fork和vfork

    fork和vfork 区别 fork函数和vfork函数都可以用来创建一个子进程 他们有什么区别呢 xff1f 首先是fork xff1a 内核会给子进程分配虚拟内存空间和id xff0c 但不会分配物理内存子进程一开始是共享父进程的物理空
  • 经典卷积神经网络(一):LeNet-5和AlexNet

    本节介绍几种广泛使用的典型深层卷积神经网络 LeNet 5 LeNet 5 LeCun et al 1998 虽然提出的时间比较早 xff0c 但是是一个非常成功 的神经网络模型 基于LeNet 5的手写数字识别系统在90年代被美国很多银行
  • FreeRTOS中打开关闭任务切换

    本文介绍FreeRTOS中解决多任务之间互相影响的两种方法 1 基本临界区 基本临界区是指宏 taskENTER CRITICAL 与taskEXIT CRITICAL 之间的代码区间 xff0c 下面是一段范例代码 Critical Se
  • 嵌入式八股文汇总

    1 C C 43 43 1 1 关键字 xff08 参考 嵌入式及Linux那些事 以及众多帖子汇总而成 xff09 volatile 当声明指向设备寄存器的指针时一定要用volatile xff0c 它会告诉编译器不要对存储在这个地 址的
  • 嵌入式面试常考问题

    面试经验 c c 43 43 1 malloc与new的区别 1 new是操作符 xff0c malloc是函数 2 new使用时先分配内存 xff0c 再调用构造函数 xff0c 释放时调用析构函数 3 new只能分配实例所占类型的整数倍
  • 神经网络应用较多的算法,图卷积神经网络应用

    神经网络原理及应用 神经网络原理及应用1 什么是神经网络 xff1f 神经网络是一种模拟动物神经网络行为特征 xff0c 进行分布式并行信息处理的算法 这种网络依靠系统的复杂程度 xff0c 通过调整内部大量节点之间相互连接的关系 xff0
  • K8S api接口详解

    一 创建管理员用户 xff0c 授权 xff0c 获取token值 1 创建用户 编写CreateServiceAccount yaml文件 span class token key atrule apiVersion span span
  • OpenStack floating IP

    1 弹性公网IP 私有IP 浮动IP 虚拟IP之间区别 弹性公网IP是可以直接访问Internet的IP地址 一个弹性公网IP只能给一个ECS使用 私有IP是公有云内网所使用的IP地址 xff0c 用于内网通信 xff0c 私有IP不能访问
  • 修改apt-get源为国内镜像源

    span class token comment 备份 span span class token function cp span etc apt sources list etc apt sources list bak span cl
  • Ubuntu安装aptitude

    安装aptitude xff0c 利用aptitude对依赖关系进行智能处理 span class token function sudo span span class token function apt get span span c
  • ubuntu桌面出现问题,重启x桌面方法

    ubuntu默认有7个console xff0c ctr 43 alt 43 xff08 F1 F7 xff09 可以切换控制台 xff0c 其中F7是图形界面 xff0c 其余都是字符界面 X window出现问题 xff0c 需要进入字
  • Linux-KVM虚拟机的创建和快照命令

    KVM xff1a Kernel based Virtual Machine的简称 xff0c 是一个开源的系统虚拟化模块 xff0c 自Linux 2 6 20之后集成在Linux的各个主要发行版本中 安装虚拟机脚本 xff1a 虚拟机的
  • 浅谈stm32的低功耗模式

    stm32标准库实现低功耗 一 概述 stm32不同系列芯片支持的低功耗模式各有差异 xff0c 本文以F103系列芯片为例 xff0c 简单讲解不同低功耗模式的特点和使用方法 二 低功耗 简述 默认情况下 xff0c 系统或电源复位后 x
  • Vncservice多用户登陆

    1 修改 etc sysconfig vncserver 添加一个 longgangtest 的用户 2 在系统中新建一个 longgangtest的用户 adduser longgangtest 然后执行 好像需要执行 xff0c 测试的
  • 使用正点原子资料点亮野火linux开发板LED

    64 TOC
  • 斜杠、反斜杠的区别

    我们在写程序时候经常会混淆 和 xff0c 经常听到别人讲 斜杠 xff0c 反斜杠 xff0c 那么怎么区分它们呢 xff1f 还有它们各在什么样的场景下使用呢 xff1f 本篇文章是来区别这两个符号和总结使用它们的情形 1 区分 是斜杠
  • 七月在线机器学习

    异方差性ID3算法中文分词HMM非参数统计和参数统计切比雪夫不等式条件熵K L变换和主成分分解生成模型和判别模型非抽样误差径向基函数线性回归的基本假设最大熵SVM中的C和gamma参数距离度量牛顿法和拟牛顿法拉灯问题铺瓷砖问题哈夫曼编码树最
  • ros2串口通信

    目录 前期准备新建工程添加头文件添加源文件添加节点源文件修改package xml和CMakeLists txt安装依赖编译执行打开虚拟串口打开发布者打开订阅者打开监听 xff0c 查看是否有数据接收 前期准备 登录github下载代码ht
  • 产品化思维

    1 1 产品的本质 能够供给市场 xff0c 被人们使用和消费 xff0c 并能满足人们某种需求的任何东西 xff0c 包括有形的物品 无形的服务 组织 观念或它们的组合 定义 xff1a 市场是提供给买卖双方交易的平台 xff0c 而人在

随机推荐

  • Orcad生成BOM包含封装信息的方法

    在使用ORCAD开发后期 xff0c 总少不了导出BOM xff0c 根据BOM备料的过程 但是ORCAD默认的生成BOM方式并不能直接包含封装等信息 xff0c 这就需要在生成BOM的过程中做一些改动了 首先就如生成BOM界面 而后在需要
  • linux防恶意软件防病毒 防护工具

    保持Linux系统的安全 抵御Linux恶意软件和Linux病毒 据大多数估计 xff0c 目前互联网上超过50 的网络服务器正在运行某种版本的Linux或者相关的 nix系统 这应该足以让你认识到 xff0c 分析 识别 根除Linux系
  • STM32片内FLASH烧写错误导致ST-LINK烧录不进程序的问题解决过程

    STM32片内FLASH烧写错误导致ST LINK烧不进程序的问题解决过程 项目及配置描述 这个问题是在做bootloader OTA测试时出现的 xff0c 其中bootloader由http iot rt thread com 生成的S
  • 使用word写CSDN博客文章

    版权声明 xff1a 本文为博主原创文章 xff0c 可以转载 xff0c 但是请注明出处 http blog csdn net bjarnecpp article details 70185890 用CSDN自带的xhEditor撰写工具
  • stm32外部中断的操作步骤

    简述 本文简单介绍stm32外部中断的一般操作步骤 xff0c 后续会补充外部中断的相关内容 stm32的中断控制器支持19个外部中断 事件请求 xff1a line0 line15 xff1a 这16条line分别对应不同GPIO口的输入
  • java 中 public,default,protected,private区别

    对于继承自己的class xff0c base class可以认为他们都是自己的子女 xff0c 而对于和自己一个目录下的classes xff0c 认为都是自己的朋友 1 public xff1a 对 所有用户 开放 xff0c 所有用户
  • 多传感器融合技术(基本概念、前融合和后融合的区别)

    多传感器信息融合 xff08 Multi sensor Information Fusion MSIF xff09 xff0c 就是利用计算机技术将来自多传感器或多源的信息和数据 xff0c 在一定的准则下加以自动分析和综合 xff0c 以
  • Eigen 取三角矩阵(对应matlab tril triu函数)

    include lt Eigen Dense gt include lt iostream gt using namespace Eigen using namespace std int main MatrixXf zzz 4 4 Eig
  • git clone 项目所有分支方法

    git clone 默认是克隆Head指向的master分支 xff0c 如果是多分支 xff0c 我们可以单个克隆分支项目 1 只克隆单分支 xff08 非master xff09 xff1a git clone b 分支名 https
  • Eclipse中的报错: Error setting expression 'submit' with value ['确定', ]

    1 Eclipse中的报错 xff1a Error setting expression 39 submit 39 with value 39 确定 39 2 页面中的报错 xff1a Struts Problem Report Strut
  • Vue.js 中,7种定义组件模板的方法

    摘要 xff1a 有多种方式可以在vue中定义模板组件 我算了一下 xff0c 至少有7种不同的方法 xff1a 字符串 xff08 String xff09 模板字符串 xff08 Template literal xff09 X Tem
  • 高效编写简历项目经验,备受500强HR推荐的STAR法则

    随着就业竞争越来越大 xff0c 投简历获取面试机会 xff0c 不仅仅需要有良好的技能储备 xff0c 更需要一份优秀的求职简历 什么样的简历才能通过层层筛选 xff0c 获得HR的青睐 xff1f 项目经验绝对是重要的参考之一 一份简历
  • es6删除对象的某个属性

    1 不改变原始对象 方法1 删除age属性为例 const obj 61 name 39 xingxing 39 gender 39 girl 39 age 24 const objNew 61 name gender 61 gt name
  • STM32电路晶振

    晶振是由石英晶体组成的 xff0c 石英晶体之所以能当为振荡器使用 xff0c 是基于它的压电效应 xff1a 在晶片的两个极上加一电场 xff0c 会使晶体产生机械变形 xff1b 在石英晶片上加上交变电压 xff0c 晶体就会产生机械振
  • C语言的memcpy和memmove

    浅谈memcpy和memmove POSIX和C标准明确表示 xff0c 使用重叠区域的mem cpy 会产生未定义的行为 memcpy和memmove的区别是 xff1a 当内存发生局部重叠时memmove函数能够保证拷贝结果的正确性 x
  • Integer和int区别

    1 Integer是int的包装类 xff0c int则是java的一种基本数据类型 2 Integer变量必须实例化才能使用 xff0c int变量不需要实例化 3 Integer的默认值是null xff0c 而int的默认值是0 4
  • STM32内存结构介绍,FreeRTOS内存分配技巧,Stack_Size和Heap_Size大小设置

    STM32内存结构介绍和FreeRTOS内存分配技巧 这是我第一次使用FreeRTOS构建STM32的项目 xff0c 踩了好些坑 xff0c 又发现了我缺乏对于操作系统的内存及其空间的分配的知识 xff0c 故写下文档记录学习成果 文章最
  • 需要看的技术书籍

    语言类 xff1a 深度探索C 43 43 对象模型 xff0c 对应的英文版是 Inside C 43 43 43 Object Model 程序编译 链接 加载类 xff1a 链接器和加载器 xff0c 对应的英文版是 Linker a
  • Crazyflie2.0飞行器参考网站

    1 xff0c Crazyflie2 0的code中提到x io官网 xff0c 对sensor的驱动和数据融合都在这里 xff0c 并且这上面有一些有趣的project xff0c 可以参考下 http www x io co uk op
  • 用sphinx写文档

    1 Sphinx简介 Sphinx是一个开源的文档工具 最开始被设计用于创建新的Python文档 xff0c 后来被广泛应用与Python项目 xff0c 现在对C xff0f C 43 43 的支持也已经相当不错 并且正在逐步增加对更多其