2

我寻求构建 doxygen 模块组内容的首选方法。例如,我想在不同部分的以下模块组中构造 @details 文本。特别是每个部分都应该出现在生成的 PDF 的书签中(作为模块组的子元素):

@defgroup lorem
@{
  @brief

  Lorem ipsum

  @details

  Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum
  ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu
  libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu 
  neque.

  Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis
  egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum
  urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat.

  Integer sapien est, iaculis in, pretium quis, viverra ac, nunc.
  Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla,
  malesuada eu, pulvinar at, mollis ac, nulla. Curabitur auctor semper nulla.
  Donec varius orci eget risus. Duis nibh mi, congue eu, accumsan eleifend,
  sagittis quis, diam. Duis eget orci sit amet orci dignissim rutrum.
@}

一种方法可能是使用@section @subsection 等,但 doxygen 手册说:

警告:此命令仅适用于相关页面文档,不适用于其他文档块!

是否可以使用@section 或有其他(更好的)方法来做到这一点?


编辑:使用@section 的行为似乎确实很奇怪,例如我尝试过这样的事情:

@defgroup lorem
@{

@brief

Lorem ipsum

@section sec0 Lorem ipsum

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum
ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu
libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu 
neque.

@section sec1 Pellentesque

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis
egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum
urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat.


@section sec2 Integer sapien est

Integer sapien est, iaculis in, pretium quis, viverra ac, nunc.
Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla,
malesuada eu, pulvinar at, mollis ac, nulla. Curabitur auctor semper nulla.
Donec varius orci eget risus.
Duis nibh mi, congue eu, accumsan eleifend,
sagittis quis, diam. Duis eget orci sit amet orci dignissim rutrum.

@}

结果看起来很好,在这种情况下,PDF 中的结构如下:

  • 4.1 定理
  • 4.1.1 Lorem ipsum
  • 4.1.2 佩伦特斯克
  • 4.1.3 整数智能

现在,如果在输出中出现一个添加@file 一个不包含文本的@details 部分,我将无法摆脱。它看起来像这样(我还测试了添加另一个包含 @file 的组 - 结果相同):

  • 4.1 定理
  • 4.1.1 详细说明
  • 4.1.2 Lorem ipsum
  • 4.1.3 佩伦特斯克
  • 4.1.4 整数 sapien est

然后我尝试移动这些部分并将它们作为“详细描述”的子部分 - 这在逻辑上是可以的。但是当我将它们更改为 @subsection 时,它们会完全消失。在这种情况下,Doxygen 警告说它在节上下文之外找到了一个小节,因此显然它没有意识到它生成了这个神秘的空 @details 节。

下一个想法是使用 Markdown 支持来做到这一点。在这种情况下,部分不会放入 PDF 书签中,因此看起来还不错 - 但在乳胶代码中,它们仍然与 @details 部分处于同一级别。Markdown 中的小节也消失了。我不知道发生了什么,但我不能成为第一个尝试在模块组中构建事物的人。

4

2 回答 2

1

我自己试过你的例子,如果你把@file你的@{ ... @}喜欢放在中间,

/**
@defgroup lorem
@{
...
@file
@}
*/

然后创建标准的 Doxygen 布局。

如果您将@file 移到外面,那么您就像这样,那么它应该可以工作。

/**
@defgroup lorem
@{
...
@}
@file
*/

但是,如果你真的需要@file在你的内部@defgroup lorem @{ ... @},有两种方法可以实现它。

第一的:

/**
@defgroup file
@{
@file
@defgroup lorem
@{
...
@}
@}
*/

第二:

更改标准的 doxygen 布局。

为此,请遵循此处的手册说明,从:通过创建自定义更改页面布局开始DoxygenLayout.xml

现在,编辑DoxygenLayout.xml并搜索<group>标签。

将找到<detaileddescription title=""/>标签,将其更改为<detaileddescription visible="no" title=""/>“详细描述”错误,您应该会消失。

于 2013-06-26T13:39:38.920 回答
0

如果您只是想在组描述中构建部分,那么我只需使用 HTML 和插入<h1>Section name here<\h1>等。

或者,可以使用 Markdown##部分标记。

我不知道这些渗透到 LaTex 和 PDF 的效果如何,因为我从未使用过该输出路径。但是,我相信使用 HTML 会比使用 HTML 提供更可靠的结果@section,正如手册警告的那样,它根本不是为在这里使用而设计的,而是作为@page / @section / @subsection散装散文层次结构的一部分。这些命令集在 Doxygen 中不能很好地混合。

定位@file在异国情调的位置(根据 aldr 的建议)很容易导致非常奇怪的结果。它只是物理文件的描述块,最好就这样使用。

于 2014-02-01T13:02:38.220 回答