以 ConTeXt 为导向的方式定义 \maketitle

以 ConTeXt 为导向的方式定义 \maketitle

我去了在 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。

如此这般快乐

相关内容