内容组织#

Sphinx 允许您将内容组织到多个文档中,并包含来自其他文档的内容。

本节介绍如何使用 MyST Markdown 实现这一点。

1.  文档结构#

单个 MyST Markdown 文档使用 标题 进行结构化。

文档根级别的所有标题都会包含在该页面的目录 (ToC) 中。

许多 HTML 主题已经将目录包含在侧边栏中,但您也可以使用 contents directive 将其包含在页面的主要内容中:

选项:

depth:

可用于指定目录的深度。

local:

可用于仅包含文档当前部分的标题。

backlinks:

可用于在每个部分的末尾包含指向目录的链接。

class:

可用于向目录添加自定义 CSS 类。

警告

由于文档的结构由标题决定,因此在文档中出现‘非连续’标题是有问题的,例如:

# Heading 1
### Heading 3

如果您希望包含此类标题,可以使用 attrs_block 扩展将标题包裹在 div 中,这样它就不会包含在目录中:

# Heading 1
:::
### Heading 3
:::

2.  将其他文档直接插入当前文档#

include 指令允许您将另一个文档的内容直接插入到当前文档的流程中。

参见

用于包含文件源代码的 literalinclude 指令

```{literalinclude} example.txt
```

```{include} example.txt
```
Hallo
there
you!

Hallo there you!

以下选项允许您仅包含文档的一部分:

start-line:

仅包含从此行号开始的内容(行号从 1 开始,负数表示从末尾倒数)。

end-line:

仅包含到此行(但不包括该行)为止的内容。

start-after:

仅包含在首次出现指定文本之后的内容。

end-before:

仅包含在首次出现指定文本之前(但在任何 after 文本之后)的内容。

```{literalinclude} example.txt
```

```{include} example.txt
:start-line: 1
:end-line: 2
```

```{include} example.txt
:start-after: Hallo
:end-before: you!
```
Hallo
there
you!

there

there

以下选项允许您修改包含文档的内容,使其相对于插入位置进行调整:

heading-offset:

将所有标题级别偏移此正整数,例如将 # 更改为 ####

relative-docs:

如果 Markdown 文件引用以特定前缀开头,则使其相对于当前文档。

relative-images:

使 Markdown 图像引用相对于当前文档。

```{literalinclude} examples/example_relative_include.txt
```

```{include} examples/example_relative_include.txt
:heading-offset: 3
:relative-docs: ..
:relative-images:
```
# My heading

[](../typography.md)
![alt](../img/fun-fish.png){w=50}

My heading

排版 alt

其他选项:

encoding:

外部文件的文本编码。

3.  使用 toctree 将其他文档作为子文档包含#

为了构建包含多个文档的项目,使用了 toctree 指令

将指定文档作为当前文档的子文档,从 root_doc 开始构建嵌套的文档层次结构。

```{toctree}
examples/content_child1.md
examples/content_child2.md
```

toctree 选项:

glob:

表示所有条目将与可用文档列表匹配,并按字母顺序将匹配项插入列表中。

以下选项控制其在文档中的显示方式:

caption:

此 toctree 的标题。

hidden:

不在文档中显示。

includehidden:

包含隐藏的 toctree 子条目。

maxdepth:

显示的文档子标题的深度。

titlesonly:

仅显示第一个顶级标题。

reversed:

反转列表中条目的顺序。

其他选项:

name:

允许引用 toctree

numbered:

为子文档中的所有标题编号。如果指定了整数,则这是编号的深度。

小技巧

子 toctree 会自动编号,因此不要给它们 :numbered: 标志。