Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.68 KB | None | 0 0
  1. documentclass[border=5mm]{standalone}
  2.  
  3. usepackage{tikz}
  4.  
  5. usetikzlibrary{matrix}
  6. usetikzlibrary{positioning}
  7.  
  8. newcommand{listbcs}[4]{
  9. tikzset{
  10. barycentric setup/.code={foreach X [count=Y] in {#1}
  11. {ifnumY=1
  12. xdefbaryarg{X=1}
  13. else
  14. xdefbaryarg{baryarg,X=1}
  15. fi}},
  16. barycentric list/.style={barycentric setup={#1},insert path={%
  17. (barycentric cs:baryarg)}}
  18. }
  19. path[barycentric list={#1}] node[anchor=center,align=flush center,#2] (#3) {#4};
  20. }
  21.  
  22. newcommand{multilinks}[4]{%
  23. begin{scope}[x=1em,y=1em]
  24. listbcs{#2}{}{bcright}{}
  25. newdimenxright
  26. newdimenybc
  27. newdimendump
  28. path(bcright);
  29. pgfgetlastxy{dump}{ybc}
  30. path(-1,0);
  31. newdimenxtemp
  32. pgfgetlastxy{xtemp}{dump}
  33. foreach ver in {#2}{
  34. newdimenxnow
  35. path(ver.west);
  36. pgfgetlastxy{xnow}{dump}
  37. ifdimxnow<xtemp
  38. path(ver.west);
  39. pgfgetlastxy{xtemp}{dump}
  40. }
  41. coordinate (midright) at ({xtemp-#3 em},ybc);
  42. coordinate (midleft) at ({xtemp-#3 em-#4 em},ybc);
  43. foreach i in {#1} {
  44. foreach j in {#2}{
  45. newdimenystart
  46. path (i.east);
  47. pgfgetlastxy{dump}{ystart}
  48. newdimenymid
  49. path (midleft);
  50. path (midright);
  51. pgfgetlastxy{dump}{ymid}
  52. newdimenyend
  53. path (j.west);
  54. pgfgetlastxy{dump}{yend}
  55. ifdimystart=ymidrelax%
  56. ifdimymid=yendrelax%
  57. draw[->] (i.east)--(j.west);%
  58. else%
  59. draw[->,rounded corners] (i.east)--(midright)--(j.west);%
  60. fi%
  61. else%
  62. ifdimymid=yendrelax%
  63. draw[->] (i.east)--(midleft)--(j.west);%
  64. else%
  65. draw[->,rounded corners] (i.east)--(midleft)--(midright)--(j.west);%
  66. fi%
  67. fi%
  68. }
  69. }
  70. end{scope}
  71. }
  72.  
  73. begin{document}
  74. tikzset{
  75. basic/.style={
  76. draw,
  77. rounded corners=2pt,
  78. thick,
  79. text width=8em,
  80. align=flush center,
  81. node distance=2em
  82. }
  83. }
  84. begin{tikzpicture}
  85. matrix[row sep=2em, column sep=4em, every node/.style={basic}] {
  86. node(a){text}; & node(c){text}; \
  87. node(b){text}; & node(d){text}; \
  88. node(e){text}; & node(f){text}; \
  89. };
  90. multilinks{b,e}{d,f}{1}{1}
  91. end{tikzpicture}
  92. end{document}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement