我对使用 Tikz 和 LaTeX 创建帕斯卡三角形很感兴趣。我想在三角形左侧添加一列文本,标题为“行号”,然后是每行的条目。我是 Tikz 新手,自己创建这样的结构时遇到了麻烦。
像这样(中心对齐三角形,不左对齐)
第 0 行:1
第 1 行:1第 2 行:
1 2 1
第 3 行:1 3 3 1
第 4 行:1 4 6 4 1
第 5 行:1 5 10 10 5 1
第 6 行:1 6 15 20 15 6 1
第 7 行:1 7 21 35 35 21 7 1
第 8 行:1 8 28 56 70 56 28 8 1
第 9 行:1 9 36 84 126 126 84 36 9 1
第 10 行:1 10 45 120 210 252 210 120 45 10 1
这段代码产生了一些想法,但由于我是 tikz 的新手,我不确定该用它做什么。
谢谢!
答案1
下面应该可以做到。通过使用该fpu
库,可以超越 中的通常 17 行限制PGF
。
\documentclass[tikz,border=5]{standalone}
\usepgflibrary{fpu}
\begin{document}
\def\N{10}
\tikz[x=0.75cm,y=0.5cm,
pascal node/.style={font=\footnotesize},
row node/.style={font=\footnotesize, anchor=west, shift=(180:1)}]
\path
\foreach \n in {0,...,\N} {
(-\N/2-1, -\n) node [row node/.try]{Row \n:}
\foreach \k in {0,...,\n}{
(-\n/2+\k,-\n) node [pascal node/.try] {%
\pgfkeys{/pgf/fpu}%
\pgfmathparse{round(\n!/(\k!*(\n-\k)!))}%
\pgfmathfloattoint{\pgfmathresult}%
\pgfmathresult%
}}};
\end{document}
答案2
运行lualatex
(行数不受限制):
\documentclass[border=5]{standalone}
\usepackage{luacode,array}
\def\PascalTriangle#1{\directlua{PascalTriangle(#1)}}
\begin{luacode}
function nextrow(t)
local ret = {}
t[0], t[#t+1] = 0, 0
for i = 1, #t do ret[i] = t[i-1] + t[i] end
return ret
end
function PascalTriangle(n)
tex.sprint("\\tabular{@{}lc@{}}")
t = {1}
tex.sprint("Row 0: & 1 \\\\")
for i=1,n do
t = nextrow(t)
tex.print("Row "..i..": & ")
for j=1,i+1 do tex.print("\\makebox[2em]{"..tostring(t[j]).."}") end
-- tex.sprint(tostring(unpack(t))) -- does not work
tex.sprint("\\\\")
end
tex.sprint("\\endtabular")
end
\end{luacode}
\begin{document}
\footnotesize
\PascalTriangle{5}
\bigskip
\PascalTriangle{15}
\end{document}