.dtx 文件中的“驱动程序”部分起什么作用?

.dtx 文件中的“驱动程序”部分起什么作用?

我已经阅读过docstrip文档,但还没有形成关于当我简单运行时如何提取包文档的直觉pdflatex package.dtx

假设我使用简单的dtxtut用于生成.sty文件和.pdf记录该文件的文件的骨架文件。

直观地讲,pdflatex只需丢弃所有注释并编译剩余的内容。我还可以理解,部分\DocInput内的命令driver会再次获取同一文件并使用一些不同的“过滤器”对其进行解析。

但是该<*driver></driver>部分是做什么的呢?我从来没有定义过driver布尔值,而且我在其他地方也找不到它的定义。

答案1

在最初的计划中,docstrip文档源将位于.dtx文件中,并且一个单独的 LaTeX“驱动程序”文档(除了.tex可能与正在生成的文件发生冲突之外)将用于输入包和生成文档,并且将使用doc第三个文件来控制文件的生成。.insdocstrip

通过将适当的神秘\if构造和保护放入dtx文件中,可以省去两个额外的文件,只分发一个dtx文件,该文件可用于驱动文档或代码生成,具体取决于调用方式。

当我们为 LaTeX2e 发行版标准化内容时,删除ins文件被认为太奇怪了,但我们确实将文档驱动程序隐藏在文件中,dtx从而避免了为每个包生成文档而使用单独的文件。但是,我们docstrip在那里放置了保护装置,以便如果有人需要,文档驱动程序文件可以生成为单独的文件(通过指定驱动程序保护装置docstrip)。我猜它们现在永远不会直接使用,尽管您需要将该块放入某个保护装置顶部以阻止它被写入生成的文件的顶部.sty

答案2

“经典”.dtx文件(~LaTeX2.09)包含(通常)LaTeX 软件包的源代码和文档,但不包含从源代码中提取软件包或排版文档的说明。因此,latex foo.dtx不会产生有用的输出。要允许提取,.ins需要一个安装()文件,要允许排版,则使用驱动程序(.drv)文件。因此,要获取文档,您需要latex foo.drv……

通过适当的设置,可以避免这两个额外的文件。多年来,将驱动程序集成到 中一直是标准做法。.dtx这仍然通常使用名为 的保护程序来完成driver,这意味着可以创建一个.ins文件来从源中提取驱动程序。(您仍然可以在 CTAN 上找到一些以这种方式设置文件的软件包.ins。)集成驱动程序的结果是latex foo.dtx(通常)将排版文档。

虽然问题中没有直接问到,但值得注意的是,你也不必有单独的.ins文件。我的模型.dtx文件被设置为“自解压”,所以不需要.drv文件.ins

答案3

单独的驱动程序文件使得修改它以改变文档的生成方式(例如生成哪些索引)变得更加容易(并且更合法)。

%% To produce the documentation in the way you like you are allowed
%% to change this driver file.

相关内容