的宏\!
定义为:\def\!{\mskip-\thinmuskip}
的命令\thinmuskip
初始化为\thinmuskip = 3mu
(附录 B:第 349 页,The TeXBook)。我找不到定义,那么命令是如何定义的?我的意思是,我知道命令是在網絡語言但是有没有办法将其重新定义为类似 TeX 的语言呢?
此外,是否可以重新定义 LaTeX 宏命令,\!
以某种方式“接受”一个值(通过在命令前提供值(即:)4\!
或将其括在花括号内(即\!{4}
:))来指示命令生成负空间四次比正常调用产生的范围更广?
答案1
\thinmuskip
fontmath.ltx
在格式化的时候读入的默认设置为3mu ,最后几行是:
\thinmuskip=3mu
\medmuskip=4mu plus 2mu minus 4mu
\thickmuskip=5mu plus 5mu
\endinput
%%
%% End of file `fontmath.ltx'.
因此,您可以使用 \thinmuskip=5mu 来获得更大的默认值,或者设置任意值,例如$a\mkern -6mu b$
负空间是默认值的两倍\!
答案2
\mskip
和\thinmuskip
是 TeX 原语,因此它们没有定义:它们是 TeX 的一部分。
如果想要有的倍数\thinmuskip
,可以按如下方式操作。
\newmuskip\normalnegthinmuskip
\normalnegthinmuskip=-\thinmuskip
\catcode`@=11
\def\!{\afterassignment\makenegthinmuskip\count@=0}
\def\makenegthinmuskip{\mskip\ifnum\count@=0 \else\count@\fi\normalnegthinmuskip}
\catcode`@=12
$a\!b$
$a\!4 b$
\bye
\!
如果您不想要更大的负跳过,而是排版数字,请确保在和后面的数字之间留出空格。