\dimeexpr 및 차원에 대한 일반적인 설명

\dimeexpr 및 차원에 대한 일반적인 설명

나는 Dimepr 및 numexpr의 구문을 이해하기 위해 etex 매뉴얼을 주의 깊게 읽었지만 나의 제한된 이해력은 여전히 ​​제한적입니다... 언급된 매뉴얼에서 "\dimepr"이라는 표현은 언급된 매뉴얼에 3번만 나타나고 공식적인 정의는 어디에도 없습니다(내 말은: 내 질문).

따라서 세부적으로 다음 매크로를 인터넷에서 찾을 수 있습니다.

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

치수를 mm 단위로 변환합니다. 문제는 #1의 초기 단위를 고려하지 않은 것 같은데...? 실제로 나는 sp에 있는 zsavepos에서 실행된 위치와 함께 이 새 명령을 사용하며 마치 새 명령에 pt에 차원을 부여한 것처럼 작동합니다!

차원에 대한 좀 더 일반적인 질문이 있습니다. 이에 대한 답은 잡동사니(원본, ...)와 인터넷에서 찾을 수 없습니다. 변수가 차원을 포함하도록 정의되면 거기에 단위가 첨부되어 있습니까? 아니면 숫자일 뿐이지만 "차원"이라는 라벨이 붙어 있나요? 아마도... 아니! \strip@pt 때문이지만 이는 위의 \dimtomm의 동작과 모순됩니다(물론 제가 보기에는).

차원, 좌표(zsavepos...), pt 차원에 sp에 zsavepos를 추가하는 방법, Dimexpr 기능 등에 대해 명확한 토포를 만들 수 있는 사람은 누구입니까?

편집하다내 질문에 대해 좀 더 정확하게 말하자면, 대답이 너무 일반적이지 않도록 하기 위해: 나는 한 점의 zsavepos를 얻고 sp의 길이인 x와 y에 액세스할 수 있습니다. 그런 다음 다음과 같은 방법을 사용하여 그리기에서 개체를 찾고 싶습니다.

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

그래서 저는 서로 다른 유형의 두 가지 문제에 직면합니다.

1) \xcoordtodim이 희미한 결과를 반환하길 원하지만 현재 지식으로는 그렇게 할 수 없는 것 같습니다...

2) \xcoordtodim은 일반적으로 pt로 표현되는 주어진 길이를 가진 점(sp)의 zposy를 추가합니다. 이것은 \dimtomm 및 \dimexpr에 연결된 "혼합" 단위에 대한 문제입니다...

답변1

차원은 단위로 저장되지 않습니다(실제로는 항상 sp단위로 정수로 저장됩니다). 길이를 설정할 때 어떤 단위를 사용하든(어떤 단위를 사용하는 경우) 단위를 \the사용하여 길이를 표시합니다 pt.

명시적 단위를 사용하지 않는 설정에는 다음이 포함됩니다.

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

관련 정보