チェーンの組み合わせ

チェーンの組み合わせ

チェーンライブラリを使い始めたばかりです。各チェーンの理解度を3段階に分けて表示したいです。

チェーン 1. 初期フィールド チェーン 2. 説明 チェーン 3. 画像

ここに画像の説明を入力してください

ドキュメント内のある時点で、chain 1のみchain 1 & 2、次にchain 1 & 3、最後に のみを表示したいと考えていますchain 3

チェーンを整列させる必要があり、 を使用するとステートメントright ofを使用できなくなりますif。そのため、同じコードを条件付きで使用してチェーンを組み合わせるには、少し助けが必要です。

MWEはこちら

\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

below=0.1cm of ...チェーンを適切に使用していないと思います。チェーンを使用する場合は、すべての if を追加する必要はありません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}

関連情報