主题结构和布局#
本节介绍了一些控制文档布局和结构的基本方法。此主题从 Sphinx Basic NG 主题 继承了其结构和章节术语。
主题布局概述#
以下是此主题主要布局的简要概述。请查看图表以了解主要部分的名称。在 html_theme_options
中可以插入组件模板的位置,我们包含变量名称 in inline code
。单击章节标题以了解有关它们以及一些基本布局配置的更多信息。有关现有选项的完整参考,请参见 此页面最后一节。
水平间距#
默认情况下,主题的三个列具有固定宽度。 primary sidebar
将贴靠到左侧, secondary sidebar
将贴靠到右侧, article content
将居中在两者之间。
如果缺少一个侧边栏,则
article content
将居中在另一个侧边栏和页面边缘之间。如果两个侧边栏都不存在,则
article content
将位于页面的中间。
如果您希望 article content
占用比默认值更宽的宽度,请使用以下选择器使用 max-width
CSS 属性
.bd-main .bd-content .bd-article-container {
max-width: 100%; /* default is 60em */
}
上面的规则会将文章内容的最大宽度设置为与顶部导航栏相同的宽度。要真正使用所有可用的页面宽度,您还需要设置以下 CSS 规则
.bd-page-width {
max-width: 100%; /* default is 88rem */
}
这将影响文章内容和顶部导航栏。
注意
如果您同时使用以上两个自定义 CSS 规则,请确保将它们作为单独的规则保留在您的 CSS 文件中。如果您将它们合并,结果将是一个比主题中的两个默认规则不太具体的 CSS 选择器,并且您的自定义 CSS 将无法覆盖主题默认值。
模板和组件#
有一些主要的主题部分,您可以自定义它们以添加/删除内置组件或添加您自己的组件。每个部分都配置了一系列HTML 模板 - 这些是 Sphinx 插入部分中的 HTML 片段。
您可以选择每个部分中显示哪些模板,以及它们的显示顺序。此页面描述了您可以自定义的主要区域。
注意
在每个部分中配置模板时,如果您愿意,可以省略每个模板后的 .html
后缀。
文章标题#
位于 sections/header-article.html
中。
文章标题是文章内容正上方的一条窄条。有两个子部分可以添加组件模板
article_header_start
对齐到文章标题的开头(左侧)。默认情况下,此部分包含breadcrumbs.html
组件,该组件显示到当前页面父页面的链接。article_header_end
对齐到文章标题的结尾(右侧)。默认情况下,此部分为空。
内置组件插入到部分中#
下面列出了可以插入到任何部分的内置模板。请注意,其中一些可能具有假设特定部分的 CSS 规则(并将相应命名)。
注意
在添加/更改/覆盖组件时,“.html”后缀是可选的。这就是为什么在下面的列表中它们都显示为没有它。
breadcrumbs: 显示(并链接到)当前查看页面的父部分。
copyright: 显示版权信息(在 conf.py 中定义)。
edit-this-page: 显示一个链接到指定版本控制系统中页面源的编辑界面。
icon-links: 将图标链接显示为列表项。
indices: 显示指向 Sphinx 生成的索引(genindex、modindex、py-modindex)的链接。
last-updated: 显示文档最后构建的日期和时间。
navbar-icon-links: 在页眉导航栏中显示图标链接。
navbar-logo: 在页眉导航栏中显示您的文档网站的徽标。
navbar-nav: 在页眉导航栏中显示指向顶级 TOCtree 元素的链接。
page-toc: 显示当前页面的目录。
prev-next: 显示指向 TOCtree 顺序中上一个和下一个页面的链接。
search-button-field: 显示一个搜索字段图像,单击该图像会打开一个搜索叠加层。
search-button: 显示一个放大镜图标,单击该图标会打开一个搜索叠加层。
search-field: 在页面上直接显示一个交互式搜索字段。
searchbox: 一个空容器,当需要时,它包含“隐藏搜索匹配项”按钮。
sidebar-ethical-ads: 对于托管在 ReadTheDocs 上的网站,显示“道德广告”。
sidebar-nav-bs: 显示当前活动顶级 TOCtree 元素下嵌套的页面的 TOC 子树。
sourcelink: 显示指向当前页面的 .rst 源代码的链接。
sphinx-version: 显示用于构建文档的 Sphinx 版本。
theme-switcher: 显示一个图标,用于在浅色模式、深色模式和自动(使用浏览器的设置)之间切换。
theme-version: 显示用于构建文档的 pydata-sphinx-theme 版本。
version-switcher: 显示一个下拉框,用于在文档的不同版本之间切换。
将您自己的 HTML 模板添加到主题部分#
如果你想将你自己的自定义模板添加到这些部分中的任何一个,你可以按照以下步骤进行
在名为
_templates
的文件夹中创建一个 HTML 文件。例如,如果你想使用 Jinja 模板显示文档的版本,你可以创建一个文件:_templates/version.html
并将以下内容放入其中<!-- This will display the version of the docs --> {{ version }}
现在将文件添加到上面部分之一的菜单项中。例如
html_theme_options = { # ... "navbar_start": ["navbar-logo", "version"], # ... }
构建日期#
默认情况下,即使 Sphinx 的 html_last_updated_fmt 变量已设置,此主题也不会显示构建日期。如果你想显示构建日期,主题包含一个 last-updated
模板,你可以将其添加到 conf.py
中的页面区域之一。例如
html_theme_options = {
"content_footer_items": ["last-updated"],
# other settings...
}
如果你确实指定了 html_last_updated_fmt
,但没有包含 last-updated
模板,主题仍然会将构建日期写入 HTML 页眉中的 meta
标记,可以通过查看页面源代码或使用 HTML 解析器提取该标记。该标记将如下所示
<meta name="docbuild:last-update" content="Aug 15, 2023">
该标记的 content
属性将遵循 html_last_updated_fmt
配置变量中指定的格式。
参考资料#
请在此找到可以在 conf.py
中的 html_theme_options
中使用的所有键的完整列表
[theme]
inherit = basic
# Note that we don't link the CSS file via Sphinx
# instead we manually link it in `webpack-macros.html`
stylesheet = styles/pydata-sphinx-theme.css
pygments_style = tango
sidebars = sidebar-nav-bs.html
[options]
# General configuration
sidebarwidth = 270
sidebar_includehidden = True
use_edit_page_button = False
external_links =
bitbucket_url =
github_url =
gitlab_url =
twitter_url =
icon_links_label = Icon Links
icon_links =
analytics =
show_prev_next = True
search_bar_text = Search the docs ...
navigation_with_keys = False
collapse_navigation = False
navigation_depth = 4
show_nav_level = 1
show_toc_level = 1
navbar_align = content
header_links_before_dropdown = 5
header_dropdown_text = More
switcher =
check_switcher = True
pygments_light_style = a11y-high-contrast-light
pygments_dark_style = a11y-high-contrast-dark
logo =
logo_link =
surface_warnings = True
back_to_top_button = True
# Template placement in theme layouts
navbar_start = navbar-logo
navbar_center = navbar-nav
navbar_end = theme-switcher, navbar-icon-links
navbar_persistent = search-button-field
article_header_start = breadcrumbs
article_header_end =
article_footer_items =
content_footer_items =
primary_sidebar_end = sidebar-ethical-ads
footer_start = copyright, sphinx-version
footer_center =
footer_end = theme-version
secondary_sidebar_items = page-toc, edit-this-page, sourcelink
show_version_warning_banner = False
announcement =
# DEPRECATED (remove after 1.0 release)
pygment_light_style =
pygment_dark_style =