
次のような図を作成しようとしています。
\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}