Responder1
Para ponto de partida em seu aprendizado (caso você selecione o pacote TikZ como ferramenta básica) pode servir o seguinte 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}
que dá:
Breve explicação do código: O código acima é (muito) conciso, então para isso é necessário ter alguma experiência com o pacote TikZ. No seu design considerei o seguinte:
A estrutura simples da imagem. Possui 27 nós com formatos iguais que formam uma cadeia. Portanto a
chains
biblioteca do TikZ é utilizada para seu posicionamento. É definido pela opçãostart chain = A going right
, onde A é o nome da cadeia. Conseqüentemente, os nós da cadeia são denominados A-1, A-2, ..., A-27.As distâncias entre os nós da cadeia são determinadas por
node distance
. Seu valor padrão é 15 mm, portantonode distance=0pt
está definido como zero, para que os nós sejam separados apenas peloouter sep
parâmetro de formas. Para que as linhas de borda estejam devidamente sobrepostas, esta distância também é definida como zero (na definição do estilo dos nós, ela é chamada de X)No TikZ, os
foreach
loops destinam-se a realizar tarefas repetidas. Essa tarefa é colocar nós em cadeia. com\forach \i in {...}\node[X] {\i};
são formadas uma cadeia de nós (com estilo X), com conteúdo determinado por lista entre chaves. Como suas posições são determinadas por cadeia, o loop na verdade determina apenas seu número e conteúdo.
Os colchetes abaixo e acima dos nós são desenhados pelo uso da
decorations.pathreplacing
biblioteca. Nela definição entre seus parâmetros o parâmetromirror
é selecionado como parâmetro livre que pode ser determinado posteriormente. Como as três das quatro chaves são espelhadas, isso é definido como padrão e a exceção é determinada "localmente".Os colchetes são projetados de forma que sejam
1pt
mais curtos em cada lado do que a distância entre as coordenadas e seraise=1mm
movam para baixo (quando são espelhados) ou para cima (quando não são espelhados) de determinadas coordenadas.As cruzes acima do início e do fim dos "links do canal 2" são definidas no "modo clássico"
above=of <coordinate name>
e para isso é usado o símbolo matemático para multiplicação.
Uma descrição mais profunda do princípio do TikZ que é usado aqui está no manual do TikZ:
- para correntes: capítulo 46 Correntes, página 541
- for
\foreach
loop: capítulo 83 Repetindo coisas: a declaração Foreach, página 901 - para colchetes: subseção 48.3 Decorações de substituição de caminho, página 581
Responder2
Um código curto com 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}