6

Doxygenを使用してC++プロジェクトの内部ドキュメントを作成しています。Doxygenにメソッドなどのソースを含めていますが、これによりページのスキャンが困難になります。rdocのように動作し、デフォルトで折りたたまれているブロックでソースを非表示にしたいと思います。

私はそれでこれができるかもしれないと思ったHTML_DYNAMIC_SECTIONSが、残念ながら、変更ログには、オプションは図とグラフにのみ影響すると書かれている。

たぶん私は編集することでそれを行うことができますLAYOUT_FILEか?

とにかく、賢い人たち、どうすればDoxygenに折りたたみ可能なコードセクションを生成させることができますか?

4

2 に答える 2

6

メソッドなどのソースを含めると、[...]ページのスキャンが困難になる場合は、()を含めるのではなく、単にリンクSOURCE_BROWSER = YES)してみませんか?これにより、ページのスキャンと読み込みが速くなり、ソースに引き続きアクセスできるようになります(ソースページの読み込みが1つ増える代わりに)。ソースに実際にアクセスする必要がある頻度によって異なります。INLINE_SOURCES = YES

そうは言っても、折りたたみ可能なコードセクションを生成する方法があります(ただし、ソースを変更してDoxygenを再コンパイルする必要があります)。

    <div class="dynheader"><div class="dynsection">
    [collapsible section]
    </div></div>
  • 含まれているコードセクションは次のようにマークされています。<div class="fragment"><pre class="fragment">...</pre></div>
  • したがって、含まれているコードセクションを折りたたみ可能にするには、次のいずれかを行う必要があります。

    • を生成するコードを変更して(そしておそらくいくつかのcssを調整して)、または<div class="fragment"><pre class="fragment">...</pre></div><div class="dynheader"><div class="dynsection">...</div></div>
    • 折りたたみ可能なセクションをスキャンして折りたたむjavascriptinitDynSections()関数を変更して<div class="fragment"><pre class="fragment">、それらの1つとして認識します。

実装(またはSOURCE_BROWSERルートを進む:))は、読者の演習として残されています。幸運を!

ああ、もしあなたがパッチで成功するなら、彼が将来のバージョンにそれを含めることができるように、あなたがそれをdimitriに提出することができれば素晴らしいでしょう。ありがとう!

于 2009-10-24T19:22:07.370 に答える
2

私が選んだ検索エンジンを使ってここにやって来て、ここにメモを残したいのですが、doxygenソースを変更する必要は絶対にありません。

この質問がされたとき、タグを使用して純粋なhtmlを埋め込むhtmlonly可能性はおそらくありませんでしたが、これを念頭に置いて、toggleVisibility

 function toggleVisibility(linkObj)
 {
   var base = $(linkObj).attr('id');
   var summary = $('#'+base+'-summary');
   var content = $('#'+base+'-content');
   var trigger = $('#'+base+'-trigger');
   var src=$(trigger).attr('src');
   if (content.is(':visible')===true) {
     content.hide();
     summary.show();
     $(linkObj).addClass('closed').removeClass('opened');
     $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
   } else {
     content.show();
     summary.hide();
     $(linkObj).removeClass('closed').addClass('opened');
     $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
   } 
   return false;
 }

これは、ドキュメントがドキュメントルートに配置されたdynsections.jsというファイルで生成されるたびに現在利用可能です。

このコードに関しては、Javascriptを使用して自分のドキュメントから折りたたみ可能なコードを作成できる条件を理解し、この関数の内部実行エラーを回避し、それ以上のjavascriptコードが解釈されないようにします。

  1. 一意の識別子を持つdom要素id
  2. 一意の識別子を持つ別のカプセル化されたdom要素id-summary
  3. 一意の識別子id-contentを持つ別のカプセル化されたdom要素
  4. 一意の識別子id-triggerを持つ別のカプセル化されたdom要素
  5. id-trigger要素には、少なくとも1文字の属性が含まれている必要がありsrcます
  6. メインコンテナのclass属性は重要ではありません

これらの条件を念頭に置いて、次のコードを作成できます。

## <a href="javascript:toggleVisibility($('#example-div'))">Fold me</a>
## <div id="example-div">
##   <div id="example-div-summary"></div>
##   <div id="example-div-content">
##     <pre>
##       foo
##       bar
##     </pre>
##   </div>
##   <div id="example-div-trigger" src="-"></div>
## </div>
## @htmlonly <script type="text/javascript">$("#example-div").ready(function() { toggleVisibility($("#example-div")); });</script> @endhtmlonly

上記のdoxygenコードは、 bash-doxygenを使用してbashコードを文書化するために使用されるため、純粋なdoxygenコードとは少し異なって見える場合があります。divコンテナーに関連する最初の部分は、関数のソースに適合しtoggleVisibility、必要に応じてdoxygenコメントを調整する際にエラーなしで実行可能にするための条件について、すでに説明しています。

ここで使用されている一意のIDプレフィックスはですexample-div1行目には、JavaScriptをjQueryコードと直接組み合わせて使用​​してセクションを展開するhyperrefリンク設定があります。

残っているのは最後の1つのライナーです。これには、特定のセグメントを最初に折りたたむために実行する必要があるjQueryスクリプトが含まれています。bash-doxygen(およびおそらく他の言語)の場合、スクリプトのブロックスコープのため、ブロックは1つのライナーである必要があります

通常、\htmlonlyと\endhtmlonlyの間のコンテンツはそのまま挿入されます。<p> .. </ p>の外部に表示されるテーブルやリストなどのブロックスコープを持つHTMLフラグメントを挿入する場合、無効なHTMLが発生する可能性があります。\ htmlonly [block]を使用して、doxygenに現在の段落を終了させ、\endhtmlonlyの後で再開することができます。

doxygenのドキュメントと、doxygenのドキュメントにスクリプトタグを含めることに関するstackoverflowの回答の右にマークされたソリューションの下のコメントで気づいたように。

読んでくれてありがとう。これがここに来る何人かの人々に役立つことを願っています。

于 2015-06-23T23:50:59.143 に答える