【小沐学Python】Python实现在线电子书(Sphinx + readthedocs + github + Markdown)

news2024/11/19 13:27:06

文章目录

  • 1、简介
  • 2、安装
  • 3、创建测试工程
  • 4、项目文件结构
  • 5、编译为本地文件
  • 6、编译为http服务
  • 7、更改样式主题
  • 8、支持markdown
  • 9、修改文档显示结构
  • 10、项目托管到github
  • 11、部署到ReadtheDocs
  • 结语

1、简介

Sphinx 是一个 文档生成器 ,您也可以把它看成一种工具,它可以将一组纯文本源文件转换成各种输出格式,并且自动生成交叉引用、索引等。也就是说,如果您的目录包含一堆 reStructuredText 或 Markdown 文档,那么 Sphinx 就能生成一系列HTML文件,PDF文件(通过LaTeX),手册页等。
在这里插入图片描述

Sphinx 专注于文档,尤其是 handwritten documentation ,然而,Sphinx 也可以用来生成博客、主页甚至书籍。Sphinx 的大部分功能来自于 reStructuredText ,它是一种纯文本标记格式,有着丰富的功能和 显著的扩展能力 。

2、安装

  • 本文开发环境:
    Windows系统
    python3环境

  • 安装Sphinx:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple sphinx

在这里插入图片描述

3、创建测试工程

输入如下命令初始化工程:

mkdir SphinxDemo
cd SphinxDemo
sphinx-quickstart

然后会有如下的输出,需要根据提示输入项目名称、作者、版本号、语言等信息。
在这里插入图片描述
在这里插入图片描述

4、项目文件结构

项目创建完成后,可以看到如下的目录结构:
在这里插入图片描述

|-- build       <--------  生成文件的输出目录
|-- make.bat    <--------  Windows 命令行中编译用的脚本
|-- Makefile    <--------  编译脚本,make 命令编译时用
`-- source      <--------  文档源文件
    |-- conf.py     <--------  进行 Sphinx 的配置,如主题配置等
    |-- index.rst   <--------  文档项目起始文件,用于配置文档的显示结构
    |-- _static     <--------  静态文件目录, 比如图片等
    `-- _templates  <--------  模板目录

这里先简单说明一下各个文件的作用:

  • build:生成的文件的输出目录
  • source: 存放文档源文件
  • _static:静态文件目录,比如图片等
  • _templates:模板目录
  • conf.py:进行 Sphinx 的配置,如主题配置等
  • index.rst:文档项目起始文件,用于配置文档的显示结构
  • cmd.bat:这是自己加的脚本文件(里面的内容是‘cmd.exe’),用于快捷的打开windows的命令行
  • make.bat:Windows 命令行中编译用的脚本
  • Makefile:编译脚本,make 命令编译时用

其中index.rst内容默认如下:

.. 小沐日记 documentation master file, created by
   sphinx-quickstart on Sun Jun 11 10:29:33 2023.
   You can adapt this file completely to your liking, but it should at least
   contain the root `toctree` directive.

Welcome to 小沐日记's documentation!
====================================

.. toctree::
   :maxdepth: 2
   :caption: Contents:

Indices and tables
==================

* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

5、编译为本地文件

执行如下命令:

make html

在这里插入图片描述
居然报错,有没有天理呢。哈哈。
换一种写法如下:

./make html

在这里插入图片描述
自动生成如下这些文件:
在这里插入图片描述
可以在浏览器中预览一下:

file:///C:/Users/tomcat/Desktop/SphinxDemo/build/html/index.html

在这里插入图片描述

6、编译为http服务

上面使用make html的方式编译,编译完后需要打开html文件来查。
还有一种HTTP服务的方式,可以在浏览器器中通过ip地址来查看,该方式需要安装自动build工具:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple sphinx-autobuild

在这里插入图片描述
然后使用如下编译指令进行编译:

sphinx-autobuild source build/html

在这里插入图片描述
然后可以到浏览器中,输入127.0.0.1:8000,进行预览如下:
在这里插入图片描述

7、更改样式主题

上面的测试效果,使用的是默认的主题alabaster,如果想安装其它的主题,可以先到Sphinx的官网https://sphinx-themes.org/查看:

在这里插入图片描述
这里选用一个较为常用的主题Read the Docs,安装这个主题首先需要在python中进行安装,命令如下:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple sphinx_rtd_theme

在这里插入图片描述
然后修改conf.py 文件,找到 html_theme 字段,修改为

#html_theme = 'alabaster'
html_theme = 'sphinx_rtd_theme'

在这里插入图片描述
再次编译,预览如下:

sphinx-autobuild source build/html

在这里插入图片描述

8、支持markdown

这里安装markdown支持工具。Sphinx默认只支持reST格式的文件。
如果相要使用markdown格式的文档,还要安装markdown支持工具,命令如下:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple recommonmark

在这里插入图片描述
若要使用markdown的表格,还要安装:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple sphinx_markdown_tables

在这里插入图片描述
然后,还要修改conf.py 文件,找到 extensions字段,修改为:

#extensions = []
extensions = ['recommonmark','sphinx_markdown_tables']

