
Ich versuche, einen mehrteiligen Knoten zu erstellen, um ein Byte darzustellen
Ich wünschte, ich könnte schreiben
\Byte{0 1 0 0 1 1 0 0}
oder \Byte {0, 1, 0, 0, 1, 1, 0, 0}
erhalten
\documentclass[12pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.multipart}
\newcommand{\Byte}{
\node [rectangle split,rectangle split parts=8, rectangle split horizontal,draw ] at (2,2)
{\nodepart{one}0\nodepart{two}1\nodepart{three}0\nodepart{four}0\nodepart{five}1\nodepart{six}1\nodepart{seven}0\nodepart{eight}0};
}
\begin{document}
\begin{tikzpicture}
\Byte
\end{tikzpicture}
\end{document}
Antwort1
Hier ist eine Möglichkeit, dies mit dem zweiten Ihrer gewünschten Aufrufe zu tun, wobei wir einen verwenden, \foreach
um den Knoteninhalt zu erstellen und so den Knoten vorzubereiten, bevor wir ihn aufrufen.
\documentclass[12pt]{standalone}
%\url{http://tex.stackexchange.com/q/67923/86}
\usepackage{etoolbox}
\usepackage{tikz}
\usetikzlibrary{shapes.multipart}
\def\numtext#1{%
\ifcase#1\or one\or two\or three\or four\or five\or six\or seven\or eight\or nine\or ten\or
eleven\or twelve\or thirteen\or fourteen\or fifteen\or sixteen\or seventeen\or eighteen\or nineteen\or twenty\or Lots\fi}
\newcommand{\Byte}[1]{
\def\nodecontents{}%
\foreach[count=\l] \k in {#1} {
\xappto{\nodecontents}{\noexpand\nodepart{\numtext{\l}}\k}
}
\node [rectangle split,rectangle split parts=8, rectangle split horizontal,draw ] at (2,2)
{\nodecontents};
}
\begin{document}
\begin{tikzpicture}
\Byte {0, 1, 0, 0, 1, 1, 0, 0}
\end{tikzpicture}
\end{document}
Ergebnis:
Antwort2
Mit \def
können Sie Dinge schreiben wie \Byte(0,1,0,0,1,0,1,1)
:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes.multipart}
\def\Byte(#1,#2,#3,#4,#5,#6,#7,#8){
\node [rectangle split,rectangle split parts=8, rectangle split horizontal,draw ] at (2,2)
{\nodepart{one}#1\nodepart{two}#2\nodepart{three}#3\nodepart{four}#4\nodepart{five}#5\nodepart{six}#6\nodepart{seven}#7\nodepart{eight}#8};
}
\begin{document}
\begin{tikzpicture}
\Byte(0,1,0,0,1,0,1,1)
\end{tikzpicture}
\end{document}