如何在 LaTeX 中创建三角形内有数字的谢尔宾斯基三角形?

如何在 LaTeX 中创建三角形内有数字的谢尔宾斯基三角形?

我需要在 LaTeX 中创建一个谢尔宾斯基三角形,并在三角形内写上数字。

如下:

谢尔宾斯基三角形

我尝试修改以下代码:

\begin{figure}[h]
\centering
\begin{tikzpicture}[scale=2]
    \def\trianglewidth{2cm}%
    \pgfdeclarelindenmayersystem{Sierpinski triangle}{
        \symbol{X}{\pgflsystemdrawforward}
        \symbol{Y}{\pgflsystemdrawforward}
        \rule{X -> X-Y+X+Y-X}
        \rule{Y -> YY}
    }%

    \tikzset
    {
        l-system={step=\trianglewidth/(2^6), order=6, angle=-120}
    }


    \fill [black] (0,0) -- ++(0:\trianglewidth) -- ++(120:\trianglewidth) -- cycle;
    \draw [draw=none] (0,0) l-system [l-system={Sierpinski triangle, axiom=X},fill=white];
\end{tikzpicture}
\caption{Sierpiński Sieve.}
\label{fig:SierpinskiTriangle}
\end{figure}

但没有成功:( 我怎样才能在三角形中写数字??

答案1

你可以使用Mark Wibrow 的解决方案,但它采用了lualatex,如果您还没有使用它,那么切换到其他引擎可能不值得。此外,该解决方案使用六边形而不是三角形,并且不为它们着色。

因此,这是基于该答案的替代版本,但进行了所有必要的更改。此外,它适用于常规pdflatex,因为我们使用pgfmath它来进行正确的计算。

输出

在此处输入图片描述

代码

\documentclass[tikz,margin=10pt]{standalone}
\usetikzlibrary{shapes.geometric}

\tikzset{
    tris/.style={#1,
    font=\ttfamily,
    regular polygon, regular polygon sides=3, 
    minimum size=2cm, inner sep=0pt,
}
}

\begin{document}
\begin{tikzpicture}[x=2cm*sin 60, y=3cm*cos 60]

\foreach \n in {0,...,7}{
    \foreach \k in {0,...,\n}{ 
        \pgfmathtruncatemacro\fact{factorial(\n)/(factorial(\n-\k)*factorial(\k))}
    \ifodd\fact
        \node[tris={draw,fill, text=white}] at (-\n/2+\k, -\n) {\fact};
    \else
        \node[tris] at (-\n/2+\k, -\n) {\fact};
    \fi
    }
}
\end{tikzpicture}
\end{document}

相关内容