Respuesta1
Como punto de partida en tu aprendizaje (en caso de que como herramienta básica selecciones el paquete TikZ) te puede servir el siguiente MWE:
\documentclass[tikz, border=3mm]{standalone}
\usetikzlibrary{chains,decorations.pathreplacing}
\begin{document}
\begin{tikzpicture}[
node distance=0pt,
start chain = A going right,
X/.style = {rectangle, draw,% styles of nodes in string (chain)
minimum width=2ex, minimum height=3ex,
outer sep=0pt, on chain},
B/.style = {decorate,
decoration={brace, amplitude=5pt,
pre=moveto,pre length=1pt,post=moveto,post length=1pt,
raise=1mm,
#1}, % for mirroring of brace, if necessary
thick},
B/.default=mirror, % by default braces are mirrored
]
\foreach \i in {0,1,1,0,0,0,1,0,0,
0,1,0,1,0,0,0,1,0,
0,0,1,1,0,0,1,0,0}% <-- content of nodes
\node[X] {\i};
\draw[B] ( A-1.south west) -- node[below=2mm] {Channel 1 Links} ( A-9.south east);
\draw[B] (A-10.south west) -- node[below=2mm] {Channel 2 Links} (A-18.south east);
\draw[B] (A-19.south west) -- node[below=2mm] {Channel 3 Links} (A-27.south east);
\node (B1) [inner sep=1pt,above=of A-10.north west] {$\times$};
\node (B2) [inner sep=1pt,above=of A-19.north west] {$\times$};
\draw[B=](B1.north) -- node[above=2mm] {Crossover Points}(B2.north);
\end{tikzpicture}
\end{document}
lo que da:
Breve explicación del código: El código anterior es (muy) conciso, por lo que es necesario tener algo de experiencia con el paquete TikZ. En su diseño consideré lo siguiente:
La estructura simple de la imagen. Tiene 27 nodos de formas iguales que forman una cadena. Por eso
chains
se utiliza la biblioteca de TikZ para su posicionamiento. Está definido por la opciónstart chain = A going right
, donde A es el nombre de la cadena. En consecuencia, los nodos de la cadena se denominan A-1, A-2, ..., A-27.Las distancias entre nodos en la cadena están determinadas por
node distance
. Su valor predeterminado es 15 mm, por lo quenode distance=0pt
se establece en cero, por lo que los nodos se separan solo por elouter sep
parámetro de las formas. Que las líneas de borde se superpongan correctamente, además esta distancia se establece en cero (en la definición del estilo de los nodos, se denomina X)En TikZ, los
foreach
bucles están destinados a realizar tareas repetitivas. Esta tarea consiste en establecer nodos en la cadena. con\forach \i in {...}\node[X] {\i};
Se forman una cadena de nodos (con estilo X), con contenido determinado por lista entre llaves. Dado que sus posiciones están determinadas por la cadena, el bucle en realidad solo determina su número y contenido.
Las llaves debajo y encima de los nodos se dibujan mediante el uso de
decorations.pathreplacing
la biblioteca. En su definición, entre sus parámetros, el parámetromirror
se selecciona como parámetro libre que se puede determinar más adelante. Dado que las tres de las cuatro llaves están reflejadas, esto se establece como predeterminado y la excepción se determina "localmente".Los tirantes están diseñados de manera que sean
1pt
más cortos en cada lado que la distancia entre las coordenadas, yraise=1mm
se muevan hacia abajo (cuando está reflejado) o hacia arriba (cuando no está reflejado) de las coordenadas dadas.Las cruces de arriba al comienzo y al final de los "enlaces del canal 2" están configuradas en la "forma clásica" con
above=of <coordinate name>
y para ello se utiliza el símbolo matemático para multiplicar.
Una descripción más profunda del principio de TikZ que se utiliza aquí se encuentra en el manual de TikZ:
- para cadenas: capítulo 46 Cadenas, página 541
- bucle for
\foreach
: capítulo 83 Repetir cosas: la declaración Foreach, página 901 - para tirantes: subsección 48.3 Camino que reemplaza decoraciones, página 581
Respuesta2
Un código corto con pstricks
:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{mathtools}
\usepackage{pstricks-add, multido}
\usepackage{auto-pst-pdf}
\begin{document}
\sffamily
\begin{pspicture}
\psset{dimen=middle, linewidth=0.6pt, braceWidthOuter=4pt, braceWidthInner=4pt, braceWidth=0.8pt, labelsep =-2ex}
\multido{\i = 0 + 1, \n=0+0.5}{27}{\fnode[framesize=0.5](\n, 0){A\i}}%
\rmultiput{$0$}(A0)(A3)(A4)(A5)(A7)(A8)(A9)(A11)(A13)(A14)(A15)(A17)(A18)(A19)(A22)(A23)(A25)(A26)
\rmultiput{$1$}(A1)(A2)(A6)(A10)(A12)(A16)(A20)(A21)(A24)
\psset{rot=90, nodesepB=2ex}
\multido{\ia=0 + 9, \ib=8 + 9}{3}{\pnode[-0.15, -0.35](A\ia){B\ia}\pnode[0.15, -0.35](A\ib){B\ib}\psbrace(B\ia)(B\ib){\clap{Channel\,1 Links}}}
\multido{\i=8 + 9}{2}{\pnode[0.25,0.6](A\i){C\i}\uput{1pt}[d](C\i){$\times$}}
\psbrace[rot=-90, nodesepB=-0.5ex](C17)(C8){\clap{Crossover Points}}
\end{pspicture}
\end{document}