Tikz: горизонтальное центрирование группы узлов
Мне нужно выровнять каждую строку графика по центру. Я пытаюсь сделать это с помощью xshift. Вот код:
begin{tikzpicture}[node distance=1.5cm, auto, text centered]
tikzstyle{every node}=[draw,ball];
begin{scope}[xshift=1.5cm]
node (A) {A};
node [right of=A] (B) {B};
node [right of=B] (C) {C};
node [right of=C] (D) {D};
end{scope}
begin{scope}[yshift=-1.5cm]
node (AB) {AB};
node [right of=AB] (AC) {AC};
node [right of=AC] (AD) {AD};
node [right of=AD] (BC) {BC};
node [right of=BC] (BD) {BD};
node [right of=BD] (CD) {CD};
end{scope}
begin{scope}[yshift=-3cm,node distance=2cm,xshift=1cm]
node (ABC) {ABC};
node [right of=ABC] (ABD) {ABD};
node [right of=ABD] (ACD) {ACD};
node [right of=ACD] (BCD) {BCD};
end{scope}
begin{scope}[xshift=4cm, yshift=-4.5cm, node distance=2cm]
node (ABCD) {ABCD};
end{scope}
end{tikzpicture}
есть ли другой способ сделать это? Не нравится менять значения xshift каждый раз.
1 ответов
вы можете сделать каждую строку своей собственной матрицей, что позволяет эффективно группировать набор узлов в один.
Ваш Пример
\begin{tikzpicture}[auto]
\begin{scope}[]
\matrix[nodes={draw,ball}, column sep=1cm]{
\node (A) {A}; &
\node (B) {B}; &
\node (C) {C}; &
\node (D) {D}; \
};
\end{scope}
\begin{scope}[yshift=-1.5cm]
\matrix[nodes={draw,ball}, column sep=1cm]{
\node (AB) {AB}; &
\node (AC) {AC}; &
\node (AD) {AD}; &
\node (BC) {BC}; &
\node (BD) {BD}; &
\node (CD) {CD}; \
};
\end{scope}
\begin{scope}[yshift=-3cm]
\matrix[nodes={draw,ball}, column sep=1cm]{
\node (ABC) {ABC}; &
\node (ABD) {ABD}; &
\node (ACD) {ACD}; &
\node (BCD) {BCD}; \
};
\end{scope}
\begin{scope}[yshift=-4.5cm]
\matrix[nodes={draw,ball}, column sep=1cm]{
\node (ABCD) {ABCD}; \
};
\end{scope}
\end{tikzpicture}
Примечание обязательно \usetikzlibrary{matrix}
результаты
alt текст http://i45.tinypic.com/o89r46.jpg
(я придумал свой собственный ball
стиль.)