为什么移位坐标对于 TiKZ 拟合库无效?

为什么移位坐标对于 TiKZ 拟合库无效?

我尝试使用类似于 的东西([shift={(1,2)}]a.center)作为列表中拟合节点的坐标,但它不起作用。使用以这种方式定义的辅助坐标,它可以工作。使用let表达式(来自calc库)定义的辅助坐标,它也可以工作。矩形交叉坐标(|--|)可以与fit节点一起使用。你知道为什么不能使用吗{x|y}shift

\documentclass[tikz, border=2mm]{standalone}
\usetikzlibrary{fit,calc}

\begin{document}
\begin{tikzpicture}
\node[draw] (a) {A};

\node[fit=(a),draw=red] {};

\coordinate (aux1) at ([shift={(-3mm,-1mm)}]a.south west);

\path let  \p2=([shift={(3mm,1mm)}]a.north east) in node [fit=(\p2)(aux1),draw=blue] {};

% Doesn't work
%\node[fit=([shift={(5mm,2mm)}]a.north east) ([shift={(-5mm,-2mm)}]a.south west), draw=green] {};

\end{tikzpicture}
\end{document}

答案1

参数解析在括号和花括号之间容易混淆。因此,最简单的方法是将参数放在fit花括号中,以便它能在第一遍中存活下来。

\documentclass[tikz]{standalone}
\usetikzlibrary{fit,calc}

\begin{document}
\begin{tikzpicture}
\node[draw] (a) {A};
\node[fit=(a),draw=red] {};
\coordinate (aux1) at ([shift={(-3mm,-1mm)}]a.south west);
\path let  \p2=([shift={(3mm,1mm)}]a.north east) in node [fit=(\p2)(aux1),draw=blue] {};
\node[fit={([shift={(5mm,2mm)}]a.north east) ([shift={(-5mm,-2mm)}]a.south west)}, draw=green]{};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容