作成したテーマを適用する¶
作成したオリジナルテーマをドキュメントで利用する場合には、3つの方法があります。
1. html_theme_pathに指定したディレクトリにテーマディレクトリ置く¶
この方法の利点は、ドキュメントを書きながらテーマをどんどん変更していくことができる事です。他のドキュメントに流用する場合、テーマディレクトリをコピーして使う事になります。
ドキュメントのディレクトリに _themes
を作成します(他の名前でも構いません)。この下にmythemeを置きます。ディレクトリ構造は以下のようになります:
sphinxdoc/
+--- conf.py
+--- *.rst
+--- _themes/
+--- mytheme/
| +--- theme.conf
| +--- layout.html
| +--- static/
+--- other_theme/
次に、conf.pyを以下のように設定します:
html_theme_path = ['_themes']
html_theme = 'mytheme'
2. html_theme_pathに指定したディレクトリにzip圧縮したテーマを置く¶
この方法の利点は、テーマのzipファイルをサイトなどに公開しておけば、利用者はそのzipファイルをダウンロードして簡単にそのテーマを使うことができる事です。また、テーマディレクトリにzipファイルを同梱してソースコード管理に含めても良いでしょう。
ドキュメントのディレクトリに _themes
を作成します(他の名前でも構いません)。この下にmytheme.zipを置きます。ディレクトリ構造は以下のようになります:
sphinxdoc/
+--- conf.py
+--- *.rst
+--- _themes/
+--- mytheme.zip
+--- other_theme/
このとき、mytheme.zipの中身は以下の構成にしておきます:
mytheme.zip
+--- theme.conf
+--- layout.html
+--- static/
次に、conf.pyを以下のように設定します:
html_theme_path = ['_themes']
html_theme = 'mytheme'
3. テーマをPythonパッケージ化し、インストール、公開する¶
この方法の利点は、テーマを環境にインストールできる事です。Sphinxのセットアップ手順などが自動化されている場合、その手順にテーマパッケージのインストールを含めておくことができます。例えば pip install Sphinx mytheme
のようにインストールできます。欠点は、テーマパッケージをインストールしていない環境ではドキュメントをビルドできない事です。そのドキュメント特有のテーマであれば、ドキュメントのテーマディレクトリに同梱したほうが良いでしょう。
注釈
この方法はSphinx-1.2以降で使用できます。 Sphinx-1.2以前の場合でも、 sphinxjp.themecore を使えばパッケージ化されたテーマを使用できます。
ここではmythemeというPythonパッケージを作成する例を紹介します。実際には他で使われていない、どんなテーマか分かる名前にするべきでしょう。
ディレクトリ構成は以下のようになります:
mytheme/
+--- setup.py
+--- mytheme.py
+--- MANIFEST.in
+--- themes/
+--- mytheme/
+--- theme.conf
+--- layout.html
+--- static/
setup.py:
from setuptools import setup
setup(
name = 'mytheme',
version = '1.0.0',
author = 'yourname',
author_email = 'yourname@example.com',
py_modules = ['mytheme'],
entry_points = {
'sphinx_themes': [
'path = mytheme:get_path',
],
},
)
mytheme.py:
from os import path
package_dir = path.dirname(path.abspath(__file__))
template_path = path.join(package_dir, 'themes')
def get_path():
return template_path
MANIFEST.in:
recursive-include themes *
パッケージを作成します:
$ python setup.py sdist
distディレクトリにmytheme-1.0.0.tar.gz (windowsの場合は.zip)が作成されます。このファイルを他の環境にコピーして pip install mytheme-1.0.0.tar.gz
でインストールしたり、任意のサイトから取得出来るようにしておいて pip install http://some.example.com/path/to/mytheme-1.0.0.tar.gz
等でインストールできます。
PyPIにテーマパッケージを登録しておけば、利用したい人は簡単にテーマを使えるようになります。 PyPIに登録する場合は以下のように実行します:
$ python setup.py register sdist upload