
Я только начал использовать библиотеку цепочек. Хочу показать 3 уровня понимания с каждой цепочкой
цепочка 1. Начальные поля цепочка 2. Объяснение цепочка 3. Изображения
В какой-то момент документа мне нужно отобразить chain 1
только , затем chain 1 & 2
, затем chain 1 & 3
и, наконец, только chain 3
.
Мне нужно было выровнять цепочку, а использование right of
не позволяет мне использовать if
операторы. Поэтому мне нужна лишь небольшая помощь, чтобы использовать условно тот же код, чтобы получить комбинацию цепочек.
Вот МВЕ
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{chains}
\def\Couleur{orange}
\begin{document}
\begin{tikzpicture}[
start chain=1 going below,
start chain=2 going right,
start chain=3 going below,
node distance=2mm,
Champs/.style={
on chain=1,
rectangle,
rounded corners,
draw=blue!30,
very thick,
text centered,
text width=3cm,
minimum height=12mm,
fill=blue!20
},
desc/.style={
on chain=2,
rectangle,
draw=blue!10,
very thick,
text centered,
text width=6cm,
minimum height=12mm,
fill=blue!5
},
symb/.style={Champs,
on chain=3,
text width=2.3cm,
},
every node/.append style = {
on chain},
]
{[start chain=1]
\node[Champs,] (Level1) {Field 1};
\node[Champs,below=0.1cm of Level1] (Level2) {Field 2};
\node[Champs,below=0.1cm of Level2] (Level3) {Field 3};
\node[Champs,below=0.1cm of Level3,fill=\Couleur!50] (Level4) {Field 4};
\node[Champs,below=0.1cm of Level4] (Level5) {Field 5};
\node[Champs,below=0.1cm of Level5] (Level6) {Field 6};
}
{[start chain=2]
\node[desc,right=of Level1] (Desc1) {Description a bit longer 1};
\node[desc,below=0.1cm of Desc1] (Desc2) {Description a bit longer 2};
\node[desc,below=0.1cm of Desc2] (Desc3) {Description a bit longer 3};
\node[desc,below=0.1cm of Desc3,fill=\Couleur!10] (Desc4) {Description a bit longer 4};
\node[desc,below=0.1cm of Desc4] (Desc5) {Description a bit longer 4};
\node[desc,below=0.1cm of Desc5] (Desc6) {Description a bit longer 6};
}
{
[start chain=3]
\node[symb,right=of Desc1] (Symb1) {\includegraphics[width=1cm]{example-image} };
\node[symb,below=0.1cm of Symb1] (Symb2) {\includegraphics[width=1cm]{example-image}};
\node[symb,below=0.1cm of Symb2] (Symb3) {\includegraphics[width=1cm]{example-image} };
\node[symb,below=0.1cm of Symb3,fill=\Couleur!50] (Symb4) {\includegraphics[width=1cm]{example-image} };
\node[symb,below=0.1cm of Symb4] (Symb5) {\includegraphics[width=1cm]{example-image} };
\node[symb,below=0.1cm of Symb5] (Symb6) {\includegraphics[width=1cm]{example-image} };
}
\end{tikzpicture}
\end{document}
решение1
Я думаю, что вы неправильно используете цепочки. Вам больше не нужно добавлять все if, below=0.1cm of ...
если вы используете цепочку, которая есть going below
. Я добавил несколько if.
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{chains}
\def\Couleur{orange}
\newif\ifChainTwo
\newif\ifChainThree
\begin{document}
\begin{tikzpicture}[
start chain=1 going below,
start chain=2 going below,
start chain=3 going below,
node distance=2mm,
Champs/.style={
on chain=1,
rectangle,
rounded corners,
draw=blue!30,
very thick,
text centered,
text width=3cm,
minimum height=12mm,
fill=blue!20
},
desc/.style={
on chain=2,
rectangle,
draw=blue!10,
very thick,
text centered,
text width=6cm,
minimum height=12mm,
fill=blue!5
},
symb/.style={Champs,
on chain=3,
text width=2.3cm,
},
every node/.append style = {
on chain},
]
%\ChainTwotrue
%\ChainThreetrue
{[start chain=1]
\node[Champs,alias=Desc1] (Level1) {Field 1};
\node[Champs] (Level2) {Field 2};
\node[Champs] (Level3) {Field 3};
\node[Champs,fill=\Couleur!50] (Level4) {Field 4};
\node[Champs] (Level5) {Field 5};
\node[Champs] (Level6) {Field 6};
}
\ifChainTwo
{[start chain=2]
\node[desc,right=of Level1] (Desc1) {Description a bit longer 1};
\node[desc] (Desc2) {Description a bit longer 2};
\node[desc] (Desc3) {Description a bit longer 3};
\node[desc,fill=\Couleur!10] (Desc4) {Description a bit longer 4};
\node[desc] (Desc5) {Description a bit longer 4};
\node[desc] (Desc6) {Description a bit longer 6};
}
\fi
\ifChainThree
{
[start chain=3]
\node[symb,right=of Desc1] (Symb1) {\includegraphics[width=1cm]{example-image} };
\node[symb] (Symb2) {\includegraphics[width=1cm]{example-image}};
\node[symb] (Symb3) {\includegraphics[width=1cm]{example-image} };
\node[symb,fill=\Couleur!50] (Symb4) {\includegraphics[width=1cm]{example-image} };
\node[symb] (Symb5) {\includegraphics[width=1cm]{example-image} };
\node[symb] (Symb6) {\includegraphics[width=1cm]{example-image} };
}
\fi
\end{tikzpicture}
\end{document}
Если вы раскомментируете, \ChainTwotrue
то получите
Если вы раскомментируете, \ChainThreetrue
то получите
А если раскомментировать оба, то получится
Обратите внимание, что можно также сделать оранжевую окраску более автоматической.
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{chains}
\def\Couleur{orange}
\newif\ifChainTwo
\newif\ifChainThree
\begin{document}
\begin{tikzpicture}[
start chain=1 going below,
start chain=2 going below,
start chain=3 going below,
node distance=2mm,
Champs/.style={
on chain=1,
rectangle,
rounded corners,
draw=blue!30,
very thick,
text centered,
text width=3cm,
minimum height=12mm,
fill=blue!20,
cond={4}{fill=\Couleur!50}
},
desc/.style={
on chain=2,
rectangle,
draw=blue!10,
very thick,
text centered,
text width=6cm,
minimum height=12mm,
fill=blue!5,
cond={4}{fill=\Couleur!10}
},
symb/.style={Champs,
on chain=3,
text width=2.3cm,
cond={4}{fill=\Couleur!50}
},
every node/.append style = {
on chain},
cond/.code 2 args={\ifnum\tikzchaincount=#1
\tikzset{#2}
\fi}
]
\ChainTwotrue
\ChainThreetrue
{[start chain=1,nodes=Champs]
\node[Champs,alias=Desc1] (Level1) {Field 1};
\node[Champs] (Level2) {Field 2};
\node[Champs] (Level3) {Field 3};
\node[Champs] (Level4) {Field 4};
\node[Champs] (Level5) {Field 5};
\node[Champs] (Level6) {Field 6};
}
\ifChainTwo
{[start chain=2]
\node[desc,right=of Level1] (Desc1) {Description a bit longer 1};
\node[desc] (Desc2) {Description a bit longer 2};
\node[desc] (Desc3) {Description a bit longer 3};
\node[desc] (Desc4) {Description a bit longer 4};
\node[desc] (Desc5) {Description a bit longer 4};
\node[desc] (Desc6) {Description a bit longer 6};
}
\fi
\ifChainThree
{
[start chain=3]
\node[symb,right=of Desc1] (Symb1) {\includegraphics[width=1cm]{example-image} };
\node[symb] (Symb2) {\includegraphics[width=1cm]{example-image}};
\node[symb] (Symb3) {\includegraphics[width=1cm]{example-image} };
\node[symb] (Symb4) {\includegraphics[width=1cm]{example-image} };
\node[symb] (Symb5) {\includegraphics[width=1cm]{example-image} };
\node[symb] (Symb6) {\includegraphics[width=1cm]{example-image} };
}
\fi
\end{tikzpicture}
\end{document}