
Estou tentando fazer o seguinte diagrama:
\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}
O problema que estou enfrentando é que as caixas ao redor dos * são um pouco maiores do que os números 1,0. Como posso garantir que todas as caixas sejam do mesmo tamanho?
Também gostaria que a variável x aparecesse acima do centro da cadeia, qual a maneira mais fácil de fazer isso? A única maneira que conheço agora é o comando node at (x,y). Acho que deveria haver uma maneira de nomear um nó no meio da cadeia e definir um nó diretamente acima dele, mas não sei a sintaxe para isso.
Responder1
Você pode definir a minimum size
opção para os nós. Se for definido com um valor grande o suficiente, todas as caixas terão o mesmo tamanho.
Para colocar x
acima do centro da corrente, existem diversas opções. Você poderia nomear um nó com a sintaxe
\node (<name>) [<options>] {<node label>};
(Isso faz o mesmo que \node [name=<name>] {}
.) Você pode então usar <name>
como uma coordenada e colocar outro nó relativo a ela, com
\node [above=of <name>] {$x$};
Outra forma seria nomear o primeiro e o último nó da cadeia e colocar o novo nó no meio do caminho entre eles, com, por exemplo,
\path (startnode) -- node[above] {$x$} (endnode);
Para simplificar a geração de diagramas, você pode declarar seus próprios estilos com
<style name>/.style={<options>}
Adicione isso ao argumento opcional de tikzpicture
ou em uma \tikzset
macro se desejar uma definição global. Desta forma, você pode alterar rapidamente o tamanho, a cor, etc. de todos os nós com esse estilo. No código abaixo defini um box on chain
estilo.
\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}