テーマしたい(html_theme
)
1html_theme = "テーマ名"
Sphinxを使うときに必ず設定する項目のひとつです。 html_themeを使ってHTML出力のテーマ(=スタイルを集めたもの)を設定できます。
テーマのオプションを設定したい(html_theme_options
)
1html_theme = "テーマ名"
2html_theme_options = {
3 "設定キー": "値",
4 "設定キー": "値",
5 ...,
6}
html_theme_optionsを使って、テーマのオプションを設定できます。 設定できる値はテーマごとに違うので、そのテーマのドキュメントを参照するのが適切です。
組み込みテーマのオプションも設定できます。 ただし、組み込みテーマ自体の見た目が全体的にぱっとしないので、あまり出番はないかもしれません。 他のテーマの中身を確認したり、自作テーマを作成したりするときの参考にはなると思います。
既存のテーマを使いたい
デフォルトはalabasterですが、あまり日本語向きではないと感じています。 安定したオススメはsphinx_rtd_themeです。 最近はsphinx_book_themeが気に入っています。 Sphinx Theme Galleryから自分の好みのテーマを探すことができます。
自作テーマしたい(theme.conf
)
Sphinxのテーマは自作できます。 が、いきなり自分で作るのは大変なので、既存のテーマのソースコードを読むときに、どのファイルを読めばいいのか確認しておきます。
まず設定ファイルtheme.conf
を確認します。
これはconfigparser
でパースできるini
形式のファイルです。
元となるテーマがある場合はinherit = 元にするテーマ名
でいろいろ引き継ぐことができます。
CSSファイルはstylesheet = CSSファイル名,CSSファイル名,...
で設定できます。
カンマで区切って複数のファイルのリストを設定できます。
このファイルはHTMLヘッダーで参照されます。
この値はconf.py
のhtml_style
で上書きできます。
シンタックスハイライトはpygments_style = スタイル名
で設定できます。
この値はconf.py
のpygments_style
で上書きできます。
サイドバーはsidbar = テンプレート名,...
で設定できます。
この値はconf.py
のhtml_sidebars
で上書きできます。
テーマのオプションは[options]
セクションに変数名 = デフォルト値
の、いわゆるkey - value
形式で設定できます。
これらのオプション値はconf.py
のhtml_theme_options
で上書きできます。
また、すべてのテンプレートからはtheme_<名前>
としてこの値にアクセスできます。
自作テンプレートしたい(templates_path
)
テーマの引き継ぎとオプションの設定ができたら、次はテンプレートを追加する必要があります。 Sphinxでは以下の優先度でテンプレートが適用されます。
ユーザーテンプレート(=
conf.py
のtemplates_path
ディレクトリのテンプレート)選択したテーマのテンプレート
引き継いだテーマのテンプレート
SphinxのテンプレートエンジンはJinja2
であるため、読み込まれたファイルはJinja2
に食べられます。
ユーザーテンプレートしたい
{% extends "!layout.html" %}
<!doctype html>
<head>
<meta charset="utf-8">
<link href=".css">
</head>
<div class="container">
<main></main>
<footer></footer>
</div>
<script></script>
</html>
layout.html
というテンプレートを作成し、その中のブロック要素をカスタマイズします。
doctypeしたい
{% extends "!layout.html" %}
{% block doctype %}
<!doctype html>
{% endblock %}
{% block extrahead %}
<meta charset="utf-8">
{% endblock}
{% block footer %}
{% endblock %}