我正在使用Doxygen为C ++项目创建内部文档。我有Doxygen包括方法的来源等,但这使得页面很难扫描。我希望它的行为类似于rdoc并隐藏默认情况下折叠的块中的源。
我认为HTML_DYNAMIC_SECTIONS
可能让我这样做,但唉,更改日志说该选项只会影响图表和图表。
也许我可以通过编辑LAYOUT_FILE
?
无论如何,聪明的人,我怎么能强迫Doxygen生成可折叠的代码段?
答案 0 :(得分:4)
如果包含方法等的来源,[...]会使页面难以扫描,为什么不只是链接它(SOURCE_BROWSER = YES
)而不是包括它(INLINE_SOURCES = YES
)?这将使页面更容易扫描并加载更快,并且仍然可以访问源(以另外一个源页面加载为代价)。取决于你实际需要访问源的频率,我想。
话虽如此, 是一种生成可折叠代码段的方法(但您必须修改源代码并重新编译Doxygen):
<div>
s中的可折叠部分如下: <div class="dynheader"><div class="dynsection">
[collapsible section]
</div></div>
<div class="fragment"><pre class="fragment">...</pre></div>
因此,要使包含的代码部分可折叠,您必须
<div class="fragment"><pre class="fragment">...</pre></div>
以生成<div class="dynheader"><div class="dynsection">...</div></div>
(并可能调整一些css),或initDynSections()
function,将<div class="fragment"><pre class="fragment">
识别为其中之一。实现(或进入SOURCE_BROWSER
路线:))留给读者练习。祝你好运!
哦,如果你应该成功使用补丁,那么如果你可以submit it dimitri以便他可以将它包含在未来的版本中,那就太棒了。谢谢!
答案 1 :(得分:2)
使用我选择的搜索引擎来到这里我只想在这里留下一个注释,不一定要修改任何doxygen源。
当问到这个问题时,embed pure html可能无法使用htmlonly
标签,但考虑到这一点,可以创建可折叠的容器部分,滥用名为toggleVisibility
的函数< / p>
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代码。
id
id
- 摘要id
- content id
的封装dom元素 - 触发器id
- 触发元素必须包含至少包含1个字符的src
属性class
属性无关紧要考虑到theese条件,可以创建以下代码。
## <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-div
。在第一行中,有一个hyperref链接设置,可以直接使用javascript和一些jQuery代码展开一个部分。
剩下的是最后一个班轮。它包含需要运行的jQuery脚本以初始折叠特定段。对于bash-doxygen(可能还有其他语言),由于脚本的块范围,块需要是一个单行程序
通常,\ htmlonly和\ endhtmlonly之间的内容按原样插入。如果要插入具有块范围的HTML片段(如表或列表),该片段应显示在&lt; p&gt; ..&lt; / p&gt;外部,则可能导致HTML无效。您可以使用\ htmlonly [block]使doxygen结束当前段落并在\ endhtmlonly之后重新启动它。
在doxygen documentation中注意到,并在stackoverflow answer on including script tags in doxygen documentations的右侧标记解决方案下方发表评论。
感谢您的阅读。 希望这有助于一些人来到这里。