3

Sphinxを使用してドキュメントをセットアップしています。私はこのライブラリで本当に新しいです。

私のドキュメントは、デフォルトのテーマの 1 つで構築できます。すべて正常に動作します:)

さて、テーマをカスタマイズしたいと思います。layout.html私は自分の肌に沿うように更新しました。このテンプレートでは、globaltoc.html&を含めますlocaltoc.html。toc はtoctree()&でレンダリングされますtoc

生成された html を更新する方法があるかどうか、または css を生成された html に適応させる必要があるかどうかを知りたいですか?

ありがとう!

4

1 に答える 1

6

私は手足に出て、あなたが探しているものを推測するつもりです - 私は同じ問題を抱えていたと思うので.

例として、localtoc.html では、テンプレートは次のようになります。

<h3><a href="{{ pathto(master_doc) }}">{{ _('Table Of Contents') }}</a></h3>
    {{ toc }}
{%- endif %}

{{ toc }}は Sphinx のグローバル マクロであり、それが定義されている場所を探すのに約 1 時間費やしましたが、まったく運がありませんでした。

警告は、次の{{ toc }}ようなものになります。

<ul>
   <li>Toc Item 1</li>
   <li>Toc Item 2</li>
   <li>Toc Item 3</li>
</ul>

問題は、CSSでクラスごとにタグを処理したい場合、それらを簡単に変更する方法がないことです<ul><li>最終的には、これは Sphinx の writers/html.py の制限であり、まだ多くのことを手作業で行っていると思います。

これに対する本当の解決策は (おそらく builders/html.py) を置き換えることですが、間違いなく Sphinx の writers/html.py です。これは、私が費やしたかったよりもはるかに多くの努力です。

私は、この問題にいくらか対処しているが、部分的にしか対処していない 2 人の人々を見つけることができました。

html5css3 HTMLWriterと HTMLTransformer を含む rst2html5 。とdocutils-html5-writer、これは非常に見栄えが良いですが、builders/html.py と html5 ライターの違いにより、Sphinx のドロップイン代替品ではありません。

最終的に、jinja フィルターを使用してこのソリューションを思いつきました。これは醜いハックですが、ハードルを乗り越えました。

<h3><a href="{{ pathto(master_doc) }}">{{ _('Table Of Contents') }}</a></h3>
   {{ toc|replace("<ul>", "<ul class=\"custom\">", 1) }}
{%- endif %}
于 2013-01-16T05:58:44.127 に答える