在这里插入图片描述

支持markdown后,文档文件可以使用markdown格式,但文档的配置文件index.rst还要使用reST格式

9、修改文档显示结构

修改文档结构,需要修改index.rst文件。

index.rst默认内容如下:

.. 小沐日记 documentation master file, created by
   sphinx-quickstart on Sun Jun 11 10:29:33 2023.
   You can adapt this file completely to your liking, but it should at least
   contain the root `toctree` directive.

Welcome to 小沐日记's documentation!
====================================

.. toctree::
   :maxdepth: 2
   :caption: Contents:

Indices and tables
==================

* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

index.rst修改内容如下:

.. 小沐日记 documentation master file, created by
   sphinx-quickstart on Sun Jun 11 10:29:33 2023.
   You can adapt this file completely to your liking, but it should at least
   contain the root `toctree` directive.

Welcome to 小沐日记's documentation!
====================================

.. toctree::
   :maxdepth: 3
   :caption: Contents:

   西游记/index

Indices and tables
==================

* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

在这里插入图片描述

  • 其中“source\西游记\index.rst”内容如下:
西游记
=================================
 
.. toctree::
   :maxdepth: 1
   
   第一回、灵根育孕源流出 心性修持大道生/index
   第二回、悟彻菩提真妙理 断魔归本合元神/index
   第三回、四海千山皆拱伏 九幽十类尽除名/index
  • 其中“source\西游记\第一回、灵根育孕源流出 心性修持大道生\index.rst”内容如下:
第一回、灵根育孕源流出 心性修持大道生
=======================================

其他几个类似如上。再次编译,预览如下:

sphinx-autobuild source build/html
  • 第一级页面:
    在这里插入图片描述
  • 第二级页面:
    在这里插入图片描述
  • 第三级页面:
    在这里插入图片描述

10、项目托管到github

首先在github上创建仓库,比如yxy_note,然后建立本地仓库:

echo "# yxy_note" >> README.md
git init
# git add README.md
# git add -A
git add .
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/fxyublib/yxy_note.git
git push -u origin main

命令执行过程如下:
在这里插入图片描述
github网站的内容更新如下:
在这里插入图片描述

11、部署到ReadtheDocs

ReadtheDocs平台(https://readthedocs.org/)
打开页面:https://readthedocs.org/dashboard/
在这里插入图片描述

选择手动导入一个项目:
在这里插入图片描述
设置项目的基本信息如下:
在这里插入图片描述
然后点击按钮“Build version”编译代码生成文档网页。
在这里插入图片描述
居然构建失败了。
在这里插入图片描述
原因是ReadTheDocs的python环境没有对应的第三方库文件,需要在项目根目录执行如下命令生成requirements.txt,这样ReadTheDocs会自动安装对应的插件依赖。
命令行执行如下命令:

python3 -m pip freeze > requirements.txt
  • requirements.txt:
sphinx-markdown-tables

在这里插入图片描述
再次编译如下:
在这里插入图片描述
预览生成的文档如下:
在这里插入图片描述

结语

如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡)
感谢各位大佬童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/633517.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Win10开启混合现实模拟器

最近要做一个类似工业元宇宙的项目&#xff0c;准备先在Win10上先进行模拟&#xff0c;而Win10已经提供了混合现实模拟器&#xff0c;可以在没有头显的情况下进行模拟。本文讲解如何开启这个模拟器。 微软官方给了一个链接讲述如何开启混合现实模拟器&#xff0c;可以点击这里…

嘀嗒陪诊小程序v1.0.8+小程序前端

嘀嗒陪诊小程序功能相对简单&#xff0c;后台也简捷&#xff0c;如果只是做个陪诊服务的小程序也基本能满足了&#xff0c;整体测试了下海参崴发现BUG&#xff0c;小程序端也能正常为使用&#xff0c;唯一用户授权接口是老的。 应用背景&#xff1a;人口老龄化少子化&#xff…

【数据结构】--单链表力扣面试题⑦环形链表

注&#xff1a;本篇文章不含环形链表的数学推理证明&#xff0c;只提供图解等思路 环形链表是一个非常经典的问题 题述&#xff1a;给定一个链表&#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续追踪 next 指针再次到达&#xff0c;则链表中…

代码随想录算法训练营第五十三天|1143.最长公共子序列|1035.不相交的线|53. 最大子序和

LeetCode1143.最长公共子序列 动态规划五部曲&#xff1a; 1&#xff0c;确定dp数组&#xff08;dp table&#xff09;以及下标的含义&#xff1a;dp[i][j]&#xff1a;长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的最长公共子序列为dp[i][j]。为什么要定…

