readthedoc指南.md 4.8 KB
Newer Older
S
sibo2rr 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
1. 注册ReadtheDocs并连接到github

2. 在github上将项目克隆到本地

3. 在本地仓库中安装Sphinx

   ```shell
   pip install sphinx
   ```

4. 创建工程

   ```shell
   sphinx-quickstart
   ```

5. 对工程进行配置

   5.1 更改主题

   在source/conf.py中更改或添加如下代码

   ```python
   import sphinx_rtd_theme
   html_theme = "sphinx_rtd_theme"
   html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
   ```

S
sibo2rr 已提交
29
   5.2 添加markdown支持和markdown表格支持
S
sibo2rr 已提交
30

S
sibo2rr 已提交
31
   首先需要安装recommonmark和sphinx_markdown_tables
S
sibo2rr 已提交
32 33 34

   ```shell
   pip install recommonmark
S
sibo2rr 已提交
35
   pip install sphinx_markdown_tables
S
sibo2rr 已提交
36 37 38 39 40 41 42 43 44 45
   ```

   在source/conf.py中更改或添加如下代码

   ```python
   from recommonmark.parser import CommonMarkParser
   source_parsers = {
       '.md': CommonMarkParser,
   }
   source_suffix = ['.rst', '.md']
S
sibo2rr 已提交
46 47 48 49
   extensions = [
        'recommonmark',
        'sphinx_markdown_tables'
    ]
S
sibo2rr 已提交
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166
   ```

   以上五步具体效果可以参考https://www.jianshu.com/p/d1d59d0cd58c

6. 在创建好项目以后,根目录下应该有如下几个文件:

   - **Makefile**:在使用 `make` 命令时,可以使用这些指令(e.g. `sphinx-build`)来构建文档输出。
   - **_build**:这是触发特定输出后用来存放所生成的文件的目录。
   - **_static**:所有不属于源代码(e.g. 图片)一部分的文件均存放于此处,稍后会在构建目录中将它们链接在一起。
   - **conf.py**:用于存放 Sphinx 的配置值,包括在终端执行 `sphinx-quickstart`时选中的那些值。
   - **index.rst**:文档项目的 root 目录。如果将文档划分为其他文件,该目录会连接这些文件

7. **编写文档**:在 index.rst 文件中的主标题之后,有一个内容清单,其中包括 `toctree` 声明,它将所有文档链接都汇集到 Index。

   以根目录下的index.rst为例:

   ```rst
   欢迎使用PaddleClas图像分类库!
   ================================
   
   .. toctree::
      :maxdepth: 1
   
      models_training/index
      introduction/index
      image_recognition_pipeline/index
      others/index
      faq_series/index
      data_preparation/index
      installation/index
      models/index
      advanced_tutorials/index
      algorithm_introduction/index
      inference_deployment/index
      quick_start/index
   ```

   可以用下面的python代码实现根目录和各个子目录下的`index.rst`文件的编写

   注意:此代码应该在需要生成文档书的文件夹根目录上运行

   ```python
   import os
   
   def file_name(file_dir):
       temp = []
       for root, dirs, files in os.walk(file_dir):
           print(dirs) #当前路径下所有子目录
           temp = dirs #存储需要的子目录
           break
       
       # 删除不需要的子目录
       temp.remove('images')
       temp.remove('_templates')
       temp.remove('_build')
       temp.remove('_static')
       chinese_name = ['模型训练', '介绍', '图像识别流程', '其他', 'FAQ系列', '数据准备', '安装', '模型库', '高级教程', '算法介绍', '推理部署', '快速开始']
       # 写根目录下的rst文件
       with open('./index.rst', 'w') as f:
           f.write('欢迎使用PaddleClas图像分类库!\n')
           f.write('================================\n\n')
           f.write('.. toctree::\n')
           f.write('   :maxdepth: 1\n\n')
           for dir in temp:
               f.write('   ' + dir + '/index\n')
           f.close()
   
       # 写各个子目录下的rst文件
       for dir in temp:
          for root, dirs, files in os.walk(dir):
           print(root) #当前目录路径
           
           files.remove('index.rst')
           print(files) #当前路径下所有非目录子文件
           curDir = os.path.join(file_dir, dir)
           filename = curDir + '/index.rst'
           idx = temp.index(dir)
           ch_name = chinese_name[idx]
           with open(filename, 'w') as f:
               f.write(ch_name+'\n')
               f.write('================================\n\n')
               f.write('.. toctree::\n')
               f.write('   :maxdepth: 2\n\n')
              
               for f1 in files:
                   f.write('   ' + f1 + '\n')
               
               f.close()
   
   
   def readfile(filename):
       file = open(filename)
       i = 0
       while 1:
           line = file.readline()
           print(i)
           print(line)
           i += 1
           if not line:
               break
           pass # do something
       file.close()
   
   
   file_name('./')
   # filename = './index.rst'
   # readfile(filename)
   ```

8. 生成文档

   运行 `make html` 命令

9. 使用浏览器查看在build/html目录下的 `index.html`文件可以查看静态网页