能否在Doxygen中使用依赖etoolbox包的LaTeX宏?
问题:依赖etoolbox的LaTeX宏能否在Doxygen中使用?
我定义了一个依赖etoolbox包的LaTeX宏:
\usepackage{etoolbox} %to use \ifstrempty \newcommand{\ISet}[1][] { \ifstrempty{#1} {\mathfrak{i}} {\mathfrak{i}_{#1}} }
请问该宏是否可以在Doxygen中使用?
最小可复现示例
Doxygen配置文件
# configuration file FORMULA_MACROFILE = ./macros.tex EXTRACT_ALL = YES EXTRA_PACKAGES = etoolbox amsfonts INPUT = ./mwe.cc
macros.tex内容
\newcommand{\pr}[1][]{\n\ifstrempty{#1}%\n{%\np%\n}{%\np_{#1}%\n}%\n}
mwe.cc内容
/** * \f$ \pr[1] , \pr \f$ */ int main() { return 0; }
当前输出不符合预期:宏未正确展开,显示出混乱的格式内容。
解决方案
可以在Doxygen中使用依赖etoolbox的LaTeX宏,但需要修正宏定义格式和解析逻辑,具体步骤如下:
- 修正macros.tex中的宏定义
去掉多余的换行符和注释符号,严格遵循LaTeX语法:
\usepackage{etoolbox} \usepackage{amsfonts} \newcommand{\pr}[1][]{% \ifstrempty{#1} {\mathfrak{p}} {\mathfrak{p}_{#1}}% }
(注:原宏中的\np应为笔误,此处替换为和\ISet逻辑一致的\mathfrak{p})
确保Doxygen配置正确
保留原配置文件即可,确认EXTRA_PACKAGES已包含etoolbox和amsfonts,FORMULA_MACROFILE路径指向正确的宏文件。验证TeX环境
确保使用的TeX发行版(如TeX Live、MikTeX)已安装etoolbox包,主流发行版默认自带该包。
问题根源
- 原宏定义中的
\n和多余的%干扰了Doxygen对宏的解析,导致LaTeX无法正确执行\ifstrempty分支逻辑 - 带可选参数的宏需要严格控制空格,结尾的
%用于避免宏展开后产生多余空格
修改后,\pr[1]会正确展开为$\mathfrak{p}_1$,\pr会展开为$\mathfrak{p}$,输出符合预期。
内容的提问来源于stack exchange,提问作者SolidMechanicsFan
相关产品推荐
相关产品推荐

