如何用 ReadtheDocs迫皱、Sphinx 快速搭建寫書環(huán)境

參加的數據科學班今天結束了歉闰,但還有很多疑難點沒搞清楚,很多收獲也沒整理舍杜。課程結束后想補寫下筆記,做下查遺補漏赵辕,心想既绩,與其寫筆記,不如寫成一本書的形式还惠,更美觀饲握,也更系統(tǒng)。

現有的寫電子書的方式蚕键,有以下幾個解決方案救欧,優(yōu)劣勢也很明顯。

  • 自有博客锣光,跟散文堆在一起笆怠,不便索引。
  • GitHub Wiki誊爹,適合做知識整理蹬刷,但排版一般,不方便本地查看频丘。
  • GitBook办成,丑,慢搂漠。

經過一些比較和調查迂卢,最終鎖定 Sphinx + GitHub + ReadtheDocs 作為文檔寫作工具。用 Sphinx 生成文檔桐汤,GitHub 托管文檔而克,再導入到 ReadtheDocs。

Sphinx 是一個基于 Python 的文檔生成工具怔毛,最早只是用來生成 Python 官方文檔拍摇,隨著工具的完善,越來越多的知名的項目也用他來生成文檔馆截,甚至完全可以用他來寫書充活,我最初被他所震撼蜂莉,也是因為看到了這本書 Linux 工具教程

引用幾點 Sphinx 的優(yōu)勢:

  • 豐富的輸出格式: 支持 HTML (包括 Windows 幫助文檔), LaTeX (可以打印PDF版本), manual pages(man 文檔), 純文本
  • 完備的交叉引用: 語義化的標簽,并可以自動化鏈接函數,類,引文,術語及相似的片段信息
  • 明晰的分層結構: 可以輕松的定義文檔樹,并自動化鏈接同級/父級/下級文章
  • 美觀的自動索引: 可自動生成美觀的模塊索引
  • 精確的語法高亮: 基于 Pygments 自動生成語法高亮

更多介紹混卵,請看此處:Sphinx 使用手冊映穗。

注:以下操作默認你熟悉命令行操作。

1. 安裝 Sphinx

Mac 系統(tǒng)下安裝極簡幕随,一行代碼搞定

brew cask install sphinx

pip install sphinx

我因為之前安裝過 Anaconda蚁滋,自帶了 sphinx,便省略這步了赘淮。更多安裝方法辕录,請看此處:Install Sphinx

2. 創(chuàng)建工程

創(chuàng)建工程也就是創(chuàng)建文檔梢卸。這步很簡單走诞,進入需要創(chuàng)建工程的目錄,比如我的是 /Users/Scott/Documents/2.創(chuàng)造樂趣, 創(chuàng)建一個名為 DataBook 的文件夾蛤高,你可以用別的你想用的名字蚣旱。

創(chuàng)建:

?  2.創(chuàng)造樂趣 pwd
/Users/Scott/Documents/2.創(chuàng)造樂趣
?  2.創(chuàng)造樂趣 mkdir BookData
?  2.創(chuàng)造樂趣 ls
1.keynote 2.技術    BookData  映射

BookData 創(chuàng)建好了,進入該目錄:

?  2.創(chuàng)造樂趣 cd BookData

輸入sphinx-quickstart戴陡,接下來程序會提示你輸入一些選項塞绿,基本上按 Return 就好了,有些地方看提示注意下恤批,不懂的話可以參考這里:建立sphinx工程异吻。

完成之后,

?  BookData git:(master) ? ls
Makefile build    make.bat source

可以看到有4個文件:

  • build 目錄 運行make命令后喜庞,生成的文件都在這個目錄里面
  • source 目錄 放置文檔的源文件
  • make.bat 批處理命令
  • makefile

基本完成涧黄,使用 make html 命令就可以生成html形式的文檔了。

配置(conf.py)

如果沒有什么特殊需要赋荆,我覺得 Sphinx 沒啥好配的笋妥,改個主題就好了,個人極其喜歡ReadtheDoc的主題窄潭。很簡單春宣,把 conf.py 里面的這句:

html_theme = 'alabaster'

換成

html_theme = 'sphinx_rtd_theme'

將 Sphnix 生成的文檔和配置 push 到遠程 github

?  BookData git init
?  BookData git add .
?  BookData git commit -m "sphinx start"
?  BookData git remote add origin https://github.com/[yourusename]/[yourrepository].git
?  BookData git push origin master

注意:[yourusename]/[yourrepository] 換成你的 github 名和倉庫名。

3. 導入到 ReadtheDocs

  • GitHub 里選擇倉庫嫉你,然后依次點擊 Setting => Webhooks & Service => Add service => ReadTheDocs,激活這個選項月帝。

  • 到 ReadtheDocs import 這個倉庫,導入成功后幽污,點擊閱讀文檔嚷辅,便可看到 Web 效果了。

4. 配置目錄結構

到了這一步距误,基本上已經搭建了簸搞,但這個時候直接寫文檔是還不夠的扁位。目錄結構需要配置下。

假如我要添加兩個文檔 example.rst 和 rest_eazy.rst 到索引 index.rst 里:

.. toctree::
   :maxdepth: 2

   example
   rest_eazy

