在里面电子书据说(第 118 页):
乘法和除法也是可能的,但只能是整数。...维度值是 sp(缩放点)的整数倍。
例 1. 结果为25pt minus -150pt
。为什么被乘数要转换为与乘数相同的维度?
\dimen1=25pt
\skip2=1sp minus -6sp
\multiply\skip2 by \dimen1
\showthe\skip2
> 25.0pt minus -150.0pt
例 2. 结果是25sp minus -150sp
。一切看起来都很好。
\dimen1=25sp
\skip2=1sp minus -6sp
\multiply\skip2 by \dimen1
\showthe\skip2
> 0.00038pt minus -0.00229pt
例3. 结果为25sp minus -150sp
。为什么乘数要转换为与被乘数相同的维度?
\count1=25
\skip2=1sp minus -6sp
\multiply\skip2 by \count1
\showthe\skip2
> 0.00038pt minus -0.00229pt
答案1
有一个惯例,即使寄存器(计数除外)数字小于 10,也可以免费使用当地的而奇数只应用于全球的分配。混合本地和全局分配可能会导致内存问题。因此,我将寄存器编号乘以二,以获得本地分配的寄存器编号。前十个计数寄存器具有特殊含义(页码,...)。本地分配的可用计数寄存器是计数寄存器 255(\dimen@
)。
TeX 将长度值存储为具有隐式单位的整数sp
。2 16 sp 为 1 pt。当 TeX 需要一个数字并得到一个长度值时,就会使用这个整数。
注释示例:
示例 1:
\dimen2=25pt
% 25pt = 25 * 65536sp = 1638400sp
\showthe\numexpr\dimen2\relax % \edef\x{\number\dimen2}\show\x
> 1638400
\skip4=1sp minus -6sp
\multiply\skip4 by \dimen2
% (1sp minus -6sp) * 1638400 = 1638400sp minus -9830400sp
% = 25pt minus -150pt
\showthe\skip4
> 25.0pt minus -150.0pt
示例 2:
\dimen2=25sp
\skip4=1sp minus -6sp
\multiply\skip4 by \dimen2
% (1sp minus -6sp) * 25 = 25sp minus -150sp
\showthe\skip4
> 0.00038pt minus -0.00229pt
示例 3:
\count255=25
\skip4=1sp minus -6sp
\multiply\skip4 by \count255
% (1sp minus -6sp) * 25 = 25sp minus -150sp
\showthe\skip4
> 0.00038pt minus -0.00229pt