Algunas preguntas sobre cadenas

Algunas preguntas sobre cadenas

Estoy intentando hacer el siguiente 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}

El problema con el que me encuentro es que los cuadros alrededor de los * son ligeramente más grandes que alrededor de los números 1,0. ¿Cómo puedo asegurarme de que todas las cajas sean del mismo tamaño?

También me gustaría que la variable x aparezca encima del centro de la cadena, ¿cuál es la forma más sencilla de hacerlo? La única forma que conozco en este momento es el comando nodo en (x,y). Creo que debería haber una manera de nombrar un nodo en el medio de la cadena y definir un nodo para que vaya directamente encima de él, pero no conozco la sintaxis para esto.

Respuesta1

Puede configurar la minimum sizeopción para los nodos. Si se establece en un valor lo suficientemente grande, todos los cuadros tendrán el mismo tamaño.

Para colocar xencima del centro de la cadena, existen varias opciones. Podrías nombrar un nodo con la sintaxis

\node (<name>) [<options>] {<node label>};

(Esto hace lo mismo que \node [name=<name>] {}.) Luego puede usarlo <name>como coordenada y colocar otro nodo relativo a ese, con

\node [above=of <name>] {$x$};

Otra forma sería nombrar el primer y último nodo de la cadena y colocar el nuevo nodo a medio camino entre ellos, con, por ejemplo,

\path (startnode) -- node[above] {$x$} (endnode);

Para simplificar la generación de diagramas, puede declarar sus propios estilos con

<style name>/.style={<options>}

Agregue esto al argumento opcional de tikzpicture, o en una \tikzsetmacro si desea una definición global. De esta manera podrías cambiar rápidamente el tamaño, color, etc. de todos los nodos con ese estilo. En el siguiente código definí un box on chainestilo.

ingrese la descripción de la imagen aquí

\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}

información relacionada