
다음 다이어그램을 만들려고 합니다.
\begin{tikzpicture}[
start chain=1 going right,node distance=-0.15mm]
\node [on chain=1] at (-1.5,-.4) {f(};
\node [draw,on chain=1] {*};
\node [draw,on chain=1] {*};
\node [draw,on chain=1] {*};
\node [draw,on chain=1] {0};
\node [draw,on chain=1] {0};
\node [draw,on chain=1] {*};
\node [draw,on chain=1] {0};
\node [draw,on chain=1] {1};
\node [draw,on chain=1] {*};
\node [draw,on chain=1] {*};
\node [draw,on chain=1] {0};
\node [name=r,on chain=1] {$) = 0$};
\end{tikzpicture}
내가 겪고 있는 문제는 * 주변의 상자가 숫자 1,0 주변의 상자보다 약간 크다는 것입니다. 모든 상자의 크기가 동일하다는 것을 어떻게 보장할 수 있나요?
또한 변수 x를 체인 중앙 위에 표시하고 싶습니다. 이를 수행하는 가장 쉬운 방법은 무엇입니까? 지금 내가 아는 유일한 방법은 (x,y) 명령의 노드입니다. 체인 중간에 노드 이름을 지정하고 바로 위에 노드를 정의하는 방법이 있어야 할 것 같은데 이에 대한 구문을 모르겠습니다.
답변1
minimum size
노드에 대한 옵션을 설정할 수 있습니다 . 이 값을 충분히 큰 값으로 설정하면 모든 상자의 크기가 동일해집니다.
x
체인 중앙 위에 배치하려면 몇 가지 옵션이 있습니다. 다음 구문을 사용하여 노드 이름을 지정할 수 있습니다.
\node (<name>) [<options>] {<node label>};
(이것은 와 동일합니다 \node [name=<name>] {}
.) 그런 다음 <name>
좌표로 사용하고 이를 기준으로 다른 노드를 배치할 수 있습니다.
\node [above=of <name>] {$x$};
또 다른 방법은 체인의 첫 번째 노드와 마지막 노드의 이름을 지정하고 두 노드 사이의 중간에 새 노드를 배치하는 것입니다.
\path (startnode) -- node[above] {$x$} (endnode);
다이어그램 생성을 단순화하기 위해 다음을 사용하여 자신만의 스타일을 선언할 수 있습니다.
<style name>/.style={<options>}
이를 의 선택적 인수에 추가하거나 전역 정의를 원하는 경우 매크로 tikzpicture
에 추가합니다. \tikzset
이렇게 하면 해당 스타일을 사용하는 모든 노드의 크기, 색상 등을 빠르게 변경할 수 있습니다. 아래 코드에서는 box on chain
스타일을 정의했습니다.
\documentclass[border=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{chains}
\begin{document}
\begin{tikzpicture}[
start chain=1 going right,node distance=-0.15mm,
box on chain/.style={draw, on chain=1,minimum size=.5cm}]
\node [on chain=1] at (-1.5,-.4) {f(};
\node(start) [box on chain] {*};
\node [box on chain] {*};
\node [box on chain] {*};
\node [box on chain] {0};
\node [box on chain] {0};
\node (mid) [box on chain] {*};
\node [box on chain] {0};
\node [box on chain] {1};
\node [box on chain] {*};
\node [box on chain] {*};
\node(end) [box on chain] {0};
\node [name=r,on chain=1] {$) = 0$};
% place new node above node called mid
\node [above=of mid] {\( x \)};
% different method: place node in the middle between start and end, 2ex above
% \path (start) -- node[above=2ex]{\( x \)} (end);
\end{tikzpicture}
\end{document}