对于 LaTeX,我曾经将一大堆\newcommand
定义(我经常需要它们来编写讲义等)放入一个.sty
文件中。将该文件放入我的texmf
目录中后,我可以在需要时轻松地将其包含在 LaTeX 文档中。
我想知道 ConTeXt 项目的等效操作方式是什么?好吧,我知道在 ConTeXt 中存在“环境”的概念,但它们似乎主要用于样式设置(而不是宏定义),并且它们似乎仅限于单个项目。
所以我想问一下在 ConTeXt 中
\define
有比环境更好的地方进行群交,- 有一种机制允许在多个项目之间共享此类定义
答案1
环境
在 ConTeXt 中放置宏和样式设置的地方是环境文件。用法非常简单。例如,将以下内容保存为env-test.tex
\startenvironment *
\setuplayout[grid=yes]
\def\something{something else}
\stopenvironment
然后你把你的文档文件
\environment env-test
\starttext
\something
\stoptext
要了解有关文档组织的更多信息,请参阅项目结构花园中的页面。
如果你需要更明确的例子,只需看看来源的Metafun 手册。
模块
如果您希望在各个文档之间共享宏和样式设置,您可能需要一个模块。您只需将模块保存在 TeX 搜索路径(例如texmf
)texmf-local
或工作目录中即可。
实际上,模块和环境之间的主要区别在于,您可以使用将选项传递给模块,\usemodule[...][key=value]
但将选项传递给环境的唯一方法是使用模式。(感谢 Aditya!)
将以下内容保存为t-test.tex
。模块文件具有命名约定<prefix>-<name>
,其中前缀t
代表第三方。
\startmodule[test]
\setuplayout[grid=yes]
\def\something{something else}
\stopmodule
然后你可以通过说来使用这个模块\usemodule
。
\usemodule[test]
\starttext
\something
\stoptext
有关详细信息,请参阅模块花园中的页面。