Bitstring-Diagramm mit LaTex

Bitstring-Diagramm mit LaTex

Ich möchte gerne Diagramme wie das Beispielbild erstellen. Ich bin mir nicht sicher, ob das mit Latex geht oder nicht. Kann mir jemand einen Tipp geben? Danke.

Beispielbild

Antwort1

Als Ausgangspunkt für Ihr Lernen (falls Sie das TikZ-Paket als Basistool auswählen) können die folgenden MWE dienen:

\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}

Das Ergebnis ist:

Bildbeschreibung hier eingeben

Kurze Erklärung des Codes: Der obige Code ist (sehr) prägnant, daher ist für das Verständnis etwas Erfahrung mit dem TikZ-Paket erforderlich. Bei seinem Entwurf habe ich Folgendes berücksichtigt:

  • Die einfache Struktur des Bildes. Es hat 27 Knoten mit gleicher Form, die eine Kette bilden. Daher chainswird die Bibliothek von TikZ für ihre Positionierung verwendet. Sie wird durch die Option definiert start chain = A going right, wobei A der Name der Kette ist. Folglich werden Knoten in der Kette A-1, A-2, ..., A-27 genannt.

  • Die Abstände zwischen den Knoten in der Kette werden durch bestimmt node distance. Der Standardwert beträgt 15 mm, daher node distance=0ptwird er auf Null gesetzt, sodass die Knoten nur durch den outer sepFormparameter getrennt sind. Damit die Begrenzungslinien richtig überlappen, wird auch dieser Abstand auf Null gesetzt (in der Definition des Knotenstils wird er X genannt).

  • In TikZ foreachsind die Schleifen für sich wiederholende Aufgaben vorgesehen. Eine solche Aufgabe ist das Setzen von Knoten in einer Kette. mit

    \forach \i in {...}\node[X] {\i};

    bilden eine Kette von Knoten (mit Stil X), deren Inhalt durch eine Liste in geschweiften Klammern bestimmt wird. Da ihre Positionen durch die Kette bestimmt werden, bestimmt die Schleife tatsächlich nur ihre Anzahl und ihren Inhalt.

  • Klammern unter und über Knoten werden mithilfe einer decorations.pathreplacingBibliothek gezeichnet. In der Definition ihrer Parameter mirrorwird der Parameter als freier Parameter ausgewählt, der später bestimmt werden kann. Da die drei von vier Klammern gespiegelt sind, wird dies als Standard festgelegt und Ausnahmen werden „lokal“ bestimmt.

  • Klammern sind so konzipiert, dass sie 1ptauf jeder Seite kürzer sind als der Abstand zwischen den Koordinaten und raise=1mmsich von den angegebenen Koordinaten nach unten (bei Gespiegelung) oder nach oben (bei Nicht-Gespiegelung) bewegen.

  • Die Kreuze über Beginn und Ende von „Kanal 2 Links“ sind auf „klassische Art“ gesetzt above=of <coordinate name>und dienen als mathematisches Symbol für die Multiplikation.

Eine ausführlichere Beschreibung der hier verwendeten TikZ-Prinzipien finden Sie im TikZ-Handbuch:

  • für Ketten: Kapitel 46 Ketten, Seite 541
  • for \foreach-Schleife: Kapitel 83 Wiederholen von Dingen: Die Foreach-Anweisung, Seite 901
  • für Klammern: Unterabschnitt 48.3 Pfad ersetzende Dekorationen, Seite 581

Antwort2

Ein Kurzcode mit 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} 

Bildbeschreibung hier eingeben

verwandte Informationen