バージョン 0.6 で追加.
Sphinxは テーマ を使って出力したHTMLの見た目を変更する機能をサポートしています。テーマというのは、HTMLのテンプレート、スタイルシート、およびその他の静的なファイル類を集めたものです。これに加えて、どのテーマから継承するか、どのようなハイライトのスタイルを使用するか、テーマのルックアンドフィールをカスタマイズするためにどのようなオプションがあるのか、といったことが書かれている設定ファイルがあります。
テーマというのは特定のプロジェクトに依存しないものです。そのため、他のプロジェクトに適用する際に変更する必要はありません。
既存のテーマを使用するのは簡単です。Sphinxに組み込みのテーマであれば、 html_theme という設定値をセットするだけです。 html_theme_options を使うと、そのテーマ特有の設定値を指定することができ、ルックアンドフィールを変更することができます。以下のように、 conf.py に記述します:
html_theme = "default"
html_theme_options = {
"rightsidebar": "true",
"relbarbgcolor": "black"
}
この設定は、デフォルトのテーマを使用して、サイドバーを右に表示し、リレーションバー(ページの最上部と最下部の両方に表示される、ナビゲーションのリンクを持つバー)の背景色を黒に設定します。
Sphinxに組み込まれていないテーマを利用する方法は2通りの方法があります。 theme.conf とその他の必要なファイルの入ったディレクトリで指定する方法と、同様のファイルが入っているzipファイルを指定する方法です。どちらを使用するにしても、Sphinxから見つけられるように、 html_theme_path の設定を行う必要があります。この設定には、ディレクトリやzipファイルのテーマが入っているディレクトリのリストを設定します。パスは conf.py からの相対パスで設定します。例えば、 conf.py と同じディレクトリにある blue.zip というファイルを設定するとしたら、以下のように設定します:
html_theme = "blue"
html_theme_path = ["."]
Sphinxでは以下のテーマから選択することができます。
default – デフォルトのテーマです。以下のようなカスタマイズ用オプションを持っています:
カスタムのスタイルシートを作成しなくても、カラースキームを変更できるように、数多くの色、フォントに関するオプションを持っています。
すでに説明している通り、テーマは以下のファイルを持つディレクトリかzipファイルです。ディレクトリ名かzipファイルの名前がテーマ名になります:
theme.conf ファイルは Pythonの標準ライブラリの ConfigParser モジュールで読み込み可能な INIフォーマット [1] で記述します。以下のような構造になっています:
[theme]
inherit = 継承元のテーマ
stylesheet = メインのCSS名
pygments_style = スタイル名
[options]
変数 = デフォルト値
inherit には、 “継承元のテーマ” もしくは none を指定します。もし見つからないテンプレートがあれば、継承元のテーマのテンプレートが使用されるようになります。ほとんどのテーマでは、 basic のテーマで使用されているのと同じように使用するのであれば、テンプレートをすべて提供する必要はありません。同様に、オプション、すべての静的なファイルも継承されます。
もし自分でテンプレートを書こうと思っている場合には、 テンプレートガイド を読むと参考になるでしょう。テンプレートに関して知っておくべきことは、Sphinxがテンプレートを探索する順序です:
継承元のテーマに含まれるテンプレートと同名のテンプレートを作成して、拡張する場合には、 {% extends "継承元のテーマ名/layout.html" %} という風にテーマ名をディレクトリとして明示することで行うことができます。ユーザの templates_path の中のテンプレートでも、 “エクスクラメーションマーク(!)” のシンタックスを使用して、テンプレートのドキュメント内であると指定することもできます。
テーマオプションを使用すると、ユーザがカスタムのスタイルシートを書く必要もなく、テーマを簡単にカスタマイズできるようになります。これはHTMLファイルと同じように、テンプレート静的ファイルでも行うことができます。Sphinxはこのために、”静的テンプレート”と呼ばれるものをサポートしています。
もし、テーマの中の static/ ディレクトリ(もしくはユーザの静的ファイルパス)の中に、末尾が _t のファイルがあったとすると、そのファイルはテンプレートエンジンによって処理されます。 _t は最終的なファイル名からは除外されます。例えば、 default テーマは static/default.css_t というファイルを持っていますが、これは色のオプションを持ったスタイルシートのテンプレートです。ドキュメントがビルドされる時に、すべてのテンプレートタグが処理されて、色のオプションがスタイルシートに書き込まれて、出力ディレクトリには _static/default.css ファイルとして出力されます。
[1] | これは conf.py とは異なり、実行可能はPythonファイルではありません。これは、テーマが共有されても、不必要なセキュリティのリスクを抱えないようにするために、このようになっています。 |