![原语/寄存器/宏/令牌之间有什么区别?](https://linux22.com/image/456547/%E5%8E%9F%E8%AF%AD%2F%E5%AF%84%E5%AD%98%E5%99%A8%2F%E5%AE%8F%2F%E4%BB%A4%E7%89%8C%E4%B9%8B%E9%97%B4%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%EF%BC%9F.png)
我开始学习 LaTeX,这些词在问题和答案中出现很多。它们都意味着同一个东西还是不同的概念?
答案1
“原语”是 tex 系统定义的命令。例如,\hbox
如果你问 tex 这是如何定义的
\show\hbox
你得到
> \hbox=\hbox.
l.1 \show\hbox
?
请注意,csname\hbox
可以给出非原始定义。\def\hbox{abc}
上述操作后将产生
> \hbox=macro:
->abc.
l.2 \show\hbox
?
类似地,原始功能也可以被赋予其他名称。之后\let\qqqq\hbox
将\show\qqqq
产生
> \qqqq=\hbox.
l.2 \show\qqqq
?
寄存器是一个特定的存储位置,它们通过数字寻址,最初每种类型有 256 个,但 etex 将其扩展为 2^15(超过 32,000 个),luatex 再次扩展了它。因此,整数值可以存储在中\count50
,长度(维度)可以存储在\dimen222
中等。通常,像 latex 这样的格式提供分配例程,这样您就不必直接处理数字,例如,\newdimen\textwidth
访问\textwidth
dimen 寄存器,接下来\newdimen
将访问下一个。\show\textwidth
产生(在 latex 中)
> \textwidth=\dimen116.
l.1 \show\textwidth
?
宏是一个由\def
以下命令定义的命令:扩展替换文本。它由 TeX 代码定义,不是 tex 程序源的一部分。\def\cmd{abc}
\show\cmd
生成后
> \cmd=macro:
->abc.
l.2 \show\cmd
?