Block-Code graphisch visualisieren.

Tabellen und Grafiken erstellen und anordnen


Vertigo
Forum-Anfänger
Forum-Anfänger
Beiträge: 10
Registriert: Di 17. Jan 2017, 22:19

Block-Code graphisch visualisieren.

Beitrag von Vertigo »

Hallo!

Ich möchte einen Block-Code grafisch darstellen und die einzelnen Zellen mit Buchstaben oder Zahlen befüllen können. Ich habe jetzt erst mal versucht mit Hilfslinien einen Block-Code darzustellen und mit einer roten Linie Informationsbits(links) und Prüfbits rechts getrennt. Ich würde jetzt aber gerne in die Zellen reinschreiben können. Ich denke mal mit den Hilfslinien klappt das so nicht. Hat jemand eine Idee, bzw. einen konkreten Link, wie ich das mache. In verschiedenen pdfs/Tutorials habe ich es nicht ganz gecheckt, wie ich das umsetzen kann.
\begin{tikzpicture}
\draw[help lines](0 ,0) grid (11,1);
\draw[red](7,0) -- (7 ,1) ;
\end{tikzpicture}
Dateianhänge
block.png
block.png (5.35 KiB) 1999 mal betrachtet

Vertigo
Forum-Anfänger
Forum-Anfänger
Beiträge: 10
Registriert: Di 17. Jan 2017, 22:19

Beitrag von Vertigo »

Im Anhang ist ein Bild, wie ich es meine.
Dateianhänge
Bildschirmfoto 2017-01-17 um 23.32.06.png
Bildschirmfoto 2017-01-17 um 23.32.06.png (10.42 KiB) 1986 mal betrachtet

markusv
Forum-Meister
Forum-Meister
Beiträge: 947
Registriert: Do 3. Sep 2015, 17:20
Wohnort: Leipzig

Beitrag von markusv »

Sicherlich nicht die eleganteste Variante und auch nicht vollständig, aber als Ansatz kann ich folgendes anbieten:
\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}
\tikzstyle{infobit}=[draw, fill=gray!40, minimum size=2em]
\tikzstyle{pruefbit}=[draw, fill=white, minimum size=2em]

\begin{tikzpicture}[node distance=2em]
    \node [infobit] (i0) {$i_0$};
    \node [infobit] (i1) [right of=i0] {$i_1$};
    \node [infobit] (i2) [right of=i1] {$i_2$};
    \node [infobit] (i3) [right of=i2] {$i_3$};
    \node [pruefbit] (c0) [right of=i3] {$c_0$};
    \node [pruefbit] (c1) [right of=c0] {$c_1$};
    \node [pruefbit] (c2) [right of=c1] {$c_2$};
\end{tikzpicture}

\end{document}
Wäre Microsoft Word für das Schreiben von Büchern entwickelt worden,
würde es Microsoft Book heißen.

Unkomplizierte und schnelle LaTeX-Hilfe, bspw. Erstellung von Vorlagen und Bewerbungen:
Help-LaTeX@web.de

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Dein Beispiel ist nach meiner Meinung durchaus elegant. Ich habe lediglich noch ein paar Änderungen vorgenommen.
\documentclass[tikz, border=5pt]{standalone}

\usetikzlibrary{positioning}

\begin{document}
\begin{tikzpicture}[
	node distance=2em,
	nodes = {draw, minimum size=2em},
   infobit/.style = {fill=gray!40}
]
   \node [infobit] (i0) {$i_0$};
   \node [infobit] (i1) [right of=i0] {$i_1$};
   \node [infobit] (i2) [right of=i1] {$i_2$};
   \node [infobit] (i3) [right of=i2] {$i_3$};
   \node (c0) [right of=i3] {$c_0$};
   \node (c1) [right of=c0] {$c_1$};
   \node (c2) [right of=c1] {$c_2$};
\end{tikzpicture}
\end{document}
Ich dachte beim Lesen des Wunsches von Vertigo jedoch eher an eine Matrix. Leider gibt es bei meinem Versuch dieser Variante eine senkrechte Verschiebung der Knoten für die Prüfbits.

Mein Versuch mit einer Matrix:
\documentclass[tikz, border=5pt]{standalone}

\usetikzlibrary{matrix, positioning}

\begin{document}
\begin{tikzpicture}
\matrix [
	matrix of math nodes,
   nodes={
		draw,
		minimum size=1cm
	},
	row sep=-\pgflinewidth,
	column sep=-\pgflinewidth, 
	infobit/.style = {fill=lightgray}
] (m) {
	|[infobit]| i_0 & |[infobit]| i_1 & |[infobit]| i_2 & |[infobit]| i_3 & c_0 & c_1 & c_2\\
};

\draw [dashed] ([yshift=5mm]m-1-4.north east) to ([yshift=-7mm]m-1-4.south east);
\node [below=2mm of m-1-2, xshift=5mm] (infobit) {Informationsbits};
\node [below=2mm of m-1-6] (pruefbit) {Prüfbits};
\end{tikzpicture}
\end{document}

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Bartman hat geschrieben:Ich dachte beim Lesen des Wunsches von Vertigo jedoch eher an eine Matrix. Leider gibt es bei meinem Versuch dieser Variante eine senkrechte Verschiebung der Knoten für die Prüfbits.
Die einzelnen Nodes der Matrix werden horizontal mit ihrer Grundlinie aneinander ausgerichtet. Da c und i unterschiedlich hoch sind und zentriert in innerhalb ihres Nodes, sind die Ränder der Boxen nicht auf gleicher Höhe. Du kannst das ändern, in dem Du für nodes zusätzlich anchor=center vorgibst. Alternativ kann man auch eine feste Höhe und Tiefe des Textes vorgeben. Dann sind die Grundlinien weiterhin ausgerichtet, aber auch die Ränder der Nodes auf gleicher Höhe:

\documentclass[tikz, border=5pt]{standalone}
\usepackage[utf8]{inputenc}
\usetikzlibrary{matrix}

\begin{document}
\begin{tikzpicture}
\matrix [
   matrix of math nodes,
   nodes={
      draw,
      minimum size=1cm,
      text height=\ht\strutbox,% <- ergänzt
      text depth=\dp\strutbox% <- ergänzt
   },
   row sep=-\pgflinewidth,
   column sep=-\pgflinewidth, 
   infobit/.style = {fill=lightgray}
] (m) {
   |[infobit]| i_0 & |[infobit]| i_1 & |[infobit]| i_2 & |[infobit]| i_3 & c_0 & c_1 & c_2\\
};

\draw [dash dot,dash phase=2.5pt] 
  ([yshift=5mm,xshift=-.5\pgflinewidth]m-1-4.north east)
  --
  ([yshift=-7mm,xshift=-.5\pgflinewidth]m-1-4.south east)
;
\node (infobit) at ([yshift=-2mm]m-1-2.south east) {Informationsbits};
\node (pruefbit) at ([yshift=-2mm]m-1-6.south) {Prüfbits};
\end{tikzpicture}
\end{document}

Vertigo
Forum-Anfänger
Forum-Anfänger
Beiträge: 10
Registriert: Di 17. Jan 2017, 22:19

Beitrag von Vertigo »

:D Großartig! Das hat mir sehr geholfen! Vielen vielen Dank! :D

Antworten