如何修改本文档
如果您希望将您的页面添加到此文档中,需要将源文件添加到适当的部分。我选择创建一个结构来重新整理文档的各个部分,这并不是严格必要的,但为了清晰性,强烈建议这样做。
本文档使用递归索引树:每个文件夹都有一个特殊的 index.rst
文件,告诉 sphinx 哪个文件存在、以什么顺序将其放入文档树中。
标题约定
Sphinx 非常智能,文档结构是根据您如何使用非字母数字字符(例如:= - ` : ' " ~ ^ _ * + # < >
)推导出来的,您只需要保持一致即可。不过,为了保持一致性,我们使用这些约定:
=
用于章节标题的前后行
=
标题的下划线
-
段落的下划线
^
表示子段落
Wavedrom 的集成
本文档使用了 sphinxcontrib-wavedrom
插件,因此您可以使用 WaveJSON 语法指定时序图或寄存器描述,如下所示:
.. wavedrom::
{ "signal": [
{ "name": "pclk", "wave": "p......." },
{ "name": "Pclk", "wave": "P......." },
{ "name": "nclk", "wave": "n......." },
{ "name": "Nclk", "wave": "N......." },
{},
{ "name": "clk0", "wave": "phnlPHNL" },
{ "name": "clk1", "wave": "xhlhLHl." },
{ "name": "clk2", "wave": "hpHplnLn" },
{ "name": "clk3", "wave": "nhNhplPl" },
{ "name": "clk4", "wave": "xlh.L.Hx" }
]}
你可以得到:
备注
如果您希望 Wavedrom 图出现在 pdf 导出中,则需要使用 “non relaxed” JSON 方言。长话短说,就是没有使用 javascript 代码并使用 "
包围键值(例如 "name"
)。
您可以使用相同的语法描述寄存器映射:
{"reg":[
{"bits": 8, "name": "things"},
{"bits": 2, "name": "stuff" },
{"bits": 6}
],
"config": { "bits":16,"lanes":1 }
}
新章节
如果你想添加一个新的节,你需要在顶部索引中指定新节的索引文件。我建议将文件夹命名为节名称,但这不是必需的; Sphinx 将从索引文件的标题中获取该部分的名称。
示例
我想记录 SpinalHDL 中的新功能,并且我想为其创建一个章节;我们称之为 Cheese
所以我需要创建一个名为 Cheese
的文件夹(名称并不重要),并在其中创建一个索引文件,例如:
======
Cheese
======
.. toctree::
:glob:
introduction
*
备注
.. toctree::
指令接受一些参数,在本例中 :glob:
使您可以使用 *
包含所有剩余文件。
备注
文件路径是相对于索引文件的,如果要指定绝对路径,需要在前面加上``/``
备注
introduction.rst
将始终是列表中的第一个,因为它是在索引文件中指定的。其他文件将按字母顺序排列。
现在我可以添加 introduction.rst
和其他文件,比如 cheddar.rst
,stilton.rst
等。
剩下要做的唯一一件事就是将 cheese
添加到顶部索引文件中,如下所示:
Welcome to SpinalHDL's documentation!
=====================================
.. toctree::
:maxdepth: 2
:titlesonly:
rst/About SpinalHDL/index
rst/Getting Started/index
rst/Data types/index
rst/Structuring/index
rst/Semantic/index
rst/Sequential logic/index
rst/Design errors/index
rst/Other language features/index
rst/Libraries/index
rst/Simulation/index
rst/Examples/index
rst/Legacy/index
rst/Developers area/index
rst/Cheese/index
就是这样,现在您可以在 cheese
中添加您想要的所有内容,所有页面都将显示在文档中。