使用Doxygen进行文档编写:将细节放在顶部

18

我正在使用doxygen为一个Android项目进行文档化。我已经知道doxygen好几年了。但现在我面临的问题是,我想要像javadoc一样把我的类的细节放在顶部而不是底部。

通过短暂的Google搜索,我发现了DETAILS_AT_TOP选项,它只需要做我想要的事情,但不幸的是,这个选项已被删除。所以新的方法是使用所谓的DoxygenLayout.xml,但是那个文件应该看起来像什么的文档在哪里?文档中只解释了一些属性。原始的DoxygenLayout.xml在哪里,我可以根据需要修改它?

我在HTML_FOOTER也遇到了同样的问题,它没有记录原始文件的外观。

2个回答

31

通过使用命令行选项进行了更多的研究,我找到了以下内容:

4) 使用doxygen生成一个模板文件,控制生成文档的布局: doxygen -l layoutFileName.xml

因此,我用doxygen -l得到了我的DoxygenLayout.xml。我只是修改了细节的顺序并禁用了简要版本:

<doxygenlayout version="1.0">
  <!-- Generated by doxygen 1.8.5 -->
  <!-- Navigation index tabs for HTML output -->
  <navindex>
    <tab type="mainpage" visible="yes" title=""/>
    <tab type="pages" visible="yes" title="" intro=""/>
    <tab type="modules" visible="yes" title="" intro=""/>
    <tab type="namespaces" visible="yes" title="">
      <tab type="namespacelist" visible="yes" title="" intro=""/>
      <tab type="namespacemembers" visible="yes" title="" intro=""/>
    </tab>
    <tab type="classes" visible="yes" title="">
      <tab type="classlist" visible="yes" title="" intro=""/>
      <tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/> 
      <tab type="hierarchy" visible="yes" title="" intro=""/>
      <tab type="classmembers" visible="yes" title="" intro=""/>
    </tab>
    <tab type="files" visible="yes" title="">
      <tab type="filelist" visible="yes" title="" intro=""/>
      <tab type="globals" visible="yes" title="" intro=""/>
    </tab>
    <tab type="examples" visible="yes" title="" intro=""/>  
  </navindex>

  <!-- Layout definition for a class page -->
  <class>
    <briefdescription visible="no"/>
    <detaileddescription title=""/>
    <includes visible="$SHOW_INCLUDE_FILES"/>
    <inheritancegraph visible="$CLASS_GRAPH"/>
    <collaborationgraph visible="$COLLABORATION_GRAPH"/>
    <memberdecl>
      <nestedclasses visible="yes" title=""/>
      <publictypes title=""/>
      <services title=""/>
      <interfaces title=""/>
      <publicslots title=""/>
      <signals title=""/>
      <publicmethods title=""/>
      <publicstaticmethods title=""/>
      <publicattributes title=""/>
      <publicstaticattributes title=""/>
      <protectedtypes title=""/>
      <protectedslots title=""/>
      <protectedmethods title=""/>
      <protectedstaticmethods title=""/>
      <protectedattributes title=""/>
      <protectedstaticattributes title=""/>
      <packagetypes title=""/>
      <packagemethods title=""/>
      <packagestaticmethods title=""/>
      <packageattributes title=""/>
      <packagestaticattributes title=""/>
      <properties title=""/>
      <events title=""/>
      <privatetypes title=""/>
      <privateslots title=""/>
      <privatemethods title=""/>
      <privatestaticmethods title=""/>
      <privateattributes title=""/>
      <privatestaticattributes title=""/>
      <friends title=""/>
      <related title="" subtitle=""/>
      <membergroups visible="yes"/>
    </memberdecl>
    <memberdef>
      <inlineclasses title=""/>
      <typedefs title=""/>
      <enums title=""/>
      <services title=""/>
      <interfaces title=""/>
      <constructors title=""/>
      <functions title=""/>
      <related title=""/>
      <variables title=""/>
      <properties title=""/>
      <events title=""/>
    </memberdef>
    <allmemberslink visible="yes"/>
    <usedfiles visible="$SHOW_USED_FILES"/>
    <authorsection visible="yes"/>
  </class>

  <!-- Layout definition for a namespace page -->
  <namespace>
    <briefdescription visible="no"/>
    <detaileddescription title=""/>
    <memberdecl>
      <nestednamespaces visible="yes" title=""/>
      <constantgroups visible="yes" title=""/>
      <classes visible="yes" title=""/>
      <typedefs title=""/>
      <enums title=""/>
      <functions title=""/>
      <variables title=""/>
      <membergroups visible="yes"/>
    </memberdecl>
    <memberdef>
      <inlineclasses title=""/>
      <typedefs title=""/>
      <enums title=""/>
      <functions title=""/>
      <variables title=""/>
    </memberdef>
    <authorsection visible="yes"/>
  </namespace>

  <!-- Layout definition for a file page -->
  <file>
    <briefdescription visible="no"/>
    <detaileddescription title=""/>
    <includes visible="$SHOW_INCLUDE_FILES"/>
    <includegraph visible="$INCLUDE_GRAPH"/>
    <includedbygraph visible="$INCLUDED_BY_GRAPH"/>
    <sourcelink visible="yes"/>
    <memberdecl>
      <classes visible="yes" title=""/>
      <namespaces visible="yes" title=""/>
      <constantgroups visible="yes" title=""/>
      <defines title=""/>
      <typedefs title=""/>
      <enums title=""/>
      <functions title=""/>
      <variables title=""/>
      <membergroups visible="yes"/>
    </memberdecl>
    <memberdef>
      <inlineclasses title=""/>
      <defines title=""/>
      <typedefs title=""/>
      <enums title=""/>
      <functions title=""/>
      <variables title=""/>
    </memberdef>
    <authorsection/>
  </file>

  <!-- Layout definition for a group page -->
  <group>
    <briefdescription visible="no"/>
    <detaileddescription title=""/>
    <groupgraph visible="$GROUP_GRAPHS"/>
    <memberdecl>
      <nestedgroups visible="yes" title=""/>
      <dirs visible="yes" title=""/>
      <files visible="yes" title=""/>
      <namespaces visible="yes" title=""/>
      <classes visible="yes" title=""/>
      <defines title=""/>
      <typedefs title=""/>
      <enums title=""/>
      <enumvalues title=""/>
      <functions title=""/>
      <variables title=""/>
      <signals title=""/>
      <publicslots title=""/>
      <protectedslots title=""/>
      <privateslots title=""/>
      <events title=""/>
      <properties title=""/>
      <friends title=""/>
      <membergroups visible="yes"/>
    </memberdecl>
    <memberdef>
      <pagedocs/>
      <inlineclasses title=""/>
      <defines title=""/>
      <typedefs title=""/>
      <enums title=""/>
      <enumvalues title=""/>
      <functions title=""/>
      <variables title=""/>
      <signals title=""/>
      <publicslots title=""/>
      <protectedslots title=""/>
      <privateslots title=""/>
      <events title=""/>
      <properties title=""/>
      <friends title=""/>
    </memberdef>
    <authorsection visible="yes"/>
  </group>

  <!-- Layout definition for a directory page -->
  <directory>
    <briefdescription visible="no"/>
    <detaileddescription title=""/>
    <directorygraph visible="yes"/>
    <memberdecl>
      <dirs visible="yes"/>
      <files visible="yes"/>
    </memberdecl>
  </directory>
