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 個であれば 1 ポイントになります。これが 65536 の乗数の理由です。

したがって、\number実際には必要ではなく、

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

も良いですが、表現の\relax終わりの2つを追加した方が良いでしょう\dimexpr

関連情報