\dimexpr と一般的な次元についての簡単な説明

\dimexpr と一般的な次元についての簡単な説明

私は、dimexpr と numexpr の構文を理解するために etex マニュアルを注意深く読みましたが、私の理解力は限られています... 式「\dimexpr」は、前述のマニュアルに 3 回しか登場せず、正式な定義はどこにもありません (つまり、私の質問に答えているのです)。

したがって、詳細については、このマクロをネット上で見つけることができます。

\newcommand\dimtomm[1]{%
\strip@pt\dimexpr 0.352777778\dimexpr#1\relax\relax
}

寸法を mm に変換します。問題は、#1 の初期単位が考慮されていないように見えることです...? 実際、この newcommand を、sp にある zsavepos から発行された位置で使用すると、あたかも newcommand に pt の寸法を指定した場合のように機能します。

次元に関するより一般的な質問がありますが、文献 (ソース ブックなど) やインターネットで答えを見つけることができません。変数が次元を含むように定義されている場合、それには単位が付けられるのでしょうか、それとも単なる数値で「次元」というラベルが付いているのでしょうか。私の考えでは... いいえ! \strip@pt があるためですが、これは上記の \dimtomm の動作と矛盾しています (もちろん、私によると)。

次元、座標 (zsavepos...)、pt の次元を使用して sp に zsavepos を追加する方法、dimexpr の機能などについて、明確なトポロジを作成できる人はいますか?

編集回答があまり一般的にならないよう、私の質問についてより正確に述べると、点の zsavepos を取得し、sp の長さである x と y にアクセスできます。次に、次のようなものを使用して、描画内のオブジェクトを描画して配置します。

$(current page.north west) + (0cm,\xcoordtodim{\zposy{pointA}})$

そこで私は、異なるタイプの 2 つの問題に直面します。

1) \xcoordtodim が dim を返すようにしたいのですが、どうやら私の現在の知識ではそれができないようです...

2) \xcoordtodim は、通常 pt で表される指定された長さの点 (sp 内) の zposy を追加します。これは、\dimtomm および \dimexpr にリンクされた単位の「混合」の問題です...

答え1

寸法は単位付きで保存されません (実際には、常に単位付きの整数として保存されますsp)。長さを設定するときに使用する単位が何であれ (単位が使用される場合)、単位\theを使用して長さが表示されますpt

明示的な単位を使用しない設定には次のようなものがあります

\setbox0\hbox{abc}  \dimen0=\wd0

関連情報