Read the Docs 線上文檔搭建教程(一)

来源:https://www.cnblogs.com/phpper/archive/2022/08/23/16617573.html
-Advertisement-
Play Games

原文鏈接:https://www.zhoubotong.site/post/76.html 最近發現一個文檔類網站,編寫教程很合適,特地查了一下叫Read the Docs ,可以使用 Sphinx 生成文檔,GitHub 托管文檔,然後導入到 ReadtheDocs進行展示,這裡順便記錄一下搭建過 ...


原文鏈接:https://www.zhoubotong.site/post/76.html
最近發現一個文檔類網站,編寫教程很合適,特地查了一下叫Read the Docs ,可以使用 Sphinx 生成文檔,GitHub 托管文檔,然後導入到 ReadtheDocs進行展示,這裡順便記錄一下搭建過程。

環境:Sphinx + Read the Docs + 寶塔 + Github

無論是管理技術文檔、寫書、寫筆記,亦或想搭建一個屬於你的個人知識庫,都是一個不錯的選擇。廢話不多說,進入下麵正題吧!

1. 背景知識

1.1 Read the Docs

Read the Docs 是一個基於 Sphinx 的免費文檔托管項目。該項目在 2010 年由 Eric Holscher、Bobby Grace 和 Charles Leifer 共同發起。2011年3月,Python 軟體基金會曾給 Read the Docs 項目資助 840 美元,作為一年的伺服器托管費用。此後,受到越來越多開源社區和開發者的關註。

https://images.hscnotebook.com/images/2021/11/05/23d1e677fea0e8b40594765971af0e77.jpg

Read the Docs 網站:https://readthedocs.org/

1.2 Sphinx

https://images.hscnotebook.com/images/2021/11/05/17b41055daf91581fddbbe60d52b85d6.png

Sphinx是一個基於Python的用於創建文檔的工具。它最早只是用來生成 Python 的項目文檔,使用 reStructuredText 格式。但隨著 Sphinx 項目的逐漸完善,目前已發展成為一個大眾可用的框架,很多非 Python 的項目也採用 Sphinx 作為文檔寫作工具,甚至完全可以用 Sphinx 來寫書。具有以下特征:

  • 輸出格式:HTML(包括Windows HTML Help),LaTeX(用於列印的PDF版本),ePub,Texinfo, 手冊頁,純文本;

  • 強大的交叉引用:語義標記和對函數、類、引用、術語表和類似信息的自動鏈接功能;

  • 層次結構:簡單的文本樹定義,並能自動鏈接同級、父級和子級;

  • 自動索引:一般索引以及語言特定模塊索引;

  • 代碼處理:利用Pygments實現代碼高亮;

  • 開放的擴展:支持代碼塊的自動測試,並包含Python模塊的自述文檔(API docs)等。

Sphinx使用reStructuredText作為標記語言,它的優勢來自於reStructuredText語言的強大和直接,及其解析和翻譯套件Docutils1.3 reStructuredText

reStructuredText 是一種輕量級標記語言。它是 Python Doc-SIG(Documentation Special Interest Group)的 Docutils 項目的一部分,旨在為 Python 創建一組類似於 Java 的 Javadoc 或 Perl 的 Plain Old Documentation(pod)的工具。Docutils 可以從 Python 程式中提取註釋和信息,並將它們格式化為各種形式的程式文檔。

值得註意的是,reStructuredText 是一個單詞,不是兩個,也不是三個。可以簡寫為 RST、ReST 或 reST,作為一種用於文本數據的文件格式,通常採用 .rst 作為文件尾碼。

img

前面提到,Sphinx 使用 reST 作為標記語言。實際上,reST 與 Markdown 非常相似,都是輕量級標記語言。由於設計初衷不同,reST 的語法更為複雜一些。

Markdown 的目標很簡單,就是為了更簡單地寫 HTML,完成 text-to-HTML 的任務。而 reST 的目標是,建立一套標準文本結構化格式用以將文檔轉化為有用的數據格式(簡單來說,就是要實現一套簡單、直觀、明確、原文本可閱讀的,且可以轉化為其他格式的文檔標記語言)。顯然,reST 的目標更大一些。

2. 環境搭建

所有操作系統均可使用,此處我以 Uos為例。

確保系統中已安裝 git、make、python3、python3-pip:

sudo apt-get install git
sudo apt-get install make
sudo apt-get install python3
sudo apt-get install python3-pip

然後安裝 Sphinx 及相關依賴,對於已經安裝有Python3的系統(我裝的是Python 3.7.3),可以直接使用pip3安裝Sphinx:

pip3 install sphinx sphinx-autobuild

安裝完成後,系統會增加一些 sphinx- 開頭的命令。

sphinx-apidoc sphinx-autobuild sphinx-autogen sphinx-build sphinx-quickstart

完成安裝之後,可以在命令視窗輸入sphinx-build -h來查看sphinx的版本號和該指令的其他控制參數。

