Некоторые вопросы о цепях

Некоторые вопросы о цепях

Я пытаюсь сделать следующую диаграмму:

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

Связанный контент