我尝试使用类似于 的东西([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}