【无功优化】“碳中和”目标下电气互联系统有功-无功协同优化模型(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

从零玩转系列之微信支付实战基础框架搭建

一、前言 halo各位大佬很久没更新了最近在搞微信支付,因商户号审核了我半个月和小程序认证也找了资料并且将商户号和小程序进行关联,至此微信支付Native支付完成.此篇文章过长我将分几个阶段的文章发布(项目源码都有,小程序和PC端) 在此之前已经更新了微信支付开篇、微信支付安…

【Matlab代码实现】电动过滤器:LPF和HPF、模拟调制:调幅和调频、WiFi、蓝牙和蜂窝网络的容量分析.....

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

第五章 二次型

引言 题型总结中推荐例题有蓝皮书的题型较为重要&#xff0c;只有吉米多维奇的题型次之。码字不易&#xff0c;如果这篇文章对您有帮助的话&#xff0c;希望您能点赞、评论、收藏&#xff0c;投币、转发、关注。您的鼓励就是我前进的动力&#xff01; 知识点思维导图 补充&…

十一、进程间通信——管道

目录 零、前置知识 一、什么是进程间通信 &#xff08;一&#xff09;含义 &#xff08;二&#xff09;发展 &#xff08;三&#xff09;类型 1.管道 2.System V IPC 3.POSIX IPC 二、为什么要有进程间通信 三、怎么进行进程间通信 &#xff08;一&#xff09;什么是…

PoseiSwap的趋势性如何体现?

DEX 代表了一种先进的意识形态&#xff0c;相对于 CEX 其更强调无许可、去中心化以及公开透明。然而随着 DeFi 赛道逐渐从 2021 年年底的高峰逐渐转向低谷&#xff0c;DEX 整体的交易量、TVL等数据指标也开始呈现下滑的趋势&#xff0c;DEX 正在面临发展的新瓶颈期。 在这样的背…

时间序列预测的20个基本概念总结

1、时间序列 时间序列是一组按时间顺序排列的数据点 比如&#xff1a; 每小时的气压每年的医院急诊按分钟计算的股票价格 2、时间序列的组成部分 时间序列数据有三个主要组成部分。 趋势季节性残差或白噪声 3、趋势 在时间序列中记录的长期缓慢变化/方向。 4、季节性 …

51、基于51单片机洗衣机控制系统(带水位)系统设计(程序+原理图+PCB源文件+Proteus仿真+参考论文+开题报告+任务书+流程图+元器件清单等)

摘 要 随着数字技术的快速发展&#xff0c;数字技术被广泛应用于智能控制的领域中。单片机以体积小、功能全、价格低廉、开发方便的优势得到了许多电子系统设计者的青睐。它适合于实时控制&#xff0c;可构成工业控制器、智能仪表、智能接口、智能武器装置以及通用测控单元等。…

【最优PID 整定】PID性能指标(ISE,IAE,ITSE和ITAE)优化、稳定性裕量(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

ChatGPT1论文解读《Improving Language Understanding by Generative Pre-Training》(2018)

论文总结 以下是我阅读完整篇论文做的个人总结&#xff0c;基本包含了ChatGPT1设计的完整框架思路&#xff0c;可以仅看【论文总结】章节。 在GPT1实现的核心架构中&#xff0c;包含两个阶段。 第一阶段 在第一阶段基于一个包含7000本书籍内容的海量未标注文本数据集进行无…

PLC模拟量超限报警功能块

模拟量偏差报警功能块请参看下面文章: 模拟量偏差报警功能块(SCL代码)_RXXW_Dor的博客-CSDN博客工业模拟量采集的相关基础知识,可以查看专栏的系列文章,这里不再赘述,常用链接如下:PLC模拟量采集算法数学基础(线性传感器)_plc傳感器數據轉化_RXXW_Dor的博客-CSDN博客。…

GOOGLE | COT(chain of thought)开山之作,利用思维链提升复杂问题推理能力

一、概述 title&#xff1a;Chain-of-Thought Prompting Elicits Reasoning in Large Language Models 论文地址&#xff1a;https://arxiv.org/abs/2201.11903 auto COT代码【COT升级版本】&#xff1a;GitHub - amazon-science/auto-cot: Official implementation for &qu…

【LeetCode】HOT 100(8)

题单介绍&#xff1a; 精选 100 道力扣&#xff08;LeetCode&#xff09;上最热门的题目&#xff0c;适合初识算法与数据结构的新手和想要在短时间内高效提升的人&#xff0c;熟练掌握这 100 道题&#xff0c;你就已经具备了在代码世界通行的基本能力。 目录 题单介绍&#…

字符串--字符串字面量、字符串的存储

一、字符串字面量&#xff08;string literal&#xff09; 字符串字面量&#xff08;string literal &#xff09;&#xff0c;有时也成为字符串常量&#xff0c;它是由一对双引号括起来的一个字符序列。如“hello”&#xff0c;“123”等都是字符串。无论双引号内是否包含字符…

C++入门:类和对象(上)

目录 前言&#xff1a; 一&#xff1a;初识面向过程和面向对象 二&#xff1a;类的引入 三&#xff1a;封装和类的访问限定符 (1)封装 (2)访问限定符 四&#xff1a;类的作用域和类的定义 (1)作用域 (2)类的定义 五&#xff1a;类的实例化(对象) 六&#xff1a;类对象…

代码随想录第58天

1.每日温度&#xff1a; 1.什么时候用单调栈呢&#xff1f; 通常是一维数组&#xff0c;要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置&#xff0c;此时我们就要想到可以用单调栈了。 2.单调栈里元素是递增呢&#xff1f; 还是递减呢&#xff1f; 注意以…