Doxygen生成HTML时自定义别名引发多余p标签问题如何解决
问题根因
Doxygen 1.9.3的Markdown解析器对块级HTML标签有默认处理规则:当<p>开标签单独占一行、后面直接跟换行时,解析器会判定该标签已经结束,自动插入</p>闭合标签,再为后续内容重新生成新的<p>开标签,这就是多余标签的来源。
别名替换是Doxygen解析流程的早期步骤,标签自动补全发生在别名替换之后,所以把HTML代码直接写进别名里的方案,绕不开后续的补全逻辑,自然不会生效。
解决方法
按易用性排序:
- 方法一:给p标签加
markdown="1"属性
显式告诉Doxygen这个标签内部有需要解析的Doxygen命令和Markdown内容,不要自动截断标签,不需要调整原有排版,1.9.x全版本都支持,修改后的代码如下:# Client Details <p style="display:none" markdown="1"> @frmnam{clientAttributes} @version 1 @copyright The company.com @date 1996-2022 @brief Client Attributes </p> - 方法二:调整开标签位置,不让
<p>单独占行
把第一个Doxygen命令直接接在p开标签后面,去掉触发自动补全的换行条件,写法如下:# Client Details <p style="display:none">@frmnam{clientAttributes} @version 1 @copyright The company.com @date 1996-2022 @brief Client Attributes </p> - 方法三:升级Doxygen版本
1.9.3之后的版本修复了不少块级HTML标签自动补全的bug,如果环境允许升级,升级后不需要改任何源码就能解决问题。
配置优化提示
你当前的别名定义里对@的转义是多余的,可以调整为:
ALIASES += frmnam{1}="@frmnam=\1"
避免后续版本解析别名时出现异常。另外配置启动时提示CLASS_DIAGRAMS标签已废弃,可以执行doxygen -u命令升级配置文件,消除警告。
内容的提问来源于stack exchange,提问作者Alan Rampton
相关产品推荐
相关产品推荐

