【问题标题】:Can doxygen link from C source code back to sections of a .md Markdown file?doxygen 可以从 C 源代码链接回 .md Markdown 文件的部分吗?
【发布时间】:2020-08-12 12:42:44
【问题描述】:

我已经看到 doxygen 可以通过配置文件设置 USE_MDFILE_AS_MAINPAGE 使用 .md (Markdown) 文件作为其输出文档主页。我还看到 .md 文件中的函数名称(例如 myfunc())将链接到该函数的文档。

有没有办法从源代码(例如 C 函数头)链接回 .md 文件的部分?

目前我正在使用 doxygen @page 特殊命令在源代码中描述几个与产品相关的概念,并且我可以通过 @ref 特殊命令让其他源代码参考这些页面。例如,我可以创建@page concept My Concept 并通过@ref concept 从其他地方链接到它。但我更愿意将这些概念部分记录在单独的以文档为中心的文件中,而不是在源代码文件中,因此将它们移至 .md 文件似乎是合乎逻辑的方法。

更新:下面的 albert 回答可能应该有效,但是对于我测试的 doxygen 版本(1.8.11 和 1.8.13),建议的解决方案存在以下问题:

  1. 包含标头 ID 属性(例如 {#label2})的 2 级标头(即以 ## 开头的标头)不再出现​​在生成的 doxygen 输出中,并生成输出:“警告:在节外找到子节命令语境!”这显然是一个已知的错误。对我有用的一种解决方法是复制标题,其中一行包含标题 ID 属性,另一行不包含它。例如:

    ## Header 2 {#label2}

    ## Header 2

  2. 通过@ref label2 链接回这些 2 级标题的代码似乎不会链接回指定的部分,而是链接到包含该部分的页面的头部,如果页面是长和/或包含多个部分。

更新 2:显然上述问题 1 在 doxygen 版本 1.8.16 及更高版本中已修复。

【问题讨论】:

  • 哪个 doxygen 版本?
  • 目前1.8.13
  • 当前版本是 1.8.18,但我的回答很可能也适用于 1.8.13

标签: markdown doxygen


【解决方案1】:

对于markdown中的sections/pages等,还可以指定一个id属性,比如:

Header 1 {#labelid}
========

## Header 2 ## {#labelid2}

这些是扩展名,并在手册中进行了描述:http://doxygen.nl/manual/markdown.html#md_header_id。这些 id 属性可以被例如引用。 \ref

【讨论】:

  • 不幸的是,这似乎不是 100% 的工作。使用该格式,二级标题文本(“标题 2”)将从主页中消失。在 Firefox 和 Edge 中测试。如果我删除标签,那么二级标题会重新出现。
  • 刚刚更新到 1.8.13。仍然没有运气。添加标签会导致二级标题文本消失。
  • 哈哈,我的错。我进行了全面升级,但我猜 1.8.13 仍然是我的测试环境的最新版本。
  • 也许试试 1.8.18(下载源代码并编译,不是什么大问题),或者用当前的 master 来做。您使用的是哪个操作系统?
  • 看起来我遇到了这个错误。建议的解决方法对我不起作用。 stackoverflow.com/questions/13648124/…
猜你喜欢
  • 1970-01-01
  • 2013-08-02
  • 2017-09-13
  • 1970-01-01
  • 1970-01-01
  • 2017-05-31
  • 1970-01-01
  • 1970-01-01
  • 2014-04-29
相关资源
最近更新 更多