乘法和除法中尺寸如何转换?

乘法和除法中尺寸如何转换?

在里面电子书据说(第 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 1​​6 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

相关内容