首页 > 解决方案 > 如何使用 doxygen 生成带有自定义乳胶样式表和命令的 pdf?

问题描述

如何使用 doxygen 生成带有自定义乳胶样式表和命令的 pdf?

我需要记录此代码:

~\doxygenLaTex> more main.cpp
#include <iostream>
//! \page MainPage Main program
//! This program is meant to say hello!
int main() {std::cout << "Hello World!"; return 0;}

我需要使用我的自定义样式获取一个 pdf 文档,mystyle.sty其中包括自定义 LaTex 命令,例如\mytable,我需要在文档中使用:

~\doxygenLaTex> more mystyle.sty
\NeedsTeXFormat{LaTeX2e}[1999/01/01]
\ProvidesPackage{mystyle}[2018/05/28]

\newcommand*{\mytable}{%
  \begin{tabular}{ll}
    1 & 2 \\
    3 & 4 \\
  \end{tabular}
}

\endinput

所以我寻找如何使用 doxygen :

~\doxygenLaTex> ls
Doxyfile main.cpp mainpage.dox mystyle.sty

~\doxygenLaTex>  more .\mainpage.dox
//!
//! \mytable
//!
//! \page MainPage
//!

~\doxygenLaTex> grep LATEX_EXTRA_STYLE .\Doxyfile
# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined
LATEX_EXTRA_STYLESHEET = mystyle.sty

~\doxygenLaTex> grep ALIASES .\Doxyfile
ALIASES                = "mytable=\\mytable"

尽管阅读了文档,但它没有用:我将命令作为文本!运行doxygen; cd latex; make pdf; AcroRd32.exe refman.pdf给出:

在此处输入图像描述

我用谷歌搜索了这个并找到了Doxygen: include custom latex commandHow to get Doxygen to identify custom latex command不幸的是,这对我没有帮助。

尝试了更多的东西,但也没有奏效:

~\doxygenLaTex> git diff
diff --git a/Doxyfile b/Doxyfile
-ALIASES                = "mytable=\\mytable"
+ALIASES                = "mytable=\mytable"

~\doxygenLaTex> git diff
diff --git a/Doxyfile b/Doxyfile
-ALIASES                = "mytable=\\mytable"
+ALIASES                = "mytable=@mytable"


问题似乎是我得到了这种东西:

~\doxygenLaTex\latex> more .\_main_page.tex
This program is meant to say hello!

\textbackslash{}mytable

但不是

~\doxygenLaTex\latex> more .\_main_page.tex
This program is meant to say hello!

\mytable

我错过了什么 ?

附加问题:有没有办法使用doxygen.sty但实际上只是 mystyle.sty为了避免任何类型的冲突?

~\doxygenLaTex\latex> grep usepackage refman.tex
\usepackage{doxygen}
\usepackage{mystyle}

弗兰克

注意:Windows 10,doxygen 1.9.1

编辑

在发布前进行谷歌搜索时,我测试了\latexonly. 这个

~\doxygenLaTex> git diff
diff --git a/Doxyfile b/Doxyfile
-ALIASES                = "mytable=\\mytable"
+ALIASES                = "\\latexonly mytable=\\mytable \\endlatexonly"

或这个

~\doxygenLaTex> git diff
diff --git a/Doxyfile b/Doxyfile
-ALIASES                = "mytable=\\mytable"
+ALIASES                = "\latexonly mytable=\\mytable \endlatexonly"

没有工作。但是,事实上,事实证明这

~\doxygenLaTex> git diff
diff --git a/mainpage.dox b/mainpage.dox
-//! \mytable
+//! \latexonly \mytable \endlatexonly

确实有效并产生了几乎我预期的结果:

在此处输入图像描述

但现在我有另一个问题:真正\mytable的没有表,需要在这里设置:

~\doxygenLaTex\latex> more .\_main_page.tex
This program is meant to say hello!

 \mytable

但实际上这里

~\doxygenLaTex\latex> more .\refman.tex
\begin{document}
 \mytable

有没有办法在这里找到 LaTex 命令?理想情况下使用doxygen.sty但实际上只是 mystyle.sty为了避免任何类型的冲突?

标签: latexdoxygen

解决方案


当我理解正确时,您想\mytable在 LaTeX 输出/生成的 pdf 中使用 LaTeX 命令。

完成的大多数步骤都是正确的,认为问题在于\mytableLaTeX 命令而不是 doxygen 命令,因此您必须在 doxygen 解析的注释中说明它。

为此,有几种可能性:

  • 评论中的\latexonly ... \endlatexonlyie添加:
      \latexonly
      \mytable
      \endlatexonly
    
  • 用它作为公式
    \f[ \mytable \f]
    

当然,您可以将上述代码段打包到一个专用的ALIASES.

所以总而言之,我使用了:

多西文件

LATEX_EXTRA_STYLESHEET = mystyle.sty

主文件

#include <iostream>
/** \page MainPage Main program
 * This program is meant to say hello!
 *
 * \latexonly
 * \mytable
 * \endlatexonly
 *
 * \f[ \mytable \f]
 */
int main() {std::cout << "Hello World!"; return 0;}

mystyle.sty

\NeedsTeXFormat{LaTeX2e}[1999/01/01]
\ProvidesPackage{mystyle}[2018/05/28]

\newcommand*{\mytable}{%
  \begin{tabular}{ll}
    1 & 2 \\
    3 & 4 \\
  \end{tabular}
}


推荐阅读