使用doxygen排版数学公式出错的解决方法

问题

今天玩了一下doxygen,碰到一个问题

! Undefined control sequence.
l.77 $ y_{\mbox{test}} = \mathbb
                                {E}[y_{\mbox{train}}] = x $
? 
! Emergency stop.

这时候打开生成的网页,所有应该是公式(图片)的地方都只有 LATEX 代码。

分析

doxygen对代码注释中 LATEX 公式的处理方法是:

  1. 把公式都提取出来写到一个_formulas.tex文件里
  2. 这个文件先用 LATEX 编译成DVI格式
  3. 再由dvips转成PostScript格式
  4. 最后由gs(GhostScript)转成图片显示在网页里

上面的错误信息意思是在第2步遇到了问题。

解决

我把上面的公式拎出来用自己的模板编译了一下发现没什么问题,说明 LATEX 工作是正常的。Google+查阅日志之后发现doxygen调用 LATEX 的时候默认仅调用了epsfig、graphicx、keyval、graphics、dvips等几个基本的包,其他如amsmath这种常用的包都没有调用。所以如果要排版数学公式的话需要手动把需要的包加进来。

在Linux环境下直接修改doxygen的配置文件即可,在windows下需要通过图形界面,在Expert->LaTeX->EXTRA_PACKAGES填入amsmath、xr、amsfonts三个包即可。

你可能感兴趣的:(杂七杂八的问题)