</doxygenlayout>

在简要查看输出后,我决定使用这个小的CSS删除标题:

a + h2.groupheader {
    display:none;
}

1
+1 这是真正的答案——我的只是补充。 - Cheeseminer
1
我在这里找到了相关文档:https://www.stack.nl/~dimitri/doxygen/manual/customize.html#layout - Scott Langham
感谢您的帮助。CSS是否可以去掉“详细描述”标题?我对此不太熟悉,您提供的内容是否是CSS文件所需的全部内容,并且您能否解释一下如何放置CSS文件? - Scott Langham
我上一次使用Doxygen是在一月份,我猜下周我会用它来做文档,然后我可以深入了解细节。目前,在Doxygen文件中有一个字段供应自定义CSS文件,只需输入文件名即可添加。 - rekire
谢谢。我现在在文档中找到了,我一直在搜索“css”。“样式表”是一个更好的搜索词。 - Scott Langham
谢谢!我现在正在使用它来进行ai-statefultask(例如https://carlowood.github.io/ai-statefultask/classAIThreadPool.html)。我正在使用的css是:a#details + h2.groupheader { display:none; } (使用“#details”部分似乎更安全),以及 div.textblock { border-bottom: 1px solid #879ECB; width: 100%; } 来在详细描述下面的#include行之前画一条线。 - Carlo Wood

7
对于HTML_FOOTER(以及头部和CSS),有一个类似的命令用于生成默认Doxygen HTML的本地副本。然后,您可以使用HTML_* doxyfile设置来指向它们。

doxygen -w html header.html footer.html customdoxygen.css

关于此的详细信息,请参见在线手册的此页面

2
@danorton OP 觉得这个很有用(请参阅上面的评论),我认为这比吹毛求疵要重要。 - Cheeseminer
1
很抱歉你认为这是“抢答”,我并没有针对个人意思。无论原帖作者是否认为它有用,都不会改变原帖作者的问题,而这并没有回答。如果原帖作者修改问题以使其能够回答,我会重新考虑。 - danorton
2
@danorton,难道你没有看到这是对楼主第二个问题的回答,尽管它是暗示性的:“我也遇到了HTML_FOOTER的同样问题…”? - Cheeseminer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接