모두들 좋은 아침이에요. 사실 여기에 글을 쓰는 것은 이번이 처음인데, 답글을 달아주시는 분들께 감사드립니다. 저는 학부 논문을 쓰고 있는데 현재 Turing Machine을 그리는 데 막혀 있습니다. 내가하고 싶은 일은 다음과 같습니다.
단, 첫 번째 노드의 왼쪽 면(4면 모두가 아닌 왼쪽 면만)을 매우 두껍게 만들고 싶습니다. 지금까지 내가 한 일은 다음과 같습니다.
\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}
하지만 오류가 발생합니다.
죄송합니다. 요청한 레이어 '['을(를) 찾을 수 없습니다. 혹시 철자가 틀렸나요?.
\nodeleft=of b, 가장 왼쪽 노드 {1};
테이프 끝부분에 그런 종류의 '전기톱'(이 용어가 존재하나요?)을 얻는 방법도 물어봐도 될까요? 감사합니다, 건배 ;) 출처:1 2
편집 moospit에서 제안한 대로 '두께 문제'를 해결했습니다. 이제 저 특별한 들쭉날쭉한 선을 만드는 일만 남았습니다. ;)
EDIT2 방금 귀하의 답변을 보았습니다. 조금 다른 방법으로 해결했습니다. 전체 tikz-image 코드 아래에 게시합니다. ;)
\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}
편집3
\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}
최종 결과는 다음과 같습니다.
답변1
tape
노드에 스타일을 사용 a
하고 체인 코드 뒤에 이것을 추가하는 것은 어떻습니까 ?
\draw [very thick] (a.south west) -- (a.north west);
또는
\draw [line width=.1cm] (a.south west) -- (a.north west);
이 방법으로 노드 위에 추가 선을 추가할 수 있습니다 a
.
편집하다:체인 끝의 지그재그 노드 업데이트(MWE)
지그재그 노드에 대한 정보도 여기에 있습니다. zigzag
아래 설명된 경로의 일부에 -장식을 사용했습니다 . zigzag
segment length
필요에 따라 진폭과 진폭을 조정하기만 하면 됩니다 .
outer sep
체인 노드의 을 로 설정하도록 주의하십시오 0
. 그렇지 않으면 지그재그 경로가 north east
및 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}
한 가지만 더 편집하면 됩니다.저항할 수 없었습니다 ;). 더 많은 요소에 대해 체인을 확장할 수 있도록 코드를 약간 다시 작성합니다.
더 궁금한 점이 있으면 물어보세요. 원한다면 zigzag
쉽게 변경할 수 있습니다 .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}