ネストされたタブロー

ネストされたタブロー

編集 :私がやりたいことを説明するため、いくつか例を追加しました。

ネストされたヤングのタブローを描けるようにしたいです。ヤングのタブローの定義については、https://en.wikipedia.org/wiki/Young_tableauネストとは、タブローのセルの内容自体がタブローであることを意味します。たとえば、結果は次のようになります。

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

一般的に、行と列の長さは任意です。次に、私が実現したいことを説明する別の例を示します。

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

タブロイド紙とコラムタブロイド紙も必要なので、この回答の方法(ytableau または genyoungtabtikz パッケージの代わりに)を使用してタブローを描画します。

縦書きタブロイド紙と横書きタブロイド紙

しかし、私は tikz に慣れていないので、思ったように動作しません。最初の例には最小限のコードがあります (コンピューターが両方の方法を混同しないように、\Tableau と \PTableau を使用しました)。

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

このコードでは、結果は私が望んでいるものではなく、次のようになります (コンピュータの問題のために描いたものですが、問題を示しています)。

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

希望する結果を得るには、\PTableau をどのように変更すればよいでしょうか? また、その理由は何でしょうか?

答え1

出力が想像どおりかどうかはわかりませんが、\pic実際にはネストされていないが、結果がネストされているように見えるように互いに積み重ねられた を使用するアプローチを次に示します。

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

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

関連情報