我正在尝试制作下图:
\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
,或者添加到宏中。这样,您就可以快速更改具有该样式的所有节点的大小、颜色等。在下面的代码中,我定义了一种样式。\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}