Para ciertas aplicaciones, como transformaciones de objetos SVG, necesito el opuesto (veces -1) de la posición actualXyycoordenadas, como en
\special{dvisvgm:raw <g id='myGroup' transform='translate(-{?x},-{?y})'>}
...
\special{dvisvgm:raw </g>}
donde dvisvgm
sustitutos {?x}
y {?y}
con elXyyvalores del sistema de coordenadas SVG que corresponden a la ubicación actual en la página del documento.
Sin embargo, en el caso de valores negativos sustituidos por {?x}
y/o {?y}
(lo que puede suceder en beamer
documentos de clase), esto conduce a un SVG no válido, como algo así como translate(--12.345,-6.789)
(dos " -
" consecutivos en elXcoordinar) se escribe en el archivo SVG.
Otro enfoque podría ser colocar un cálculo en línea en el translate
argumento, como
translate({?x}/-1, {?y}/-1)
pero esto no parece estar permitido en los atributos de elementos SVG, ya que genera un error de análisis en el navegador web.
De ahí la pregunta: ¿Se dvisvgm
proporciona un medio para realizar cálculos en los parámetros de sustitución {?x}
y {?y}
en los dvisvgm:raw
especiales?
Respuesta1
Debería poder transformar el espacio de coordenadas para no necesitar negar los valores.
Estas dos transformaciones hacen lo mismo.
\documentclass{article}
\begin{document}
===
\vspace{2cm}
aaa
\special{dvisvgm:raw <g id='myGroup' transform='translate(-10,-20)'>}%
xyz
\special{dvisvgm:raw </g>}%
bbb
\vspace{2cm}
aaa
\special{dvisvgm:raw <g id='myGroup2' transform='scale(-1)'>}%
\special{dvisvgm:raw <g transform='translate(10,20)'>}%
\special{dvisvgm:raw <g transform='scale(-1)'>}%
xyz
\special{dvisvgm:raw </g>}%
\special{dvisvgm:raw </g>}%
\special{dvisvgm:raw </g>}%
bbb
\end{document}
Respuesta2
Inspirándome en la respuesta de David Carlisle, profundicé un poco más en los archivos SVG existentes y descubrí que las transformaciones se pueden concatenar dentro del mismo transform
atributo. Esto permite una formulación aún más compacta sin niveles de grupo adicionales:
\special{dvisvgm:raw <g id='myGroup' transform='scale(-1)translate({?x},{?y})scale(-1)'>}%
xyz
\special{dvisvgm:raw </g>}%