对于某些应用,例如 SVG 对象的转换,我需要当前位置的相反数(乘以 -1)X和是坐标,例如
\special{dvisvgm:raw <g id='myGroup' transform='translate(-{?x},-{?y})'>}
...
\special{dvisvgm:raw </g>}
替代dvisvgm
品{?x}
和{?y}
X和是与文档页面上的当前位置相对应的 SVG 坐标系的值。
然而,如果用负值代替{?x}
and/or {?y}
(可能出现在beamer
-class 文档中),则会导致无效的 SVG,就像translate(--12.345,-6.789)
(-
在X坐标)写入 SVG 文件。
另一种方法可能是在参数中放置内联计算translate
,例如
translate({?x}/-1, {?y}/-1)
但这似乎在 SVG 元素属性中是不允许的,因为它会导致 Web 浏览器出现解析错误。
因此问题是:是否dvisvgm
提供一种对替代参数{?x}
和特殊{?y}
参数进行计算的方法dvisvgm:raw
?
答案1
您应该能够转换坐标空间,这样您就不需要否定这些值。
这两个变换做同样的事情。
\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}
答案2
受 David Carlisle 的回答启发,我深入研究了现有的 SVG 文件,发现可以在同一transform
属性内连接转换。这样可以实现更紧凑的公式,而无需额外的组级别:
\special{dvisvgm:raw <g id='myGroup' transform='scale(-1)translate({?x},{?y})scale(-1)'>}%
xyz
\special{dvisvgm:raw </g>}%