在 Tikz 中绘制 Ferrers 图

在 Tikz 中绘制 Ferrers 图

我该如何在 tikz 中绘制这个(Ferrers 图)?

在此处输入图片描述

答案1

欢迎光临!这是一种方式。

\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}[scale=0.7]
 \fill foreach \Z [count=\Y] in {6,3,3,2,1}
  {foreach \X in {1,...,\Z} 
  {(\X,-\Y) circle[radius=3pt]}};
 \fill[xshift=8cm] foreach \Z [count=\Y] in {5,4,3,1,1}
  {foreach \X in {1,...,\Z} 
  {(\X,-\Y) circle[radius=3pt]}};
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

这重现了您所展示的图表。

\documentclass{article}

\newenvironment{ferrers}[1][4em]
 {%
  \leavevmode
  \hbox\bgroup
    \def\\{\unskip\cr\noalign{\hskip#1}}%
    \valign\bgroup&##\cr
 }
 {%
  \unskip\crcr\egroup
  \egroup
 }

\newcommand{\row}[1]{%
  \hbox{$\activatem\romannumeral\number\number#1 000 \unskip$}\vskip 0.5em plus 3em
}
\newcommand{\activatem}{%
  \begingroup\lccode`~=`m \lowercase{\endgroup\def~}{\bullet\hskip1em}%
  \mathcode`m="8000
}

\begin{document}

\begin{ferrers}
\row{6}
\row{3}
\row{3}
\row{2}
\row{1}
\\
\row{5}
\row{4}
\row{3}
\row{1}
\row{1}
\row{1}
\end{ferrers}

\end{document}

环境中的新行和空格ferrers无关紧要,因此您也可以输入相同的内容

\begin{ferrers}
\row{6} \row{3} \row{3} \row{2} \row{1} \\
\row{5} \row{4} \row{3} \row{1} \row{1} \row{1}
\end{ferrers}

在此处输入图片描述

一个不均衡的版本。

\documentclass{article}

\newenvironment{ferrers}[1][4em]
 {%
  \leavevmode
  %\begin{tabular}{@{}c@{}}
  \hbox\bgroup
    \def\\{\unskip\vfill\cr\noalign{\hskip#1}}%
    \valign\bgroup&##\cr
 }
 {%
  \unskip\vfill\crcr\egroup
  \egroup
  %\end{tabular}
 }

\newcommand{\row}[1]{%
  \hbox{$\activatem\romannumeral\number\number#1 000 \unskip$}\vskip 0.5em
}
\newcommand{\activatem}{%
  \begingroup\lccode`~=`m \lowercase{\endgroup\def~}{\bullet\hskip1em}%
  \mathcode`m="8000
}

\begin{document}

\begin{ferrers}
\row{6}
\row{3}
\row{3}
\row{2}
\row{1}
\\
\row{5}
\row{4}
\row{3}
\row{1}
\row{1}
\row{1}
\end{ferrers}

\end{document}

在此处输入图片描述

在两个版本中您都可以使用\begin{ferrers}[6em](任意长度)来设置各部分之间的间距(默认为 4em)。

相关内容