
編輯 :我添加了一些例子來說明我想要做什麼。
我希望能夠繪製嵌套的 Young 畫面。有關年輕畫面的定義,請參見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
並非真正嵌套的 s,而是相互堆疊,以便結果看起來像它們是嵌套的:
\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}