
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 sp
unidades). Qualquer unidade usada ao definir o comprimento (se uma unidade for usada) \the
mostrará o comprimento usando pt
unidades.
As configurações que não usam nenhuma unidade explícita incluem coisas como
\setbox0\hbox{abc} \dimen0=\wd0