我需要在 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}