【问题标题】:References to LaTeX equations using Doxygen使用 Doxygen 对 LaTeX 方程的引用
【发布时间】:2017-04-03 17:54:46
【问题描述】:

我目前正在记录一些使用 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)”而不是“??”。

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

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

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

【问题讨论】:

  • 我也有同样的问题。我试图将@anchor 放入等式中,但不知道如何使其发挥作用。

标签: c formula doxygen


【解决方案1】:

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

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

但是这样你不会在 html 中获得链接。

【讨论】:

  • 我自己找到了答案,但有点难看。我创建了一个shell脚本,它执行了两次latex并更改了Doxyfile中的LATEX_CMD_NAME来执行这个脚本。我应该提供这个作为答案吗?
【解决方案2】:

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

我创建了一个脚本

Linux:latex2

#!/bin/bash

if [ $# -lt 1]; then
    echo $0: 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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    • 2012-04-14
    • 2011-10-24
    • 1970-01-01
    相关资源
    最近更新 更多