diff options
Diffstat (limited to 'graphics/pgf/contrib/tangramtikz/tex/TangramTikz.sty')
-rw-r--r-- | graphics/pgf/contrib/tangramtikz/tex/TangramTikz.sty | 513 |
1 files changed, 513 insertions, 0 deletions
diff --git a/graphics/pgf/contrib/tangramtikz/tex/TangramTikz.sty b/graphics/pgf/contrib/tangramtikz/tex/TangramTikz.sty new file mode 100644 index 0000000000..90e772d99c --- /dev/null +++ b/graphics/pgf/contrib/tangramtikz/tex/TangramTikz.sty @@ -0,0 +1,513 @@ +% Author.........: C. Pierquet +% licence........: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf +% Inspiration....: https://tex.stackexchange.com/questions/407449/typesetting-tangram-figures-in-latex + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{TangramTikz}[2023/01/22 v0.1.0 Tangram Puzzles with TikZ] +% 0.1.0 Version initiale + quelques modèles + +%------Packages utiles +\RequirePackage{tikz} +\RequirePackage{xparse} +\RequirePackage{simplekv} +\RequirePackage{xstring} +\RequirePackage{listofitems} +%librairies tikz +\usetikzlibrary{calc,shapes.geometric} + +%pieces and styles, [en] and [fr], and keys +%https://tex.stackexchange.com/questions/407449/typesetting-tangram-figures-in-latex +\tikzset{ + TangBigTri/.pic={\path[pic actions] (0,0)--(2,0)--(2,2)--cycle;}, + TangGrandTri/.pic={\path[pic actions] (0,0)--(2,0)--(2,2)--cycle;}, + TangMedTri/.pic={\path[pic actions] (0,0)--(1,1)--(2,0)--cycle;}, + TangMoyTri/.pic={\path[pic actions] (0,0)--(1,1)--(2,0)--cycle;}, + TangSqua/.pic={\path[pic actions] (0,0)--(1,0)--(1,1)--(0,1)--cycle;}, + TangCar/.pic={\path[pic actions] (0,0)--(1,0)--(1,1)--(0,1)--cycle;}, + TangSmalTri/.pic={\path[pic actions] (0,0)--(1,0)--(1,1)--cycle;}, + TangPetTri/.pic={\path[pic actions] (0,0)--(1,0)--(1,1)--cycle;}, + TangPara/.pic={\path[pic actions] (0,0)--(1,0)--(2,1)--(1,1)--cycle;} +} +\tikzset{% + TangPuzz/.style={transform shape,fill=#1,draw=#1}, + TangPuzz/.default=black, + TangSol/.style={transform shape,fill=#1,draw=white,line width=\TangBorder}, + TangSol/.default=black +} + +%the square / le carre +\NewDocumentCommand\TangramSquare{ s O{TangPuzz} }{%*=colorcorrection,[key for pic] + \IfBooleanTF{#1}% + {% + \pic[TangSol={\TanGListeCouleurs[1]}] at (0,0) {TangBigTri};% + \pic[TangSol={\TanGListeCouleurs[1]},rotate=-90] at (2,2) {TangBigTri};% + \pic[TangSol={\TanGListeCouleurs[4]},rotate=-90] at (2,0) {TangSqua};% + \pic[TangSol={\TanGListeCouleurs[3]},rotate=180] at (4,0) {TangSmalTri};% + \pic[TangSol={\TanGListeCouleurs[3]},rotate=90] at (2,-1) {TangSmalTri};% + \pic[TangSol={\TanGListeCouleurs[5]},xscale=-1] at (2,-1) {TangPara};% + \pic[TangSol={\TanGListeCouleurs[2]},rotate=180] at (3,-1) {TangMedTri};% + }% + {% + \pic[#2] at (0,0) {TangBigTri};% + \pic[#2,rotate=-90] at (2,2) {TangBigTri};% + \pic[#2,rotate=-90] at (2,0) {TangSqua};% + \pic[#2,rotate=180] at (4,0) {TangSmalTri};% + \pic[#2,rotate=90] at (2,-1) {TangSmalTri};% + \pic[#2,xscale=-1] at (2,-1) {TangPara};% + \pic[#2,rotate=180] at (3,-1) {TangMedTri};% + }% +} + +%the pinguin / le pingouin +%https://tex.stackexchange.com/questions/407449/typesetting-tangram-figures-in-latex +\NewDocumentCommand\TangramPinguin{ s O{TangPuzz} }{%*=colorcorrection,[key for pic] + \IfBooleanTF{#1}% + {% + \path (0,-1) pic[TangSol={\TanGListeCouleurs[3]}] {TangSmalTri} + ++(1,0) pic[TangSol={\TanGListeCouleurs[4]}] {TangSqua} + ++(1,1) pic[TangSol={\TanGListeCouleurs[1]},rotate=-45,yscale=-1] {TangBigTri} + ++(-45:2) pic[TangSol={\TanGListeCouleurs[1]},rotate=-135] {TangBigTri} + +({-sqrt(2)},0) pic[TangSol={\TanGListeCouleurs[5]},rotate=-135] {TangPara} + ++(-2,{-2*sqrt(2)}) pic[TangSol={\TanGListeCouleurs[2]}] {TangMedTri} + ++(2,1) pic[TangSol={\TanGListeCouleurs[3]},rotate=-90] {TangSmalTri} ; + }% + {% + \path (0,-1) pic[#2] {TangSmalTri} + ++(1,0) pic[#2] {TangSqua} + ++(1,1) pic[#2,rotate=-45,yscale=-1] {TangBigTri} + ++(-45:2) pic[#2,rotate=-135] {TangBigTri} + +({-sqrt(2)},0) pic[#2,rotate=-135] {TangPara} + ++(-2,{-2*sqrt(2)}) pic[#2] {TangMedTri} + ++(2,1) pic[#2,rotate=-90] {TangSmalTri} ; + }% +} + +%the boat / le bateau +%https://tex.stackexchange.com/questions/407449/typesetting-tangram-figures-in-latex +\NewDocumentCommand\TangramBoat{ s O{TangPuzz} }{%*=colorcorrection,[key for pic] + \IfBooleanTF{#1}% + {% + \path (0,0) pic[TangSol={\TanGListeCouleurs[2]},rotate=180] {TangMedTri} + ++(-1,-1) pic[TangSol={\TanGListeCouleurs[5]}] {TangPara} + ++(1,0) pic[TangSol={\TanGListeCouleurs[3]}] {TangSmalTri} + ++(1,0) pic[TangSol={\TanGListeCouleurs[4]}] {TangSqua} + ++(2,1) pic[TangSol={\TanGListeCouleurs[3]},rotate=180] {TangSmalTri} + ++(-2.5,0) pic[TangSol={\TanGListeCouleurs[1]},rotate=80] {TangBigTri} + ++(80:4) + ++(170:2) pic[TangSol={\TanGListeCouleurs[1]},rotate=-100] {TangBigTri} ; + }% + {% + \path (0,0) pic[#2,rotate=180] {TangMedTri} + ++(-1,-1) pic[#2] {TangPara} + ++(1,0) pic[#2] {TangSmalTri} + ++(1,0) pic[#2] {TangSqua} + ++(2,1) pic[#2,rotate=180] {TangSmalTri} + ++(-2.5,0) pic[#2,rotate=80] {TangBigTri} + ++(80:4) + ++(170:2) pic[#2,rotate=-100] {TangBigTri} ; + }% +} + +%the house / la maison +\NewDocumentCommand\TangramHome{ s O{TangPuzz} }{%*=colorcorrection,[key for pic] + \IfBooleanTF{#1}% + {% + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=135>({sqrt(8)},0){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[2]}]<rotate=45>(0,0){TangMoyTri} + \PieceTangram[TangSol={\TanGListeCouleurs[5]}](-0.5,{sqrt(2)}){TangPara} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=135>({0.5+sqrt(8)},{sqrt(2)}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[4]}](0.5,{sqrt(2)+1}){TangCar} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=-45>({sqrt(2)},{sqrt(2)}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<xscale=-1,rotate=45>({sqrt(8)},0){TangPetTri} + }% + {% + \PieceTangram[#2]<rotate=135>({sqrt(8)},0){TangGrandTri} + \PieceTangram[#2]<rotate=45>(0,0){TangMoyTri} + \PieceTangram[#2](-0.5,{sqrt(2)}){TangPara} + \PieceTangram[#2]<rotate=135>({0.5+sqrt(8)},{sqrt(2)}){TangGrandTri} + \PieceTangram[#2](0.5,{sqrt(2)+1}){TangCar} + \PieceTangram[#2]<rotate=-45>({sqrt(2)},{sqrt(2)}){TangPetTri} + \PieceTangram[#2]<xscale=-1,rotate=45>({sqrt(8)},0){TangPetTri} + }% +} + +%the fir tree / le sapin +\NewDocumentCommand\TangramFirTree{ s O{TangPuzz} }{%*=colorcorrection,[key for pic] + \IfBooleanTF{#1}% + {% + \PieceTangram[TangSol={\TanGListeCouleurs[4]}]<rotate=0>({0},{0}){TangCar} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=0>({-1.5},{1}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=-90>({0.5},{3}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[5]}]<xscale=-1,rotate=0>({2.5},{2}){TangPara} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=0>({-1.5},{2}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<xscale=-1,rotate=90>({-0.5},{2}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[2]}]<rotate=0>({-0.5},{3}){TangMoyTri} + }% + {% + \PieceTangram[#2]<rotate=0>({0},{0}){TangCar} + \PieceTangram[#2]<rotate=0>({-1.5},{1}){TangGrandTri} + \PieceTangram[#2]<rotate=-90>({0.5},{3}){TangGrandTri} + \PieceTangram[#2]<xscale=-1,rotate=0>({2.5},{2}){TangPara} + \PieceTangram[#2]<rotate=0>({-1.5},{2}){TangPetTri} + \PieceTangram[#2]<xscale=-1,rotate=90>({-0.5},{2}){TangPetTri} + \PieceTangram[#2]<rotate=0>({-0.5},{3}){TangMoyTri} + }% +} + +%the cat / le chat +\NewDocumentCommand\TangramCat{ s O{TangPuzz} }{%*=colorcorrection,[key for pic] + \IfBooleanTF{#1}% + {% + \PieceTangram[TangSol={\TanGListeCouleurs[4]}]<rotate=45>({2-sqrt(2)},{2+sqrt(2)}){TangCar} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=0>(0,0){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=45>({2-sqrt(2)},{2-sqrt(2)}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[5]}]({2},{0}){TangPara} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=45>({2-1.5*sqrt(2)},{2+1.5*sqrt(2)}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<xscale=1,rotate=-135>({2-0.5*sqrt(2)},{2+2.5*sqrt(2)}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[2]}]<rotate=90>({2-sqrt(2)},{sqrt(2)}){TangMoyTri} + }% + {% + \PieceTangram[#2]<rotate=45>({2-sqrt(2)},{2+sqrt(2)}){TangCar} + \PieceTangram[#2]<rotate=0>(0,0){TangGrandTri} + \PieceTangram[#2]<rotate=45>({2-sqrt(2)},{2-sqrt(2)}){TangGrandTri} + \PieceTangram[#2]({2},{0}){TangPara} + \PieceTangram[#2]<rotate=45>({2-1.5*sqrt(2)},{2+1.5*sqrt(2)}){TangPetTri} + \PieceTangram[#2]<xscale=1,rotate=-135>({2-0.5*sqrt(2)},{2+2.5*sqrt(2)}){TangPetTri} + \PieceTangram[#2]<rotate=90>({2-sqrt(2)},{sqrt(2)}){TangMoyTri} + }% +} + +%the swan / le cygne +\NewDocumentCommand\TangramSwan{ s O{TangPuzz} }{%*=colorcorrection,[key for pic] + \IfBooleanTF{#1}% + {% + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<yscale=-1,rotate=-45>({0},{0}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=-45>({sqrt(2)},{sqrt(2)}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=0>({sqrt(2)},{sqrt(2)}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[4]}]<rotate=0>({sqrt(2)+1},{sqrt(2)}){TangCar} + \PieceTangram[TangSol={\TanGListeCouleurs[2]}]<xscale=-1,rotate=90>({0},{0}){TangMoyTri} + \PieceTangram[TangSol={\TanGListeCouleurs[5]}]<xscale=-1,rotate=-135>({0},{2+sqrt(2)}){TangPara} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<xscale=1,rotate=0>({-1},{1+sqrt(2)}){TangPetTri} + }% + {% + \PieceTangram[#2]<yscale=-1,rotate=-45>({0},{0}){TangGrandTri} + \PieceTangram[#2]<rotate=-45>({sqrt(2)},{sqrt(2)}){TangGrandTri} + \PieceTangram[#2]({sqrt(2)},{sqrt(2)}){TangPetTri} + \PieceTangram[#2]({sqrt(2)+1},{sqrt(2)}){TangCar} + \PieceTangram[#2]<xscale=-1,rotate=90>({0},{0}){TangMoyTri} + \PieceTangram[#2]<xscale=-1,rotate=-135>({0},{2+sqrt(2)}){TangPara} + \PieceTangram[#2]<xscale=1>({-1},{1+sqrt(2)}){TangPetTri} + }% +} + +%the duck / le canard +\NewDocumentCommand\TangramDuck{ s O{TangPuzz} }{%*=colorcorrection,[key for pic] + \IfBooleanTF{#1}% + {% + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<xscale=-1,rotate=135>({0},{0}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<yscale=-1,rotate=135>({sqrt(2)},{sqrt(2)}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[4]}]<rotate=45>({2*sqrt(2)},{0}){TangCar} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=-45>({sqrt(2)},{sqrt(2)}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=90>({2.5*sqrt(2)},{0.5*sqrt(2)}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[5]}]<xscale=-1,rotate=0>({sqrt(8)+0.5*sqrt(2)},{1+0.5*sqrt(2)}){TangPara} + \PieceTangram[TangSol={\TanGListeCouleurs[2]}]({2.5*sqrt(2)-2},{2+0.5*sqrt(2)}){TangMoyTri} + }% + {% + \PieceTangram[#2]<xscale=-1,rotate=135>({0},{0}){TangGrandTri} + \PieceTangram[#2]<yscale=-1,rotate=135>({sqrt(2)},{sqrt(2)}){TangGrandTri} + \PieceTangram[#2]<rotate=45>({2*sqrt(2)},{0}){TangCar} + \PieceTangram[#2]<rotate=-45>({sqrt(2)},{sqrt(2)}){TangPetTri} + \PieceTangram[#2]<rotate=90>({2.5*sqrt(2)},{0.5*sqrt(2)}){TangPetTri} + \PieceTangram[#2]<xscale=-1,rotate=0>({sqrt(8)+0.5*sqrt(2)},{1+0.5*sqrt(2)}){TangPara} + \PieceTangram[#2]({2.5*sqrt(2)-2},{2+0.5*sqrt(2)}){TangMoyTri} + }% +} + +%the pyramid / la pyramide +\NewDocumentCommand\TangramPyramid{ s O{TangPuzz} }{%*=colorcorrection,[key for pic] + \IfBooleanTF{#1}% + {% + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<xscale=1,rotate=135>({0},{0}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<xscale=-1,rotate=135>({0},{0}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=-45>({-0.5*sqrt(2)},{0.5*sqrt(2)}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[5]}]<xscale=1,rotate=-45>({-sqrt(2)},{sqrt(2)}){TangPara} + \PieceTangram[TangSol={\TanGListeCouleurs[4]}]<rotate=45>({0.5*sqrt(2)},{0.5*sqrt(2)}){TangCar} + \PieceTangram[TangSol={\TanGListeCouleurs[2]}]<xscale=1,rotate=-135>({0},{2*sqrt(2)}){TangMoyTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<xscale=1,rotate=45>({0},{sqrt(2)}){TangPetTri} + }% + {% + \PieceTangram[#2]<xscale=1,rotate=135>({0},{0}){TangGrandTri} + \PieceTangram[#2]<xscale=-1,rotate=135>({0},{0}){TangGrandTri} + \PieceTangram[#2]<rotate=-45>({-0.5*sqrt(2)},{0.5*sqrt(2)}){TangPetTri} + \PieceTangram[#2]<xscale=1,rotate=-45>({-sqrt(2)},{sqrt(2)}){TangPara} + \PieceTangram[#2]<rotate=45>({0.5*sqrt(2)},{0.5*sqrt(2)}){TangCar} + \PieceTangram[#2]<xscale=1,rotate=-135>({0},{2*sqrt(2)}){TangMoyTri} + \PieceTangram[#2]<xscale=1,rotate=45>({0},{sqrt(2)}){TangPetTri} + }% +} + +%the rocket / la fusee +\NewDocumentCommand\TangramRocket{ s O{TangPuzz} }{%*=colorcorrection,[key for pic] + \IfBooleanTF{#1}% + {% + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=0>({0},{0}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=180>({2},{2}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[2]}]({0},{2}){TangMoyTri} + \PieceTangram[TangSol={\TanGListeCouleurs[4]}]({0.5},{-1}){TangCar} + \PieceTangram[TangSol={\TanGListeCouleurs[2]}]({-0.5},{-1}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=180>({0.5},{-1}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[5]}]<rotate=-90>({1.5},{0}){TangPara} + }% + {% + \PieceTangram[#2]<rotate=0>({0},{0}){TangGrandTri} + \PieceTangram[#2]<rotate=180>({2},{2}){TangGrandTri} + \PieceTangram[#2]({0},{2}){TangMoyTri} + \PieceTangram[#2]({0.5},{-1}){TangCar} + \PieceTangram[#2]({-0.5},{-1}){TangPetTri} + \PieceTangram[#2]<rotate=180>({0.5},{-1}){TangPetTri} + \PieceTangram[#2]<rotate=-90>({1.5},{0}){TangPara} + }% +} + +%the candle / la bougie +\NewDocumentCommand\TangramCandle{ s O{TangPuzz} }{%*=colorcorrection,[key for pic] + \IfBooleanTF{#1}% + {% + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<yscale=-1,rotate=-45>({0},{0}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=45>({0.5*sqrt(2)},{0.5*sqrt(2)}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=-135>({1.5*sqrt(2)},{1.5*sqrt(2)}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=-135>({1.5*sqrt(2)},{2.5*sqrt(2)}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[2]}]<yscale=-1>({sqrt(2)-1},{1+2*sqrt(2)}){TangMoyTri} + \PieceTangram[TangSol={\TanGListeCouleurs[4]}]({sqrt(2)-0.5},{1+2*sqrt(2)}){TangCar} + \PieceTangram[TangSol={\TanGListeCouleurs[5]}]<rotate=70>({sqrt(2)},{2+2*sqrt(2)}){TangPara} + }% + {% + \PieceTangram[#2]<yscale=-1,rotate=-45>({0},{0}){TangGrandTri} + \PieceTangram[#2]<rotate=45>({0.5*sqrt(2)},{0.5*sqrt(2)}){TangGrandTri} + \PieceTangram[#2]<rotate=-135>({1.5*sqrt(2)},{1.5*sqrt(2)}){TangPetTri} + \PieceTangram[#2]<rotate=-135>({1.5*sqrt(2)},{2.5*sqrt(2)}){TangPetTri} + \PieceTangram[#2]<yscale=-1>({sqrt(2)-1},{1+2*sqrt(2)}){TangMoyTri} + \PieceTangram[#2]({sqrt(2)-0.5},{1+2*sqrt(2)}){TangCar} + \PieceTangram[#2]<rotate=70>({sqrt(2)},{2+2*sqrt(2)}){TangPara} + }% +} + +%the shirt / la chemise +\NewDocumentCommand\TangramShirt{ s O{TangPuzz} }{%*=colorcorrection,[key for pic] + \IfBooleanTF{#1}% + {% + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=-90>({0},{2}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=90>({2},{0}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[2]}]({-1},{2}){TangMoyTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=90>({1},{2}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[4]}]({1},{2}){TangCar} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=180>({0},{2}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[5]}]<rotate=-90>({2},{3}){TangPara} + }% + {% + \PieceTangram[#2]<rotate=-90>({0},{2}){TangGrandTri} + \PieceTangram[#2]<rotate=90>({2},{0}){TangGrandTri} + \PieceTangram[#2]({-1},{2}){TangMoyTri} + \PieceTangram[#2]<rotate=90>({1},{2}){TangPetTri} + \PieceTangram[#2]({1},{2}){TangCar} + \PieceTangram[#2]<rotate=180>({0},{2}){TangPetTri} + \PieceTangram[#2]<rotate=-90>({2},{3}){TangPara} + }% +} + +%the fish / le poisson +\NewDocumentCommand\TangramFish{ s O{TangPuzz} }{%*=colorcorrection,[key for pic] + \IfBooleanTF{#1}% + {% + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<yscale=-1,rotate=-45>({0},{0}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[5]}]<rotate=-45>({0},{0}){TangPara} + \PieceTangram[TangSol={\TanGListeCouleurs[2]}]<rotate=-90>({-1},{1}){TangMoyTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=-45>({0.5*sqrt(2)},{0.5*sqrt(2)}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[4]}]<rotate=-45>({sqrt(2)},{0}){TangCar} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=-90>({1.5*sqrt(2)-2},{2+0.5*sqrt(2)}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=180>({1.5*sqrt(2)},{-0.5*sqrt(2)}){TangGrandTri} + }% + {% + \PieceTangram[#2]<yscale=-1,rotate=-45>({0},{0}){TangPetTri} + \PieceTangram[#2]<rotate=-45>({0},{0}){TangPara} + \PieceTangram[#2]<rotate=-90>({-1},{1}){TangMoyTri} + \PieceTangram[#2]<rotate=-45>({0.5*sqrt(2)},{0.5*sqrt(2)}){TangPetTri} + \PieceTangram[#2]<rotate=-45>({sqrt(2)},{0}){TangCar} + \PieceTangram[#2]<rotate=-90>({1.5*sqrt(2)-2},{2+0.5*sqrt(2)}){TangGrandTri} + \PieceTangram[#2]<rotate=180>({1.5*sqrt(2)},{-0.5*sqrt(2)}){TangGrandTri} + }% +} + +%the sailboat / le voilier +\NewDocumentCommand\TangramSailboat{ s O{TangPuzz} }{%*=colorcorrection,[key for pic] + \IfBooleanTF{#1}% + {% + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=45>({0},{0}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]({-2},{0.35}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<yscale=-1,rotate=-45>({0},{0}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[4]}]<rotate=-45>({0.5*sqrt(2)},{0.5*sqrt(2)}){TangCar} + \PieceTangram[TangSol={\TanGListeCouleurs[2]}]<yscale=-1>({-2+sqrt(2)},{0}){TangMoyTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=-90>({0},{1+2*sqrt(2)}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[5]}]<yscale=-1>({-1-2+sqrt(2)},{0}){TangPara} + }% + {% + \PieceTangram[#2]<rotate=45>({0},{0}){TangGrandTri} + \PieceTangram[#2]({-2},{0.35}){TangGrandTri} + \PieceTangram[#2]<yscale=-1,rotate=-45>({0},{0}){TangPetTri} + \PieceTangram[#2]<rotate=-45>({0.5*sqrt(2)},{0.5*sqrt(2)}){TangCar} + \PieceTangram[#2]<yscale=-1>({-2+sqrt(2)},{0}){TangMoyTri} + \PieceTangram[#2]<rotate=-90>({0},{1+2*sqrt(2)}){TangPetTri} + \PieceTangram[#2]<yscale=-1>({-1-2+sqrt(2)},{0}){TangPara} + }% +} + +%the kangaroo / le kangourou +\NewDocumentCommand\TangramKangaroo{ s O{TangPuzz} }{%*=colorcorrection,[key for pic] + \IfBooleanTF{#1}% + {% + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]({0},{0}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=180>({2},{0}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=45>({2},{-0.5}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=-90>({2},{3}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[5]}]<xscale=-1,rotate=-45>({0},{-2}){TangPara} + \PieceTangram[TangSol={\TanGListeCouleurs[2]}]({-0.5*sqrt(2)},{-2-0.5*sqrt(2)}){TangMoyTri} + \PieceTangram[TangSol={\TanGListeCouleurs[4]}]<rotate=-45>({1-0.5*sqrt(2)},{-1-0.5*sqrt(2)}){TangCar} + }% + {% + \PieceTangram[#2]({0},{0}){TangGrandTri} + \PieceTangram[#2]<rotate=180>({2},{0}){TangGrandTri} + \PieceTangram[#2]<rotate=45>({2},{-0.5}){TangPetTri} + \PieceTangram[#2]<rotate=-90>({2},{3}){TangPetTri} + \PieceTangram[#2]<xscale=-1,rotate=-45>({0},{-2}){TangPara} + \PieceTangram[#2]({-0.5*sqrt(2)},{-2-0.5*sqrt(2)}){TangMoyTri} + \PieceTangram[#2]<rotate=-45>({1-0.5*sqrt(2)},{-1-0.5*sqrt(2)}){TangCar} + }% +} + +%the dog / le chien +\NewDocumentCommand\TangramDog{ s O{TangPuzz} }{%*=colorcorrection,[key for pic] + \IfBooleanTF{#1}% + {% + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<yscale=-1,rotate=-90>({0},{0}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[5]}]<xscale=-1,rotate=-60>({0},{1.75}){TangPara} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=-135>({0.5*sqrt(2)},{0.5*sqrt(2)}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]({0.5*sqrt(2)},{0.5*sqrt(2)}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[2]}]<rotate=-45>({2-0.5*sqrt(2)},{0.5*sqrt(2)}){TangMoyTri} + \PieceTangram[TangSol={\TanGListeCouleurs[4]}]<rotate=45>({2.5},{2.5}){TangCar} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=-45>({2.5},{2.5+sqrt(2)}){TangPetTri} + }% + {% + \PieceTangram[#2]<yscale=-1,rotate=-90>({0},{0}){TangGrandTri} + \PieceTangram[#2]<xscale=-1,rotate=-60>({0},{1.75}){TangPara} + \PieceTangram[#2]<rotate=-135>({0.5*sqrt(2)},{0.5*sqrt(2)}){TangPetTri} + \PieceTangram[#2]({0.5*sqrt(2)},{0.5*sqrt(2)}){TangGrandTri} + \PieceTangram[#2]<rotate=-45>({2-0.5*sqrt(2)},{0.5*sqrt(2)}){TangMoyTri} + \PieceTangram[#2]<rotate=45>({2.5},{2.5}){TangCar} + \PieceTangram[#2]<rotate=-45>({2.5},{2.5+sqrt(2)}){TangPetTri} + }% +} + +%macros for tangram creation / commandes pour créer le tangram +\NewDocumentCommand\TangramTikzCreateEN{ m }{% + \readlist*\TanGListeCouleurs{\TangColors}% + \ifboolKV[TGRMTikz]{Puzzle}{#1[TangPuzz={\TangColor}]}{}% + \ifboolKV[TGRMTikz]{Correction}{#1[TangSol={\TangColor}]}{}% + \ifboolKV[TGRMTikz]{ColorCorrection}{#1*}{}% +} +\NewDocumentCommand\TangramTikzCreateFR{ m }{% + \readlist*\TanGListeCouleurs{\TangCouleurs}% + \ifboolKV[TGRMTikz]{Puzzle}{#1[TangPuzz={\TangCouleur}]}{}% + \ifboolKV[TGRMTikz]{Correction}{#1[TangSol={\TangCouleur}]}{}% + \ifboolKV[TGRMTikz]{CorrectionCouleur}{#1*}{}% +} + +\defKV[TGRMTikz]{%keys [en] and [fr] + ListeCouleurs=\xdef\TangCouleurs{#1}, + ColorList=\xdef\TangColors{#1},% + Couleur=\xdef\TangCouleur{#1},% + Color=\xdef\TangColor{#1},% + Sep=\xdef\TangBorder{#1} +} +\setKVdefault[TGRMTikz]{%keys by default [en] and [fr] + Puzzle=true,% + Correction=false,% + ColorCorrection=false,% + CorrectionCouleur=false,% + ListeCouleurs={red,orange,blue,green,purple},% + ColorList={red,orange,blue,green,purple},% + Couleur=black,% + Color=black,% + Sep=1pt +} + +%the independent command / la commande autonome +\NewDocumentCommand\TangramTikz{ O{} D<>{} m }{% + \useKVdefault[TGRMTikz]% + \setKV[TGRMTikz]{#1}% + \begin{tikzpicture}[line join=bevel,#2]% + %SQUARE + \IfStrEq{#3}{Square}{\TangramTikzCreateEN{\TangramSquare}}{}% + \IfStrEq{#3}{Carre}{\TangramTikzCreateFR{\TangramSquare}}{}% + %PINGUIN + \IfStrEq{#3}{Pinguin}{\TangramTikzCreateEN{\TangramPinguin}}{}% + \IfStrEq{#3}{Pingouin}{\TangramTikzCreateFR{\TangramPinguin}}{}% + %BOAT + \IfStrEq{#3}{Boat}{\TangramTikzCreateEN{\TangramBoat}}{}% + \IfStrEq{#3}{Bateau}{\TangramTikzCreateFR{\TangramBoat}}{}% + %HOME + \IfStrEq{#3}{Home}{\TangramTikzCreateEN{\TangramHome}}{}% + \IfStrEq{#3}{Maison}{\TangramTikzCreateFR{\TangramHome}}{}% + %FIRTREE + \IfStrEq{#3}{FirTree}{\TangramTikzCreateEN{\TangramFirTree}}{}% + \IfStrEq{#3}{Sapin}{\TangramTikzCreateFR{\TangramFirTree}}{}% + %CAT + \IfStrEq{#3}{Cat}{\TangramTikzCreateEN{\TangramCat}}{}% + \IfStrEq{#3}{Chat}{\TangramTikzCreateFR{\TangramCat}}{}% + %SWAN + \IfStrEq{#3}{Swan}{\TangramTikzCreateEN{\TangramSwan}}{}% + \IfStrEq{#3}{Cygne}{\TangramTikzCreateFR{\TangramSwan}}{}% + %PYRAMID + \IfStrEq{#3}{Pyramid}{\TangramTikzCreateEN{\TangramPyramid}}{}% + \IfStrEq{#3}{Pyramide}{\TangramTikzCreateFR{\TangramPyramid}}{}% + %DUCK + \IfStrEq{#3}{Duck}{\TangramTikzCreateEN{\TangramDuck}}{}% + \IfStrEq{#3}{Canard}{\TangramTikzCreateFR{\TangramDuck}}{}% + %ROCKET + \IfStrEq{#3}{Rocket}{\TangramTikzCreateEN{\TangramRocket}}{}% + \IfStrEq{#3}{Fusee}{\TangramTikzCreateFR{\TangramRocket}}{}% + %CANDLE + \IfStrEq{#3}{Candle}{\TangramTikzCreateEN{\TangramCandle}}{}% + \IfStrEq{#3}{Bougie}{\TangramTikzCreateFR{\TangramCandle}}{}% + %SHIRT + \IfStrEq{#3}{Shirt}{\TangramTikzCreateEN{\TangramShirt}}{}% + \IfStrEq{#3}{Chemise}{\TangramTikzCreateFR{\TangramShirt}}{}% + %FISH + \IfStrEq{#3}{Fish}{\TangramTikzCreateEN{\TangramFish}}{}% + \IfStrEq{#3}{Poisson}{\TangramTikzCreateFR{\TangramFish}}{}% + %SAILBOAT + \IfStrEq{#3}{Sailboat}{\TangramTikzCreateEN{\TangramSailboat}}{}% + \IfStrEq{#3}{Voilier}{\TangramTikzCreateFR{\TangramSailboat}}{}% + %KANGAROO + \IfStrEq{#3}{Kangaroo}{\TangramTikzCreateEN{\TangramKangaroo}}{}% + \IfStrEq{#3}{Kangourou}{\TangramTikzCreateFR{\TangramKangaroo}}{}% + %DOG + \IfStrEq{#3}{Dog}{\TangramTikzCreateEN{\TangramDog}}{}% + \IfStrEq{#3}{Chien}{\TangramTikzCreateFR{\TangramDog}}{}% + \end{tikzpicture}% +} + +%manual creation / creation manuelle +\NewDocumentCommand\PieceTangram{ O{TangPuzz} D<>{} D(){0,0} m }{%booléen+options pic+place pic+nom piece + \pic[#1,#2] at (#3) {#4};% +} +\NewDocumentEnvironment{EnvTangramTikz}{ O{} D<>{} }% +{% + \useKVdefault[TGRMTikz]% + \setKV[TGRMTikz]{#1}% + \begin{tikzpicture}[line join=bevel,#2]% +}% +{% + \end{tikzpicture}% +} + +\endinput
\ No newline at end of file |