主题主题名称没有 "theme" 设置来自定义我在 sphinx 中的主题?

theme theme-name doesn't have "theme" setting for customizing my theme in sphinx?

我想为 python-sphinx 创建自己的主题--mytheme

tree project
project
├── build
├── make.bat
├── Makefile
├── mytheme
│   ├── static
│   │   └── style.css
│   └── theme.conf
└── source
    └── conf.py

theme.conf中的内容:

cat  project/mytheme/theme.conf
[theme]
inherit = default
stylesheet = style.css

project/source/conf.py

中的内容
cat project/source/conf.py
def setup(app):
    app.add_stylesheet('static/style.css')
    app.add_html_theme('mytheme', os.path.abspath(os.path.dirname(__file__)))

html_theme = 'mytheme'  
html_theme_path = ['.'] 

现在让我们在源代码中制作我所有的 *.rst 文件。

cd project
make html
Running Sphinx v2.4.4
loading pickled environment... done

Theme error:
theme 'mytheme' doesn't have "theme" setting
Makefile:19: recipe for target 'html' failed
make: *** [html] Error 2

如何解决?

您使用两种互斥的方法 - 使用文件系统中的本地主题,同时注册主题,就像在作为 Python PyPI 包分发的主题中所做的那样。

如果您希望主题成为 Sphinx 项目的一部分,此类 project-specific 主题的好地方是 conf.py 目录中的 _themes/,然后设置 html_theme = "mytheme"html_theme_path = ["_themes"] 在你的 conf.py.

_themes/
    mytheme/
        static/
            css/
                main.css
        theme.conf
        layout.html
conf.py
index.rst
second.rst
third.rst
...

(借自https://blog.documatt.com/sphinx-theming/themes.html#project-specific-themes

完全删除区块

def setup(app):
    app.add_stylesheet('static/style.css')
    app.add_html_theme('mytheme', os.path.abspath(os.path.dirname(__file__)))

add_html_theme() 用于作为包分发的主题。 add_stylesheet() 是添加额外的(不是替换现有的)样式表。主题主样式表在它们的 theme.conf stylesheet 选项中。

我在你的示例中看到的最后一个问题是你的主题继承自 default 主题。它有效,看起来它是 classic 主题 (https://www.sphinx-doc.org/en/master/usage/theming.html#builtin-themes) 的旧名称,但使用其官方名称 - classic.