【问题标题】:Can I write doxygen alias similar to @code or @verbatim?我可以写类似于@code 或@verbatim 的doxygen 别名吗?
【发布时间】:2012-02-03 08:49:39
【问题描述】:

我需要一个别名来标记命令行代码,设置在带有白色文本的黑色背景上,这样使用:

@cmd
C:\temp>echo Hello, world!
Hello, world!

C:\temp>
@endcmd

普通 doxygen 的别名不能这样做(多行,嵌套的“\temp”),但 @code@verbatim 可以。但是,我不能使用它们,因为它们被格式化为带有黑色文本的白色背景,因此使用自定义 CSS 覆盖 pre.fragment 类是不正确的。

有什么想法吗?

UPD: 评论显示我的英语有多糟糕......

好吧,再试一次。常规 doxygen 的 HTML 和 XML 等功能如下所示:

    cpp file                       doxygen produced index.html
/**
@mainpage main               |  
<pre>                        | <pre>C:&gt;echo Hello, world! 
C:\temp>echo Hello, world!   | Hello, world!</pre>  
Hello, world!                |
                             |
C:\temp>                     | <pre>C:&gt;</pre>
</pre>                       |
*/                           |

在日志中:

/tmp/index.h:3: warning: Found unknown command `\temp'
/tmp/index.h:6: warning: Found unknown command `\temp'

“代码”和“逐字”的工作方式不同!感受不同:

  cpp file                       doxygen produced index.html
/**
@mainpage main               |
@verbatim                    | <div class="fragment">
C:\temp>echo Hello, world!   | <pre class="fragment">C:\temp&gt;echo Hello, world!
Hello, world!                | Hello, world!
                             |
C:\temp>                     | C:\temp&gt;
@endverbatim                 | </pre>
*/                           | <div>

问题是:我可以写别名吗,它可以像“代码”或“逐字”一样工作。现在干净了吗?

【问题讨论】:

    标签: doxygen


    【解决方案1】:

    如果只使用 HTML div 并将您自己的 CSS 标记添加到 Doxygen css 文件中。打字的次数似乎差不多。

    【讨论】:

    • 不,不是。例如。如果我定义以下方式:ALIASES += cmd="
      " ALIASES+=endcmd="
      ",我会得到:
      C:>echo 你好,世界!\n你好,世界!
      \n
      C:
  • Doxygen 允许在文档中使用 HTML,因此您可以在评论中包含
    C:\temp> ...
    。在项目的 CSS 文件中定义“my_cmd_style”后,您就完成了。
  • 我了解 HTML。但是,再重复一遍,文本中有 \n\n 序列和“\”符号。 \n\n 将文本分成几部分,“\temp”将被视为嵌套别名并从输出中排除。当您使用 \code \endcode 或 \verbatim \endverbatim 时,不会发生这种情况。
  • 您可以使用&lt;pre&gt; 标签代替&lt;div&gt; 标签。
  • @hoxnox 抱歉,刚刚看到div 标签!无论如何,我尝试将C:\temp&gt;echo Hello, world! 包裹在pre 标记中,我得到了文本C:\temp&gt;echo Hello, world!,正如预期的那样-pre 标记不会去掉\t
  • 【解决方案2】:

    这个答案总结了 Paul Joireman 的答案中的一些 cmets。

    Paul Joireman 的回答是要走的路。在你的 doxygen 配置文件中定义两个别名:

    ALIASES += "mycode=<div class="myfragment"><pre class=myfragment>"
    ALIASES += "endmycode=</pre></div>"
    

    并将您的代码示例包装在 \mycode\endmycode 语句中。例如,您的 C++ 文件可能类似于

    /** \mainpage main
     * \mycode
     * C:\\temp>echo Hello, World!
     * Hello, World!
     *
     * \endmycode
    */
    

    产生以下相应的 doxygen HTML 输出:

    <div class="myfragment>"><pre class="myfragment>">
     C:\temp&gt;echo Hello, World!
     Hello, World!</pre></div>
    

    (我不确定为什么class="myfragments&gt;" 部分中有&gt;)。您需要在 CSS 文件中格式化 myfragments 类。

    上述 C++ 代码中未在 cmets 中提及的另一件事是在代码示例中使用了转义反斜杠 \\

    【讨论】:

    • 谢谢,帽子。 =) 如果您不了解包装
       的问题(您有 link ),请完全尝试我的示例并设置黑色背景。而且,当然逃避每个“\”符号并不是出路。问题中描述的所有问题都没有解决。
    • 这根本不起作用。 Doxygen 仍然将换行符解释为分隔 &lt;pre&gt; 块的一种方式。例如,考虑&lt;pre&gt;1\n\n2\n\n3&lt;/pre&gt;。 Doxygen 生成的 HTML 将是 &lt;pre&gt;1&lt;/pre&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;pre&gt;3&lt;/pre&gt;,这很烦人。这并不能解决这个问题。
    【解决方案3】:

    我找到的唯一出路是

    ALIASES += cmd="<div class=\"cmd\">@verbatim"
    ALIASES += endcmd="@endverbatim</div>"
    

    其中,CSS“cmd”类是在您自己的样式表中设置的。可能是:

    .cmd { 颜色:#e3e3e3;背景颜色:#222222; }

    【讨论】:

      猜你喜欢
      • 2012-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-10
      • 2011-12-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多