关于链条的一些问题

关于链条的一些问题

我正在尝试制作下图:

\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 出现在链的中心上方,最简单的方法是什么?我现在知道的唯一方法是 node at (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,或者添加到宏中。这样,您就可以快速更改具有该样式的所有节点的大小、颜色等。在下面的代码中,我定义了一种样式。\tikzsetbox 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}

相关内容