\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,fit}
\begin{document}
\begin{tikzpicture}
\node[name=a] {longa};
\node[name=b, below=of a] {longb};
\node[name=c, below=of b] {longc};
\node[name=talld, right=of c, fit=(a)(c), draw] {talld};
\end{tikzpicture}
\end{document}
现在talld
与最左边的文本重叠。如果我删除它,fit=(a)(c)
它会适当移动talld
。我如何进行fit
相对定位?
答案1
编辑:添加手动文本对齐调整
您说正确放置节点的代码会产生以下结果:
但是您希望右节点与其他三个节点的总和一样大。
由于 tikz 按照读取的顺序处理指令,因此只需通过首先将节点安装在其他三个节点周围来反转您所编写的指令:
写fit=(a)(c), right=of c,
而不是 right=of c, fit=(a)(c)
就像longb
在中心一样,将它放在右边:
fit=(a)(c), right=of b
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,fit}
\begin{document}
\begin{tikzpicture}
\node[name=a,draw] {longa};
\node[name=b,draw, below=of a] {longb};
\node[name=c,draw, below=of b] {longc};
\node[name=talld, fit=(a)(c), right=of b,draw,text height=55pt,inner sep=0pt,outer sep=0pt] {talgd};
\end{tikzpicture}
\end{document}
我已经追踪了每个节点以确保一切都按照你想要的方式完成。