Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- documentclass[border=5mm]{standalone}
- usepackage{tikz}
- usetikzlibrary{matrix}
- usetikzlibrary{positioning}
- newcommand{listbcs}[4]{
- tikzset{
- barycentric setup/.code={foreach X [count=Y] in {#1}
- {ifnumY=1
- xdefbaryarg{X=1}
- else
- xdefbaryarg{baryarg,X=1}
- fi}},
- barycentric list/.style={barycentric setup={#1},insert path={%
- (barycentric cs:baryarg)}}
- }
- path[barycentric list={#1}] node[anchor=center,align=flush center,#2] (#3) {#4};
- }
- newcommand{multilinks}[4]{%
- begin{scope}[x=1em,y=1em]
- listbcs{#2}{}{bcright}{}
- newdimenxright
- newdimenybc
- newdimendump
- path(bcright);
- pgfgetlastxy{dump}{ybc}
- path(-1,0);
- newdimenxtemp
- pgfgetlastxy{xtemp}{dump}
- foreach ver in {#2}{
- newdimenxnow
- path(ver.west);
- pgfgetlastxy{xnow}{dump}
- ifdimxnow<xtemp
- path(ver.west);
- pgfgetlastxy{xtemp}{dump}
- }
- coordinate (midright) at ({xtemp-#3 em},ybc);
- coordinate (midleft) at ({xtemp-#3 em-#4 em},ybc);
- foreach i in {#1} {
- foreach j in {#2}{
- newdimenystart
- path (i.east);
- pgfgetlastxy{dump}{ystart}
- newdimenymid
- path (midleft);
- path (midright);
- pgfgetlastxy{dump}{ymid}
- newdimenyend
- path (j.west);
- pgfgetlastxy{dump}{yend}
- ifdimystart=ymidrelax%
- ifdimymid=yendrelax%
- draw[->] (i.east)--(j.west);%
- else%
- draw[->,rounded corners] (i.east)--(midright)--(j.west);%
- fi%
- else%
- ifdimymid=yendrelax%
- draw[->] (i.east)--(midleft)--(j.west);%
- else%
- draw[->,rounded corners] (i.east)--(midleft)--(midright)--(j.west);%
- fi%
- fi%
- }
- }
- end{scope}
- }
- begin{document}
- tikzset{
- basic/.style={
- draw,
- rounded corners=2pt,
- thick,
- text width=8em,
- align=flush center,
- node distance=2em
- }
- }
- begin{tikzpicture}
- matrix[row sep=2em, column sep=4em, every node/.style={basic}] {
- node(a){text}; & node(c){text}; \
- node(b){text}; & node(d){text}; \
- node(e){text}; & node(f){text}; \
- };
- multilinks{b,e}{d,f}{1}{1}
- end{tikzpicture}
- end{document}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement