Explicações simples para \dimexpr e dimensões em geral

Explicações simples para \dimexpr e dimensões em geral

Eu li atentamente o manual do etex para entender a sintaxe de dimexpr e numexpr mas minha compreensão limitada permanece limitada... A expressão "\dimexpr" aparece apenas 3 vezes no manual mencionado e em nenhum lugar há uma definição formal (quero dizer: isso responde minha pergunta).

Então, no detalhe, pode-se encontrar esta macro na rede:

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

para converter uma dimensão em mm. O problema é que parece não levar em consideração a unidade inicial do número 1...? Na verdade, eu uso este novo comando com uma posição emitida por zsavepos que está em sp, e funciona como se eu tivesse dado ao novo comando uma dimensão em pt!

Existe portanto uma questão mais geral sobre dimensões, para a qual não consigo encontrar resposta entre a literacia (livro de referência, ...) e a Internet: quando uma variável é definida para conter uma dimensão, existe uma unidade associada a ela, ou é apenas um número, mas com um rótulo "dimensão"? Eu acho que não! por causa do \strip@pt, mas isso está em contradição com o comportamento do \dimtomm acima (na minha opinião, é claro).

Quem poderia fazer um topo claro sobre dimensão, sobre coordenada (zsavepos...), sobre como adicionar um zsavepos em sp com uma dimensão em pt, sobre o funcionamento do dimexpr, e assim por diante?

EDITARPara ser mais preciso no meu questionamento, para que as respostas não sejam muito gerais: obtenho os zsavepos de um ponto e posso acessar x e y que são comprimentos em sp. Então quero desenhar e localizar um objeto em um desenho usando algo como:

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

Portanto, enfrento dois problemas de tipos diferentes:

1) Quero que \xcoordtodim retorne dim e, aparentemente, não posso fazer isso com meu conhecimento atual ...

2) \xcoordtodim soma o zposy de um ponto (em sp) com um determinado comprimento geralmente expresso em pt: trata-se da questão de "misturar" unidades ligadas a \dimtomm e \dimexpr...

Responder1

as dimensões não são armazenadas com uma unidade (na verdade, são sempre armazenadas como um número inteiro, em spunidades). Qualquer unidade usada ao definir o comprimento (se uma unidade for usada) \themostrará o comprimento usando ptunidades.

As configurações que não usam nenhuma unidade explícita incluem coisas como

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

informação relacionada