看了一下source2e.pdf
和source3.pdf
。据我所知,latex 的开发人员在源文件中包含了注释。然后可以通过某些工具处理源文件以生成源生成的注释文件。这些是source2e.pdf
和source3.pdf
。
我能否了解有关此问题的更多详细信息并进一步了解该过程?
答案1
虽然这不是必需的,但 LaTeX 源的常见方法是将代码和注释放入.dtx
文件中,一些编辑器将其称为“DocTeX”。(LaTeX 团队不使用此术语:它们只是.dtx
文件。)这些源文件包含一个或多个类、包或支持文件的代码和支持性评论/文档。.dtx
然后可以采用以下两种方式之一来处理该文件。
首先,应该有一个附带.ins
文件。后者是一组关于如何从中提取类/包的说明.dtx
。我们通常使用纯 TeX 进行提取,因此类似于
pdftex mypkg.ins
在常见情况下,将提取 中的任何内容mypkg.dtx
。(可以将.ins
和合并.dtx
为一个源,但这不是推荐的模式。)此提取过程使用用 TeX 编写的名为 DocStrip 的工具。
另一种使用方法.dtx
是将其视为任何其他 LaTeX 源
pdflatex mypkg.dtx
LaTeX 不关心使用什么扩展名,因此这是正常排版的。 a 的.dtx
结构方式是,以这种方式使用时,文档/注释将与代码一起排版。
对于使用该机制的较小包,一个/组合.dtx
可能只包含一个或一个文件的源。但是,这不是必须的。可以将多个包文件打包成一个,或者一次提取多个文件以提供单个输出包等。.dtx
.ins
.sty
.cls
.dtx
.dtx
LaTeX 内核非常大,因此需要.dtx
生成许多文件和许多目标文件。它还需要排版来自同一来源的多个版本。因此,它具有复杂的.ins
结构.dtx
和.tex
输入一些文件以允许更精细的控制的附加文件.dtx
。因此,这不是我理解模型的起点.dtx
。
如上所述,提取过程使用名为 DocStrip 的工具,可以使用texdoc docstrip
。文件的源.dtx
文件使用名为 的 LaTeX 包doc
,该包提供源文件所需的标记工具。
所提供的工具包括例如仅排版源代码的文档部分并跳过实现部分的功能。这意味着许多.dtx
文件很少被完整排版:源代码部分在那里,但只有开发人员才能读取。可以传递一个选项来doc
调整这一点,因此有几种方法可以设置排版以提供两个 PDF,一个仅包含文档,一个包含实现。
对于单个包或类文件,提取源代码现在不那么重要了。(从历史上看,需要避免在不需要时强制 TeX 读取大量注释行,但计算机性能的提高已经否定了这一点。)但是,一旦您想将源代码拆分为多个文件或从单个源中提取多个文件,它就会变得非常有用。请参阅https://github.com/latex3/latex3/tree/main/l3backend例如,多个源提取多个文件并不像 2e 内核那么复杂。