使用doxygen生成具有自定义结构的PDF

时间:2016-10-12 13:32:26

标签: pdf doxygen

在我进入细节之前,先简要介绍一下:

我试图自定义doxygen生成的pdf文档结构。我已经为html和chm输出做了这个,但对于pdf它不起作用 我的主要问题是,这是设计限制还是我遗漏了什么? 如果这是设计的,有没有其他方法可以从doxygen开始,产生一个定制的PDF文档?

以下是详细信息:

我们正在使用doxygen为C API生成源代码文档,它也使用C ++,C#和Java进行封装。
我们希望在一个单独的文档中记录所有这些语言,但是按语言进行构建。为了实现这一目标,我们使用DoxygenLayout.xml文件以下列方式自定义文档结构:

  • 首先是几页描述性文字,适用于所有人 语言,我们将此部分称为"用户手册"。
  • 其次是API文档,它由不同语言构成。

换句话说,我们完全禁用标准结构并定义自己的标准结构。 布局定义与此简化示例非常相似:

  <navindex>
    <tab type="mainpage" visible="yes" title="My Project"/>
    <tab type="pages" visible="no" title="" intro=""/>
    <tab type="modules" visible="no" title="" intro=""/>
    <tab type="namespaces" visible="no" title="">
      <tab type="namespacelist" visible="no" title="" intro=""/>
      <tab type="namespacemembers" visible="no" title="" intro=""/>
    </tab>
    <tab type="classes" visible="no" title="">
      <tab type="classlist" visible="no" title="" intro=""/>
      <tab type="classindex" visible="no" title=""/> 
      <tab type="hierarchy" visible="no" title="" intro=""/>
      <tab type="classmembers" visible="no" title="" intro=""/>
    </tab>
    <tab type="files" visible="no" title="">
      <tab type="filelist" visible="no" title="" intro=""/>
      <tab type="globals" visible="no" title="" intro=""/>
    </tab>
    <tab type="examples" visible="no" title="" intro=""/>  

    <tab type="usergroup" title="User Manual">
        <tab type="user" title="Page 1" url="@ref page1"/>
    </tab>

    <tab type="usergroup" title="API documentation">
        <tab type="usergoup" title="C">
            <tab type="user" title="SomeFunction" url="@ref SomeFunction" />
            <tab type="user" title="AnotherFunction" url="@ref AnotherFunction" />
        </tab>
        <tab type="usergoup" title="C#">
            <tab type="usergroup" title="A.Class1">
                <tab type="user" title="SomeFunction" url="@ref A.Class1.SomeFunction" />
            </tab>
            <tab type="usergroup" title="B.Class2">
                <tab type="user" title="AnotherFunction" url="@ref B.Class2.AnotherFunction" />
            </tab>
        </tab>
        <tab type="usergoup" title="Java">
            <tab type="usergroup" title="com.xyz.A.Class1">
                <tab type="user" title="SomeFunction" url="@ref com.xyz.A.Class1.SomeFunction" />
            </tab>
            <tab type="usergroup" title="com.xyz.B.Class2">
                <tab type="user" title="AnotherFunction" url="@ref com.xyz.B.Class2.AnotherFunction" />
            </tab>
        </tab>
    </tab>
</navindex>

这对于chm和html输出完全正常,但不幸的是,乳胶和docbook输出似乎完全被忽略,可用于生成pdf。 layoutfile的文档意味着它应该独立于使用的输出工作:

# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
# by doxygen. The layout file controls the global structure of the generated
# output files in an output format independent way. To create the layout file
# that represents doxygen's defaults, run doxygen with the -l option. You can
# optionally specify a file name after the option, if omitted DoxygenLayout.xml
# will be used as the name of the layout file.
#
# Note that if you run doxygen from a directory containing a file called
# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
# tag is left empty.
LAYOUT_FILE            = "DoxygenLayout.xml"

1 个答案:

答案 0 :(得分:0)

Doxygen在乳胶目录中生成许多文件,在这种情况下,最值得注意的是:

  • refman.tex,具有许多设置,包括不同章节的内容,可能最适合您想要的东西。
  • doxygen.sty与doxygen使用的设置。一个人可以修改此文件(不是很建议),也可以通过配置标签LATEX_EXTRA_STYLESHEET添加额外的样式表,其中一个规则(例如,通过更新命令)覆盖默认命令。

值得注意的还有LATEX_HEADER,LATEX_FOOTER,EXTRA_PACKAGES之类的设置,有关更多信息,请参见文档(http://www.doxygen.nl/manual/中的章节配置)。

对于docbook输出,当前版本1.8.15可能会更好一些,但是docbook没有特殊的“ stylesheett”。