image.png

3. 快速開始

3.1 創建項目

我們以建立 wiki 文檔系統為例,先創建併進入 wiki 文件夾(後續所有操作都在該uos系統wiki文件夾內)。

執行 sphinx-quickstart 構建項目框架,將會出現如下對話視窗。

image.png

首先,詢問你是否要創建獨立的源文件和構建目錄。實際上對應兩種目錄結構,一種是在根路徑下創建“_build”目錄,

另一種是在根路徑下創建“source”和“build”兩個獨立的目錄,前者用於存放文檔資源,後者用於保存構建生成的各種文件。根據個人喜好選擇即可,比如我更傾向於獨立目錄,因此輸入 y。

接著,需要輸入項目名稱、作者等信息。

OK,項目創建完成!設置完成後,目錄結構如下:

│ make.bat
│ Makefile

├───build
└───source
│ conf.py
│ index.rst

├───_static
└───_templates

  • Makefile:可以看作是一個包含指令的文件,在使用 make 命令時,可以使用這些指令來構建文檔輸出。

  • build:生成的文件的輸出目錄。

  • make.bat:Windows 用命令行。

  • _static:靜態文件目錄,比如圖片等。

  • _templates:模板目錄。

  • conf.py:存放 Sphinx 的配置,包括在 sphinx-quickstart 時選中的那些值,可以自行定義其他的值。

  • index.rst:文檔項目起始文件。

然後我們在 wiki 目錄下執行 make html,就會在 build/html 目錄生成 html 相關文件,比如配置更新就需要重新make html生成新文件,

還可以使用sphinx-autobuild來自動重載文檔,運行下麵指令來實現:

sphinx-autobuild . _build/html

image.png

index.rst文件內容會編譯到_build/html目錄下。打開_build\html\index.html文件是渲染出來的HTML頁面,

預設主題不好看,可以配置其它主題。

3.2 配置 主題

使用sphinx-quickstart指令將生成包括conf.py在內的配置文件,以及一份主文檔文件index.rst

conf.py文件包含了該sphinx工程的所有配置選項,包括一些無法在sphinx-quickstart嚮導中進行設置的複雜選項。

更加詳細的conf.py配置內容大家可參考The build configuration file

安裝sphinx Read the Docs主題

pip3 install sphinx_rtd_theme

更多主題可到官網查看,打開 source/conf.py 文件,找到 html_theme 欄位,修改為我們已經安裝好的主題sphinx_rtd_theme

html_theme = 'alabaster'

html_theme = 'sphinx_rtd_theme'

另外一種修改方式可以直接用sed -i命令修改:

sed -i s/alabaster/sphinx_rtd_theme/g source/conf.py # 等同於上面直接修改了主題

在添加2行(下麵兩行按需修改,我的值修改了html_theme參數)
vim source/conf.py
import sphinx_rtd_theme
html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]

修改完成後執行make html重新生成頁面,現在靜態文件全路徑是在wiki/build/html/下,
打開_build\html\index.html文件,可以發現主題配置成功,為了方便演示,因為本章所介紹的ReadTheDocs搭建是在UOS系統完成,
本機用的win10,為了方便演示,在uos環境系統下的wiki目錄執行:

uos@uos-PC:/media/uos/G/web$ cd wiki
uos@uos-PC:/media/uos/G/web/wiki$ python3 -m http.server 9000
Serving HTTP on 0.0.0.0 port 9000 (http://0.0.0.0:9000/) ...

打開_build\html\index.html文件,可以發現主題配置成功。
image.png
image.png
html目錄就是文檔框架的站點目錄,大家可以用nginx或者寶塔配置功能變數名稱映射到html目錄,到這裡大家可能會問如何更新新增的頁面?很簡單:

接下來我們編寫一個測試頁面,添加一篇文章,在source目錄下新建ch01.rst,步驟如下:

uos@uos-PC:/media/uos/G/web/wiki$ ls
_build build make.bat Makefile source
uos@uos-PC:/media/uos/G/web/wiki$ mkdir source/article -p
uos@uos-PC:/media/uos/G/web/wiki$ echo "test" >>source/article/ch01.rst
uos@uos-PC:/media/uos/G/web/wiki$ sudo vim source/article/ch01.rst #隨便輸入一點文章標題

uos@uos-PC:/media/uos/G/web/wiki$ cat source/article/ch01.rst
第一章

這裡是正文內容,測試一段輸出

下劃線要超過文字,否則會報錯

請按照我的寫法進行操作,後面安裝markdown插件可以不使用這種寫法

修改source/index.rst如下

image.png

註意中間的空行,需要對其否則報錯,空間為3個空格,切記!!!

切換到Makefile所在的目錄下(此處預設的wiki目錄),執行make html
image.png
查看預覽效果:
image.png

3.3 配置 Markdown

Sphinx預設使用 reStructuredText 標記語言,預設不支持markdown寫法,需要安裝recommonmark插件,
因為已經習慣使用markdown進行文檔編輯,下麵來配置markdown。

1) 安裝recommonmark插件

