创建一个与另一个适合的矩形具有相同宽度的矩形?

创建一个与另一个适合的矩形具有相同宽度的矩形?

标题说明了一切。我有几个节点,并创建了一个合适的矩形。现在,我想在它的底部创建另一个矩形,这样看起来就像一个大矩形被分成了两个。

答案1

是的,也可以使用带有矩形的多部分节点。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes.multipart} 
\begin{document}

\begin{tikzpicture}[every node/.style={draw, anchor=text, rectangle split, rectangle split parts=2}]
\node {Some text \nodepart{second} more }; 
\end{tikzpicture}
\end{document} 

在此处输入图片描述

答案2

您可以按如下方式计算第一个矩形节点的大小,并使用它来绘制第二个矩形节点。一个问题是outer sep第一个节点的 ,通常是.5\pgflinewidth,即把锚点放在节点边界的外边缘,而不是中间。这必须进行补偿,如果节点之间的线宽发生变化,则容易出错。

请注意,也可以使用多部分节点。有一个用于圆形节点,但我不确定是否适用于矩形节点。

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}
\begin{tikzpicture}
   \node [draw] (A) {Some text};
   \path let \p1 = (A.south west), \p2 = (A.north east) in
    node [draw,minimum width=\x2-\x1-\pgflinewidth,minimum height=\y2-\y1-\pgflinewidth,below right]
        at ([yshift={\pgflinewidth}]A.south west) {more};
\end{tikzpicture}
\end{document}

结果

答案3

假设您已经在使用该fit库,那么您只需使用它来获取新的矩形即可。如果您愿意outer sep=0pt在原始拟合节点上设置,那么您可以将新矩形拟合到旧矩形加上一些随机坐标以设置高度,或拟合到旧矩形的南锚点。如果您不愿意在原始节点上设置outer sep,那么只需将新节点拟合到与原始节点相同的节点加上一个额外的节点以使其更大。在下面,我将矩形设置为不同的颜色,因此可以清楚地看到实际绘制的内容,但如果它们是相同的颜色,您将不会注意到这一点。

\documentclass{article}
% \url{http://tex.stackexchange.com/q/20998/86}
\usepackage{tikz}
\usetikzlibrary{fit}

\begin{document}
\begin{tikzpicture}[inner node/.style={draw,dashed,blue,text=black},outer node/.style={draw,ultra thick}]
\node[inner node] (a) at (0,0) {a};
\node[inner node] (b) at (2,3) {b};
\node[inner node] (c) at (3,2) {c};
\node[fit=(a) (b) (c),outer node,outer sep=0pt,purple] (d) {};
\path (d.south) ++(0,-5) coordinate (e) {};
\node[pink,outer node,inner sep=0pt,fit=(e) (d.south east) (d.south west)] {};
\begin{scope}[xshift=5cm]
\node[inner node] (a) at (0,0) {a};
\node[inner node] (b) at (2,3) {b};
\node[inner node] (c) at (3,2) {c};
\node[fit=(a) (b) (c),outer node,outer sep=0pt,purple] (d) {};
\path (d.south) ++(0,-5) coordinate (e) {};
\node[pink,outer node,inner sep=0pt,fit=(e) (d)] {};
\begin{scope}[xshift=5cm]
\node[inner node] (a) at (0,0) {a};
\node[inner node] (b) at (2,3) {b};
\node[inner node] (c) at (3,2) {c};
\node[fit=(a) (b) (c),outer node,purple] (d) {};
\path (d.south) ++(0,-5) coordinate (e) {};
\node[pink,outer node,fit=(a) (b) (c) (e)] {};
\end{scope}
\end{scope}
\end{tikzpicture}
\end{document}

结果:

拟合矩形

相关内容