许多软件包都是以单个文件的形式编写的,软件包的所有内容都从该文件中提取出来。除了文档和软件包代码(或)dtx
之外,安装说明()、配置文件、测试或示例都可能包含在此单个文件中。sty
cls
ins
我理解将文档和代码紧密地结合在一起是有意义的,特别是在文学编程的概念中,但我认为一个仅包含一个巨型文件的项目会使版本控制等变得复杂。
我目前正在编写一个包含以下内容的包
- A
.ins
, - A
.sty
, - 它的用户文档,
qstest
测试,最有可能通过- 配置文件
- 使用示例,每个示例本身可能跨越多个文件。
这些部分中的哪些应该是专用文件,哪些最好放入dtx
?
答案1
这完全取决于情况,如果您查看 latex 格式的源代码latex.ltx
,它是由多个 dtx 文件组成的单个文件,主要原因是您所说的在源代码控制中更容易管理。用户文档也是一个棘手的选择,对于小型软件包,将其放在(单个)dtx 中是有意义的,但对于较大的套件,单独的文档是好的,但现在您可能需要给texdoc
实用程序的维护者一个提示,例如对于latex 中的包,每个 dtx 在开始时都有一些文档,但也graphics
有单独的图形指南文档。grfguide
目前texdoc graphics
为您提供了 grfguide,这可能是正确的选择(不是我选择的:-) 但要查看从您需要的实际包生成的文档,texdoc graphics.pdf
如果您知道它有效,那么这还可以,但如果你知道你可能不需要查看文档:-)
我认为测试最好分开进行。
所以,如果正如你所说,这是一个相当大的多文件套件,我想我会把较少的源 dtx 中的用户文档,只使其具有记录的源(传统上之后的部分\StopEventually
),并为面向用户的文档和示例提供单独的文档。
答案2
单一文件.dtx
在某些方面很方便,因为这意味着可以很容易地一次性将整个包发送给其他人。另一方面,很少有最终用户会真正使用这样的文件:如果我想向某人发送“即用型”包,我要么邮寄 TDS 样式的 zip 文件,要么在 CTAN 上链接到它。
对于小型软件包,单独.dtx
使用确实有意义,并且将.ins
文件与.sty
源代码中的 README 一起包含在内可以为软件包作者带来极大的便利。但是,这假设源文件保持“合理”的大小以便于编辑。例如,siunitx
我目前有一个源文件,但它确实太大了,我计划将其拆分以备将来发布。另一方面,我的notes2bib
软件包可以作为单个文件使用,因为它不太长。
需要考虑的一个方面是用户相对程序员文档。如果您计划从事任何提供“程序员界面”和“用户”界面的工作,那么单独的.tex
来源很有用。这适用于例如使用expl3
LaTeX 团队强烈建议所有用户界面都带有“匹配”程序员界面的代码。
作为戴维 说测试文件几乎肯定不应该包含在您的源代码中。与代码、文档和示例不同,这些不需要分发给最终用户。例如,LaTeX 团队有一个大型的 LaTeX2e 测试套件和测试,expl3
但这些都不会进入 CTAN,因为它们在开发工作之外不需要。(附言:团队的建立和测试系统可供一般使用。
我想说的是,如果您正在查看多个文件(包括示例),那么最好使用一个或多个文件.dtx
来存放代码、代码注释和程序员界面,并使用单独的.tex
文件来存放用户文档和演示。另一方面,由数十行代码和简单界面组成的包可以很轻松地包含在一个文件中。
答案3
该网页以某种方式解释了您想要做的事情(参见项目编号#2):http://www.aq.upm.es/Departamentos/Fisica/agmartin/webpublico/latex/FAQ-CervanTeX/FAQ-CervanTeX-8.html,但使用的是西班牙语。我想可能也有英语版本。例如:
- “额外的 .dtx 和 .ins 格式文件……”
并且:
- .sty、.cls 或 .fd:$TEXMFLOCAL/tex/latex//
- .dvi、.ps 或 .pdf:$TEXMFLOCAL/doc/latex//
- .bib: $TEXMFLOCAL/doc/bibtex/bib
- .bst:$TEXMFLOCAL/doc/bibtex/bst
- .tfm: $TEXMFLOCAL/fonts/tfm///
- .vf: $TEXMFLOCAL/fonts/vf///
- .afm: $TEXMFLOCAL/fonts/afm///
- .pfb: $TEXMFLOCAL/fonts/type1///
- .ttf: $TEXMFLOCAL/fonts/truetype///