LaTeX
文档
文档对于最终用户来说非常重要,能够帮助他们快速了解如何使用你的包。同时,文档对其他开发人员也有帮助,因为它们使阅读代码变得更加容易。每种编程语言都有其生成文档的方式。对于 LaTeX,我们通过 .dtx 文件生成 PDF 文档。
.dtx 后缀是 documentation TeX 的缩写。它有两种功能:
-
向用户解释如何使用包中的命令
-
格式化源代码以便于阅读
基本结构
假设你想为新创建的包(例如 mypackage
)编写文档。基本的 .dtx 文件结构如下所示:
% \iffalse meta-comment
% 在此处添加版权、作者、版本等信息
% \fi
% \iffalse
%<*driver>
\ProvidesFile{mypackage.dtx}[1.0 My package]
\documentclass{ltxdoc}
\begin{document}
\DocInput{\jobname.dtx}
\end{document}
%</driver>
% \fi
% 在此处编写常规的 LaTeX 文档内容
% \Finale
%
\endinput
当你运行 pdflatex mypackage.dtx
时,可以生成 mypackage.pdf
,这是手册。在该 PDF 文件中,所有 \fi
和 \endinput
后的内容将被从注释中剥离,并插入到文档中。请注意,第一次 LaTeX 引擎遇到 \DocInput
时,它会再次读取相同的文件,但会去除所有以 %
开头的行。因此,它会忽略 \iffalse ... \fi
代码块。还应注意,同一文件的第二次运行也会忽略 %<driver>
和 %<*driver>
之间的魔法注释。driver
指示符表示内部内容是用于生成最终手册的包装器,你可以根据需要将它们替换为其他单词。
以下是一些需要进一步解释的宏:
-
\ProvidesFile{<name>}[<version>]
类似于\ProvidesPackage{<name>}[<version>]
,它将方括号中的内容写入日志文件。 -
meta-comment 用于提供 .dtx 文件本身的信息。由于不能使用正常的 TeX 注释(因为它们会被剥离),因此使用了这种方式。
-
ltxdoc
类似于其他文档类,并提供一些易于使用的命令来编写包文档,下面将对此进行说明。
新宏描述
要描述你在包中定义的宏,可以使用以下方式:
% \begin{macro}{\mymacro}
% mymacro 的定义在这里
% \end{macro}
macro
环境接受一个强制参数,这是宏的名称,并且该名称会显示在左边的边距上。你还可以使用 \DescribeMacro{mymacro}
并将额外的解释放在普通文本中。对于新环境的描述,你可以使用 \DescribeEnv{mynewenv}
。它们的区别在于索引条目的类型,下面将对此进行说明。
索引条目和变化
在包文档文件的前言中添加 \EnableCrossrefs
(没有注释的行开头)。在你希望索引出现的位置添加 \PrintIndex
。你描述的所有宏将被打印在文档的末尾。有关编制索引的一般介绍,请参见 编制索引。通常,下面的命令足够了:
makeindex -s gind.ist -o mypackage.ind mypackage.idx
ltxdoc
还提供记录包变化的功能。要启用此功能,请在前言中添加 \RecordChanges
并使用以下命令:
\changes{v1.0}{2017/01/01}{创建我的包。}
在你希望索引出现的位置添加 \PrintChanges
。变化将使用术语表支持进行记录,从命令行调用 makeindex
:
makeindex -s gglo.ist -o mypackage.gls mypackage.glo