Sphinx を使用してドキュメントを生成する場合、ドキュメントの 2 つのバージョン (すべてを含むバージョンと、特定のページ セットのみを含むバージョン) を生成できるようにしたいと考えています。これを実現する最善の方法は何ですか?
これを実現するためにファイルを移動するビルド スクリプトを作成することもできますが、特定のビルド中に特定のドキュメントを除外または含めるように Sphinx に指示する方法があれば非常に便利です。
ベストアンサー1
答えが少し遅いかもしれませんが、私はSphinxを使ってこれを実行しました。設定ファイル内のパターンを除外する。
私のドキュメントは一部はユーザー向け、一部は管理者向けです。
一部のページのファイル名には という単語が含まれておりadmin
、あなたと同じように、私は 2 つのバージョンを構築したいと考えていました。1 つはすべてを含むバージョン (管理者ドキュメント)、もう 1 つはすべての「管理者」ページを除外したバージョン (ユーザー ドキュメント) です。
すべてのサブフォルダー内のすべての「管理者」ページを除外するには、構成ファイルに次の行を追加する必要がありますconf.py
。
exclude_patterns = ['**/*admin*']
それは簡単な部分でした。
私の問題は、2 つの異なる構成ファイルを使用せずに、除外パターンありと除外パターンなしのビルドを 2 回実行する方法を知っていなかったことです。
自分では解決策が見つからなかったため、SOで質問しましたそして答え:
- 設定ファイルは単なる Python ファイルであり、ビルド時に実行される Python コードを含めることができます。
- パラメータ("タグコマンドラインから ") を実行し、設定ファイルで照会することができます。
したがって、設定ファイルに次の除外パターンがあります。
exclude_patterns = ['**/*admin*']
if tags.has('adminmode'):
exclude_patterns = []
これで、何も渡さずにビルドを実行できるようになりました。これにより、「admin」ファイルが除外されます。
make clean
make html
⇒ これは私のユーザードキュメントです
...そして、何も除外しない「adminmode」タグを設定できます。
(Windows コマンドライン構文)
set SPHINXOPTS=-t adminmode
make clean
make html
⇒ これは私の管理者向けドキュメントです。
ボーナス:
同じタグを使って、ページ上の特定のコンテンツを無視することもできます。タグに基づいてコンテンツを含める。
例:
regular documentation
=====================
This paragraph and its headline will always be visible.
.. only:: adminmode
secret admin stuff
------------------
This paragraph will be visible in the admin docs only.
This will (again) always be visible.