扩展主题#

Sphinx 有许多可用的扩展,可以增强您的网站或提供强大的自定义功能。在这里,我们描述一些 pydata-sphinx-theme 用户常用的自定义功能。

可折叠警示框#

sphinx-togglebutton 扩展为警示框提供可选的显示/隐藏行为。按照他们的安装说明操作,然后将其添加到您的 conf.py 中的 extentions 列表中

extensions = [
    # [...]
    "sphinx_togglebutton"
]

然后将 dropdown 类添加到任何警示框指令中(此处显示在 note 警示框上)

.. note::
    :class: dropdown

    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
```{note}
:class: dropdown

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
```

自定义警示框样式#

一个 有限集 的警示框内置于 docutils(底层 Sphinx 的 rSTHTML 引擎)。但是,可以创建具有自己默认颜色、图标和标题的自定义警示框。

自定义标题#

虽然大多数警示框都有默认标题,例如 notewarning,但通用 admonition 指令内置于 docutils/Sphinx 中。在此主题中,其颜色默认为与 note 警示框相同的颜色,并且有一个铃铛图标

自定义标题!

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

标题在与 .. admonition:: 指令相同的行上指定

.. admonition:: Custom title!

    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
```{admonition} Custom title!

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
```

使用语义颜色名称进行样式设置#

您可以通过使用任何 主题的语义颜色名称 作为类来重新设置任何警示框的样式以匹配任何内置警示框类型(这对于自定义标题的警示框最有用)

具有“警告”样式的自定义标题

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

请注意,它会更新颜色和图标。有关所有语义颜色名称的列表,请参阅 主题变量和 CSS

.. admonition:: Custom title with "warning" style
    :class: warning

    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
```{admonition} Custom title with "warning" style
:class: warning

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
```

此主题为 标准 docutils 警示框类型attentioncaution 等)定义了类,并且还支持 seealsotodo 警示框(有关所有内置警示框样式的演示,请参阅 警示框)。

自定义颜色#

除了预定义的语义颜色类(请参阅上一节)之外,您还可以通过定义自己的 CSS 类为任何警示框添加定制颜色。示例

具有自定义“橄榄色”的警示框

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

为此,您需要在您的 custom.css 文件中添加一个类,如下面的示例所示。请确保将 border-colorcolor 使用相同的颜色,并为 background-color 使用不同的色调

.. admonition:: Admonition with custom "olive" color
    :class: admonition-olive

    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
```{admonition} Admonition with custom "olive" color
:class: admonition-olive

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
```

并将以下内容添加到您的 custom.css 文件中

/* <your static path>/custom.css */

div.admonition.admonition-olive {
  border-color: hsl(60deg 100% 25%);
}

div.admonition.admonition-olive > .admonition-title {
  background-color: hsl(60deg 100% 14%);
  color: white;
}

div.admonition.admonition-olive > .admonition-title::after {
  color: hsl(60deg 100% 25%);
}

使用自定义图标#

自定义图标使用与自定义颜色类似的过程:在您的 custom.css 文件中创建一个新的 CSS 类。该主题支持 fontawesome v6 图标(“免费”和“品牌”集)。要使用图标,请将它的 unicode 值复制到您的自定义类中,如下面的 CSS 选项卡中所示

查看我的自定义图标

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

.. admonition:: Check out my custom icon
    :class: admonition-icon

    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
```{admonition} Check out my custom icon
:class: admonition-icon

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
```

并将以下 css 添加到您的 custom.css 文件中

/* <your static path>/custom.css */

div.admonition.admonition-icon > .admonition-title::after {
  content: "\f24e"; /* the fa-scale icon */
}

组合所有三种自定义#

这里我们演示了具有自定义图标、颜色和标题(以及使其可折叠)的警示框。请注意,多个警示框类名是用空格分隔的

.. admonition:: YouTube
    :class: dropdown admonition-youtube

    ..  youtube:: dQw4w9WgXcQ
````{admonition} YouTube
:class: dropdown admonition-youtube

```{youtube} dQw4w9WgXcQ
```

````

并将以下 css 添加到您的 custom.css 文件中

/* <your static path>/custom.css */

div.admonition.admonition-youtube {
  border-color: hsl(0deg 100% 50%); /* YouTube red */
}

div.admonition.admonition-youtube > .admonition-title {
  background-color: hsl(0deg 99% 18%);
  color: white;
}

div.admonition.admonition-youtube > .admonition-title::after {
  color: hsl(0deg 100% 50%);
  content: "\f26c"; /* fa-solid fa-tv */
}