包含公式

Doxygen 允许你在输出中包含 {\LaTeX} 公式(这仅适用于 HTML、{\LaTeX} 和 RTF 输出)。为了能够在 HTML 和 RTF 文档中包含公式(作为图像),你还需要安装以下工具:

  • latex: {\LaTeX} 编译器,用于解析公式。我测试时使用的是 teTeX 1.0 版本。
  • dvips: 一个将 DVI 文件转换为 PostScript 文件的工具。我测试时使用的是 Radical Eye software 的 5.92b 版本。
  • gs: GhostScript 解释器,用于将 PostScript 文件转换为位图。我测试时使用的是 Aladdin GhostScript 8.0 版本。

对于 HTML 输出,还可以选择使用 MathJax,这不需要上述工具。如果你在配置中启用 USE_MATHJAX,则 latex 公式将“原样”复制到 HTML 中,由客户端 JavaScript 解析并将它们转换为(交互式)图像。

有四种在文档中包含公式的方式。

  1. 使用出现在正文中的行内公式。这些公式应放在一对 \f$ 命令之间,所以

      The distance between \f$(x_1,y_1)\f$ and \f$(x_2,y_2)\f$ is 
      \f$\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}\f$.
    

    结果是

    $(x_1,y_1)$$(x_2,y_2)$ 之间的距离是 $\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}$

  2. 使用出现在正文中的行内公式,与 \f$ 不同,它不会在 {\LaTeX} 中显式打开数学模式。这些公式应放在 \f(\f) 命令之间,所以

      The LaTeX and Tex logos are: \f(\LaTeX \f) and \f(\TeX \f).
    

    结果是

    LaTeX 和 Tex 标志是:{\LaTeX}{\TeX}

  3. 非编号的显示公式,它们会居中显示在单独的行上。这些公式应放在 \f[\f] 命令之间。例如:
      \f[
        |I_2|=\left| \int_{0}^T \psi(t) 
                 \left\{ 
                    u(a,t)-
                    \int_{\gamma(t)}^a 
                    \frac{d\theta}{k(\theta,t)}
                    \int_{a}^\theta c(\xi)u_t(\xi,t)\,d\xi
                 \right\} dt
              \right|
      \f]
    
    结果是

    \[    |I_2|=\left| \int_{0}^T \psi(t) 
             \left\{ 
                u(a,t)-
                \int_{\gamma(t)}^a 
                \frac{d\theta}{k(\theta,t)}
                \int_{a}^\theta c(\xi)u_t(\xi,t)\,d\xi
             \right\} dt
          \right|
\]

  4. 不在数学环境中的公式或其他 latex 元素可以使用 \f{environment} 指定,其中 environment{\LaTeX} 环境的名称,相应的结束命令是 \f}。这是一个方程组数组的示例:
       \f{eqnarray*}{
            g &=& \frac{Gm_2}{r^2} \\ 
              &=& \frac{(6.673 \times 10^{-11}\,\mbox{m}^3\,\mbox{kg}^{-1}\,
                  \mbox{s}^{-2})(5.9736 \times 10^{24}\,\mbox{kg})}{(6371.01\,\mbox{km})^2} \\ 
              &=& 9.82066032\,\mbox{m/s}^2
       \f}
    
    结果是

    \begin{eqnarray*}        g &=& \frac{Gm_2}{r^2} \\ 
          &=& \frac{(6.673 \times 10^{-11}\,\mbox{m}^3\,\mbox{kg}^{-1}\,
              \mbox{s}^{-2})(5.9736 \times 10^{24}\,\mbox{kg})}{(6371.01\,\mbox{km})^2} \\ 
          &=& 9.82066032\,\mbox{m/s}^2
\end{eqnarray*}

对于第一和第三种命令,应确保公式包含 {\LaTeX} 数学模式下的有效命令。第二种命令应包含在文本模式下有效,并且在使用 USE_MATHJAX 时在数学模式下也有效的命令。对于第四种命令,该部分应包含特定环境下的有效命令。

警告
目前,Doxygen 在从公式中的拼写错误中恢复的容错性不是很好。可能需要删除写入到 html、rtf 等目录中的 formula.repository 文件以及 form_* 文件,以便清除不正确的公式。

为了能够定义你自己的 {\LaTeX} 命令,例如用于公式构建块或一致地书写某些词语,可以使用配置选项 FORMULA_MACROFILE 来提供一个包含 {\LaTeX} 命令的文件。该文件可以包含 {\LaTeX}\newcommand\renewcommand 命令,并且它们会被包含在公式中(图像版本和 MathJax 版本)以及生成的 {\LaTeX} 输出中(用于生成 PDF)。
\newcommand(和 \renewcommand)仅限于不带可选参数的版本,因此只支持以下类型:

\newcommand{\cmd}{replacement}
\newcommand{\cmd}[nr]{replacement}

例如:

\newcommand{\E}{\mathrm{E}}
\newcommand{\ccSum}[3]{\sum_{#1}^{#2}{#3}}

前往下一节或返回索引