Verschachtelte Tableaus

Verschachtelte Tableaus

BEARBEITEN :Ich habe einige Beispiele hinzugefügt, um zu veranschaulichen, was ich tun möchte.

Ich möchte in der Lage sein, verschachtelte Young-Tableaus zu zeichnen. Eine Definition von Young-Tableaus finden Sie unterhttps://en.wikipedia.org/wiki/Young_tableau. Mit verschachtelt meine ich, dass der Inhalt einer Zelle eines Tableaus selbst ein Tableau ist. Mein Ergebnis sollte beispielsweise so aussehen:

Bildbeschreibung hier eingeben

Im Allgemeinen können Zeilen und Spalten beliebig lang sein. Hier ist ein weiteres Beispiel, um zu veranschaulichen, was ich tun möchte:

Bildbeschreibung hier eingeben

Da ich auch Boulevardzeitungen und Kolumnen-Boulevardzeitungen möchte, zeichne ich meine Tableaus mit der Methode in dieser Antwort (anstelle der Pakete ytableau oder genyoungtabtikz):

Spalten-Boulevardzeitungen versus Zeilen-Boulevardzeitungen

Ich bin jedoch nicht an Tikz gewöhnt und es funktioniert nicht so, wie ich es gerne hätte. Für mein erstes Beispiel gibt es einen minimalen Code (ich habe \Tableau und \PTableau verwendet, damit der Computer die beiden Methoden nicht verwechselt):

\documentclass{article}

\usepackage{tikz}

\newcount\tableauRow\newcount\tableauCol
\newcommand\Tableau[2]{%
  \begin{tikzpicture}[scale=#2,draw/.append style={thick,black},baseline=-4mm]
    \tableauRow=0
    \foreach \Row in {#1} {
       \tableauCol=1
       \foreach\k in \Row {
          \draw(\the\tableauCol,\the\tableauRow)+(-.5,-.5)rectangle++(.5,.5);
          \draw(\the\tableauCol,\the\tableauRow)node{\k};
          \global\advance\tableauCol by 1
       }
       \global\advance\tableauRow by -1
    }
  \end{tikzpicture}
}
\newcommand\PTableau[2]{%
  \begin{tikzpicture}[scale=#2,draw/.append style={thick,black},baseline=-4mm]
    \tableauRow=0
    \foreach \Row in {#1} {
       \tableauCol=1
       \foreach\k in \Row {
          \draw(\the\tableauCol,\the\tableauRow)+(-.5,-.5)rectangle++(.5,.5);
          \draw(\the\tableauCol,\the\tableauRow)node{\k};
          \global\advance\tableauCol by 1
       }
       \global\advance\tableauRow by -1
    }
  \end{tikzpicture}
}

\begin{document}

\[
\PTableau{{\Tableau{{1,2},{3,4}}{0.5},\Tableau{{5,6},{7,8}}{0.5}}}{1.5}
\]

\end{document}

Mit diesem Code sieht das Ergebnis nicht so aus, wie ich es möchte, sondern so (ich habe es wegen eines Computerproblems gezeichnet, aber es veranschaulicht das Problem):

Bildbeschreibung hier eingeben

Was muss ich an \PTableau ändern, um das gewünschte Ergebnis zu erhalten? Und vor allem: Warum?

Antwort1

Ich bin nicht sicher, ob die Ausgabe Ihren Vorstellungen entspricht, aber hier ist ein Ansatz, bei dem \pics verwendet werden, die nicht wirklich verschachtelt sind, sondern so übereinander gestapelt sind, dass das Ergebnis so aussieht, als wären sie verschachtelt:

\documentclass[border=10pt]{standalone}
\usepackage{tikz}

\tikzset{
    pics/tableau/.style={
        code={
            \tikzset{tableau/.cd, #1}
            \pgfmathsetmacro{\s}{\pgfkeysvalueof{/tikz/tableau/size}*1pt}
            \pgfmathsetmacro{\c}{\pgfkeysvalueof{/tikz/tableau/cols}}
            \begin{scope}[
                shift={(\pgfkeysvalueof{/tikz/tableau/at})},
            ]
                \foreach \n [count=\i from 0] in \tableaulist {
                    \path[\ifx\n\empty\else draw\fi] 
                        ({mod(\i,\c)*\s},{int(-1*\i/\c)*\s})
                            coordinate (-\i)
                            rectangle ++({\s},{-1*\s})
                            node[pos=0.5] (-n\i) { \n };
                }
            \end{scope}
        }
    },
    tableau/list/.store in=\tableaulist,
    tableau/list/.initial={1},
    tableau/cols/.initial={2},
    tableau/size/.initial={1},
    tableau/at/.initial={0,0}
}

\begin{document}
\begin{tikzpicture}

\pic (A) {tableau={list={1,{},9,10,11,{},12,{},20}, cols=3}};

\pic[tableau/size=0.5] (B) {tableau={list={2,3,{},8}, cols=2, at=A-1}};

\pic[tableau/size=0.25, font=\tiny] 
    {tableau={list={4,5,6,7}, cols=2, at=B-2}};

\pic[tableau/size=0.333, font=\tiny] 
    {tableau={list={13,14,15,16,17,18,{},{},19}, cols=3, at=A-7}};

\end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen