diff options
Diffstat (limited to 'macros/latex/contrib/profcollege/latex/PfCFutoshiki.tex')
-rw-r--r-- | macros/latex/contrib/profcollege/latex/PfCFutoshiki.tex | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/macros/latex/contrib/profcollege/latex/PfCFutoshiki.tex b/macros/latex/contrib/profcollege/latex/PfCFutoshiki.tex new file mode 100644 index 0000000000..4603265e0e --- /dev/null +++ b/macros/latex/contrib/profcollege/latex/PfCFutoshiki.tex @@ -0,0 +1,87 @@ +%%% +% Futoshiki +%%% +\setKVdefault[Futo]{Largeur=15pt,Solution=false,CouleurSolution=Black,CouleurCase=Cornsilk,StyleTexte={}} + +\newlength\PfCFutoHeight + +\NewDocumentCommand\Futoshiki{o m}{% + \useKVdefault[Futo] + \setKV[Futo]{#1}% + \setlength{\PfCFutoHeight}{\useKV[Futo]{Largeur}+\tabcolsep}% + \setsepchar{\\/,}% + \readlist\ListeFuto{#2}% + \xdef\PfCTailleFuto{\ListeFutolen}% + \def\PfCFutoStyleTexte{\useKV[Futo]{StyleTexte}}% + \colorlet{PfCFutoCase}{\useKV[Futo]{CouleurCase}}% + \begin{NiceTabular}{*{\fpeval{\PfCTailleFuto-1}}{m{\useKV[Futo]{Largeur}}m{5pt}}m{\useKV[Futo]{Largeur}}}%[hvlines] + \xintFor* ##1 in{\xintSeq{1}{\PfCTailleFuto}}\do{% + \xintFor* ##2 in{\xintSeq{1}{\PfCTailleFuto}}\do{% + \rule{0pt}{\PfCFutoHeight}% + \StrChar{\ListeFuto[##1,\fpeval{2*##2-1}]}{1}[\PfCCaracFuto]% + \IfStrEq{\PfCCaracFuto}{*}{% + \StrGobbleLeft{\ListeFuto[##1,\fpeval{2*##2-1}]}{1}[\PfCResteFuto]% + \Block[draw]{}{\PfCFutoStyleTexte\PfCResteFuto}% + }{% + \IfStrEq{\PfCCaracFuto}{!}{% + \StrGobbleLeft{\ListeFuto[##1,\fpeval{2*##2-1}]}{1}[\PfCResteFuto]% + \Block[draw,fill=PfCFutoCase]{}{\PfCFutoStyleTexte\PfCResteFuto}% + }{% + \ifboolKV[Futo]{Solution}{\Block[draw]{}{\PfCFutoStyleTexte\color{\useKV[Futo]{CouleurSolution}}\ListeFuto[##1,\fpeval{2*##2-1}]}}{\Block[draw]{}{}}% + }% + }% + \xintifForLast{}{&&}% + }\\ + \rule{0pt}{\fpeval{5pt+\tabcolsep}pt}\Block[]{}{}\\ + }% + \CodeAfter%Pour écrire les symboles + \xintFor* ##1 in{\xintSeq{1}{\PfCTailleFuto}}\do{% + \xintFor* ##2 in{\xintSeq{1}{\PfCTailleFuto}}\do{% + \IfStrEq{\ListeFuto[##1,2*##2]}{>}{% + \tikz{% + \draw[transform canvas={xshift=\fpeval{2pt+0.5\tabcolsep}pt}] (\fpeval{2*##1-1}-|\fpeval{2*##2})--(\fpeval{2*##1-0.5}-|\fpeval{2*##2+0.5})--(\fpeval{2*##1}-|\fpeval{2*##2}); + }% + }{}% + \IfStrEq{\ListeFuto[##1,2*##2]}{<}{% + \tikz{% + \draw[transform canvas={xshift=\fpeval{2pt+0.5\tabcolsep}pt}] (\fpeval{2*##1-1}-|\fpeval{2*##2+0.5})--(\fpeval{2*##1-0.5}-|\fpeval{2*##2})--(\fpeval{2*##1}-|\fpeval{2*##2+0.5}); + }% + }{}% + \IfStrEq{\ListeFuto[##1,2*##2]}{v}{% + \tikz{% + \draw[transform canvas={yshift=\fpeval{2pt+0.5\tabcolsep}pt}] (\fpeval{2*##1-1.5}-|\fpeval{2*##2-1})--(\fpeval{2*##1-1}-|\fpeval{2*##2-0.5})--(\fpeval{2*##1-1.5}-|\fpeval{2*##2}); + }% + }{}% + \IfStrEq{\ListeFuto[##1,2*##2]}{A}{% + \tikz{% + \draw[transform canvas={yshift=\fpeval{2pt+0.5\tabcolsep}pt}] (\fpeval{2*##1-1}-|\fpeval{2*##2-1})--(\fpeval{2*##1-1.5}-|\fpeval{2*##2-0.5})--(\fpeval{2*##1-1}-|\fpeval{2*##2}); + }% + }{}% + \IfStrEq{\ListeFuto[##1,2*##2]}{>A}{% + \tikz{% + \draw[transform canvas={xshift=\fpeval{2pt+0.5\tabcolsep}pt}] (\fpeval{2*##1-1}-|\fpeval{2*##2})--(\fpeval{2*##1-0.5}-|\fpeval{2*##2+0.5})--(\fpeval{2*##1}-|\fpeval{2*##2}); + \draw[transform canvas={yshift=\fpeval{2pt+0.5\tabcolsep}pt}] (\fpeval{2*##1-1}-|\fpeval{2*##2-1})--(\fpeval{2*##1-1.5}-|\fpeval{2*##2-0.5})--(\fpeval{2*##1-1}-|\fpeval{2*##2}); + }% + }{}% + \IfStrEq{\ListeFuto[##1,2*##2]}{>v}{% + \tikz{% + \draw[transform canvas={xshift=\fpeval{2pt+0.5\tabcolsep}pt}] (\fpeval{2*##1-1}-|\fpeval{2*##2})--(\fpeval{2*##1-0.5}-|\fpeval{2*##2+0.5})--(\fpeval{2*##1}-|\fpeval{2*##2}); + \draw[transform canvas={yshift=\fpeval{2pt+0.5\tabcolsep}pt}] (\fpeval{2*##1-1.5}-|\fpeval{2*##2-1})--(\fpeval{2*##1-1}-|\fpeval{2*##2-0.5})--(\fpeval{2*##1-1.5}-|\fpeval{2*##2}); + }% + }{}% + \IfStrEq{\ListeFuto[##1,2*##2]}{<A}{% + \tikz{% + \draw[transform canvas={xshift=\fpeval{2pt+0.5\tabcolsep}pt}] (\fpeval{2*##1-1}-|\fpeval{2*##2+0.5})--(\fpeval{2*##1-0.5}-|\fpeval{2*##2})--(\fpeval{2*##1}-|\fpeval{2*##2+0.5}); + \draw[transform canvas={yshift=\fpeval{2pt+0.5\tabcolsep}pt}] (\fpeval{2*##1-1}-|\fpeval{2*##2-1})--(\fpeval{2*##1-1.5}-|\fpeval{2*##2-0.5})--(\fpeval{2*##1-1}-|\fpeval{2*##2}); + }% + }{}% + \IfStrEq{\ListeFuto[##1,2*##2]}{<v}{% + \tikz{% + \draw[transform canvas={xshift=\fpeval{2pt+0.5\tabcolsep}pt}] (\fpeval{2*##1-1}-|\fpeval{2*##2+0.5})--(\fpeval{2*##1-0.5}-|\fpeval{2*##2})--(\fpeval{2*##1}-|\fpeval{2*##2+0.5}); + \draw[transform canvas={yshift=\fpeval{2pt+0.5\tabcolsep}pt}] (\fpeval{2*##1-1.5}-|\fpeval{2*##2-1})--(\fpeval{2*##1-1}-|\fpeval{2*##2-0.5})--(\fpeval{2*##1-1.5}-|\fpeval{2*##2}); + }% + }{}% + }% + }% + \end{NiceTabular} +}%
\ No newline at end of file |