为什么我们在 Latex 中使用 \number?

为什么我们在 Latex 中使用 \number?

这是我的代码:

\documentclass{article}

\makeatletter
\def\Printdimen#1#2{\strip@pt \dimexpr #2 *65526 /\number\dimexpr 1#1}
\makeatother

\begin{document}

\Printdimen{mm}{\hsize} mm
\end{document}

答案1

\strip@pt需要在其后附加一个维度寄存器;它将pt在提取的值后删除最后一个。

在 e-TeX 中,\dimexpr充当“未命名”维度寄存器,因此它位于 之后\strip@pt。根据 的语法规则\dimexpr,其中的维度(隐式或显式)后面可以跟*/来表示乘法或(四舍五入)除法。但是乘数/除数必须为整数。

所以\dimexpr 3pt/2是有效的,但\dimexpr3pt/1.5事实并非如此。

当 TeX 期望一个整数时,维度寄存器就会被强制使用缩放点数的值;65536 个缩放点为 1pt,这就是乘数为 65536 的原因。

因此,\number实际上没有必要,

\makeatletter
\def\Printdimen#1#2{\strip@pt\dimexpr (#2) * 65536 / \dimexpr 1#1\relax\relax}
\makeatother

也很好。最好添加表达式\relax结尾的两个\dimexpr

相关内容