条件付きで一部のページを除外するように Sphinx を設定するにはどうすればよいでしょうか? 質問する

条件付きで一部のページを除外するように Sphinx を設定するにはどうすればよいでしょうか? 質問する

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.

おすすめ記事