Doxygenは様々なレベルのカスタマイズ機能を提供します。細かな調整のセクションでは、出力の外観を微調整したい場合の対処法について説明しています。レイアウトのセクションでは、ページ上の特定の情報を並べ替えたり非表示にしたりする方法を示しています。XML出力のセクションでは、Doxygenが生成するXML出力に基づいて、必要な出力を生成する方法を示しています。
次のサブセクションでは、少ない労力で調整できるいくつかの側面について説明します。
HTML出力の全体的な色を変更するために、Doxygenは3つのオプションを提供します
それぞれ色の色相、彩度、ガンマ補正を変更するためのものです。
利便性のため、GUIフロントエンドのDoxywizardには、これらのオプションの値を変更した際の出力への影響をリアルタイムで確認できるコントロールがあります。
デフォルトでは、Doxygenはページの全幅にわたるタイトル領域と、各HTMLページの左側にサイドバーとしてナビゲーションツリーがあるコンテンツを表示します。
これはDoxyfileの以下の設定に対応します
YES
YES
NO
サイドバーをページの全高にわたるようにするには、以下を使用します。
YES
YES
YES
また、以下の設定に対応する形で、ナビゲーションツリーを各HTMLページ上部のタブに置き換えることもできます
NO
NO
あるいは両方の形式のナビゲーションを持つこともできます
NO
YES
NO
これはサイドバーが全高にわたる場合でも機能します
NO
YES
YES
既に外部インデックスを使用している場合(つまり、以下のオプションのいずれかを有効にしている場合:GENERATE_HTMLHELP、GENERATE_ECLIPSEHELP、GENERATE_QHP、またはGENERATE_DOCSET)、このようにすべてのインデックスを無効にすることもできます
YES
NO
HTML出力をよりインタラクティブにするために、Doxygenはデフォルトで無効になっているいくつかのオプションを提供します
svg
に設定すると、DoxygenはユーザーがズームやパンできるSVG画像を生成するようになります(これは画像サイズが特定のサイズを超えた場合にのみ発生します)。HTML出力のフォントや色、マージン、その他のルック&フィールに関する詳細を調整するには、別のカスケーディングスタイルシートを作成できます。Doxygenに生成される各HTMLページにカスタムヘッダーとフッターを使用させることもでき、例えばウェブサイトの他の部分で使用されているスタイルに合わせることができます。
これを行うには、まずDoxygenを次のように実行します
doxygen -w html header.html footer.html customdoxygen.css
これにより3つのファイルが作成されます
header.html
は、Doxygenが通常HTMLページの開始に使用するHTMLフラグメントです。このフラグメントがbody
タグで終わり、$wordという形式のいくつかのコマンドを含んでいることに注意してください。これらはDoxygenによって動的に置換されます。footer.html
は、Doxygenが通常HTMLページの終了に使用するHTMLフラグメントです。ここでも特殊なコマンドを使用できます。このファイルには、www.doxygen.orgへのリンクと、body
およびhtml
の終了タグが含まれています。customdoxygen.css
はDoxygenが使用するデフォルトのカスケーディングスタイルシートです。このファイルの内容を確認し、好きな設定を別のスタイルシートに記述し、それらの追加ファイルをHTML_EXTRA_STYLESHEETを介して参照することで、一部の設定を上書きすることのみが推奨されます。これらのファイルを編集し、設定ファイルから参照する必要があります。
header.html
footer.html
my_customdoxygen.css
カスタムヘッダー内で使用できるメタコマンドの詳細については、HTML_HEADERタグのドキュメントを参照してください。
場合によっては、出力の構造を変更したいことがあるかもしれません。そのような場合、異なるスタイルシートやカスタムヘッダー、フッターは役に立ちません。
Doxygenが提供する解決策はレイアウトファイルです。これは変更可能で、Doxygenはこれを情報が表示される内容、順序、そしてある程度は情報の表示方法を制御するために使用します。レイアウトファイルはXMLファイルです。
デフォルトのレイアウトは、以下のコマンドを使用してDoxygenによって生成できます
doxygen -l
オプションでレイアウトファイルの名前を指定できます。省略された場合はDoxygenLayout.xml
が使用されます。
次のステップは、設定ファイルでレイアウトファイルを指定することです(LAYOUT_FILEも参照)。
LAYOUT_FILE = DoxygenLayout.xml
レイアウトを変更するには、レイアウトファイルを編集するだけです。
ファイルのトップレベル構造は以下のようになります
<doxygenlayout version="1.0"> <navindex> ... </navindex> <class> ... </class> <namespace> ... </namespace> <concept> ... </concept> <file> ... </file> <group> ... </group> <directory> ... </directory> </doxygenlayout>
XMLファイルのルート要素はdoxygenlayout
で、version
という名前の属性を持っています。これは将来、下位互換性のない変更に対応するために使用されます。
navindex
要素で識別される最初のセクションは、各HTMLページの上部に表示されるナビゲーションタブのレイアウトを表します。同時に、GENERATE_TREEVIEWが有効な場合はナビゲーションツリー内の項目も制御します。各タブはXMLファイル内のtab
要素で表されます。
visible
属性をno
に設定することでタブを非表示にできます。また、title
属性の値として指定することで、タブのデフォルトタイトルを上書きすることもできます。タイトルフィールドが空文字列(デフォルト)の場合、Doxygenは適切な言語固有のタイトルを自動的に入力します。
XMLファイル内でnavindex
要素内のタブ要素を移動させることで、タブの順序を変更したり、ツリー構造を変更したりすることもできます。ただし、type
属性の値は変更しないでください。特定のインデックスへのリンクを表す、固定されたタイプセットのみがサポートされています。
名前が「user」のタイプを使用してカスタムタブを追加することもできます。以下は、「Google」というタイトルのタブをwww.google.comにポイントするように追加する方法を示す例です
<navindex> ... <tab type="user" url="http://www.google.com" title="Google"/> ... </navindex>
URLフィールドは相対URLでも構いません。URLが@ref
で始まる場合、リンクはクラス、関数、グループ、関連ページなどのドキュメント化されたエンティティを指します。例えば、@page
とラベルmypage
を使用してページを定義した場合、「My Page」というラベルのタブをそのページに設定すると以下のようになります
<navindex> ... <tab type="user" url="@ref mypage" title="My Page"/> ... </navindex>
「usergroup」タイプのタブを使用して、カスタムグループにタブをまとめることもできます。以下の例では、上記のタブを「My Group」というタイトルのユーザー定義グループに入れています
<navindex> ... <tab type="usergroup" title="My Group"> <tab type="user" url="http://www.google.com" title="Google"/> <tab type="user" url="@ref mypage" title="My Page"/> </tab> ... </navindex>
グループは階層を形成するようにネストできます。
デフォルトでは、ナビゲーションツリーのユーザーグループエントリは、グループの内容を持つランディングページへのリンクです。<tab>要素と同様に、url属性を使用して別のページにリンクしたり、url="[none]"を使用してリンクを無効にしたりできます。つまり、
<tab type="usergroup" title="Group without link" url="[none]"> ... </tab>
navindex
以降の要素は、Doxygenによって生成されるさまざまなページのレイアウトを表します
class
要素は、ドキュメント化されたクラス、構造体、共用体、インターフェースに対して生成されるすべてのページのレイアウトを表します。namespace
要素は、ドキュメント化された名前空間(およびJavaパッケージ)に対して生成されるすべてのページのレイアウトを表します。concept
要素は、ドキュメント化されたコンセプトに対して生成されるすべてのページのレイアウトを表します。module
要素は、ドキュメント化されたC++モジュールに対して生成されるすべてのページのレイアウトを表します。file
要素は、ドキュメント化されたファイルに対して生成されるすべてのページのレイアウトを表します。group
要素は、ドキュメント化されたグループ(またはトピック)に対して生成されるすべてのページのレイアウトを表します。directory
要素は、ドキュメント化されたディレクトリに対して生成されるすべてのページのレイアウトを表します。上記のページ要素内の各XML要素は、特定の情報の一部を表します。一部の要素は各種類のページに表示できますが、他の要素は特定の種類のページに固有です。DoxygenはXMLファイルに表示される順序でそれらの要素をリストします。
各ページで可能な汎用要素は以下の通りです
briefdescription
detaileddescription
directory
ページを除く各ページで可能な汎用要素は以下の通りです
authorsection
concept
ページを除く各ページで可能な汎用要素は以下の通りです
memberdecl
concept
およびmodule
ページを除く各ページで可能な汎用要素は以下の通りです
memberdef
memberdecl
要素と同様に、この要素もいくつかの可能な子要素を持ちます。class
ページには以下の特定の要素があります
includes
inheritancegraph
collaborationgraph
allmemberslink
usedfiles
concept
ページには以下の特定の要素があります
includes
definition
file
ページには以下の特定の要素があります
includes
#include
文のリストを表します。includegraph
includedbygraph
sourcelink
module
ページには、このモジュールからエクスポートされるモジュールを表す特定のexportedmodules
要素があります。
group
ページには、グループ間の依存関係を示すグラフを表す特定のgroupgraph
要素があります。
同様に、directory
ページには、ディレクトリ内のファイルの#include
関係に基づいてディレクトリ間の依存関係を示すグラフを表す特定のdirectorygraph
要素があります。
一部の要素にはvisible
属性があり、属性の値をno
に設定することで、生成された出力からフラグメントを非表示にすることができます。また、設定オプションの値を使用して可視性を決定することもできます。その名前の前にドル記号を付けることで、例えば次のように使用します。
... <includes visible="$SHOW_INCLUDE_FILES"/> ...
これは主として後方互換性のために追加されました。visible
属性はDoxygenへの単なるヒントであることに注意してください。特定の要素に関連する情報がない場合、yes
に設定されていても省略されます(つまり、空のセクションは生成されません)。
すべての要素がレイアウトファイルにvisible
属性を表示しているわけではありませんが、この属性は(デフォルトがvisible="yes"であっても)使用できます。
一部の要素にはtitle
属性があります。この属性は、Doxygenがその要素のヘッダーとして使用するタイトルをカスタマイズするために使用できます。
Doxygenバージョン1.13.1およびレイアウトバージョン2.0以降、Doxygenはユーザー定義のレイアウトファイルに不足している要素のデフォルト値を挿入することに注意してください。これにより、ユーザー定義レイアウトファイルを更新しなくても新しい要素を導入できます。古いDoxygenまたはレイアウトバージョンでは、不足している要素は非表示として扱われます。
上記2つの方法でも十分な柔軟性が得られない場合は、Doxygenが生成するXML出力を基盤として、好みの出力を生成することもできます。これを行うには、GENERATE_XMLをYES
に設定します。
XML出力は、Doxygenによって抽出されたすべての項目を詳細な他のXMLファイルへの参照とともにリストするindex.xml
という名前のインデックスファイルで構成されます。インデックスの構造はスキーマファイルindex.xsd
によって記述されます。他のすべてのXMLファイルはcompound.xsd
という名前のスキーマファイルによって記述されます。1つの大きなXMLファイルを好む場合は、XSLTファイルcombine.xslt
を使用してインデックスと他のファイルを結合できます。
任意のXMLパーサーを使用してファイルを解析するか、Doxygenのソース配布のaddon/doxmlparser
ディレクトリにあるパーサーを使用できます(これはgeneratedDSによって生成され、templates/xml
にあるXMLスキーマファイルindex.xsd
とcompound.xsd
に従います)。パーサーのインターフェースについてはaddon/doxmlparser/doxmlparser/index.py
とaddon/doxmlparser/doxmlparser/compound.py
を参照してください。例についてはaddon/doxmlparser/examples
を参照してください。
doxmlparserを使用する利点は、インデックスファイルのみをメモリに読み込み、その後、インデックスを介して暗黙的にロードするXMLファイルのみを読み込むことができる点です。その結果、すべてのXMLファイルを1つの大きなDOMツリーとして読み込むとメモリに収まらないような非常に大規模なプロジェクトでも機能します。
PythonからDoxygen XML出力を利用してSphinxドキュメントジェネレーターと連携させる例については、Breatheプロジェクトを参照してください。