重新定义与长度相关的命令以具有十进制系数

重新定义与长度相关的命令以具有十进制系数

的宏\!定义为:\def\!{\mskip-\thinmuskip}的命令\thinmuskip初始化为\thinmuskip = 3mu(附录 B:第 349 页,The TeXBook)。我找不到定义,那么命令是如何定义的?我的意思是,我知道命令是在網絡語言但是有没有办法将其重新定义为类似 TeX 的语言呢?

此外,是否可以重新定义 LaTeX 宏命令,\!以某种方式“接受”一个值(通过在命令前提供值(即:)4\!或将其括在花括号内(即\!{4}:))来指示命令生成负空间四次比正常调用产生的范围更广?

答案1

\thinmuskipfontmath.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

\!如果您不想要更大的负跳过,而是排版数字,请确保在和后面的数字之间留出空格。

在此处输入图片描述

相关内容