将自定义侧边栏模板映射到名为“index.rst”的任何文档

时间:2014-10-28 02:08:45

标签: python python-sphinx

假设我有以下项目结构:

/
    index.rst
    1/
        index.rst
        a.rst
    2/
        index.rst
        b.rst
        3/
            index.rst
            c.rst

如何在Sphinx的conf.py中创建html_sidebars规则,该规则适用于名为index.rst的所有文件?如果可能,请提供支持的Sphinx文档,说明可以与html_sidebars一起使用的各种通配符。

或者我必须明确指定每个文件......

html_sidebars = {'**': ['non-index-template.html'],
                 'index.rst': ['index-template.html'],
                 '1/index.rst': ['index-template.html'],
                 '2/index.rst': ['index-template.html'],
                 '3/index.rst': ['index-template.html']
}

切线问题,有没有办法在该字典中引用字典键的值? E.g。

html_sidebars = {'**': ['non-index-template.html'],
                 'index.rst': ['index-template.html'],
                 '1/index.rst': [this['index.rst']],
                 '2/index.rst': [this['index.rst']],
                 '3/index.rst': [this['index.rst']]
}

2 个答案:

答案 0 :(得分:0)

我还在sphinx-users Google小组中发布了此问题。以下是Takayuki Shimizukawa的答案。

这可能会有效,但请注意它会发出警告:

html_sidebars = { 
    '**': ['non-index-template.html'], 
    '**/index': ['index-template.html'], 
    'index': ['index-template.html']
} 

Re:引用该字典中字典键的值:

html_sidebars = { 
    '**': ['non-index-template.html'], 
    'index.rst': ['index-template.html']
} 
html_sidebars['1/index.rst'] = html_sidebars['index.rst'] 
html_sidebars['2/index.rst'] = html_sidebars['index.rst'] 
html_sidebars['3/index.rst'] = html_sidebars['index.rst'] 

或者,

index_sidebars = ['index-template.html'] 
html_sidebars = { 
    '**': ['non-index-template.html'], 
    'index.rst': index_sidebars, 
    '1/index.rst': index_sidebars, 
    '2/index.rst': index_sidebars, 
    '3/index.rst': index_sidebars
} 

答案 1 :(得分:0)

来自The build configuration file的脚注:

  

关于可用的globbing语法的注释:您可以使用标准shell   用这些特征构造*,?,[...]和[!...]   所有都不匹配斜杠。双星**可用于匹配任何   字符序列,包括斜杠。

因此,以下内容将完成我之后的工作(让我知道是否有更清晰的方法可用语法):

html_sidebars = {'**[!i][!n][!d][!e][!x]': ['non-index-sidebar.html'],
                 '**index': ['index-sidebar.html'],
}