make html后趁俊,效果如下:

會發(fā)現明明是2個文檔域仇,左邊卻 有 3個標題,因為主索引是按一級標題的數量來索引的寺擂,所以這種方式不可取暇务,標題一多會很亂,好的辦法是創(chuàng)建二級索引:

因為我要建的板塊是3個怔软,分別為數據科學「入門篇」垦细、「基礎篇」、「工具篇」挡逼,所以先把主索引 index.rst 改為:

目錄:
^^^^^

.. toctree::
    :maxdepth: 2
    :glob:
    
    beginning/index
    base/index
    tool/index

然后在 source 目錄下創(chuàng)建 3個目錄 括改,每個目錄下創(chuàng)建一個 index.rst 文件,也就是二級索引文件挚瘟。

mkdir beginning base tool
touch beginning/index.rst base/index.rst tool/inde.rst 

做完這步后叹谁,把書的大綱理一下饲梭,寫到 BookData 目錄底下的 README.md 文件里:

# Python 和數據科學

### 全書目錄:

入門篇:

- Linux
- ipython
- 數值計算(Numpy)
- 數據繪圖(Matplotlib)
- 數據繪圖(Seabornd)

參照目錄創(chuàng)建文件乘盖,如 入門篇,則在 beginning 目錄下創(chuàng)建如下文件:

touch 01_linux.rst 02_ipython.rst 03_numpy.rst 04_matplotlib.rst 05_seaborn.rst

每個文件里寫上 一級標題憔涉,然后檢查下:

?  BookData git:(master) ? ls source/beginning
01_linux.rst      03_numpy.rst      05_seaborn.rst
02_ipython.rst    04_matplotlib.rst index.rst
?  BookData git:(master) ? cat source/beginning/*
Linux 基礎
=========================

Jupyter 基礎
=========================

數值計算(Numpy)
=========================

數據繪圖(Matplotlib)
=========================

數據繪圖(Seaborn)
=========================

然后把文件名添加到二級索引 beginning/index 里

入門篇
==========

這一部分主要介紹數據科學的入門內容;\
包含數據科學的基礎工具订框,如:Jupyter、Linux兜叨,以及 Python 基本的數據科學包 Numpy穿扳,畫圖包 Matplotlib;


.. toctree::
    :maxdepth: 2
    :numbered: 2

    01_linux
    02_ipython
    03_numpy
    04_matplotlib
    05_seaborn

同理于 base 和 tool 目錄,都完成之后會是下圖的效果:


鏈接:BookData国旷, 有三個索引矛物,下一個,上一個都非常順暢跪但。

其他

reStructureText 語法很簡單履羞,不建議刻意去學,如果習慣用 Markdown屡久,建議用 pandoc 一鍵轉化即可.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末忆首,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子被环,更是在濱河造成了極大的恐慌糙及,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件筛欢,死亡現場離奇詭異浸锨,居然都是意外死亡唇聘,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門揣钦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來雳灾,“玉大人,你說我怎么就攤上這事冯凹』涯叮” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵宇姚,是天一觀的道長匈庭。 經常有香客問我,道長浑劳,這世上最難降的妖魔是什么阱持? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮魔熏,結果婚禮上衷咽,老公的妹妹穿的比我還像新娘。我一直安慰自己蒜绽,他們只是感情好镶骗,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著躲雅,像睡著了一般鼎姊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上相赁,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天相寇,我揣著相機與錄音,去河邊找鬼钮科。 笑死唤衫,一個胖子當著我的面吹牛,可吹牛的內容都是我干的绵脯。 我是一名探鬼主播佳励,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼桨嫁!你這毒婦竟也來了植兰?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤璃吧,失蹤者是張志新(化名)和其女友劉穎楣导,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體畜挨,經...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡筒繁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年噩凹,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片毡咏。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡驮宴,死狀恐怖,靈堂內的尸體忽然破棺而出呕缭,到底是詐尸還是另有隱情堵泽,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布恢总,位于F島的核電站迎罗,受9級特大地震影響,放射性物質發(fā)生泄漏片仿。R本人自食惡果不足惜纹安,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望砂豌。 院中可真熱鬧厢岂,春花似錦、人聲如沸阳距。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽娄涩。三九已至窗怒,卻和暖如春映跟,著一層夾襖步出監(jiān)牢的瞬間蓄拣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工努隙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留球恤,地道東北人。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓荸镊,卻偏偏與公主長得像咽斧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子躬存,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內容

  • # Python 資源大全中文版 我想很多程序員應該記得 GitHub 上有一個 Awesome - XXX 系列...
    aimaile閱讀 26,489評論 6 427
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理张惹,服務發(fā)現,斷路器岭洲,智...
    卡卡羅2017閱讀 134,659評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,167評論 25 707
  • 8月10日 星期四 大雨 今天在兒子同學媽媽的鼓勵和引導下宛逗,我又堅持寫親子日記,這段時間由于工...
    一年級八班崔皓媛閱讀 237評論 0 0
  • 前言 有時候盾剩,我們會遇到類似這樣的問題:當你在訪問一個商城的商品列表頁雷激,看到了一個自己感興趣的產品并點擊進去查看詳...
    yuho_小豪哥閱讀 972評論 0 2