How can I draw Pascal's triangle with some its properties?
up vote
4
down vote
favorite
At here Pascal's triangle in tikz we can draw Pascal's triangle. Now I want to note some properties of coefficients C_{n+3}^4 -C_{n+2}^4-C_{n+1}^4+C_{n}^4=n^2
(the first picture) as folowing pictures
How can I draw this pictures?
tikz-pgf
add a comment |
up vote
4
down vote
favorite
At here Pascal's triangle in tikz we can draw Pascal's triangle. Now I want to note some properties of coefficients C_{n+3}^4 -C_{n+2}^4-C_{n+1}^4+C_{n}^4=n^2
(the first picture) as folowing pictures
How can I draw this pictures?
tikz-pgf
add a comment |
up vote
4
down vote
favorite
up vote
4
down vote
favorite
At here Pascal's triangle in tikz we can draw Pascal's triangle. Now I want to note some properties of coefficients C_{n+3}^4 -C_{n+2}^4-C_{n+1}^4+C_{n}^4=n^2
(the first picture) as folowing pictures
How can I draw this pictures?
tikz-pgf
At here Pascal's triangle in tikz we can draw Pascal's triangle. Now I want to note some properties of coefficients C_{n+3}^4 -C_{n+2}^4-C_{n+1}^4+C_{n}^4=n^2
(the first picture) as folowing pictures
How can I draw this pictures?
tikz-pgf
tikz-pgf
edited Apr 13 '17 at 12:35
Community♦
1
1
asked Sep 1 '14 at 6:28
minthao_2011
2,20142145
2,20142145
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
up vote
9
down vote
accepted
I'll left to you understand the code but next is a possible solution based in Paul Gaborit's example
%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Author : Paul Gaborit (2009)
% under Creative Commons attribution license.
% Title : Pascal's triangle and Sierpinski triangle
% Note : 17 lines maximum
documentclass[border=2mm, tikz]{standalone}
%usepackage[landscape,margin=1cm]{geometry}
%pagestyle{empty}
%usepackage[T1]{fontenc}
%usepackage{lmodern}
usepackage{tikz}
usetikzlibrary{positioning,shadows,backgrounds,shapes.geometric}
begin{document}
centering
%
% x=sqrt{3/4}*minimum size
% y=3/4*minimum size
%
begin{tikzpicture}[y=7.5mm,x=8.66mm]
% some colors
colorlet{even}{cyan!60!black}
colorlet{odd}{orange!100!black}
colorlet{links}{red!70!black}
colorlet{back}{yellow!20!white}
% some styles
tikzset{
box/.style={
regular polygon,
regular polygon sides=6,
minimum size=10mm,
inner sep=0mm,
outer sep=0mm,
text centered,
font=smallbfseriessffamily,
text=#1!50!black,
draw=#1,
line width=.25mm,
rotate=30,
},
link/.style={black, shorten >=2mm, shorten <=2mm, line width=1mm},
}
% Pascal's triangle
% row #0 => value is 1
node[box=even] (p-0-0) at (0,0) {rotatebox{-30}{1}};
foreach row in {1,...,11} {
% col #0 => value is 1
node[box=even] (p-row-0) at (-row/2,-row) {rotatebox{-30}{1}};
pgfmathsetmacro{myvalue}{1};
foreach col in {1,...,row} {
% iterative formula : val = precval * (row-col+1)/col
% (+ 0.5 to bypass rounding errors)
pgfmathtruncatemacro{myvalue}{myvalue*((row-col+1)/col)+0.5};
globalletmyvalue=myvalue
% position of each value
coordinate (pos) at (-row/2+col,-row);
% odd color for odd value and even color for even value
pgfmathtruncatemacro{rest}{mod(myvalue,2)}
node[box=even] (p-row-col) at (pos) {rotatebox{-30}{myvalue}};
}
}
begin{pgfonlayer}{background}
foreach i/j in {4/1,5/1,5/2,6/2,7/6,8/6,8/7,9/7}
node[box=even,fill=odd] at (p-i-j) {};
end{pgfonlayer}
draw[link] (p-4-1.center)--(p-6-2.center);
draw[link] (p-5-1.center)--(p-5-2.center);
draw[link] (p-7-6.center)--(p-9-7.center);
draw[link] (p-8-6.center)--(p-8-7.center);
node[right=5mm of p-8-8.center, align=left] {$(36-7)+(28-8)=49$};
node[left=5mm of p-5-0.center, align=right] {$(15-4)+(10-5)=16$};
end{tikzpicture}
end{document}
(19/11/18) Code updated to avoid problems mentioned in Problem with Pascal triangle example
1
hi. There may be a problem in this code, an interaction with some other package. If you have trouble compiling it, see my other post : tex.stackexchange.com/questions/460463/…
– Nicolas FRANCOIS
Nov 17 at 18:14
Please consider replacingvalue
by something less dangerous (OK, this expression sounds stronger than it should sound, this is not meant to sound strong) sincevalue
has a well-defined meaning in many packages/classes, so there could be problems, see e.g. this post. How aboutmyvalue
?
– marmot
Nov 17 at 18:17
@NicolasFRANCOIS Code updated.
– Ignasi
yesterday
add a comment |
up vote
11
down vote
Not a complete answer, but just intended to show a different way of drawing the triangle and also calculating the values. Requires lualatex
:
documentclass[tikz,border=5]{standalone}
usetikzlibrary{shapes.geometric}
directlua{
function factorial (f)
if f < 2 then return 1 else return f*factorial(f-1) end
end
function nchoosek(n, k)
return factorial(n) / (factorial(n-k) * factorial(k))
end
}
tikzset{hexagon/.style={
regular polygon, regular polygon sides=6, shape border rotate=30,
minimum size=1cm, inner sep=0pt,
draw, ultra thick, execute at begin node={setbox0hboxbgroup},
execute at end node={egrouppgfmathparse{min(4ex,wd0)/wd0}%
scalebox{pgfmathresult}{box0}}
}}
begin{document}
tikz[x=1cm*sin 60, y=1.5cm*cos 60]
foreach n in {0,...,11}
foreach k in {0,...,n}
node [hexagon] at (-n/2+k, -n) {directlua{tex.print("" .. nchoosek(n,k))}};
end{document}
The advantage with using lualatex
is that it is possible to bypass the limits on mathematical calculations in PGF
(actually in TeX
):
This won't compile at my place as of today. The fix is explained here : add RequirePackage{luatex85} as the very first line, a temporary workaround until standalone is updated.
– marsupilam
Oct 25 '16 at 16:29
Hi @mark-wibrow, I would like to use your code with a little change: I would like to be able to change the background color of some hexagons, inserting some conditional code. I don't know where to insert it, though. A simple line like "ifthenelse{n=2}{fill=blue!30,}{}" won't work. How could I do?
– zar
Nov 2 '16 at 17:31
add a comment |
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
9
down vote
accepted
I'll left to you understand the code but next is a possible solution based in Paul Gaborit's example
%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Author : Paul Gaborit (2009)
% under Creative Commons attribution license.
% Title : Pascal's triangle and Sierpinski triangle
% Note : 17 lines maximum
documentclass[border=2mm, tikz]{standalone}
%usepackage[landscape,margin=1cm]{geometry}
%pagestyle{empty}
%usepackage[T1]{fontenc}
%usepackage{lmodern}
usepackage{tikz}
usetikzlibrary{positioning,shadows,backgrounds,shapes.geometric}
begin{document}
centering
%
% x=sqrt{3/4}*minimum size
% y=3/4*minimum size
%
begin{tikzpicture}[y=7.5mm,x=8.66mm]
% some colors
colorlet{even}{cyan!60!black}
colorlet{odd}{orange!100!black}
colorlet{links}{red!70!black}
colorlet{back}{yellow!20!white}
% some styles
tikzset{
box/.style={
regular polygon,
regular polygon sides=6,
minimum size=10mm,
inner sep=0mm,
outer sep=0mm,
text centered,
font=smallbfseriessffamily,
text=#1!50!black,
draw=#1,
line width=.25mm,
rotate=30,
},
link/.style={black, shorten >=2mm, shorten <=2mm, line width=1mm},
}
% Pascal's triangle
% row #0 => value is 1
node[box=even] (p-0-0) at (0,0) {rotatebox{-30}{1}};
foreach row in {1,...,11} {
% col #0 => value is 1
node[box=even] (p-row-0) at (-row/2,-row) {rotatebox{-30}{1}};
pgfmathsetmacro{myvalue}{1};
foreach col in {1,...,row} {
% iterative formula : val = precval * (row-col+1)/col
% (+ 0.5 to bypass rounding errors)
pgfmathtruncatemacro{myvalue}{myvalue*((row-col+1)/col)+0.5};
globalletmyvalue=myvalue
% position of each value
coordinate (pos) at (-row/2+col,-row);
% odd color for odd value and even color for even value
pgfmathtruncatemacro{rest}{mod(myvalue,2)}
node[box=even] (p-row-col) at (pos) {rotatebox{-30}{myvalue}};
}
}
begin{pgfonlayer}{background}
foreach i/j in {4/1,5/1,5/2,6/2,7/6,8/6,8/7,9/7}
node[box=even,fill=odd] at (p-i-j) {};
end{pgfonlayer}
draw[link] (p-4-1.center)--(p-6-2.center);
draw[link] (p-5-1.center)--(p-5-2.center);
draw[link] (p-7-6.center)--(p-9-7.center);
draw[link] (p-8-6.center)--(p-8-7.center);
node[right=5mm of p-8-8.center, align=left] {$(36-7)+(28-8)=49$};
node[left=5mm of p-5-0.center, align=right] {$(15-4)+(10-5)=16$};
end{tikzpicture}
end{document}
(19/11/18) Code updated to avoid problems mentioned in Problem with Pascal triangle example
1
hi. There may be a problem in this code, an interaction with some other package. If you have trouble compiling it, see my other post : tex.stackexchange.com/questions/460463/…
– Nicolas FRANCOIS
Nov 17 at 18:14
Please consider replacingvalue
by something less dangerous (OK, this expression sounds stronger than it should sound, this is not meant to sound strong) sincevalue
has a well-defined meaning in many packages/classes, so there could be problems, see e.g. this post. How aboutmyvalue
?
– marmot
Nov 17 at 18:17
@NicolasFRANCOIS Code updated.
– Ignasi
yesterday
add a comment |
up vote
9
down vote
accepted
I'll left to you understand the code but next is a possible solution based in Paul Gaborit's example
%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Author : Paul Gaborit (2009)
% under Creative Commons attribution license.
% Title : Pascal's triangle and Sierpinski triangle
% Note : 17 lines maximum
documentclass[border=2mm, tikz]{standalone}
%usepackage[landscape,margin=1cm]{geometry}
%pagestyle{empty}
%usepackage[T1]{fontenc}
%usepackage{lmodern}
usepackage{tikz}
usetikzlibrary{positioning,shadows,backgrounds,shapes.geometric}
begin{document}
centering
%
% x=sqrt{3/4}*minimum size
% y=3/4*minimum size
%
begin{tikzpicture}[y=7.5mm,x=8.66mm]
% some colors
colorlet{even}{cyan!60!black}
colorlet{odd}{orange!100!black}
colorlet{links}{red!70!black}
colorlet{back}{yellow!20!white}
% some styles
tikzset{
box/.style={
regular polygon,
regular polygon sides=6,
minimum size=10mm,
inner sep=0mm,
outer sep=0mm,
text centered,
font=smallbfseriessffamily,
text=#1!50!black,
draw=#1,
line width=.25mm,
rotate=30,
},
link/.style={black, shorten >=2mm, shorten <=2mm, line width=1mm},
}
% Pascal's triangle
% row #0 => value is 1
node[box=even] (p-0-0) at (0,0) {rotatebox{-30}{1}};
foreach row in {1,...,11} {
% col #0 => value is 1
node[box=even] (p-row-0) at (-row/2,-row) {rotatebox{-30}{1}};
pgfmathsetmacro{myvalue}{1};
foreach col in {1,...,row} {
% iterative formula : val = precval * (row-col+1)/col
% (+ 0.5 to bypass rounding errors)
pgfmathtruncatemacro{myvalue}{myvalue*((row-col+1)/col)+0.5};
globalletmyvalue=myvalue
% position of each value
coordinate (pos) at (-row/2+col,-row);
% odd color for odd value and even color for even value
pgfmathtruncatemacro{rest}{mod(myvalue,2)}
node[box=even] (p-row-col) at (pos) {rotatebox{-30}{myvalue}};
}
}
begin{pgfonlayer}{background}
foreach i/j in {4/1,5/1,5/2,6/2,7/6,8/6,8/7,9/7}
node[box=even,fill=odd] at (p-i-j) {};
end{pgfonlayer}
draw[link] (p-4-1.center)--(p-6-2.center);
draw[link] (p-5-1.center)--(p-5-2.center);
draw[link] (p-7-6.center)--(p-9-7.center);
draw[link] (p-8-6.center)--(p-8-7.center);
node[right=5mm of p-8-8.center, align=left] {$(36-7)+(28-8)=49$};
node[left=5mm of p-5-0.center, align=right] {$(15-4)+(10-5)=16$};
end{tikzpicture}
end{document}
(19/11/18) Code updated to avoid problems mentioned in Problem with Pascal triangle example
1
hi. There may be a problem in this code, an interaction with some other package. If you have trouble compiling it, see my other post : tex.stackexchange.com/questions/460463/…
– Nicolas FRANCOIS
Nov 17 at 18:14
Please consider replacingvalue
by something less dangerous (OK, this expression sounds stronger than it should sound, this is not meant to sound strong) sincevalue
has a well-defined meaning in many packages/classes, so there could be problems, see e.g. this post. How aboutmyvalue
?
– marmot
Nov 17 at 18:17
@NicolasFRANCOIS Code updated.
– Ignasi
yesterday
add a comment |
up vote
9
down vote
accepted
up vote
9
down vote
accepted
I'll left to you understand the code but next is a possible solution based in Paul Gaborit's example
%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Author : Paul Gaborit (2009)
% under Creative Commons attribution license.
% Title : Pascal's triangle and Sierpinski triangle
% Note : 17 lines maximum
documentclass[border=2mm, tikz]{standalone}
%usepackage[landscape,margin=1cm]{geometry}
%pagestyle{empty}
%usepackage[T1]{fontenc}
%usepackage{lmodern}
usepackage{tikz}
usetikzlibrary{positioning,shadows,backgrounds,shapes.geometric}
begin{document}
centering
%
% x=sqrt{3/4}*minimum size
% y=3/4*minimum size
%
begin{tikzpicture}[y=7.5mm,x=8.66mm]
% some colors
colorlet{even}{cyan!60!black}
colorlet{odd}{orange!100!black}
colorlet{links}{red!70!black}
colorlet{back}{yellow!20!white}
% some styles
tikzset{
box/.style={
regular polygon,
regular polygon sides=6,
minimum size=10mm,
inner sep=0mm,
outer sep=0mm,
text centered,
font=smallbfseriessffamily,
text=#1!50!black,
draw=#1,
line width=.25mm,
rotate=30,
},
link/.style={black, shorten >=2mm, shorten <=2mm, line width=1mm},
}
% Pascal's triangle
% row #0 => value is 1
node[box=even] (p-0-0) at (0,0) {rotatebox{-30}{1}};
foreach row in {1,...,11} {
% col #0 => value is 1
node[box=even] (p-row-0) at (-row/2,-row) {rotatebox{-30}{1}};
pgfmathsetmacro{myvalue}{1};
foreach col in {1,...,row} {
% iterative formula : val = precval * (row-col+1)/col
% (+ 0.5 to bypass rounding errors)
pgfmathtruncatemacro{myvalue}{myvalue*((row-col+1)/col)+0.5};
globalletmyvalue=myvalue
% position of each value
coordinate (pos) at (-row/2+col,-row);
% odd color for odd value and even color for even value
pgfmathtruncatemacro{rest}{mod(myvalue,2)}
node[box=even] (p-row-col) at (pos) {rotatebox{-30}{myvalue}};
}
}
begin{pgfonlayer}{background}
foreach i/j in {4/1,5/1,5/2,6/2,7/6,8/6,8/7,9/7}
node[box=even,fill=odd] at (p-i-j) {};
end{pgfonlayer}
draw[link] (p-4-1.center)--(p-6-2.center);
draw[link] (p-5-1.center)--(p-5-2.center);
draw[link] (p-7-6.center)--(p-9-7.center);
draw[link] (p-8-6.center)--(p-8-7.center);
node[right=5mm of p-8-8.center, align=left] {$(36-7)+(28-8)=49$};
node[left=5mm of p-5-0.center, align=right] {$(15-4)+(10-5)=16$};
end{tikzpicture}
end{document}
(19/11/18) Code updated to avoid problems mentioned in Problem with Pascal triangle example
I'll left to you understand the code but next is a possible solution based in Paul Gaborit's example
%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Author : Paul Gaborit (2009)
% under Creative Commons attribution license.
% Title : Pascal's triangle and Sierpinski triangle
% Note : 17 lines maximum
documentclass[border=2mm, tikz]{standalone}
%usepackage[landscape,margin=1cm]{geometry}
%pagestyle{empty}
%usepackage[T1]{fontenc}
%usepackage{lmodern}
usepackage{tikz}
usetikzlibrary{positioning,shadows,backgrounds,shapes.geometric}
begin{document}
centering
%
% x=sqrt{3/4}*minimum size
% y=3/4*minimum size
%
begin{tikzpicture}[y=7.5mm,x=8.66mm]
% some colors
colorlet{even}{cyan!60!black}
colorlet{odd}{orange!100!black}
colorlet{links}{red!70!black}
colorlet{back}{yellow!20!white}
% some styles
tikzset{
box/.style={
regular polygon,
regular polygon sides=6,
minimum size=10mm,
inner sep=0mm,
outer sep=0mm,
text centered,
font=smallbfseriessffamily,
text=#1!50!black,
draw=#1,
line width=.25mm,
rotate=30,
},
link/.style={black, shorten >=2mm, shorten <=2mm, line width=1mm},
}
% Pascal's triangle
% row #0 => value is 1
node[box=even] (p-0-0) at (0,0) {rotatebox{-30}{1}};
foreach row in {1,...,11} {
% col #0 => value is 1
node[box=even] (p-row-0) at (-row/2,-row) {rotatebox{-30}{1}};
pgfmathsetmacro{myvalue}{1};
foreach col in {1,...,row} {
% iterative formula : val = precval * (row-col+1)/col
% (+ 0.5 to bypass rounding errors)
pgfmathtruncatemacro{myvalue}{myvalue*((row-col+1)/col)+0.5};
globalletmyvalue=myvalue
% position of each value
coordinate (pos) at (-row/2+col,-row);
% odd color for odd value and even color for even value
pgfmathtruncatemacro{rest}{mod(myvalue,2)}
node[box=even] (p-row-col) at (pos) {rotatebox{-30}{myvalue}};
}
}
begin{pgfonlayer}{background}
foreach i/j in {4/1,5/1,5/2,6/2,7/6,8/6,8/7,9/7}
node[box=even,fill=odd] at (p-i-j) {};
end{pgfonlayer}
draw[link] (p-4-1.center)--(p-6-2.center);
draw[link] (p-5-1.center)--(p-5-2.center);
draw[link] (p-7-6.center)--(p-9-7.center);
draw[link] (p-8-6.center)--(p-8-7.center);
node[right=5mm of p-8-8.center, align=left] {$(36-7)+(28-8)=49$};
node[left=5mm of p-5-0.center, align=right] {$(15-4)+(10-5)=16$};
end{tikzpicture}
end{document}
(19/11/18) Code updated to avoid problems mentioned in Problem with Pascal triangle example
edited yesterday
answered Sep 1 '14 at 10:05
Ignasi
90k4163302
90k4163302
1
hi. There may be a problem in this code, an interaction with some other package. If you have trouble compiling it, see my other post : tex.stackexchange.com/questions/460463/…
– Nicolas FRANCOIS
Nov 17 at 18:14
Please consider replacingvalue
by something less dangerous (OK, this expression sounds stronger than it should sound, this is not meant to sound strong) sincevalue
has a well-defined meaning in many packages/classes, so there could be problems, see e.g. this post. How aboutmyvalue
?
– marmot
Nov 17 at 18:17
@NicolasFRANCOIS Code updated.
– Ignasi
yesterday
add a comment |
1
hi. There may be a problem in this code, an interaction with some other package. If you have trouble compiling it, see my other post : tex.stackexchange.com/questions/460463/…
– Nicolas FRANCOIS
Nov 17 at 18:14
Please consider replacingvalue
by something less dangerous (OK, this expression sounds stronger than it should sound, this is not meant to sound strong) sincevalue
has a well-defined meaning in many packages/classes, so there could be problems, see e.g. this post. How aboutmyvalue
?
– marmot
Nov 17 at 18:17
@NicolasFRANCOIS Code updated.
– Ignasi
yesterday
1
1
hi. There may be a problem in this code, an interaction with some other package. If you have trouble compiling it, see my other post : tex.stackexchange.com/questions/460463/…
– Nicolas FRANCOIS
Nov 17 at 18:14
hi. There may be a problem in this code, an interaction with some other package. If you have trouble compiling it, see my other post : tex.stackexchange.com/questions/460463/…
– Nicolas FRANCOIS
Nov 17 at 18:14
Please consider replacing
value
by something less dangerous (OK, this expression sounds stronger than it should sound, this is not meant to sound strong) since value
has a well-defined meaning in many packages/classes, so there could be problems, see e.g. this post. How about myvalue
?– marmot
Nov 17 at 18:17
Please consider replacing
value
by something less dangerous (OK, this expression sounds stronger than it should sound, this is not meant to sound strong) since value
has a well-defined meaning in many packages/classes, so there could be problems, see e.g. this post. How about myvalue
?– marmot
Nov 17 at 18:17
@NicolasFRANCOIS Code updated.
– Ignasi
yesterday
@NicolasFRANCOIS Code updated.
– Ignasi
yesterday
add a comment |
up vote
11
down vote
Not a complete answer, but just intended to show a different way of drawing the triangle and also calculating the values. Requires lualatex
:
documentclass[tikz,border=5]{standalone}
usetikzlibrary{shapes.geometric}
directlua{
function factorial (f)
if f < 2 then return 1 else return f*factorial(f-1) end
end
function nchoosek(n, k)
return factorial(n) / (factorial(n-k) * factorial(k))
end
}
tikzset{hexagon/.style={
regular polygon, regular polygon sides=6, shape border rotate=30,
minimum size=1cm, inner sep=0pt,
draw, ultra thick, execute at begin node={setbox0hboxbgroup},
execute at end node={egrouppgfmathparse{min(4ex,wd0)/wd0}%
scalebox{pgfmathresult}{box0}}
}}
begin{document}
tikz[x=1cm*sin 60, y=1.5cm*cos 60]
foreach n in {0,...,11}
foreach k in {0,...,n}
node [hexagon] at (-n/2+k, -n) {directlua{tex.print("" .. nchoosek(n,k))}};
end{document}
The advantage with using lualatex
is that it is possible to bypass the limits on mathematical calculations in PGF
(actually in TeX
):
This won't compile at my place as of today. The fix is explained here : add RequirePackage{luatex85} as the very first line, a temporary workaround until standalone is updated.
– marsupilam
Oct 25 '16 at 16:29
Hi @mark-wibrow, I would like to use your code with a little change: I would like to be able to change the background color of some hexagons, inserting some conditional code. I don't know where to insert it, though. A simple line like "ifthenelse{n=2}{fill=blue!30,}{}" won't work. How could I do?
– zar
Nov 2 '16 at 17:31
add a comment |
up vote
11
down vote
Not a complete answer, but just intended to show a different way of drawing the triangle and also calculating the values. Requires lualatex
:
documentclass[tikz,border=5]{standalone}
usetikzlibrary{shapes.geometric}
directlua{
function factorial (f)
if f < 2 then return 1 else return f*factorial(f-1) end
end
function nchoosek(n, k)
return factorial(n) / (factorial(n-k) * factorial(k))
end
}
tikzset{hexagon/.style={
regular polygon, regular polygon sides=6, shape border rotate=30,
minimum size=1cm, inner sep=0pt,
draw, ultra thick, execute at begin node={setbox0hboxbgroup},
execute at end node={egrouppgfmathparse{min(4ex,wd0)/wd0}%
scalebox{pgfmathresult}{box0}}
}}
begin{document}
tikz[x=1cm*sin 60, y=1.5cm*cos 60]
foreach n in {0,...,11}
foreach k in {0,...,n}
node [hexagon] at (-n/2+k, -n) {directlua{tex.print("" .. nchoosek(n,k))}};
end{document}
The advantage with using lualatex
is that it is possible to bypass the limits on mathematical calculations in PGF
(actually in TeX
):
This won't compile at my place as of today. The fix is explained here : add RequirePackage{luatex85} as the very first line, a temporary workaround until standalone is updated.
– marsupilam
Oct 25 '16 at 16:29
Hi @mark-wibrow, I would like to use your code with a little change: I would like to be able to change the background color of some hexagons, inserting some conditional code. I don't know where to insert it, though. A simple line like "ifthenelse{n=2}{fill=blue!30,}{}" won't work. How could I do?
– zar
Nov 2 '16 at 17:31
add a comment |
up vote
11
down vote
up vote
11
down vote
Not a complete answer, but just intended to show a different way of drawing the triangle and also calculating the values. Requires lualatex
:
documentclass[tikz,border=5]{standalone}
usetikzlibrary{shapes.geometric}
directlua{
function factorial (f)
if f < 2 then return 1 else return f*factorial(f-1) end
end
function nchoosek(n, k)
return factorial(n) / (factorial(n-k) * factorial(k))
end
}
tikzset{hexagon/.style={
regular polygon, regular polygon sides=6, shape border rotate=30,
minimum size=1cm, inner sep=0pt,
draw, ultra thick, execute at begin node={setbox0hboxbgroup},
execute at end node={egrouppgfmathparse{min(4ex,wd0)/wd0}%
scalebox{pgfmathresult}{box0}}
}}
begin{document}
tikz[x=1cm*sin 60, y=1.5cm*cos 60]
foreach n in {0,...,11}
foreach k in {0,...,n}
node [hexagon] at (-n/2+k, -n) {directlua{tex.print("" .. nchoosek(n,k))}};
end{document}
The advantage with using lualatex
is that it is possible to bypass the limits on mathematical calculations in PGF
(actually in TeX
):
Not a complete answer, but just intended to show a different way of drawing the triangle and also calculating the values. Requires lualatex
:
documentclass[tikz,border=5]{standalone}
usetikzlibrary{shapes.geometric}
directlua{
function factorial (f)
if f < 2 then return 1 else return f*factorial(f-1) end
end
function nchoosek(n, k)
return factorial(n) / (factorial(n-k) * factorial(k))
end
}
tikzset{hexagon/.style={
regular polygon, regular polygon sides=6, shape border rotate=30,
minimum size=1cm, inner sep=0pt,
draw, ultra thick, execute at begin node={setbox0hboxbgroup},
execute at end node={egrouppgfmathparse{min(4ex,wd0)/wd0}%
scalebox{pgfmathresult}{box0}}
}}
begin{document}
tikz[x=1cm*sin 60, y=1.5cm*cos 60]
foreach n in {0,...,11}
foreach k in {0,...,n}
node [hexagon] at (-n/2+k, -n) {directlua{tex.print("" .. nchoosek(n,k))}};
end{document}
The advantage with using lualatex
is that it is possible to bypass the limits on mathematical calculations in PGF
(actually in TeX
):
answered Sep 1 '14 at 12:34
Mark Wibrow
61.1k4108172
61.1k4108172
This won't compile at my place as of today. The fix is explained here : add RequirePackage{luatex85} as the very first line, a temporary workaround until standalone is updated.
– marsupilam
Oct 25 '16 at 16:29
Hi @mark-wibrow, I would like to use your code with a little change: I would like to be able to change the background color of some hexagons, inserting some conditional code. I don't know where to insert it, though. A simple line like "ifthenelse{n=2}{fill=blue!30,}{}" won't work. How could I do?
– zar
Nov 2 '16 at 17:31
add a comment |
This won't compile at my place as of today. The fix is explained here : add RequirePackage{luatex85} as the very first line, a temporary workaround until standalone is updated.
– marsupilam
Oct 25 '16 at 16:29
Hi @mark-wibrow, I would like to use your code with a little change: I would like to be able to change the background color of some hexagons, inserting some conditional code. I don't know where to insert it, though. A simple line like "ifthenelse{n=2}{fill=blue!30,}{}" won't work. How could I do?
– zar
Nov 2 '16 at 17:31
This won't compile at my place as of today. The fix is explained here : add RequirePackage{luatex85} as the very first line, a temporary workaround until standalone is updated.
– marsupilam
Oct 25 '16 at 16:29
This won't compile at my place as of today. The fix is explained here : add RequirePackage{luatex85} as the very first line, a temporary workaround until standalone is updated.
– marsupilam
Oct 25 '16 at 16:29
Hi @mark-wibrow, I would like to use your code with a little change: I would like to be able to change the background color of some hexagons, inserting some conditional code. I don't know where to insert it, though. A simple line like "ifthenelse{n=2}{fill=blue!30,}{}" won't work. How could I do?
– zar
Nov 2 '16 at 17:31
Hi @mark-wibrow, I would like to use your code with a little change: I would like to be able to change the background color of some hexagons, inserting some conditional code. I don't know where to insert it, though. A simple line like "ifthenelse{n=2}{fill=blue!30,}{}" won't work. How could I do?
– zar
Nov 2 '16 at 17:31
add a comment |
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f198887%2fhow-can-i-draw-pascals-triangle-with-some-its-properties%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown