summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/profcollege/latex/PfCFutoshiki.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/profcollege/latex/PfCFutoshiki.tex')
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCFutoshiki.tex87
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