![Tikz 如何绘制一条线来分割矩形](https://linux22.com/image/259065/Tikz%20%E5%A6%82%E4%BD%95%E7%BB%98%E5%88%B6%E4%B8%80%E6%9D%A1%E7%BA%BF%E6%9D%A5%E5%88%86%E5%89%B2%E7%9F%A9%E5%BD%A2.png)
我正在绘制 ER 图并想显示表之间的关系。
我设法创建了表格:
\documentclass{article}
\usepackage[cm]{fullpage}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{shapes,positioning}
\tikzset{
outernode/.style={draw,ultra thick,inner sep=0},
innernode/.style={inner sep=.3333em,draw,rectangle split}
}
\newcommand\innernode[2]{\tikz\node[innernode,rectangle split parts=#1]{#2};}
\begin{document}
\begin{tikzpicture}
\node (1) [outernode]
{ \innernode 2 {sco\_groups \nodepart{second} id} } ;
\node (2) [below= 1cm of 1.south east, anchor=north west, outernode]
{ \innernode 3 {sco\_index \nodepart{second} tid \nodepart{third} sco\_id} } ;
\end{tikzpicture}
\end{document}
但不知道如何创建线,将它们合并起来(我用红色标记)。
答案1
更新:
我认为\tikz \node
您不应该使用(早期的解决方案——见下文)。至少我无法弄清楚如何使用该方法访问特定内容nodepart
。因此这里有三个更新:
- 根据 Jake 的建议,使用
(1.south) |- (2.two west)
绘制红色线条更简单。现在要连接到 ,sco_id
您只需通过 访问此节点的一侧即可(2.three west)
。 - TeX
\innernode
宏已被淘汰。 - 这
innernode
风格已增强以接受附加参数,从而允许您指定内部节点的数量。
现在您可以轻松访问nodepart
您想要的任何内容:
您可以通过以下方式连接它们(1.south) -- ($(1.south |- 2.west)$) -- (2.west)
:
代码:已更新
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes, positioning}
\tikzset{
outernode/.style={draw,ultra thick, inner sep=0},
innernode/.style={inner sep=.3333em, draw, rectangle split, rectangle split parts=#1}
}
\begin{document}
\begin{tikzpicture}
\node [outernode] (1)
[innernode=2] { sco\_groups \nodepart{second} id} ;
\node[below=1cm of 1.south east, anchor=north west, outernode] (2)
[innernode=3] {
sco\_index
\nodepart{second} tid
\nodepart{third} sco\_id
};
\draw [blue, ultra thick] (1.-40) |- (2.one west);
\draw [red, ultra thick]
(1.south) node [below left, black] {$1$} |-
(2.two west) node [above left, black] {$n$};
\draw [olive, ultra thick] (1.-140) |- (2.three west);
\end{tikzpicture}
\end{document}
代碼:原始
\documentclass{article}
\usepackage[cm]{fullpage}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{shapes,positioning}
\usetikzlibrary{calc}
\tikzset{
outernode/.style={draw,ultra thick,inner sep=0},
innernode/.style={inner sep=.3333em,draw,rectangle split}
}
\newcommand\innernode[2]{\tikz\node[innernode,rectangle split parts=#1]{#2};}
\begin{document}
\begin{tikzpicture}
\node (1) [outernode]
{ \innernode 2 {sco\_groups \nodepart{second} id} } ;
\node (2) [below= 1cm of 1.south east, anchor=north west, outernode]
{ \innernode 3 {sco\_index \nodepart{second} tid \nodepart{third} sco\_id} } ;
\draw [red, ultra thick]
(1.south) node [below left, black] {$1$} --
($(1.south |- 2.west)$) --
(2.west) node [above left, black] {$n$};
\end{tikzpicture}
\end{document}