pip3 install recommonmark

2)安裝支持markdown表格的插件

pip3 install sphinx_markdown_tables

如果大家ReadTheDocs的python環境沒有sphinx_markdown_tables,在構建時可能報如下錯誤:

ModuleNotFoundError: No module named 'sphinx_markdown_tables'

解決方案是在docs目錄下新建一個requirements.txt文件,寫入如下內容:

sphinx-markdown-tables==0.0.15

3)配置source/conf.py 文件

extensions = ['recommonmark','sphinx_markdown_tables'] #註意這裡是找到該參數,新增的

在最後一行複製下方配置

from recommonmark.parser import CommonMarkParser
source_parsers = {
'.md': CommonMarkParser,
}
source_suffix = ['.rst', '.md']

比如下麵是我的配置:
image.png
安全起見,執行 make html 檢查下是否含有報錯。那我們現在編寫一個md文件進行測試下:

vim source/article/ch02.md #添加以下內容

readthedoc是什麼?

一個線上編輯文檔的編輯器
* [cnblogs](https://www.cnblogs.com/phpper)
* [](https://www.zhoubotong.site)

關於作者

```javascript
var me = {
nickName : "zhoubotong",
site : "https://www.zhoubotong.site"
}
```

修改source/index.rst:

image.png

執行make html(Makefile所在的同級目錄)
image.png
預覽效果:
image.png

3.4 插入圖片說明

預設不支持外鍵插入圖片,我們只能將圖片下載下來或者引用遠程地址。

image.png

到此,關於readthedoc的使用就介紹到這裡了啦,後面再介紹如何配合github完成自動更新。

無論從事什麼行業,只要做好兩件事就夠了,一個是你的專業、一個是你的人品,專業決定了你的存在,人品決定了你的人脈,剩下的就是堅持,用善良專業和真誠贏取更多的信任。
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Mybatis 懶載入的使用 什麼是懶載入?懶載入的意思就是在使用的時候才去載入,不使用不去載入,相反的就叫饑餓載入或者立即載入。懶載入在Mybatis中一般是存在與聯合查詢的情況,比如查詢一個對象的同時連帶查詢相關的表對應的數據。在Mybatis中查詢可以通過ResultMap設置查詢對象返回一個 ...
  • 一、前言 我們在開發中會經常遇到一些可能會變的值,比如資料庫的密碼,一些關鍵鏈接的配置等等。 都需要我們寫在配置文件中,這樣可以把這些配置文件放到nacos上進行管理,修改nacos的配置,咱們發佈的包就可以動態的進行更新了,不需要重新修改打包在重新發包! 咱們今天就來說一說讀取配置文件中的值常見的 ...
  • Excelize 是 Go 語言編寫的 Excel 文檔基礎庫,2022年8月22日,社區正式發佈了 2.6.1 版本,該版本包含了多項新增功能、錯誤修複和相容性提升優化。 ...
  • 作者:昌維 來源:https://www.zhihu.com/question/537774494/answer/2534015588 知乎上有一個提問: 分享一個很有意思的回答。 1 我是一名 JetBrains 的忠實粉絲。我學習編程語言的經歷大概有 10 年左右,使用 JetBrains 大概 ...
  • 一、前言 在上一篇隨筆中,我向大家介紹瞭如何製作自己的 nuget 包,並沒有向大家介紹如何發佈製作好的包,今天就繼續向大家介紹如何搭建一個簡易的 nuget 私有倉庫,並上傳自己的包以供內部使用。 老規矩,今天介紹的還是在Windows系統下進行的操作,Linux系統下也可以使用 nexus 來搭 ...
  • 來瞧瞧,WPF 炫酷走馬燈! 控制項名:SpotLight 作者:WPFDevelopersOrg 原文鏈接: https://github.com/WPFDevelopersOrg/WPFDevelopers 框架使用大於等於.NET40; Visual Studio 2022; 項目使用 MIT ...
  • 一:背景 這篇我們來聊一下 PerfView 在協助 WinDbg 分析 Dump 過程中的兩個超實用技巧,可能會幫助我們快速定位最後的問題,主要有如下兩塊: 洞察記憶體泄漏中的靜態大集合變數名。 驗證當前程式的 GC 模式。 這裡就把經驗分享一下,希望讓大家少走彎路。 二:如何洞察 1. 查看靜態變 ...
  • 大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家分享的是IAR下調試信息輸出機制之半主機(Semihosting)。 在嵌入式世界里,輸出列印信息是一種非常常用的輔助調試手段,藉助列印信息,我們可以比較容易地定位和分析程式問題。在嵌入式應用設計里實現列印信息輸出的方式有很多,本系列將以 IA ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...