Warum haben wir \number in Latex verwendet?

Warum haben wir \number in Latex verwendet?

Hier ist mein Code:

\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}

Antwort1

Das Makro \strip@ptmöchte danach ein Dimensionsregister; es entfernt das Finale ptnach dem extrahierten Wert.

In e-TeX \dimexprverhält sich wie ein „unbenanntes“ Dimensionsregister, also ist es nach gültig \strip@pt. Gemäß den Syntaxregeln von kann einer Dimension (implizit oder explizit) darin oder \dimexprfolgen, um eine Multiplikation oder (gerundete) Division anzuzeigen. Der Multiplikator/Divisor ist jedoch*/musseine ganze Zahl sein.

Dies \dimexpr 3pt/2ist gültig, \dimexpr3pt/1.5ist es aber nicht.

Ein Dimensionsregister, das in einem Kontext erscheint, in dem TeX eine Ganzzahl erwartet, wird mithilfe des Werts in skalierten Punkten auf diese Zahl gezwungen; 65536 skalierte Punkte sind 1pt, was der Grund für den Multiplikator 65536 ist.

Das ist also \numbernicht wirklich notwendig und

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

ist auch gut. Es ist besser, die beiden hinzuzufügen, \relaxdie den Ausdruck beenden \dimexpr.

verwandte Informationen