我想使用尽可能多的 LaTeX3 内容(特别是和expl3
)编写一个包。xparse
xtemplate
我应该读什么来了解这些?
尤其是:我知道有关于expl3
和的很好的介绍xparse
。我记得曾经读过一些关于的很好的文章xtemplate
(有例子等),但找不到它(我在谷歌上搜索了 LaTeX3 项目网站、CTAN、TUGboat 和 PracTeX 期刊)。有人能帮我找到吗?
答案1
对于实现 LaTeX2e 新功能的编程包,您主要需要的是 LaTeX3 的编程层。
xparse
另外,它还为您提供了一些帮助,帮助您使用可选参数或星号形式等以 2e 风格定义用户界面,但您可以将其视为您的包提供的功能之上的语法糖。相反,xparse
独立使用时也非常有用,即,如果您使用 2e 方法定义命令,并且只想拥有更强大的用户界面设置。
template
finally 是我认为正确但尚未准备好的东西,所以我只会谨慎使用它。我预计今年晚些时候会看到更多设计器界面基础层可用,但现在你至少需要为可能更大的界面变化做好准备。你要求提供有关模板的文档:当然有模板文件本身:template.dtx
但也有Lars 的一篇短文和一些相关文章在项目网站上。
LaTeX3 编程层
关于 LaTeX3 (又名) 编程层的文档expl3
,我建议阅读以下文档(按顺序):
expl3.pdf
对一些概念的一些介绍性说明
界面3.pdf
发布时 LaTeX3 编程层所有功能的完整接口描述。有许多模块尚未成为稳定内核的一部分(在目录中l3kernel
),但本文档中的内容是我们认为“稳定”的所有内容的描述。
虽然可以进行较小的更改,但程序员l3kernel
可以利用强烈鼓励订阅LaTeX-L 邮件列表:列表中会发布有关功能弃用或修改的公告。
本文档是一份参考文档,因此函数是按模块记录的,而不是真正的语言学习手册 --- 抱歉后者尚不存在。它也没有提供许多如何使用构造的示例,而是记录了特定的接口。
source3.pdf(一开始不要读:-)
为了理解这是如何实现的,可以阅读source3.pdf
提供规范以及完整文档代码的文档。但是,我建议不要从这里开始,原因如下:
- 核心模块实现了构建高级构造所必需的数据结构和函数。因此,它们(至少如果可能经常需要它们的话)是为速度而定制的,这意味着那里使用的一些技巧不适合在内核之外进行编码
- 核心模块建立在 TeX 的基元之上,因此它们只能部分使用 的核心概念
expl3
。例如,您会发现\exp_after:wN
(我们也称为\expandafter
)的很多(约 450 个)用法,而我认为在expl3
内核之外的正常编程中,这个命令永远不应该或几乎从不使用。
如何使用编程层
了解如何使用 LaTeX3 编程层的更好起点是本站问题回复中给出的示例,也可能是更高级的模块。目前,内核目录中只有l3coffins.dtx
我推荐的这些。随着时间的推移,将会有更多的内容。
答案2
好吧,对于,请阅读和expl3
的文档,尤其是;对于和,请阅读 文档。expl3
source3
source3
xparse
xtemplate
通常,它们都在您的计算机中。使用命令
texdoc 解释3
expl3
例如,在终端中获取的文档。
一个很好的例子xtemplate
可能是xfrac
打包成l3packages
bundle。的文档xfrac
非常方便。
就我个人而言,xparse
这是最容易使用的。expl3
定义了一种新的编程方案,需要付出更多努力才能解决。我从未使用过xtemplate
。