Для некоторых приложений, таких как преобразования объектов SVG, мне нужна противоположность (умноженная на -1) текущей позицииИксиукоординаты, такие как в
\special{dvisvgm:raw <g id='myGroup' transform='translate(-{?x},-{?y})'>}
...
\special{dvisvgm:raw </g>}
где dvisvgm
заменители {?x}
и {?y}
сИксиузначения системы координат SVG, соответствующие текущему местоположению на странице документа.
Однако в случае замены отрицательных значений на {?x}
and/or {?y}
(что может произойти в beamer
документах класса -), это приводит к недопустимому SVG, например translate(--12.345,-6.789)
(два последовательных " -
" вИкскоордината) записывается в файл SVG.
Другой подход может заключаться в размещении встроенного вычисления в translate
аргументе, например:
translate({?x}/-1, {?y}/-1)
но, похоже, это не допускается в атрибутах элемента SVG, поскольку приводит к ошибке синтаксического анализа в веб-браузере.
Отсюда вопрос: 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
Вдохновленный ответом Дэвида Карлайла, я немного углубился в существующие файлы SVG и обнаружил, что преобразования можно объединять в одном transform
атрибуте. Это позволяет получить еще более компактную формулировку без дополнительных групповых уровней:
\special{dvisvgm:raw <g id='myGroup' transform='scale(-1)translate({?x},{?y})scale(-1)'>}%
xyz
\special{dvisvgm:raw </g>}%