rdocスタイルの折りたたみ可能なコードセクションを生成する方法

StackOverflow https://stackoverflow.com/questions/1602932

  •  05-07-2019
  •  | 
  •  

質問

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

HTML_DYNAMIC_SECTIONSはこれを可能にするかもしれないと思ったが、悲しいかな、changelogはオプションが図とグラフにしか影響しないと言っている。

たぶんLAYOUT_FILEを編集することでできますか?

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

役に立ちましたか?

解決

メソッドなどのソースを含める場合[...]、ページをスキャンしにくくする場合、どうしてリンクしないのですか?それに include SOURCE_BROWSER = YES ) >それ( INLINE_SOURCES = YES )?これにより、ページのスキャンが容易になり、ロードが高速になり、ソースにアクセスできるようになります(ソースページをもう1つロードする必要があります)。実際にソースにアクセスする必要がある頻度に依存します。

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

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

実装(または<=>ルート:))は、読者への課題として残されています。幸運を祈ります!

ああ、もしパッチで成功するなら、、将来のバージョンに含めることができるようにします。ありがとう!

他のヒント

私の選択した検索エンジンを使用してここに来て、doxygenソースを変更することは絶対に必要ではないことに注意してください。

この質問が尋ねられたとき、おそらく htmlonlyタグを使用して純粋なhtmlを埋め込むが、これを念頭に置いて、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要素src-summary
  3. 一意の識別子class-content
  4. を持つ別のカプセル化されたdom要素
  5. 一意の識別子example-div-trigger
  6. を持つ別のカプセル化されたdom要素
  7. <=>-trigger要素には、少なくとも1文字の<=>属性が含まれている必要があります
  8. メインコンテナの<=>属性は重要ではありません

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

## <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コンテナに関係する最初の部分は、関数<=>のソースに適合し、doxygenコメントを必要に応じてエラーなく調整して実行可能にするための条件について既に説明しています。

ここで使用される一意のIDプレフィックスは<=>です。 1行目には、 jQuery コードと一緒にjavascriptを直接使用してセクションを展開するハイパーリファレンスリンクのセットアップがあります。

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

  

通常、\ htmlonlyと\ endhtmlonlyの間のコンテンツはそのまま挿入されます。 <!> lt; p <!> gt; .. <!> lt; / p <!> gt;の外側に表示されるテーブルまたはリストのようなブロックスコープを持つHTMLフラグメントを挿入する場合、これにより無効なHTML \ htmlonly [block]を使用すると、doxygenで現在の段落を終了し、\ endhtmlonlyの後に再起動できます。

doxygenのドキュメントで確認され、右下にコメントがマークされています stackoverflow answer onのソリューションdoxygenのドキュメントにスクリプトタグを含める

読んでくれてありがとう。 これがここにやってくる一部の人々を助けることを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top