使用 Doxygen 引用 LaTeX 方程
References to LaTeX equations using Doxygen
我目前正在记录一些使用 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
,可用于包含公式的项目。
在同一目录中放入以下内容
sample.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
在 CalcPressure
函数的文档中引用了等式 (1.1)。
另一方面,HTML 文档包含“??”参考公式。是否可以将 doxygen 调整为 运行 两次以生成公式,以便创建的图像包含引用“(1.1)”而不是“??”。
另一种解决方案也可能有效。我知道如何使用 xr
包 http://www.cheshirekow.com/wordpress/?p=335
在另一个 LaTeX 文档中包含对函数的引用
我可以使用这个过程,如果我可以告诉 Doxygen 不要删除 _formulas.aux
文件,重命名文件并使用 xr
包将其作为输入传递,但我不知道如何告诉 Doxygen 不要删除临时文件。
我希望有创建公式引用的解决方案。请帮忙
部分回答。要从 html 中删除 ??
,请仅在 latex
中制作 link
/**
* The function computes the pressure based on @latexonly\ref{eq:1}@endlatexonly
*/
但是这样你就不会在 html 中得到 link。
我设法自己找到了解决方案。
我创建了一个脚本
Linux: latex2
#!/bin/bash
if [ $# -lt 1]; then
echo [=10=]: usage: latex2 args
exit 1
fi
latex $*
latex $*
Windows: latex2.bat
@echo off
call latex %*
call latex %*
并更改 Doxyfile
中的 LATEX_CMD_NAME
以执行此脚本或实际使用 CMake
设置的定义
Doxyfile.in
LATEX_CMD_NAME = @LATEX_CMD_NAME@
CMakeLists.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()
我目前正在记录一些使用 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
,可用于包含公式的项目。
在同一目录中放入以下内容
sample.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
在 CalcPressure
函数的文档中引用了等式 (1.1)。
另一方面,HTML 文档包含“??”参考公式。是否可以将 doxygen 调整为 运行 两次以生成公式,以便创建的图像包含引用“(1.1)”而不是“??”。
另一种解决方案也可能有效。我知道如何使用 xr
包 http://www.cheshirekow.com/wordpress/?p=335
我可以使用这个过程,如果我可以告诉 Doxygen 不要删除 _formulas.aux
文件,重命名文件并使用 xr
包将其作为输入传递,但我不知道如何告诉 Doxygen 不要删除临时文件。
我希望有创建公式引用的解决方案。请帮忙
部分回答。要从 html 中删除 ??
,请仅在 latex
/**
* The function computes the pressure based on @latexonly\ref{eq:1}@endlatexonly
*/
但是这样你就不会在 html 中得到 link。
我设法自己找到了解决方案。
我创建了一个脚本
Linux: latex2
#!/bin/bash
if [ $# -lt 1]; then
echo [=10=]: usage: latex2 args
exit 1
fi
latex $*
latex $*
Windows: latex2.bat
@echo off
call latex %*
call latex %*
并更改 Doxyfile
中的 LATEX_CMD_NAME
以执行此脚本或实际使用 CMake
Doxyfile.in
LATEX_CMD_NAME = @LATEX_CMD_NAME@
CMakeLists.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()