
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 size
opción para los nodos. Si se establece en un valor lo suficientemente grande, todos los cuadros tendrán el mismo tamaño.
Para colocar x
encima 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 \tikzset
macro 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 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}