tikz 中的帕斯卡三角形与行标题

tikz 中的帕斯卡三角形与行标题

我对使用 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 的新手,我不确定该用它做什么。

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}

在此处输入图片描述

相关内容