Guten Morgen allerseits. Dies ist tatsächlich das erste Mal, dass ich hier schreibe, also danke an alle, die antworten. Ich schreibe meine Bachelorarbeit und stecke derzeit beim Zeichnen einer Turingmaschine fest. Was ich gerne machen würde, ist so etwas wie das hier:
Außer dass ich die linke Seite des ersten Knotens (nur die linke Seite, nicht alle 4 Seiten) sehr dick haben möchte. Was ich bisher gemacht habe, ist Folgendes:
\begin{tikzpicture}
\edef\turingtapesize{0.7cm}
\tikzstyle{tape}=[draw,minimum size=\turingtapesize]
\tikzset{
leftmostnode/.style={
draw,minimum size=\turingtapesize,
append after command={% <= for the leftside line of the leftward node
\pgfextra{%
\begin{pgfinterruptpath}
\begin{pgfonlayer}[foreground]
\draw[verythick] (\tikzlastnode.south west)--(\tikzlastnode.north west);
\end{pgfonlayer}
\end{pgfinterruptpath}
}
}
}
}
% Drawing the tape itself
\begin{scope}[start chain=0 going right,node distance=0mm]
\node[on chain=0,tape] (b) {0};
\node[left=of b,leftmostnode](a){1};
\node[on chain=0,tape] (c) {1};
\node[on chain=0,tape] (d) {0};
\node[on chain=0,tape] (e) {1};
\node[on chain=0,tape] (f) {0};
\node[on chain=0,tape] (g) {0};
\node[on chain=0,tape] (h) {1};
\node[on chain=0,tape] (i) {1};
\node[on chain=0,tape] (l) {$\sqcup$};
\node[on chain=0,tape] (l) {$\sqcup$};
\node[on chain=0,tape] (l) {$\sqcup$};
\end{scope}
\end{tikzpicture}
Aber ich erhalte eine Fehlermeldung:
Entschuldigung, die angeforderte Ebene '[' konnte nicht gefunden werden. Vielleicht haben Sie sie falsch geschrieben?
\nodeleft=von b,linkster Knoten {1};
Darf ich Sie auch fragen, wie man dieses „Kettensägen“-Ende (gibt es diesen Begriff überhaupt?) des Bandes hinbekommt? Danke, Prost ;) Quelle:1 2
EDIT Wie von moospit vorgeschlagen, habe ich das „Dickenproblem“ umgangen. Jetzt muss ich nur noch diese spezielle gezackte Linie erstellen ;)
EDIT2 Ich habe gerade deine Antwort gesehen. Ich habe es etwas anders gelöst. Ich poste unten den Code des gesamten Tikz-Bildes ;)
\begin{tikzpicture}
\edef\turingtapesize{0.7cm}
\tikzstyle{tape}=[draw,minimum size=\turingtapesize]
% Drawing the tape itself
\begin{scope}[start chain=0 going right,node distance=0mm]
\node[on chain=0,tape] (a) {1} ;
\node[on chain=0,tape] (b) {0} ;
\node[on chain=0,tape] (c) {1} ;
\node[on chain=0,tape] (d) {0} ;
\node[on chain=0,tape] (e) {1} ;
\node[on chain=0,tape] (f) {0} ;
\node[on chain=0,tape] (g) {0} ;
\node[on chain=0,tape] (h) {1} ;
\node[on chain=0,tape] (i) {1} ;
\node[on chain=0,tape] (l) {$\sqcup$};
\node[on chain=0,tape] (l) {$\sqcup$};
\node[on chain=0,tape] (l) {$\sqcup$};
\node[on chain=0,tape,draw=none](m) {} ;
\node[on chain=0,tape,draw=none](n) {$\ldots$};
% Coordinates
\coordinate(snake1) at ($ (l.north east)!0.5cm!(m.north east) $);
\coordinate(snake2) at ($ (l.south east)!.5cm!(m.south east) $) ;
\draw [-] (l.north east) -- (snake1);
\draw [-] (l.south east) -- (snake2);
\draw[snake=snake,
segment amplitude=.4mm,
segment length=1.75mm,
line after snake=0mm] (snake1) -- (snake2);
\end{scope}
\draw[ultra thick] (a.south west) -- (a.north west) ;
\node[draw,above=0.75cm of e,minimum size=\turingtapesize] (Q) {$q_3$};
\draw[-latex] (Q) -- (e) ;
\end{tikzpicture}
BEARBEITEN3
\begin{tikzpicture}
\tikzset{tape/.style={minimum size=.7cm, draw}}
\begin{scope}[start chain=0 going right, node distance=0mm]
\foreach \x [count=\i] in {1,0,1,0,1,0,0,1,1,$\sqcup$,$\sqcup$,$\sqcup$} {
\ifnum\i=12 % if last node reset outer sep to 0pt
\node [on chain=0, tape, outer sep=0pt] (n\i) {\x};
\draw (n\i.north east) -- ++(.1,0) decorate [decoration={zigzag, segment length=.12cm, amplitude=.02cm}] {-- ($(n\i.south east)+(+.1,0)$)} -- (n\i.south east) -- cycle;
\else
\node [on chain=0, tape] (n\i) {\x};
\fi
\ifnum\i=1 % if first node draw a thick line at the left
\draw [line width=.1cm] (n\i.north west) -- (n\i.south west);
\fi
}
\node [right=.25cm of n12] {$\cdots$};
\node [tape, above left=.25cm and 1cm of n1] (q3) {$q_3$};
\draw [>=latex, ->] (q3) -| (n5);
\end{scope}
\end{tikzpicture}
Und hier das Endergebnis:
Antwort1
Wie wäre es, wenn Sie Ihren tape
Stil für den Knoten verwenden a
und einfach dies nach Ihrem Kettencode hinzufügen:
\draw [very thick] (a.south west) -- (a.north west);
oder
\draw [line width=.1cm] (a.south west) -- (a.north west);
Auf diese Weise können Sie eine zusätzliche Linie hinzufügen, die über Ihrem Knoten gezeichnet wird a
.
BEARBEITEN:Update zu Ihrem Zickzack-Knoten am Ende der Kette (MWE)
Hier auch noch ein paar Informationen zu deinem Zickzack-Knoten. Ich habe die zigzag
-Dekoration auf einem Teil des unten beschriebenen Pfades verwendet. Passe einfach die zigzag
segment length
und Amplitude an deine Bedürfnisse an.
Achten Sie darauf, die Werte outer sep
Ihrer Kettenknoten auf zu setzen 0
, da der Zickzackpfad sonst von den Koordinaten und etwas verschoben north east
wird south east
.
\documentclass[tikz, border=5mm]{standalone}
\usetikzlibrary{decorations.pathmorphing, calc}
\begin{document}
\begin{tikzpicture}
\node [draw, outer sep=0pt] (n) {n};
\draw (n.north east) -- ++(.1,0) decorate [decoration={zigzag, segment length=.12cm, amplitude=.02cm}] {-- ($(n.south east)+(+.1,0)$)} -- (n.south east) -- cycle;
\end{tikzpicture}
\end{document}
NUR NOCH EINE BEARBEITUNG:konnte nicht widerstehen ;). Kleine Umschreibung Ihres Codes, um die Kette für weitere Elemente erweiterbar zu machen:
Wenn du weitere Fragen hast, frag einfach. Du kannst die bei Bedarf ganz einfach zigzag
durch einige ersetzen.snakes
\documentclass[tikz, border=5mm]{standalone}
\usetikzlibrary{calc, chains, decorations.pathmorphing}
\begin{document}
\begin{tikzpicture}
\tikzset{tape/.style={minimum size=.7cm, draw}}
\begin{scope}[start chain=0 going right, node distance=0mm]
\foreach \x [count=\i] in {1,0,1,10,1,1,1,1,$\sqcup$,$\sqcup$,$\sqcup$} {
\ifnum\i=11 % if last node reset outer sep to 0pt
\node [on chain=0, tape, outer sep=0pt] (n\i) {\x};
\draw (n\i.north east) -- ++(.1,0) decorate [decoration={zigzag, segment length=.12cm, amplitude=.02cm}] {-- ($(n\i.south east)+(+.1,0)$)} -- (n\i.south east) -- cycle;
\else
\node [on chain=0, tape] (n\i) {\x};
\fi
\ifnum\i=1 % if first node draw a thick line at the left
\draw [line width=.1cm] (n\i.north west) -- (n\i.south west);
\fi
}
\node [right=.25cm of n11] {$\cdots$};
\node [tape, above left=.25cm and 1cm of n1] (q7) {$q_7$};
\draw [>=latex, ->] (q7) -| (n5);
\end{scope}
\end{tikzpicture}
\end{document}