经过一番研究,这里摘录了关于文件传输采用“dtx”和“ins”格式的原因。

经过一番研究,这里摘录了关于文件传输采用“dtx”和“ins”格式的原因。

我刚刚从 CTAN 下载了一个 LaTeX 软件包的安装文件。它们主要包括大量 DTX 文件和一个 INS 文件。说明说要在 INS 文件上运行 latex,我照做了。它生成了大量 STY 文件,并出现一条消息,告诉我将这些 STY 文件复制到我的 TeX 目录树中。我按照说明操作,一切正常。

但所有这些 DTX/INS 恶作剧到底有什么意义呢?为什么一开始不直接提供 STY 文件供下载呢?

答案1

拥有“源”格式的起点是,最好有代码注释,也最好有用户文档。当然,最简单的方法是将其全部直接放入文件中.sty

% Some info for the user
% ...
% Some code comment
\a \code \line

我们看到了大量的包裹。

下一个考虑是,由于 TeX 是一个排版系统,我们希望能够排版文档,而不仅仅是阅读“原始”源代码。这可以通过适当设置注释并使用某种形式的“驱动程序”(设置为排版而不是使用代码/文档)。

这给我们带来了两个部分历史方面的考虑。首先,如果源代码中有注释,TeX 每次使用代码时都必须读取这些行。一般来说,代码的使用次数将比文档的读取次数多得多,因此如果可能的话,加快这一过程是有意义的。从历史上看,删除注释在这里会产生很大的不同,所以这是值得的:今天你可能不太注意到改进!

可以将用户文档与代码分开,这也是很常见的,特别是对于较大的软件包。但是,这意味着更多的文件。同样,历史上的源代码是通过“直接”方法交换的(电子邮件,ETC。),因此最小化文件数量具有很强的意义。当然,今天这并不是一个值得考虑的问题。

以上所有内容都假设我们的源文件只提取到一个.sty文件。但是,通过使用 DocStrip 系统,我们可以从一个源文件中提取多个文件,重新排列行,ETC。例如,如果我们有几个相关文件(例如驱动程序(用于图形包含、输入编码支持等)将具有共享行和代码注释以及一些唯一行。使用我们.dtx可以将它们放在一个地方并提取出单独的部分。我们还可以将多个源组合成一个:文件加载取决于使用的文件数量,因此将大代码块放在一起是有好处的(源不希望太长!)。例如,这在LaTeX 内核本身.sty中可见。expl3


如上所述,使用该.dtx格式有技术和历史原因。由于 LaTeX 团队使用它,因此这种方法具有相当强烈的“社区参与”意识。值得注意的是,对于当今几乎所有最终用户来说,这不是一个重要因素:绝大多数用户在 TeX Live/MiKTeX 中预先提取代码,并且 CTAN 还保存了.tds.zip许多软件包的可安装文件。因此,除了开发人员之外,实际使用.dtx文件并不是当今广泛做的事情。

答案2

经过一番研究,这里摘录了关于文件传输采用“dtx”和“ins”格式的原因。

为什么要 dtx?

首先要考虑的问题是,为什么人们要费心使用 dtx 格式。并不是每个人都会这样做,而且每种不同的方法都有很好的支持和反对理由。我可以轻松地写一整篇文章来讨论各种替代方案,但这不是我想在这里做的!

dtx 格式是 LaTeX 团队所青睐的格式,因此它也是 LaTeX 软件包作者的标准。dtx 格式的理念是允许软件包作者将用户文档、代码文档和代码本身放在一处。用户文档可以单独排版,也可以将用户文档和代码文档一起排版(文学编程)。代码也可以从源代码中提取出来使用:这意味着同一个源代码中可以包含多个文件。最后一点也许是 dtx 格式的最大卖点:你可以在一个源代码中包含 LaTeX 软件包、类和一些配置文件。删除软件包中的冗余(注释)行也可以提高速度:在现代 PC 上,这一点很小,但在过去却很重要。

摘自 http://www.texdev.net/2009/10/05/the-dtx-format/

并进一步讨论http://www.texdev.net/2009/10/06/a-model-dtx-file/

虽然 CTAN 档案中没有使用该格式,但它仍然存在,并且是安装某些软件包的唯一方法。幸运的是,有关于如何使用它们的优秀资源。

相关内容