{?x} と {?y} の反対を取得するにはどうすればよいですか?

{?x} と {?y} の反対を取得するにはどうすればよいですか?

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)

しかし、これは Web ブラウザで解析エラーを引き起こすため、SVG 要素属性では許可されていないようです。

そこで疑問が湧きます。置換パラメータと特別なdvisvgm計算を実行する手段は提供されていますか?{?x}{?y}dvisvgm:raw

答え1

値を否定する必要がないように、座標空間を変換できるはずです。

これら 2 つの変換は同じことを行います。

ここに画像の説明を入力してください

\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>}%

関連情報