C语言 使用Doxygen的LaTeX方程参考



我目前正在记录一些使用Doxygen的高级模拟工具。我希望能够引用HTML文档中的方程式。

为了说明问题。执行以下操作

doxygen -g Doxyfile
sed -i 's/^EXTRA_PACKAGES.*/EXTRA_PACKAGES = amsmath amsfonts/g' Doxyfile
sed -i 's/^LATEX_BATCHMODE.*/LATEX_BATCHMODE = YES/g' Doxyfile

您现在有一个Doxyfile,可用于包含公式的项目。

在同一目录中输入以下内容

样本.h:

/**
* @file   sample.h
*/
/**
* @mainpage Some example
*
* Some complicated math:
* f{equation}{label{eq:1}
* p(vec{r}_{0},t) = ldots
* f}
*/
/** 
* The function computes the pressure based on f$ref{eq:1}f$
* 
* @param rho 
* @param v 
* @param r 
* @param t 
* 
* @return 
*/
int CalcPressure(float rho, float v[3], float r[3], float t);  

执行以下操作以生成 LaTeX 文档。

doxygen Doxyfile
cd latex
make

对公式 (1.1) 的引用放在CalcPressure函数的文档中。

另一方面,HTML 文档包含对公式的"??"引用。是否可以调整doxygen以运行两次以生成公式,以便创建的图像包含引用"(1.1)"而不是"??"。

另一种解决方案也可能有效。我知道如何使用xr包在另一个 LaTeX 文档中包含对函数的引用,http://www.cheshirekow.com/wordpress/?p=335

如果我能告诉 Doxygen 不要删除_formulas.aux文件,重命名文件并使用xr包将其作为输入传递,我可以使用此过程,但我不知道如何告诉 Doxygen 不要删除临时文件。

我希望有一种创建公式引用的解决方案。请帮忙

部分答案。要从 html 中删除??,请仅在乳胶中制作链接

/**
* The function computes the pressure based on @latexonlyref{eq:1}@endlatexonly
*/

但是这样你就不会得到html格式的链接。

我设法自己找到了解决方案。

我创建了一个脚本

Linux: latex2

#!/bin/bash
if [ $# -lt 1]; then
echo $0: usage: latex2 args
exit 1
fi
latex $*
latex $*

窗户:乳胶2.bat

@echo off
call latex %*
call latex %*

并更改了Doxyfile中的LATEX_CMD_NAME以执行此脚本或实际使用CMake设置的定义

Doxyfile.in

LATEX_CMD_NAME         = @LATEX_CMD_NAME@

CMakeList.txt

if (UNIX OR CYGWIN)
set( LATEX_CMD_NAME "${PROJECT_SOURCE_DIR}/bin/latex2")
else()
set( LATEX_CMD_NAME "${PROJECT_SOURCE_DIR}/bin/latex2.bat")
endif()

最新更新