创建子主题

创建子主题#

您可以由此创建子主题,从而实现大部分相同的功能,但对样式和行为稍作修改。此页面提供了一些有用的提示来帮助您完成操作。

警告

创建子主题需要高级的 Sphinx 技能,并且这并非本主题明确支持的功能。无法保证在此处不会做出破坏性的更改,因此请务必针对最新分支测试您的子主题,并且/或者固定您的版本!!

哈希处理 assets#

此主题定义了名为 hash_html_assets 的函数,该函数可用于为您的样式文件生成哈希值,并更新 Sphinx 链接以在其中包含 ?digest= 参数。如果您愿意,可以在子主题中重复使用此函数——要这样做,请查看 hash_html_assets 函数的参数签名。

例如,这里有使用了该函数的 Python 代码片段:

from sphinx_book_theme import hash_assets_for_files

def hash_html_assets(app, pagename, templatename, context, doctree):
    assets = ["styles/your-css-asset.css", "scripts/your-js-asset.js"]
    STATIC_PATH = "path to your theme's static folder"
    hash_assets_for_files(assets, STATIC_PATH, context)

def setup(app):
  app.connect("html-page-context", hash_html_assets)

自定义 CSS#

如果您想为您的子主题定义新的 CSS 样式表,请务必同时导入该主题的 CSS 文件。作为最佳实践,您应该将子主题的 CSS 样式表放在 STATIC_PATH/styles/ 文件夹中,与本主题的设置类似。然后,您可以使用以下方式导入该主题的 CSS 文件:

@import "sphinx-book-theme.css";

// And include your own CSS below