對於某些應用程序,例如 SVG 物件的轉換,我需要當前位置的相反值(乘以 -1)X和y座標,例如
\special{dvisvgm:raw <g id='myGroup' transform='translate(-{?x},-{?y})'>}
...
\special{dvisvgm:raw </g>}
其中dvisvgm
替代品{?x}
和{?y}
與X和y與文件頁面上的目前位置相對應的 SVG 座標系值。
{?x}
然而,在負值替換and/or的情況下{?y}
(這可能發生在beamer
類文檔中),這會導致無效的 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>}%