创建子主题#
您可以由此创建子主题,从而实现大部分相同的功能,但对样式和行为稍作修改。此页面提供了一些有用的提示来帮助您完成操作。
警告
创建子主题需要高级的 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