Sphinx-添加要在HTML模板中使用的自定义字段/变量

Sphinx-添加要在HTML模板中使用的自定义字段/变量,html,variables,python-sphinx,Html,Variables,Python Sphinx,我试图从.rst文件中提取要包含在HTML模板中的元信息。 我想如果我把 .. :newVariable: My Text 在.rst文件中,然后使用我自己的模板构建HTML,我将能够在HTML标题中包含newVariable。但它不起作用。我试了两件事,但都没用 这在不修改Sphinx源代码的情况下是可以解决的吗?我不确定这是否准确地回答了您的问题,但是有一个名为html\u context的字典,您可以将它放在Sphinx配置文件(conf.py)中,它允许您定义自定义变量,然后在html

我试图从
.rst
文件中提取要包含在HTML模板中的元信息。 我想如果我把

.. :newVariable: My Text
在.rst文件中,然后使用我自己的模板构建HTML,我将能够在HTML标题中包含
newVariable
。但它不起作用。我试了两件事,但都没用


这在不修改Sphinx源代码的情况下是可以解决的吗?

我不确定这是否准确地回答了您的问题,但是有一个名为
html\u context
的字典,您可以将它放在Sphinx配置文件(conf.py)中,它允许您定义自定义变量,然后在html模板中呈现。您可以在此处查看文档:

在我的应用程序中,我有一个要在index.html文档启动页面中呈现的软件发布日期列表。我是这样设置的:

在releases.py:

RELEASES = [                                                               
   ( "Jun 05, 2014", "095", "" ),                                                
   ( "May 28, 2014", "094", "" ),                                                
   ( "Apr 29, 2014", "093", "" ),
   ...
]
# Get list of releases for index page rendering                            
import releases                                    
html_context = {                                                                 
    'releases' : releases.RELEASES,                                   
}  
 {%- for release in releases %}                                         
   <p><span class="style4"><em><strong>{{ release[0] }} ... {{ release[1] }} was released ... </p>
 {%- endfor %}    
在conf.py中:

RELEASES = [                                                               
   ( "Jun 05, 2014", "095", "" ),                                                
   ( "May 28, 2014", "094", "" ),                                                
   ( "Apr 29, 2014", "093", "" ),
   ...
]
# Get list of releases for index page rendering                            
import releases                                    
html_context = {                                                                 
    'releases' : releases.RELEASES,                                   
}  
 {%- for release in releases %}                                         
   <p><span class="style4"><em><strong>{{ release[0] }} ... {{ release[1] }} was released ... </p>
 {%- endfor %}    
在index.html中:

RELEASES = [                                                               
   ( "Jun 05, 2014", "095", "" ),                                                
   ( "May 28, 2014", "094", "" ),                                                
   ( "Apr 29, 2014", "093", "" ),
   ...
]
# Get list of releases for index page rendering                            
import releases                                    
html_context = {                                                                 
    'releases' : releases.RELEASES,                                   
}  
 {%- for release in releases %}                                         
   <p><span class="style4"><em><strong>{{ release[0] }} ... {{ release[1] }} was released ... </p>
 {%- endfor %}    
{%-用于发布版本%}
{{release[0]}}。。。{{release[1]}}已发布

{%-endfor%}
在.rst文件中,在顶部放置一个字段列表,其中包含要传递的变量名和值。
meta
信息不是必需的,而是显示出来的,这样您就可以看到将代码放在哪里了

.. meta::
   :author: My Company, Inc.
   :description: Introduction to ...
   :copyright: Copyright © 2014 My Company, Inc.

:my-variable: my variable's value

.. _introduction:

==================================================
Introduction to ....
==================================================
在模板中,您现在可以使用以下代码访问
my variable

{%- set my-variable = '' %}
{%- set my-variable_key = 'my-variable' %}
{%- if meta is defined %}
    {%- if my-variable_key in meta.viewkeys() %}
        {%- set my-variable = meta.get(my-variable_key) %}
    {%- endif %}
{%- endif %}
现在可以使用
my变量
及其值

注意,在模板中,
meta
指的是第二个字段列表
metatags
指的是从
构建的、为标题meta标记生成的docutils HTML。。meta::
。它们是两个不同的对象,具有相同的名称