ドキュメントのフォーマット¶
Symfony2 のドキュメントはマークアップ言語として reStructuredText を使っており、Sphinx を使って HTML、PDF などのドキュメントを出力しています。
reStructuredText¶
reStructuredText は、「読みやすく、見たままのプレーンテキストマークアップ構文をパースするシステム」です。
構文について詳しく学びたい方は、Symfony2 のドキュメントのソースを読むか、Sphinx Web サイトのreStructuredText Primerを読んでください。
Markdown フォーマットを扱ったことがあるなら、次のような似ているが異なる構文に注意してください。
- リストは行の先頭で開始します (インデントはできません)
 - インラインのコードブロックには 2 重のバッククォートを使います (``このように``)。
 
Sphinx¶
Sphinx は、reStructuredText ファイルからドキュメントを生成するビルドシステムで、いくつかのすばらしい機能があります。 たとえば、標準的な、reST マークアップのほかに、ディレクディブやテキストロールが追加されています。
構文のハイライト¶
すべてのサンプルコードは、ハイライトされるデフォルトの言語として PHP を使います。 このデフォルト設定は、次のように code-block ディレクティブで変更できます。
.. code-block:: yaml
    { foo: bar, bar: { foo: bar, bar: baz } }
                          PHP コードが <?php で始まる場合、ハイライト用の擬似言語として html+php を使ってください。
.. code-block:: html+php
    <?php echo $this->foobar(); ?>
                          Note
ハイライトがサポートされている言語の一覧は、 Pygments website をご確認ください。
設定ブロック¶
設定を表示する場合は configuration-block ディレクティブを使い、サポートされているすべての設定フォーマット (PHP、YAML、XML) を表示できるようにします。
.. configuration-block::
    .. code-block:: yaml
        # YAML での設定
    .. code-block:: xml
        <!-- XML での設定 //-->
    .. code-block:: php
        // PHP での設定
                          この reST スニペットは、次のようにレンダリングされます。
- 
                              YAML
                              
# YAML での設定 - 
                              XML
                              
<!-- XML での設定 //--> - 
                              PHP
                              
// PHP での設定 
現在サポートされているフォーマットの一覧は以下のとおりです。
| マークアップフォーマット | 表示 | 
|---|---|
| html xml php yaml jinja html+jinja jinja+html php+html html+php ini php-annotations | HTML XML PHP YAML Twig Twig Twig PHP PHP INI Annotations | 
ドキュメントのテスト¶
コミット前にドキュメントをテストするには、次の手順に従います。
- 設定ブロックの Sphinx エクステンションをインストールします (下の項を参照)。
 - make html を実行し、 build ディレクトリ内に生成された HTML を確認します。
 
設定ブロックの Sphinx エクステンションのインストール¶
- configuration-block source リポジトリからエクステンションをダウンロードします。
 - configurationblock.py をソースフォルダ内の _exts にコピーします (conf.py が置かれているフォルダです) 。
 - conf.py ファイルに以下を追加します。
 
# ...
sys.path.append(os.path.abspath('_exts'))
# ...
# エクステンションのリストに configurationblock を追加
extensions = ['configurationblock']