3

.rstHTML テンプレートに含めるファイルからメタ情報を抽出しようとしています。私は次のようなものを置くと仮定しました

.. :newVariable: My Text

newVariable.rst ファイルに変換し、独自のテンプレートを使用して HTML を作成すると、HTML ヘッダーに含めることができ ます。しかし、うまくいきません。私は役に立たないことをいくつか試しました。

これは、Sphinx のソースを変更せずに解決できますか?

4

2 に答える 2

4

.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-variableとその値を使用できるようになりました。

metaテンプレートでは、2 番目のフィールド リストを参照していることに注意してください。metatagsから構築されたヘッダー メタタグの docutils 生成 HTML を参照します.. meta::。それらは同じ名前の 2 つの異なるオブジェクトです...

于 2014-11-01T18:07:39.410 に答える
2

これがあなたの質問に正確に答えるかどうかはhtml_contextわかりませんが、sphinx 構成ファイル (conf.py) に配置できるという辞書があり、html テンプレートでレンダリングできるカスタム変数を定義できます。ここでドキュメントを確認できます: http://sphinx-doc.org/config.html#confval-html_context

私のアプリケーションでは、index.html doc スプラッシュ ページに表示したいソフトウェアのリリース日のリストがありました。私は次のように設定しました:

release.py で:

RELEASES = [                                                               
   ( "Jun 05, 2014", "095", "" ),                                                
   ( "May 28, 2014", "094", "" ),                                                
   ( "Apr 29, 2014", "093", "" ),
   ...
]

conf.py で:

# Get list of releases for index page rendering                            
import releases                                    
html_context = {                                                                 
    'releases' : releases.RELEASES,                                   
}  

index.html で:

 {%- for release in releases %}                                         
   <p><span class="style4"><em><strong>{{ release[0] }} ... {{ release[1] }} was released ... </p>
 {%- endfor %}    
于 2014-06-29T23:09:45.373 に答える