TikZ:在范围环境中使用当前长度

TikZ:在范围环境中使用当前长度

按照这个答案:使用 TikZ 在图像上绘图, 我在用着

\begin{tikzpicture}
    \node[anchor=south west,inner sep=0] (image) at (0,0) {\includegraphics[width=0.9\textwidth]{some_image.jpg}};
    \begin{scope}[x={(image.south east)},y={(image.north west)}]
 \end{scope}
\end{tikzpicture}

在图像上绘制。这(在环境内scope)会重新缩放 x 和 y 轴的坐标以匹配图像的边框(y = 0 是下边框,y = 1 是图像的上边框)。我想在命令中使用这些新的重新缩放的长度,例如 \node[inner sep = 0.5]

0.5 将默认为 0.5pt,而我可能希望使用给定 x 或 y 轴的长度。有没有简单的方法可以获取此长度,然后在节点命令中使用它?我正在寻找看起来像\node[inner xsep = \xlength, inner ysep = \ylength]

答案1

您可以使用

\path(1,1);\pgfgetlastxy{\xlength}{\ylength}

在范围内。

例子:

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node[anchor=south west,inner sep=0pt] (image) at (0,0) {\includegraphics[width=0.9\textwidth]{example-image}};
\begin{scope}[x={(image.south east)},y={(image.north west)}]
    \path(1,1);\pgfgetlastxy{\xlength}{\ylength}
    \node[
        inner xsep=.25*\xlength,
        inner ysep=.25*\ylength,
        draw=green,
        line width=4mm,
        fill=orange,
        opacity=.2
    ] at (.25,.25){};
    \node[
        inner xsep=.5*\xlength,
        inner ysep=.5*\ylength,
        draw=purple,
        line width=4mm,
        opacity=.2
    ] at (.5,.5){};
 \end{scope}
\end{tikzpicture}
\end{document}

结果是

在此处输入图片描述

相关内容