我去了在 ConTeXt 中定义标题的 wiki 页面,我已经有一个“类似 LaTeX”的解决方案在运行(段落“在 ConTeXt 中:一个更可重用的解决方案”)。但是,我也读过段落“在 ConTeXt 中:一个更高级的解决方案”,我想切换到这个。问题是我无法在系统变量中定义新键dt
:我以为我只需要在中声明它\setuptitle
,但它无法编译。
下面是从 wiki 中获取的 MWE,经过修改后可显示编译错误发生的位置:
\definesystemvariable {dt} % DocumentTitle
\def\setuptitle{\dodoubleempty\dosetuptitle}
\def\dosetuptitle[#1][#2]%
{\ifsecondargument
\dodosetuptitle[#1][#2]%
\else
\dodosetuptitle[\v!content][#1]%
\fi}
\def\dodosetuptitle[#1][#2]%
{\def\dododosetuptitle##1%
{\getparameters[\??dt##1][#2]}%
\processcommalist[#1]\dododosetuptitle
}
% Here is where we define the key-value pairs
\setuptitle
[\c!title=,
\c!author=,
\c!date=\currentdate,
\c!schoolyear=, % Undefined control sequence occurs here
]
% trying to use the variables...
\protect
我尝试在 wiki 中查找许多页面,但我很难理解这些页面(我对低级 TeX 一无所知)。例如,我完全无法理解:
- 什么是
\??dt##1
变量? \definesystemvariable
和有什么区别\definedataset
(这一页)?- 就我的情况来说哪一个最适合使用?
\@@dtcontenttitle
附加问题:在处理逗号分隔列表时,有没有办法将其中一个参数(例如)定义为标记?
如果问题的任何部分不相关,我很抱歉,正如我所说,我对低级 TeX 一无所知,所以我真的不明白我在做什么......
先感谢您
答案1
我认为你可以做这样的事情:
\starttext
\setvariables
[content]
[title={Such, Such Were the Joys},
author=George Orwell,
date=1948,
age=8|--|13,
years=1911|--|1916]
\midaligned{\tfc\getvariable{content}{title}}
\blank[big]
\midaligned{\tfa by \getvariable{content}{author}}
\blank[big]
The essay describes his experience during the years \getvariable{content}{years}, when he was \getvariable{content}{age}. It was first published in \getvariable{content}{date}.
\stoptext
请随意更新 wiki。