开始编写类和/或包的参考指南

开始编写类和/或包的参考指南

一旦 LaTeX 用户变得越来越熟练,并编写自己的代码,就可能会出现“我应该用它制作一个包(或一个类)吗?”的问题。

我的问题是(你抓住我了:我就是其中一个用户!):除了适用于类和包编写者的 LaTEX 2ε

我的意思是,在我看来,编写类或包的能力只能通过经验获得。每个 LaTeX 包总是有很好的文档记录。有没有关于如何在对 LaTeX 知之甚少的情况下编写包的文档?

你知道,每种编程语言都有一个“Hello world”示例,从这个示例开始,会解释该语言的所有功能。但我还没有找到编写 LaTeX 包的类似方法。

答案1

我编写了我的第一个 LaTeX 包(idxlayout大约半年前(2010 年 1 月)我写了这篇文章。当时我还不知道全面的类/包编写指南(现在也不知道),但我可以提供一些有用的提示:

  • 您可能不需要高级的 TeX 编程技能,但您应该熟悉您感兴趣的主题领域的现有解决方案(及其缺点)。深入研究 LaTeX 内核的相应代码,研究可能已经存在的软件包。
  • 在编写大量代码之前,请尝试理清软件包所需的功能及其相互依赖关系。为选项和用户命令想出直观的名称。
  • 考虑为要提供的选项提供一个键值接口。有相当多的键值语法支持包;我用过kvoptions
  • 您已经提到了文档的重要性。我想补充一点,编写一份通俗易懂的用户手册是必要的,但您的首要任务应该是记录源代码的复杂性——忽视这一点会让您日后陷入困境。
  • 要分发你的软件包,你可以使用 -format dtx,它将源代码和文档打包在一个文件中。一个很好的教程是斯科特·帕金斯的文章

编辑:一年后,我的第二个包的版本为 0.1(quoting) 发布后,我想强调其他几点。请注意,我只是一个 LaTeX“高级用户”,我的建议对程序员来说可能是不言而喻的。

  • 在开发类/包时,请编写一份随附的测试文档,以便快速概览(主要)功能(仍然)按预期工作,或者最新版本是否破坏了某些功能。每当您偶然发现新的边缘用例时,请修改测试文档以将其包括在内。

  • 考虑使用版本控制系统。我保留了软件包“主要”开发版本的副本,但没有使用像颠覆,现在有点后悔了。(我曾经为 编写了一个小功能quoting,然后在同一个“主要”软件包版本中放弃了它,现在非常想重新使用这段代码。)

答案2

我可能错了,但你的问题似乎是在问如何编写 LaTeX 包,而不是用 LaTeX 编程。对吗?在这种情况下,你可能会对dtxtut指南和dtxgallery例子集合。

答案3

我认为没有多少有趣的 LaTeX 软件包是只对 LaTeX 有一点了解就能编写的。大多数(但不是全部)软件包都需要对 TeX 有相当深入的了解。我强烈建议阅读 TeXbook 来了解 TeX。

有人可能会编写一个类,该类本质上加载了另一个类(如article),使用了一些包(如geometry),并向它们提供了必要的参数,而不需要大量的 LaTeX 知识。处理docstrip文档又是另一个问题。

答案4

写作课的介绍是这里

相关内容