在doxgygen html输出中的latex newcommand

时间:2016-10-26 19:07:30

标签: latex doxygen mathjax

我遵循了doxygen手册和其他一些关于堆栈溢出的问题,我设法让doxygen从我的代码中创建一个pdf。我正在编写一本手册,有很多方程式,并且想要一致的符号,所以我创建了一个乳胶样式文件。我在文件夹manual中的设置大致类似于

html/
latex/
Doxyfile
style.sty

然后我必须在latex/中创建一个链接,使其工作ln -s ../style.stystyle.sty

\newcommand{\cond}{\,|\,}
\newcommand\rmdx[1]{\mbox{d}#1\,}

我添加到Doxyfile

EXTRA_PACKAGES         = style

不幸的是,创建的html输出只包含说

的mathjax框
Undefined control sequence \cond

虽然pdf中的数学很好

2 个答案:

答案 0 :(得分:4)

有点单调乏味的方法是在javascript中配置mathjax以便像这样学习newcommand

MATHJAX_CODEFILE = newcommands.js添加到doxyfile。然后 在与newcommands.js

相同的目录中创建doxyfile
MathJax.Hub.Config({
    TeX: {
        Macros: {
            cond: ["{\\,|\\,}"],
            rmdx: ["{\\mbox{d}#1\\,}",1]
        }
    }
});

因此必须复制命令才能输出pdf和html,但至少可以这样做。

来源:mathjax http://www.doxygen.nl/manual/config.html#config_html上的doxygen手册,tex宏上的mathjax手册http://docs.mathjax.org/en/latest/tex.html#defining-tex-macros

答案 1 :(得分:0)

这是一个老问题,但我确信它仍然与许多doxygen用户有关。所以这是另一种选择:

有一个稍微容易的解决方案。我'我不确定它是否适用于旧版本的MathJax,但它确实适用于v2.7。 您可以使用\htmlonly\endhtmlonly来实现相同目标,而无需创建newcommands.js之类的外部文件。例如:

\htmlonly
    \(
        \def\KK{\bf K}
        \def\uu{\bf u}
        \def\ff{\bf f}
    \)
\endhtmlonly

定义3个宏。它只是一个HTML文件的本地。因此,根据您的情况,newcommands.js可能更容易,或者这可能更容易。

将在html输出中逐字放置的\htmlonly and \endhtml tags分隔文本。 MathJax将处理的\( and \) tags分隔部分。