因此,我试图弄清楚如何为 ConTeXt 编写模块。我正尝试基于对t-title.mkvi
模块的微小更改来为标题页创建一个模块。我已复制并重命名该文件,并将其放在我的树中。
我的问题是,我很难理解如何添加元素。如果我\titleelement\c!place
在适当的位置添加到模块,然后在文档中包含以下内容:
\setuptitle
[title={Some Title},
author={John Grasty},
date={July 26, 2005},
place={Some Place}]
它正如我期望的那样工作。
如果我pubplace
用代替place
,则会出现“未定义控制序列错误”。模块将接受的参数/变量定义在哪里?
答案1
您的问题不太清楚,但我高度怀疑您\c!pubplace
在代码中使用了所谓的接口常量。在 ConTeXt 模块中,您通常调用\unprotect
以便能够使用带下划线的内部名称。这样做的一个效果是还可以生成!
一个字母,从而生成\c!pubplace
一个控制序列。当然,这个控制序列必须在使用前定义,这是使用
\setinterfaceconstant{pubplace}{pubplace}
有一篇相关文章,问题相同,但问题表述更清晰,如下: 使用 ConTeXt BNF 模块。在我的回答的第二部分,我展示了如何将 BNF 模块移植到 MKIV。这可以作为您自己的模块的蓝图。