读这个页关于 LaTeX 和 ConTeXt 之间的区别,我遇到了以下片段:
\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}
我已经弄清楚了这是什么意思,但我不明白\??dt##1
是什么?双问号是什么意思?同样,是什么意思\v!content
?
答案1
详见相应的 wiki 页面 (https://www.contextgarden.net/System_Macros/Scratch_Variables):
\s!
:这些是保存系统常量的宏,即永远不会改变的值\c!
:这些是保存键值对中常量键的宏。实际定义取决于当前正在使用的多语言界面\v!
:这些是宏,以键值对的形式保存变量值的名称。实际定义取决于当前正在使用的多语言界面\??
:这些是多语言接口常量调用。\@@
:这些都是多语言界面不断扩展的结果。
正如本 wiki 页面的标题所示,这些是临时变量的前缀,因此以其中一个开头的宏包含各种类型的数据。
当然,正如您所要求的\??dt##1
:这只是回忆系统变量的内部名称,正如您在相应的定义中所看到的\definesystemvariable
:
\unexpanded\def\definesystemvariable#1{\expandafter\edef\csname\??prefix#1\endcsname{\@@prefix#1}}