2. sphinx 与 rst
2.1. sphinx
Important
当前使用的版本是:
1Sphinx 4.5.0
2sphinx-rtd-theme 1.0.0
3sphinxcontrib-applehelp 1.0.2
4sphinxcontrib-devhelp 1.0.2
5sphinxcontrib-htmlhelp 2.0.0
6sphinxcontrib-jsmath 1.0.1
7sphinxcontrib-qthelp 1.0.3
8sphinxcontrib-serializinghtml 1.1.5
Note
在 mac 上安装 sphinx 5.2.3:
brew install sphinx-doc
发现自动安装了依赖 python@3.10 ,而不是用
系统已经安装好的 /usr/bin/python ,这就导致 sphinx-build
一直找不到 /usr/bin/pip 安装的 sphinx-rtd-theme ,
因此需要使用:
/opt/homebrew/Cellar/python@3.10/3.10.6_2/bin/python3.10 -m pip install sphinx-rtd-theme
来重新安装。添加环境变量:
echo 'export PATH="/opt/homebrew/opt/sphinx-doc/bin:$PATH"' >> ~/.zshrc
编译之后,本地查看 html 结果显示正常,但是 push 到 Github 发布之后,发现代码行号几乎紧贴代码本身,视觉效果很差。 没找到好的解决方法,只能手动降级 sphinx:
/opt/homebrew/Cellar/python@3.10/3.10.6_2/bin/python3.10 -m pip install sphinx==4.5
Note
如果修改了目录结构(新增、删除、改名、调换顺序等),最好重新 build 一次:
make clean
make html
否则目录总是会跳到以前的版本去。
2.2. rst 语法测试
makefile
语法高亮:
target ... : prerequisites ...
command
...
...
下面是几个定义:
- target
可以是一个object file(目标文件),也可以是一个执行文件,还可以是一个标签(label)。对 于标签这种特性,在后续的“伪目标”章节中会有叙述。
- prerequisites
生成该target所依赖的文件和/或target
- command
该target要执行的命令(任意的shell命令)
行内公式使用 math role
: \(a^2 + b^2 = c^2\) 。
行间公式:
将高亮语言设置为 C
:
.. highlight:: c
:linenothreshold: 1
测试 C
:
1int a = 0;
2char c = 'c';
3printf("%c\n", c);
这里是 C++
:
1int main()
2{
3 int i;
4 int j;
5 cin >> i >> j;
6 cout << i << j << endl;
7 return 1;
8}
9// 主函数注释
斜体 text
将高亮语言设置为 python
:
1.. highlight:: python
2 :linenothreshold: 2
测试 python
:
1import torch
2import numpy as np
3print "hello world"
这里也是 python
(code):
1def foo():
2 print "Love Python, Love FreeDome"
3 print "E文标点,.0123456789,中文标点,. "
如果数据库有问题, 执行下面的 SQL
:
1-- Dumping data for table `item_table`
2INSERT INTO item_table VALUES (
30000000001, 0, 'Manual', '', '0.18.0',
4'This is the manual for Mantis version 0.18.0.\r\n\r\nThe Mantis manual is modeled after the [url=http://www.php.net/manual/en/]PHP Manual[/url]. It is authored via the \\"manual\\" module in Mantis CVS. You can always view/download the latest version of this manual from [url=http://mantisbt.sourceforge.net/manual/]here[/url].',
5 '', 1, 1, 20030811192655);
下面的代码有高亮行:
1# 测试注释
2def foo():
3 print "Love Python, Love FreeDome"
4 print "E文标点,.0123456789,中文标点,. "
下面是 javescipt
的 rst 源码:
1.. code-block:: javascript
2 :linenos:
3
4 function whatever()
5 {
6 return "such color"
7 }
下面是 bash
:
1cd home
2echo $PATH
3source ~/.bashrc
4ls -l
5mkdir filefolder
6cd ..
代码折叠功能需要自定义 _templates 。
\(\color{darkgreen}{Show/Hide\ Code}\)
1class Solution(object):
2 def canJump(self, nums):
3 """
4 https://leetcode.com/problems/jump-game/
5 Each element in the array represents your maximum jump length at that position.
6
7 Input: [2,3,1,1,4]
8 Output: true
9 Explanation: Jump 1 step from index 0 to 1, then 3 steps to the last index.
10
11 :type nums: List[int]
12 :rtype: bool
13 """
14 if nums == []:
15 return False
16 if len(nums) == 1:
17 return True
18 return None
插入空行使用 |
,下面是两个空行。
这里有一个下载链接:lake
使用 sphinx.ext.graphviz
扩展,下面是一个无向图:
下面是一个有向图:
一行插入多张图:
多列列表使用 hlist
:
|
|
field list:
- School
ustc
- Year
1958
- Addr
hefei, anhui
- Me
fong
Todo
补充更多的语法测试内容。
Tip
VS Code 推荐使用插件:
reStructuredText Syntax highlighting(@Trond Snekvik)
RST Preview(@Thomas Haakon Townsend)
reStructuredText(@LeXtudio Inc.)
Hint
使用 sphinx.ext.graphviz
扩展需要安装 graphviz(brew 安装不要使用代理):
brew install graphviz
然后设置环境变量(dot 的目录 which dot
):
export PATH=$PATH:/opt/homebrew/bin
在配置文件 conf.py 中设置导出格式:
graphviz_output_format = 'svg'
Warning
编译的时候提示:
WARNING: html_static_path 入口 ‘_static’ 不存在
需要在 source 目录下新增一个 _static 目录。
2.3. 参考资料
sphinx_rtd_theme 配置
sphinx themes
reStructuredText
reStructuredText 域
reStructuredText Directives
reStructuredText(rst)快速入门语法说明
代码隐藏(自定义,_templates放在conf.py同目录下)
代码隐藏(安装扩展,全屏显示,体验不好)
Sphinx + Github Page + Read the Docs
https://kyzhang.me/2018/05/08/Sphinx-Readthedocs-GitHub2build-wiki/
https://www.jianshu.com/p/78e9e1b8553a
https://blog.csdn.net/baidu_25464429/article/details/80805237
https://github.com/mathLab/PyGeM/issues/94
https://jamwheeler.com/college-productivity/how-to-write-beautiful-code-documentation/
latex 颜色
graphviz
How to add custom CSS or JavaScript to Sphinx documentation