我正在使用现有tikz
示例创建流程图各种类型的应用程序和库在软件项目中如何相互通信。例如,下图描述了两个应用程序(即对等应用程序)直接相互通信:
我想要做的tikz
是创建一种新类型的元素,它由一个正方形元素和它里面的另一个正方形组成。我会用它来描述与上面类似的内容,但它意味着“进程 A”需要使用“库 B_API”来与“进程 B”对话。
我该如何实现这个目标呢tikz
?
谢谢。
答案1
\documentclass[tikz, border=2mm]{standalone}
\usetikzlibrary{shapes,arrows,calc}
\tikzstyle{application} = [rectangle, fill=blue!30, text centered, text width=3cm, minimum width=4cm, minimum height=4cm]
\tikzstyle{library} = [rectangle, fill=green!50, text centered, minimum width=3cm, minimum height=2cm, text width=2cm]
\begin{document}
\begin{tikzpicture}[node distance = 2cm, auto]
\node[application, label={[yshift=-14mm]Process A}] (AppA) at (0,0) {};
\node[application] (AppB) at (5,0) {Process B};
\node[library] (LibB) at (0,-.5) {Library B\_API};
\draw[<->,>=latex] (LibB.east) -- ($(LibB.east)+(1,0)$) -- ($(AppB.west)-(.5,0)$) -- (AppB.west);
\end{tikzpicture}
\end{document}
答案2
这是一次很好的练习:一个带有内部标签的空节点。
\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[external/.style={fill=blue!40, minimum size=3cm},
internal/.style={fill=green!30, text width=1.5cm,
minimum height=1.5cm, minimum width=2cm, align=center}]
\node[external, label={[internal, label=above:Process A, name=api,
yshift=.5cm, anchor=south]270:{Library\\ B\_API}}] (A) {};
\node[external, right= of A] (B) {Process B};
\draw[<->] (api.east)--++(0:1cm)|- (B);
\end{tikzpicture}
\end{document}