ConTeXt 中的 ?? 和 ! 是什么意思?

ConTeXt 中的 ?? 和 ! 是什么意思?

读这个关于 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}}

相关内容