summaryrefslogtreecommitdiff
path: root/graphics/pgf/contrib/scrabble
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-01-07 03:07:46 +0000
committerNorbert Preining <norbert@preining.info>2023-01-07 03:07:46 +0000
commitc946b2e792715f6030486d5214be1df081de37a8 (patch)
treecd461cb5c2d7834ca03fbeee84717ed2dcb2b14b /graphics/pgf/contrib/scrabble
parent90bcf28fa05846213901e6a0fff80656a13bc701 (diff)
CTAN sync 202301070307
Diffstat (limited to 'graphics/pgf/contrib/scrabble')
-rw-r--r--graphics/pgf/contrib/scrabble/README.md9
-rw-r--r--graphics/pgf/contrib/scrabble/doc/Scrabble-doc-en.pdfbin0 -> 404455 bytes
-rw-r--r--graphics/pgf/contrib/scrabble/doc/Scrabble-doc-en.tex315
-rw-r--r--graphics/pgf/contrib/scrabble/doc/Scrabble-doc-fr.pdfbin0 -> 407403 bytes
-rw-r--r--graphics/pgf/contrib/scrabble/doc/Scrabble-doc-fr.tex315
-rw-r--r--graphics/pgf/contrib/scrabble/tex/Scrabble.sty388
6 files changed, 1027 insertions, 0 deletions
diff --git a/graphics/pgf/contrib/scrabble/README.md b/graphics/pgf/contrib/scrabble/README.md
new file mode 100644
index 0000000000..bb766c69d0
--- /dev/null
+++ b/graphics/pgf/contrib/scrabble/README.md
@@ -0,0 +1,9 @@
+Scrabble is a package to work with the Scrabble Board Game, simple or with words.
+-------------------------------------------------------------------------------------
+Scrabble est un package pour représenter un plateau de Scrabble, avec mots éventuels.
+-------------------------------------------------------------------------------------
+Author : Cédric Pierquet
+email : cpierquet@outlook.fr
+Licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
+Inspiration : Mark Wibrow in https://tex.stackexchange.com/questions/194780/tikz-drawing-a-rectangle-with-spikes-on-borders
+Scrabble is a Trademark from Hasbro and Mattel \ No newline at end of file
diff --git a/graphics/pgf/contrib/scrabble/doc/Scrabble-doc-en.pdf b/graphics/pgf/contrib/scrabble/doc/Scrabble-doc-en.pdf
new file mode 100644
index 0000000000..86e9cf4182
--- /dev/null
+++ b/graphics/pgf/contrib/scrabble/doc/Scrabble-doc-en.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/scrabble/doc/Scrabble-doc-en.tex b/graphics/pgf/contrib/scrabble/doc/Scrabble-doc-en.tex
new file mode 100644
index 0000000000..f4a24474f3
--- /dev/null
+++ b/graphics/pgf/contrib/scrabble/doc/Scrabble-doc-en.tex
@@ -0,0 +1,315 @@
+% !TeX TXS-program:compile = txs:///arara
+% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode}
+% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
+
+\documentclass{article}
+\usepackage[english]{babel}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{Scrabble}
+\usepackage[upright]{fourier}
+\usepackage[scaled=0.875]{helvet}
+\renewcommand\ttdefault{lmtt}
+\usepackage[scaled=0.875]{cabin}
+\usepackage{amsmath,amssymb}
+\usepackage{fontawesome5}
+\usepackage{enumitem}
+\usepackage{tabularray}
+\usepackage{fancyvrb}
+\usepackage{fancyhdr}
+\fancyhf{}
+\renewcommand{\headrulewidth}{0pt}
+\lfoot{\sffamily\small [Scrabble]}
+\cfoot{\sffamily\small - \thepage{} -}
+\rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}}
+
+\usepackage{hvlogos}
+\usepackage{hyperref}
+\urlstyle{same}
+\hypersetup{pdfborder=0 0 0}
+\usepackage[margin=1.5cm]{geometry}
+\setlength{\parindent}{0pt}
+\definecolor{LightGray}{gray}{0.9}
+
+\def\TPversion{0.1.1}
+\def\TPdate{06/01/2023}
+
+\usepackage[most]{tcolorbox}
+\tcbuselibrary{minted}
+\NewTCBListing{PresentationCode}{ O{blue} m }{%
+ sharp corners=downhill,enhanced,arc=12pt,skin=bicolor,%
+ colback=#1!1!white,colframe=#1!75!black,colbacklower=white,%
+ attach boxed title to top right={yshift=-\tcboxedtitleheight},title=Code \LaTeX,%
+ boxed title style={%
+ colframe=#1!75!black,colback=#1!15!white,%
+ ,sharp corners=downhill,arc=12pt,%
+ },%
+ fonttitle=\color{#1!90!black}\itshape\ttfamily\footnotesize,%
+ listing engine=minted,minted style=colorful,
+ minted language=tex,minted options={tabsize=4,fontsize=\footnotesize,autogobble},
+ #2
+}
+
+\newcommand\Cle[1]{{\bfseries\sffamily\textlangle #1\textrangle}}
+
+\begin{document}
+
+\pagestyle{fancy}
+
+\thispagestyle{empty}
+
+\vspace{2cm}
+
+\begin{center}
+ \begin{minipage}{0.75\linewidth}
+ \begin{tcolorbox}[colframe=yellow,colback=yellow!15]
+ \begin{center}
+ \begin{tabular}{c}
+ {\Huge \texttt{Scrabble [en]}}\\
+ \\
+ {\LARGE A bord of Scrabble,} \\
+ \\
+ {\LARGE with words or not.} \\
+ \\
+ {Scrabble\texttrademark{}, from Hasbro\texttrademark{} and Mattel\texttrademark{}.}
+ \end{tabular}
+
+ \medskip
+
+ {\small \texttt{Version \TPversion{} -- \TPdate}}
+ \end{center}
+ \end{tcolorbox}
+\end{minipage}
+\end{center}
+
+\vspace{0.5cm}
+
+\begin{center}
+ \begin{tabular}{c}
+ \texttt{Cédric Pierquet}\\
+ {\ttfamily c pierquet -- at -- outlook . fr}\\
+ \texttt{\url{https://github.com/cpierquet/Scrabble}}
+\end{tabular}
+\end{center}
+
+\vspace{0.5cm}
+
+{$\blacktriangleright$~~Some commands to display a Scrabble board, with or without words.}
+
+\smallskip
+
+{$\blacktriangleright$~~English, French, German or Spanish version for points and labels.}
+
+\smallskip
+
+{$\blacktriangleright$~~Idas from \url{https://tex.stackexchange.com/questions/194780/tikz-drawing-a-rectangle-with-spikes-on-borders}}
+
+\vspace{0.5cm}
+
+\begin{center}
+ \ScrabbleBoard[Scale=0.5]
+ ~~~~
+ \begin{EnvScrabble}[Scale=0.5]
+ \ScrabblePutWord{T,I,K,Z}{1,13}
+ \ScrabblePutWord[V]{P,S,T,R,I,C,K,S}{1,15}
+ \ScrabblePutWord[V]{K,A,T,E,X}{3,13}
+ \ScrabblePutWord{C,L,E,V,E,R,E,F}{1,10}
+ \ScrabblePutWord[V]{M,E,T,A,P,O,S,T}{7,11}
+ \ScrabblePutWord{L,U,A,L,A,T,E,X}{5,8}
+ \ScrabblePutWord[V]{P,R,O,F,L,Y,*,E,E}{11,15}
+ \ScrabblePutWord{P,R,O,F,C,O,L,L,E,*,E}{1,1}
+ \ScrabblePutWord{S,Y,N,T,A,X,E}{7,5}
+ \ScrabblePutWord[V]{S,T,R,I,N,*}{10,6}
+ \end{EnvScrabble}
+\end{center}
+
+\vspace{0.5cm}
+
+\hfill{}\textit{Thanks to french members of group \faFacebook{} " Coin \LaTeX{} " for help an aideas !}
+
+\vfill
+
+\hrule
+
+\medskip
+
+\begin{tblr}{width=\linewidth,colspec={X[c]X[c]X[c]X[c]X[c]X[c]},cells={font=\sffamily}}
+{\huge \LaTeX} & & & & &\\
+& {\huge \pdfLaTeX} & & & & \\
+& & {\huge \LuaLaTeX} & & & \\
+& & & {\huge \TikZ} & & \\
+& & & & {\huge \TeXLive} & \\
+& & & & & {\huge \MiKTeX} \\
+\end{tblr}
+
+\medskip
+
+\hrule
+
+\medskip
+
+\newpage
+
+\part*{History}
+
+\verb|v0.1.1|~:~~~~Option \textsf{[fr]} pour french commands
+
+\verb|v0.1 |~:~~~~Initial version
+
+\part*{Introduction}
+
+\section{The Scrabble package}
+
+\subsection{Source}
+
+Some ideas are from \url{https://tex.stackexchange.com/questions/194780/tikz-drawing-a-rectangle-with-spikes-on-borders}, with propostion from Mark Wibrow.
+
+\smallskip
+
+This package is \textit{build} within styles and ideas from Mark Wibrow.
+
+\subsection{Loading of the package, used packages}
+
+The package \textsf{Scrabble} loads within the preamble :
+
+\begin{PresentationCode}{listing only}
+\usepackage{Scrabble}
+\end{PresentationCode}
+
+It's mostly compatible with \textsf{latex}, \textsf{pdflatex}, \textsf{lualatex} or \textsf{xelatex} compilation !
+
+\medskip
+
+It loads the following packages and libraries :
+
+\begin{itemize}
+ \item \texttt{tikz} with \Cle{calc} with the tikzlibraries \Cle{calc} and \Cle{shapes.geometric} ;
+ \item \texttt{pgf} and \texttt{pgffor} ;
+ \item \texttt{xstring} ;
+ \item \texttt{xparse} ;
+ \item \texttt{simplekv}.
+\end{itemize}
+
+\subsection{The package itself}
+
+The idea is to, thanks to \TikZ, propose commands or environments to display a Scrabble\texttrademark{} board :
+
+\begin{itemize}
+ \item \textit{independant} ;
+ \item in an \textit{environement} with words.
+\end{itemize}
+
+\begin{PresentationCode}{listing only}
+%independant command for the empty board
+\ScrabbleBoard<language>[keys]
+
+%environmentt with word(s)
+\begin{EnvScrabble}<language>[keys]
+ \ScrabblePutWord[orientation]{l,e,t,t,e,r,s}{coordinates of the beginning cell}
+\end{EnvScrabble}
+\end{PresentationCode}
+
+\subsection{Languages}
+
+The \textsf{commands}, \textsf{environments} et \textsf{keys} are in english, but cells can be displayed in :
+
+\begin{itemize}
+ \item english ;
+ \item french ;
+ \item german ;
+ \item spanish.
+\end{itemize}
+
+\pagebreak
+
+\section{Commands, keys and options}
+
+\subsection{The board, standalone}
+
+The first argument, \textit{optional}, between \texttt{<...>} is the \Cle{langage} of the display, form the list :
+
+\hfill\Cle{EN} (english, default), \Cle{FR} (french), \Cle{GE} (german) et \Cle{SP} (spanish).\hfill~
+
+\smallskip
+
+The second argument, \textit{optional}, between \texttt{[...]} give the \Cle{keys} :
+
+\begin{itemize}
+ \item \Cle{Scale} for the display (the initial unit is 1~cm) ; \hfill~default : \Cle{1}
+ \item the boolean \Cle{Border} pour print a border outside the board ; \hfill~default : \Cle{true}
+ \item the boolean \Cle{Labels} to print \textit{names} of the special cells ;\hfill~defalut : \Cle{true}
+ \item the boolean \Cle{Help} pour print numbers to reperate th cells ;\hfill~default : \Cle{false}
+\end{itemize}
+
+\begin{PresentationCode}{}
+%board without cell's names
+\ScrabbleBoard[Labels=false,Scale=0.55]\\
+%board in spanisch
+\ScrabbleBoard<SP>[Scale=0.55,Cadre=false]
+\end{PresentationCode}
+
+\newpage
+
+\subsection{The board with words}
+
+Here we can use the \textsf{environement} with the specific \textsf{command} in order to print words on the board.
+
+\smallskip
+
+For the \textit{environment}, the options are the same as for the independant \textsf{command} !
+
+\smallskip
+
+For putting word on the board :
+
+\begin{itemize}
+ \item the first argument, \textit{optional}, between \texttt{[...]} is the orientation of the word, \Cle{H} (by default) or \Cle{V} ;
+ \item the second argument, \textit{mandatory}, between \texttt{\{...\}}, is the list of the letters, separate by " \texttt{,} " ;
+ \item the last argument, \textit{mandatory}, between \texttt{\{...\}}, is the coordinates of the first cell for fisrt lettre (the cell (1;\,1) is south-west corner).
+\end{itemize}
+
+\textbf{Observation 1 :} the chosen language will display the right points in the til !
+
+\smallskip
+
+\textbf{Observation 2 :} the \textit{white} (or \textit{joker}) is coded by the character \texttt{*}.
+
+\begin{PresentationCode}{}
+\begin{EnvScrabble}[Scale=0.75,Labels=false,Help]
+ \ScrabblePutWord{T,I,K,Z}{1,13}
+ \ScrabblePutWord[V]{P,S,T,R,I,C,K,S}{1,15}
+ \ScrabblePutWord[V]{K,A,T,E,X}{3,13}
+ \ScrabblePutWord{C,L,E,V,E,R,E,F}{1,10}
+ \ScrabblePutWord[V]{M,E,T,A,P,O,S,T}{7,11}
+ \ScrabblePutWord{L,U,A,L,A,T,E,X}{5,8}
+ \ScrabblePutWord[V]{P,R,O,F,L,Y,*,E,E}{11,15}
+ \ScrabblePutWord{P,R,O,F,C,O,L,L,E,*,E}{1,1}
+ \ScrabblePutWord{S,Y,N,T,A,X,E}{7,5}
+ \ScrabblePutWord[V]{S,T,R,I,N,*}{10,6}
+\end{EnvScrabble}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+\begin{EnvScrabble}<EN>[Scale=0.55]
+ \ScrabblePutWord{T,I,K,Z}{1,13}
+ \ScrabblePutWord[V]{P,S,T,R,I,C,K,S}{1,15}
+ \draw (7,15) node[font=\LARGE\sffamily] {English version} ;
+\end{EnvScrabble}~~~
+\begin{EnvScrabble}<FR>[Scale=0.55]
+ \ScrabblePutWord{T,I,K,Z}{1,13}
+ \ScrabblePutWord[V]{P,S,T,R,I,C,K,S}{1,15}
+ \draw (7,15) node[font=\LARGE\sffamily] {French version} ;
+\end{EnvScrabble}\\
+\begin{EnvScrabble}<GE>[Scale=0.55]
+ \ScrabblePutWord{T,I,K,Z}{1,13}
+ \ScrabblePutWord[V]{P,S,T,R,I,C,K,S}{1,15}
+ \draw (7,15) node[font=\LARGE\sffamily] {German version} ;
+\end{EnvScrabble}~~~
+\begin{EnvScrabble}<SP>[Scale=0.55]
+ \ScrabblePutWord{L,A,T,E,X}{1,14}
+ \ScrabblePutWord[V]{M,A,D,R,I,D}{2,15}
+ \draw (7,15) node[font=\LARGE\sffamily] {Spanish vesion} ;
+\end{EnvScrabble}
+\end{PresentationCode}
+
+\end{document} \ No newline at end of file
diff --git a/graphics/pgf/contrib/scrabble/doc/Scrabble-doc-fr.pdf b/graphics/pgf/contrib/scrabble/doc/Scrabble-doc-fr.pdf
new file mode 100644
index 0000000000..21e1001763
--- /dev/null
+++ b/graphics/pgf/contrib/scrabble/doc/Scrabble-doc-fr.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/scrabble/doc/Scrabble-doc-fr.tex b/graphics/pgf/contrib/scrabble/doc/Scrabble-doc-fr.tex
new file mode 100644
index 0000000000..2d07473c8c
--- /dev/null
+++ b/graphics/pgf/contrib/scrabble/doc/Scrabble-doc-fr.tex
@@ -0,0 +1,315 @@
+% !TeX TXS-program:compile = txs:///arara
+% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode}
+% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
+
+\documentclass{article}
+\usepackage[french]{babel}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[fr]{Scrabble}
+\usepackage[upright]{fourier}
+\usepackage[scaled=0.875]{helvet}
+\renewcommand\ttdefault{lmtt}
+\usepackage[scaled=0.875]{cabin}
+\usepackage{amsmath,amssymb}
+\usepackage{fontawesome5}
+\usepackage{enumitem}
+\usepackage{tabularray}
+\usepackage{fancyvrb}
+\usepackage{fancyhdr}
+\fancyhf{}
+\renewcommand{\headrulewidth}{0pt}
+\lfoot{\sffamily\small [Scrabble]}
+\cfoot{\sffamily\small - \thepage{} -}
+\rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}}
+
+\usepackage{hvlogos}
+\usepackage{hyperref}
+\urlstyle{same}
+\hypersetup{pdfborder=0 0 0}
+\usepackage[margin=1.5cm]{geometry}
+\setlength{\parindent}{0pt}
+\definecolor{LightGray}{gray}{0.9}
+
+\def\TPversion{0.1.1}
+\def\TPdate{6 Janvier 2023}
+
+\usepackage[most]{tcolorbox}
+\tcbuselibrary{minted}
+\NewTCBListing{PresentationCode}{ O{blue} m }{%
+ sharp corners=downhill,enhanced,arc=12pt,skin=bicolor,%
+ colback=#1!1!white,colframe=#1!75!black,colbacklower=white,%
+ attach boxed title to top right={yshift=-\tcboxedtitleheight},title=Code \LaTeX,%
+ boxed title style={%
+ colframe=#1!75!black,colback=#1!15!white,%
+ ,sharp corners=downhill,arc=12pt,%
+ },%
+ fonttitle=\color{#1!90!black}\itshape\ttfamily\footnotesize,%
+ listing engine=minted,minted style=colorful,
+ minted language=tex,minted options={tabsize=4,fontsize=\footnotesize,autogobble},
+ #2
+}
+
+\newcommand\Cle[1]{{\bfseries\sffamily\textlangle #1\textrangle}}
+
+\begin{document}
+
+\pagestyle{fancy}
+
+\thispagestyle{empty}
+
+\vspace{2cm}
+
+\begin{center}
+ \begin{minipage}{0.75\linewidth}
+ \begin{tcolorbox}[colframe=yellow,colback=yellow!15]
+ \begin{center}
+ \begin{tabular}{c}
+ {\Huge \texttt{Scrabble [fr]}}\\
+ \\
+ {\LARGE Un plateau de Scrabble,} \\
+ \\
+ {\LARGE avec mots ou non.} \\
+ \\
+ {Scrabble\texttrademark{} est une marque déposée de Hasbro\texttrademark{} et Mattel\texttrademark{}.}
+ \end{tabular}
+
+ \medskip
+
+ {\small \texttt{Version \TPversion{} -- \TPdate}}
+ \end{center}
+ \end{tcolorbox}
+\end{minipage}
+\end{center}
+
+\vspace{0.5cm}
+
+\begin{center}
+ \begin{tabular}{c}
+ \texttt{Cédric Pierquet}\\
+ {\ttfamily c pierquet -- at -- outlook . fr}\\
+ \texttt{\url{https://github.com/cpierquet/Scrabble}}
+\end{tabular}
+\end{center}
+
+\vspace{0.5cm}
+
+{$\blacktriangleright$~~Quelques commandes pour afficher un plateau de Scrabble, avec ou sans mots.}
+
+\smallskip
+
+{$\blacktriangleright$~~Possibilité de mettre le plateau et les points pour les versions Française, Anglaise, Allemande et Espagnole.}
+
+\smallskip
+
+{$\blacktriangleright$~~Idée(s) venant de \url{https://tex.stackexchange.com/questions/194780/tikz-drawing-a-rectangle-with-spikes-on-borders}}
+
+\vspace{0.5cm}
+
+\begin{center}
+ \PlateauScrabble[Echelle=0.5]
+ ~~~~
+ \begin{EnvScrabble}[Echelle=0.5]
+ \ScrabblePlaceMot{T,I,K,Z}{1,13}
+ \ScrabblePlaceMot[V]{P,S,T,R,I,C,K,S}{1,15}
+ \ScrabblePlaceMot[V]{K,A,T,E,X}{3,13}
+ \ScrabblePlaceMot{C,L,E,V,E,R,E,F}{1,10}
+ \ScrabblePlaceMot[V]{M,E,T,A,P,O,S,T}{7,11}
+ \ScrabblePlaceMot{L,U,A,L,A,T,E,X}{5,8}
+ \ScrabblePlaceMot[V]{P,R,O,F,L,Y,*,E,E}{11,15}
+ \ScrabblePlaceMot{P,R,O,F,C,O,L,L,E,*,E}{1,1}
+ \ScrabblePlaceMot{S,Y,N,T,A,X,E}{7,5}
+ \ScrabblePlaceMot[V]{S,T,R,I,N,*}{10,6}
+ \end{EnvScrabble}
+\end{center}
+
+\vspace{0.5cm}
+
+\hfill{}\textit{Merci aux membres du groupe \faFacebook{} du \og Coin \LaTeX{} \fg{} pour leur aide et leurs idées !}
+
+\vfill
+
+\hrule
+
+\medskip
+
+\begin{tblr}{width=\linewidth,colspec={X[c]X[c]X[c]X[c]X[c]X[c]},cells={font=\sffamily}}
+{\huge \LaTeX} & & & & &\\
+& {\huge \pdfLaTeX} & & & & \\
+& & {\huge \LuaLaTeX} & & & \\
+& & & {\huge \TikZ} & & \\
+& & & & {\huge \TeXLive} & \\
+& & & & & {\huge \MiKTeX} \\
+\end{tblr}
+
+\medskip
+
+\hrule
+
+\medskip
+
+\newpage
+
+\part*{Historique}
+
+\verb|v0.1.1|~:~~~~Option \textsf{[fr]} pour franciser les commandes
+
+\verb|v0.1 |~:~~~~Version initiale
+
+\part*{Introduction}
+
+\section{Le package Scrabble}
+
+\subsection{Source}
+
+Certaines idées viennent de \url{https://tex.stackexchange.com/questions/194780/tikz-drawing-a-rectangle-with-spikes-on-borders}, avec une proposition de Mark Wibrow.
+
+\smallskip
+
+Le package a ensuite été \textit{construit} et \textit{modestement enrichi} autour de styles et méthodes proposées par Mark Wibrow.
+
+\subsection{Chargement du package, packages utilisés}
+
+Le package \textsf{Scrabble} se charge dans le préambule via la commande :
+
+\begin{PresentationCode}{listing only}
+\usepackage[fr]{Scrabble}
+\end{PresentationCode}
+
+Il est compatible avec les compilations usuelles en \textsf{latex}, \textsf{pdflatex}, \textsf{lualatex} ou \textsf{xelatex}.
+
+\medskip
+
+Il charge les packages et librairies suivantes :
+
+\begin{itemize}
+ \item \texttt{tikz} avec les librairies \Cle{calc} et \Cle{shapes.geometric} ;
+ \item \texttt{pgf} et \texttt{pgffor} ;
+ \item \texttt{xstring} ;
+ \item \texttt{xparse} ;
+ \item \texttt{simplekv}.
+\end{itemize}
+
+\subsection{\og Philosophie \fg{} du package}
+
+L'idée est de proposer, grâce à des commandes en \TikZ, des commandes ou environnements pour présenter un plateau de Scrabble\texttrademark{} :
+
+\begin{itemize}
+ \item \textit{autonome} ;
+ \item dans un \textit{environnement} avec rajout éventuel de mots.
+\end{itemize}
+
+\begin{PresentationCode}{listing only}
+%commande autonome pour afficher le plateau (vide)
+\PlateauScrabble<langue>[clés]
+
+%environnement avec mot(s)
+\begin{EnvScrabble}<langue>[clés]
+ \ScrabblePlaceMot[orientation]{l,e,t,t,r,e,s,}{coordonnées de la case de départ}
+\end{EnvScrabble}
+\end{PresentationCode}
+
+\subsection{Langues}
+
+Les \textsf{commandes}, \textsf{environnements} et \textsf{clés} proposées le sont en version \textsf{française}, mais les cases et points peuvent être affichées en :
+
+\begin{itemize}
+ \item français ;
+ \item anglais ;
+ \item allemand ;
+ \item espagnol.
+\end{itemize}
+
+\pagebreak
+
+\section{Commandes, clés et options}
+
+\subsection{Le plateau seul}
+
+Le premier argument, \textit{optionnel}, entre \texttt{<...>} est la \Cle{langue} d'affichage peut-être choisie parmi :
+
+\hfill\Cle{FR} (français, par défaut), \Cle{EN} (anglais), \Cle{DE} (allemand) et \Cle{ES} (espagnol).\hfill~
+
+\smallskip
+
+Le second argument, \textit{optionnel}, entre \texttt{[...]} propose les \Cle{clés} :
+
+\begin{itemize}
+ \item \Cle{Echelle} pour spécifier l'échelle d'affichage (l'unité de base étant 1~cm) ; \hfill~défaut : \Cle{1}
+ \item le booléen \Cle{Cadre} pour afficher un cadre autour du plateau ; \hfill~défaut : \Cle{true}
+ \item le booléen \Cle{Labels} pour afficher le \textit{nom} des cases ;\hfill~défaut : \Cle{true}
+ \item le booléen \Cle{Aide} pour afficher une aide pour repérer les cases ;\hfill~défaut : \Cle{false}
+\end{itemize}
+
+\begin{PresentationCode}{}
+%plateau sans le nom des cases
+\PlateauScrabble[Labels=false,Echelle=0.55]\\
+%plateau en anglais
+\PlateauScrabble<EN>[Echelle=0.55,Cadre=false]
+\end{PresentationCode}
+
+\newpage
+
+\subsection{Le plateau avec des mots}
+
+Il s'agit dans ce cas d'utiliser l'\textsf{environnement} ainsi que la \textsf{commande} spécifique pour placer les mots.
+
+\smallskip
+
+En ce qui concerne les options de l'\textsf{environnement}, ce sont les mêmes que pour la \textsf{commande} autonome.
+
+\smallskip
+
+Pour le placement des mots :
+
+\begin{itemize}
+ \item le premier argument, \textit{optionnel}, entre \texttt{[...]} est l'orientation du mot, à choisir entre \Cle{H} (par défaut) et \Cle{V} (en fait toute autre lettre que \Cle{H} !) ;
+ \item le deuxième argument, \textit{mandataire}, entre \texttt{\{...\}}, est la liste des lettres à placer, séparées par des \og \texttt{,} \fg{} ;
+ \item le dernier argument, \textit{mandataire}, entre \texttt{\{...\}}, correspond aux coordonnées de la case sur laquelle sera placée le début du mot (la case (1;\,1) étant la case au bord Bas/Gauche).
+\end{itemize}
+
+\textbf{Remarque 1 :} la langue choisie permettra également d'avoir les jetons avec le \textit{bon} nombre de points !
+
+\smallskip
+
+\textbf{Remarque 2 :} le \textit{blanc} (ou \textit{joker}) est obtenu par la lettre \texttt{*}.
+
+\begin{PresentationCode}{}
+\begin{EnvScrabble}[Echelle=0.75,Labels=false,Aide]
+ \ScrabblePlaceMot{T,I,K,Z}{1,13}
+ \ScrabblePlaceMot[V]{P,S,T,R,I,C,K,S}{1,15}
+ \ScrabblePlaceMot[V]{K,A,T,E,X}{3,13}
+ \ScrabblePlaceMot{C,L,E,V,E,R,E,F}{1,10}
+ \ScrabblePlaceMot[V]{M,E,T,A,P,O,S,T}{7,11}
+ \ScrabblePlaceMot{L,U,A,L,A,T,E,X}{5,8}
+ \ScrabblePlaceMot[V]{P,R,O,F,L,Y,*,E,E}{11,15}
+ \ScrabblePlaceMot{P,R,O,F,C,O,L,L,E,*,E}{1,1}
+ \ScrabblePlaceMot{S,Y,N,T,A,X,E}{7,5}
+ \ScrabblePlaceMot[V]{S,T,R,I,N,*}{10,6}
+\end{EnvScrabble}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+\begin{EnvScrabble}<FR>[Echelle=0.55]
+ \ScrabblePlaceMot{T,I,K,Z}{1,13}
+ \ScrabblePlaceMot[V]{P,S,T,R,I,C,K,S}{1,15}
+ \draw (7,15) node[font=\LARGE\sffamily] {Version française} ; %code rajouté
+\end{EnvScrabble}~~~
+\begin{EnvScrabble}<EN>[Echelle=0.55]
+ \ScrabblePlaceMot{T,I,K,Z}{1,13}
+ \ScrabblePlaceMot[V]{P,S,T,R,I,C,K,S}{1,15}
+ \draw (7,15) node[font=\LARGE\sffamily] {Version anglaise} ; %code rajouté
+\end{EnvScrabble}\\
+\begin{EnvScrabble}<DE>[Echelle=0.55]
+ \ScrabblePlaceMot{T,I,K,Z}{1,13}
+ \ScrabblePlaceMot[V]{P,S,T,R,I,C,K,S}{1,15}
+ \draw (7,15) node[font=\LARGE\sffamily] {Version allemande} ; %code rajouté
+\end{EnvScrabble}~~~
+\begin{EnvScrabble}<ES>[Echelle=0.55]
+ \ScrabblePlaceMot{L,A,T,E,X}{1,14}
+ \ScrabblePlaceMot[V]{M,A,D,R,I,D}{2,15}
+ \draw (7,15) node[font=\LARGE\sffamily] {Version espagnole} ; %code rajouté
+\end{EnvScrabble}
+\end{PresentationCode}
+
+\end{document} \ No newline at end of file
diff --git a/graphics/pgf/contrib/scrabble/tex/Scrabble.sty b/graphics/pgf/contrib/scrabble/tex/Scrabble.sty
new file mode 100644
index 0000000000..23ccca5fb2
--- /dev/null
+++ b/graphics/pgf/contrib/scrabble/tex/Scrabble.sty
@@ -0,0 +1,388 @@
+% Author : C. Pierquet
+% licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
+% Copyright : Scrabble, TradeMark by Hasbro or Mattel
+% Inspiration : Mark Wibrow in https://tex.stackexchange.com/questions/194780/tikz-drawing-a-rectangle-with-spikes-on-borders
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{Scrabble}[2023/01/06 v0.1.1 Scrabble]
+% 0.1.1 Option [fr] pour franciser les commandes
+% 0.1 Version initiale
+
+%------Option
+\newif\if@fr \@frfalse
+\DeclareOption{fr}{\@frtrue}
+\DeclareOption*{}%si option inconnue ;-)
+\ProcessOptions\relax
+
+%------Packages utiles
+\RequirePackage{tikz}
+\RequirePackage{pgf,pgffor}
+\RequirePackage{xstring}
+\RequirePackage{xparse}
+\RequirePackage{simplekv}
+%librairies tikz
+\usetikzlibrary{calc,shapes.geometric}
+
+\if@fr %les commandes francisées
+%score par lettre
+%idées de https://tex.stackexchange.com/questions/194780/tikz-drawing-a-rectangle-with-spikes-on-borders
+\newcommand\lettrescorescrabble[2][FR]{%avec gestion du Joker par *
+ \IfStrEq{#2}{*}%
+ {}%
+ {%
+ \def\tmp{#2}%
+ \expandafter\count\expandafter0\expandafter`#2\relax\advance\count0 by-65\relax%
+ \IfStrEq{#1}{FR}%
+ {\ifcase\count0\relax1\or3\or3\or2\or1\or4\or2\or4\or1\or8\or10\or1\or1\or1\or1\or3\or8\or1\or1\or1\or1\or4\or10\or10\or10\or10\else\fi}{}%
+ \IfStrEq{#1}{EN}%
+ {\ifcase\count0\relax1\or3\or3\or2\or1\or4\or2\or4\or1\or8\or5\or1\or3\or1\or1\or3\or10\or1\or1\or1\or1\or4\or4\or8\or4\or10\else\fi}{}%
+ \IfStrEq{#1}{DE}%
+ {\ifcase\count0\relax1\or3\or4\or1\or1\or2\or2\or2\or2\or1\or6\or4\or2\or3\or2\or4\or10\or1\or1\or1\or1\or6\or3\or8\or10\or3\else\fi}{}%
+ \IfStrEq{#1}{ES}%
+ {\ifcase\count0\relax1\or3\or3\or2\or1\or4\or2\or4\or1\or8\or0\or1\or3\or1\or1\or3\or5\or1\or1\or1\or1\or4\or0\or8\or4\or10\else\fi}{}%
+ }%
+}
+
+%commandes localisées des cases
+\newcommand\SCRBMCT[1][FR]{%
+ \IfStrEq{#1}{FR}{MOT\\COMPTE\\TRIPLE}{}%
+ \IfStrEq{#1}{EN}{TRIPLE\\WORD\\SCORE}{}%
+ \IfStrEq{#1}{DE}{\scalebox{2}[2]{3W}}{}%
+ \IfStrEq{#1}{ES}{TRIPLE\\TANTO\\DE\\PALABRA}{}%
+}
+\newcommand\SCRBMCD[1][FR]{%
+ \IfStrEq{#1}{FR}{MOT\\COMPTE\\DOUBLE}{}%
+ \IfStrEq{#1}{EN}{DOUBLE\\WORD\\SCORE}{}%
+ \IfStrEq{#1}{DE}{\scalebox{2}[2]{2W}}{}%
+ \IfStrEq{#1}{ES}{DOBLE\\TANTO\\DE\\PALABRA}{}%
+}
+\newcommand\SCRBLCT[1][FR]{%
+ \IfStrEq{#1}{FR}{LETTRE\\COMPTE\\TRIPLE}{}%
+ \IfStrEq{#1}{EN}{TRIPLE\\LETTER\\SCORE}{}%
+ \IfStrEq{#1}{DE}{\scalebox{2}[2]{3B}}{}%
+ \IfStrEq{#1}{ES}{TRIPLE\\TANTO\\DE\\LETRA}{}%
+}
+\newcommand\SCRBLCD[1][FR]{%
+ \IfStrEq{#1}{FR}{LETTRE\\COMPTE\\DOUBLE}{}%
+ \IfStrEq{#1}{EN}{DOUBLE\\LETTER\\SCORE}{}%
+ \IfStrEq{#1}{DE}{\scalebox{2}[2]{2B}}{}%
+ \IfStrEq{#1}{ES}{DOBLE\\TANTO\\DE\\LETRA}{}%
+}
+
+%styles case + jetons
+%idées de https://tex.stackexchange.com/questions/194780/tikz-drawing-a-rectangle-with-spikes-on-borders
+\tikzset{
+ scorelettre/.style={
+ font=\sffamily\bfseries\tiny,align=center,scale=0.95,draw=none,fill=none
+ },
+ pics/.cd,
+ pointes/.style args={#1#2#3}{
+ code={
+ \fill [#3,scale=0.5*0.9] (-1,1) {\foreach \i in {0,1,2,3}{%
+ [rotate=-\i*90] -- (-#1*#2,1) {\foreach \j in {1,...,#1} {-- ++(#2,#2) -- ++(#2,-#2)} -- (1,1)}}} -- cycle;
+ }
+ },
+ casecentrale/.style={
+ code={
+ \path pic {pointes={2}{0.15}{red!25}};
+ \node [star,fill,star point ratio=2.35] {};%
+ }
+ },
+ jeton/.style={
+ code={
+ \node[fill=yellow!40,minimum size=0.9 cm,rounded corners=\fpeval{\PLSCRBBLEechelle*0.15} cm,font=\Large\sffamily\bfseries] (JETON) {\IfStrEq{#1}{*}{}{#1}};%
+ \node[inner sep=2pt,font=\sffamily\scriptsize,anchor=south east] at (JETON.south east) { \lettrescorescrabble[\PLSCRBBLElangue]{#1} };%
+ }
+ },
+ placemotH/.style={
+ code={
+ \foreach \l [count=\x from 0] in {#1} {\path ({\x-1},-1) pic {jeton={\l}};}
+ }
+ },
+ placemotV/.style={
+ code={
+ \foreach \l [count=\y from 0] in {#1} {\path (-1,-{\y-1}) pic {jeton={\l}};}
+ }
+ },
+ motcomptetriple/.style={
+ code={
+ \path pic {pointes={3}{0.15}{red!75}};%
+ \ifboolKV[PLSCRABBLETIKZ]{Labels}%
+ {\node [scorelettre] { \SCRBMCT[\PLSCRBBLElangue] };}{}
+ }
+ },
+ motcomptedouble/.style={
+ code={
+ \path pic {pointes={2}{0.15}{red!25}};%
+ \ifboolKV[PLSCRABBLETIKZ]{Labels}%
+ {\node [scorelettre] { \SCRBMCD[\PLSCRBBLElangue] };}
+ {}%
+ }
+ },
+ lettrecomptetriple/.style={
+ code={
+ \path pic {pointes={3}{0.15}{blue!50!cyan!75}};%
+ \ifboolKV[PLSCRABBLETIKZ]{Labels}%
+ {\node [scorelettre] { \SCRBLCT[\PLSCRBBLElangue] };}{}
+ }
+ },
+ lettrecomptedouble/.style={
+ code={
+ \path pic {pointes={2}{0.15}{blue!50!cyan!50}};%
+ \ifboolKV[PLSCRABBLETIKZ]{Labels}%
+ {\node [scorelettre] { \SCRBLCD[\PLSCRBBLElangue] };}{}
+ }
+ }
+}
+
+%commande pour placer un mot
+\newcommand\ScrabblePlaceMot[3][H]{%
+ \IfStrEq{#1}{H}%
+ {\path (#3) pic {placemotH={#2}};}
+ {\path (#3) pic {placemotV={#2}};}
+}
+
+%clés
+\defKV[PLSCRABBLETIKZ]{%
+ Echelle=\xdef\PLSCRBBLEechelle{#1}
+}
+\setKVdefault[PLSCRABBLETIKZ]{%
+ Echelle=1,%
+ Cadre=true,%
+ Labels=true,%
+ Aide=false
+}
+
+%commandes génériques autonomes pour plateau
+\NewDocumentCommand\PlateauScrabble{ D<>{FR} O{} }{%1=lng,2=options
+ \xdef\PLSCRBBLElangue{#1}
+ \useKVdefault[PLSCRABBLETIKZ]
+ \setKV[PLSCRABBLETIKZ]{#2}
+ \begin{tikzpicture}[scale=\PLSCRBBLEechelle,every node/.style={scale=\PLSCRBBLEechelle}]
+ %plateau
+ \fill[gray!25] (-.5,-.5) rectangle ++(15,15);
+ \draw[white,line width=\fpeval{\PLSCRBBLEechelle*0.1} cm, shift={(-.5,-.5)}] grid (15,15);
+ \foreach \scrcase in{(\x,\y),(\y,14-\x),(14-\x,14-\y),(14-\y,\x)}{%
+ \foreach \x/\y in {0/0,7/0}{\path \scrcase pic {motcomptetriple};}
+ \foreach \x/\y in {1/1,2/2,3/3,4/4}{\path \scrcase pic {motcomptedouble};}
+ \foreach \x/\y in {1/5,5/1,5/5}{\path \scrcase pic {lettrecomptetriple};}
+ \foreach \x/\y in {3/0,0/3,2/6,6/2,6/6}{\path \scrcase pic {lettrecomptedouble};}
+ }
+ \path (7,7) pic {casecentrale};
+ \ifboolKV[PLSCRABBLETIKZ]{Cadre}{\draw[line width=\fpeval{\PLSCRBBLEechelle*0.075} cm] (-0.6,-0.6) rectangle (14.6,14.6) ;}{}
+ \end{tikzpicture}%
+}
+
+%environnement pour plateau, pour placer des mots
+\NewDocumentEnvironment{EnvScrabble}{ D<>{FR} O{} }%1=LANG,2=options
+{
+ \xdef\PLSCRBBLElangue{#1}
+ \useKVdefault[PLSCRABBLETIKZ]
+ \setKV[PLSCRABBLETIKZ]{#2}
+ \begin{tikzpicture}[scale=\PLSCRBBLEechelle,every node/.style={scale=\PLSCRBBLEechelle}]
+ %plateau
+ \fill[gray!25] (-.5,-.5) rectangle ++(15,15);
+ \draw[white,line width=\fpeval{\PLSCRBBLEechelle*0.1} cm, shift={(-.5,-.5)}] grid (15,15);
+ \foreach \scrcase in{(\x,\y),(\y,14-\x),(14-\x,14-\y),(14-\y,\x)}{%cases spéciales
+ \foreach \x/\y in {0/0,7/0} {\path \scrcase pic {motcomptetriple};}
+ \foreach \x/\y in {1/1,2/2,3/3,4/4} {\path \scrcase pic {motcomptedouble};}
+ \foreach \x/\y in {1/5,5/1,5/5} {\path \scrcase pic {lettrecomptetriple};}
+ \foreach \x/\y in {3/0,0/3,2/6,6/2,6/6} {\path \scrcase pic {lettrecomptedouble};}
+ }
+ \path (7,7) pic {casecentrale};
+ \ifboolKV[PLSCRABBLETIKZ]{Cadre}
+ {\draw[line width=\fpeval{\PLSCRBBLEechelle*0.075} cm] (-0.6,-0.6) rectangle (14.6,14.6) ;}%
+ {}
+ \ifboolKV[PLSCRABBLETIKZ]{Aide}
+ {%
+ \foreach \numberscr in {1,2,...,15}
+ {\draw[gray] ({\numberscr-1},-0.65) node[below,font=\sffamily] {\numberscr};\draw[gray] (-0.65,{\numberscr-1}) node[left,font=\sffamily] {\numberscr};}
+ }%
+ {}
+}
+{
+ \end{tikzpicture}%
+}
+\else %les commandes "anglaises"
+%score par lettre
+%idées de https://tex.stackexchange.com/questions/194780/tikz-drawing-a-rectangle-with-spikes-on-borders
+\newcommand\lettrescorescrabble[2][EN]{%avec gestion du Joker par *
+ \IfStrEq{#2}{*}%
+ {}%
+ {%
+ \def\tmp{#2}%
+ \expandafter\count\expandafter0\expandafter`#2\relax\advance\count0 by-65\relax%
+ \IfStrEq{#1}{FR}%
+ {\ifcase\count0\relax1\or3\or3\or2\or1\or4\or2\or4\or1\or8\or10\or1\or1\or1\or1\or3\or8\or1\or1\or1\or1\or4\or10\or10\or10\or10\else\fi}{}%
+ \IfStrEq{#1}{EN}%
+ {\ifcase\count0\relax1\or3\or3\or2\or1\or4\or2\or4\or1\or8\or5\or1\or3\or1\or1\or3\or10\or1\or1\or1\or1\or4\or4\or8\or4\or10\else\fi}{}%
+ \IfStrEq{#1}{GE}%
+ {\ifcase\count0\relax1\or3\or4\or1\or1\or2\or2\or2\or2\or1\or6\or4\or2\or3\or2\or4\or10\or1\or1\or1\or1\or6\or3\or8\or10\or3\else\fi}{}%
+ \IfStrEq{#1}{SP}%
+ {\ifcase\count0\relax1\or3\or3\or2\or1\or4\or2\or4\or1\or8\or0\or1\or3\or1\or1\or3\or5\or1\or1\or1\or1\or4\or0\or8\or4\or10\else\fi}{}%
+ }%
+}
+
+%commandes localisées des cases
+\newcommand\SCRBMCT[1][EN]{%
+ \IfStrEq{#1}{FR}{MOT\\COMPTE\\TRIPLE}{}%
+ \IfStrEq{#1}{EN}{TRIPLE\\WORD\\SCORE}{}%
+ \IfStrEq{#1}{GE}{\scalebox{2}[2]{3W}}{}%
+ \IfStrEq{#1}{SP}{TRIPLE\\TANTO\\DE\\PALABRA}{}%
+}
+\newcommand\SCRBMCD[1][EN]{%
+ \IfStrEq{#1}{FR}{MOT\\COMPTE\\DOUBLE}{}%
+ \IfStrEq{#1}{EN}{DOUBLE\\WORD\\SCORE}{}%
+ \IfStrEq{#1}{GE}{\scalebox{2}[2]{2W}}{}%
+ \IfStrEq{#1}{SP}{DOBLE\\TANTO\\DE\\PALABRA}{}%
+}
+\newcommand\SCRBLCT[1][EN]{%
+ \IfStrEq{#1}{FR}{LETTRE\\COMPTE\\TRIPLE}{}%
+ \IfStrEq{#1}{EN}{TRIPLE\\LETTER\\SCORE}{}%
+ \IfStrEq{#1}{GE}{\scalebox{2}[2]{3B}}{}%
+ \IfStrEq{#1}{SP}{TRIPLE\\TANTO\\DE\\LETRA}{}%
+}
+\newcommand\SCRBLCD[1][EN]{%
+ \IfStrEq{#1}{FR}{LETTRE\\COMPTE\\DOUBLE}{}%
+ \IfStrEq{#1}{EN}{DOUBLE\\LETTER\\SCORE}{}%
+ \IfStrEq{#1}{GE}{\scalebox{2}[2]{2B}}{}%
+ \IfStrEq{#1}{SP}{DOBLE\\TANTO\\DE\\LETRA}{}%
+}
+
+%styles case + jetons
+%idées de https://tex.stackexchange.com/questions/194780/tikz-drawing-a-rectangle-with-spikes-on-borders
+\tikzset{
+ scorelettre/.style={
+ font=\sffamily\bfseries\tiny,align=center,scale=0.95,draw=none,fill=none
+ },
+ pics/.cd,
+ pointes/.style args={#1#2#3}{
+ code={
+ \fill [#3,scale=0.5*0.9] (-1,1) {\foreach \i in {0,1,2,3}{%
+ [rotate=-\i*90] -- (-#1*#2,1) {\foreach \j in {1,...,#1} {-- ++(#2,#2) -- ++(#2,-#2)} -- (1,1)}}} -- cycle;
+ }
+ },
+ casecentrale/.style={
+ code={
+ \path pic {pointes={2}{0.15}{red!25}};
+ \node [star,fill,star point ratio=2.35] {};%
+ }
+ },
+ jeton/.style={
+ code={
+ \node[fill=yellow!40,minimum size=0.9 cm,rounded corners=\fpeval{\PLSCRBBLEechelle*0.15} cm,font=\Large\sffamily\bfseries] (JETON) {\IfStrEq{#1}{*}{}{#1}};%
+ \node[inner sep=2pt,font=\sffamily\scriptsize,anchor=south east] at (JETON.south east) { \lettrescorescrabble[\PLSCRBBLElangue]{#1} };%
+ }
+ },
+ placemotH/.style={
+ code={
+ \foreach \l [count=\x from 0] in {#1} {\path ({\x-1},-1) pic {jeton={\l}};}
+ }
+ },
+ placemotV/.style={
+ code={
+ \foreach \l [count=\y from 0] in {#1} {\path (-1,-{\y-1}) pic {jeton={\l}};}
+ }
+ },
+ motcomptetriple/.style={
+ code={
+ \path pic {pointes={3}{0.15}{red!75}};%
+ \ifboolKV[PLSCRABBLETIKZ]{Labels}%
+ {\node [scorelettre] { \SCRBMCT[\PLSCRBBLElangue] };}{}
+ }
+ },
+ motcomptedouble/.style={
+ code={
+ \path pic {pointes={2}{0.15}{red!25}};%
+ \ifboolKV[PLSCRABBLETIKZ]{Labels}%
+ {\node [scorelettre] { \SCRBMCD[\PLSCRBBLElangue] };}
+ {}%
+ }
+ },
+ lettrecomptetriple/.style={
+ code={
+ \path pic {pointes={3}{0.15}{blue!50!cyan!75}};%
+ \ifboolKV[PLSCRABBLETIKZ]{Labels}%
+ {\node [scorelettre] { \SCRBLCT[\PLSCRBBLElangue] };}{}
+ }
+ },
+ lettrecomptedouble/.style={
+ code={
+ \path pic {pointes={2}{0.15}{blue!50!cyan!50}};%
+ \ifboolKV[PLSCRABBLETIKZ]{Labels}%
+ {\node [scorelettre] { \SCRBLCD[\PLSCRBBLElangue] };}{}
+ }
+ }
+}
+
+%commande pour placer un mot
+\newcommand\ScrabblePutWord[3][H]{%
+ \IfStrEq{#1}{H}%
+ {\path (#3) pic {placemotH={#2}};}
+ {\path (#3) pic {placemotV={#2}};}
+}
+
+%clés
+\defKV[PLSCRABBLETIKZ]{%
+ Scale=\xdef\PLSCRBBLEechelle{#1}
+}
+\setKVdefault[PLSCRABBLETIKZ]{%
+ Scale=1,%
+ Border=true,%
+ Labels=true,%
+ Help=false
+}
+
+%commandes génériques autonomes pour plateau
+\NewDocumentCommand\ScrabbleBoard{ D<>{EN} O{} }{%1=lng,2=options
+ \xdef\PLSCRBBLElangue{#1}
+ \useKVdefault[PLSCRABBLETIKZ]
+ \setKV[PLSCRABBLETIKZ]{#2}
+ \begin{tikzpicture}[scale=\PLSCRBBLEechelle,every node/.style={scale=\PLSCRBBLEechelle}]
+ %plateau
+ \fill[gray!25] (-.5,-.5) rectangle ++(15,15);
+ \draw[white,line width=\fpeval{\PLSCRBBLEechelle*0.1} cm, shift={(-.5,-.5)}] grid (15,15);
+ \foreach \scrcase in{(\x,\y),(\y,14-\x),(14-\x,14-\y),(14-\y,\x)}{%
+ \foreach \x/\y in {0/0,7/0}{\path \scrcase pic {motcomptetriple};}
+ \foreach \x/\y in {1/1,2/2,3/3,4/4}{\path \scrcase pic {motcomptedouble};}
+ \foreach \x/\y in {1/5,5/1,5/5}{\path \scrcase pic {lettrecomptetriple};}
+ \foreach \x/\y in {3/0,0/3,2/6,6/2,6/6}{\path \scrcase pic {lettrecomptedouble};}
+ }
+ \path (7,7) pic {casecentrale};
+ \ifboolKV[PLSCRABBLETIKZ]{Border}{\draw[line width=\fpeval{\PLSCRBBLEechelle*0.075} cm] (-0.6,-0.6) rectangle (14.6,14.6) ;}{}
+ \end{tikzpicture}%
+}
+
+%environnement pour plateau, pour placer des mots
+\NewDocumentEnvironment{EnvScrabble}{ D<>{EN} O{} }%1=LANG,2=options
+{
+ \xdef\PLSCRBBLElangue{#1}
+ \useKVdefault[PLSCRABBLETIKZ]
+ \setKV[PLSCRABBLETIKZ]{#2}
+ \begin{tikzpicture}[scale=\PLSCRBBLEechelle,every node/.style={scale=\PLSCRBBLEechelle}]
+ %plateau
+ \fill[gray!25] (-.5,-.5) rectangle ++(15,15);
+ \draw[white,line width=\fpeval{\PLSCRBBLEechelle*0.1} cm, shift={(-.5,-.5)}] grid (15,15);
+ \foreach \scrcase in{(\x,\y),(\y,14-\x),(14-\x,14-\y),(14-\y,\x)}{%cases spéciales
+ \foreach \x/\y in {0/0,7/0} {\path \scrcase pic {motcomptetriple};}
+ \foreach \x/\y in {1/1,2/2,3/3,4/4} {\path \scrcase pic {motcomptedouble};}
+ \foreach \x/\y in {1/5,5/1,5/5} {\path \scrcase pic {lettrecomptetriple};}
+ \foreach \x/\y in {3/0,0/3,2/6,6/2,6/6} {\path \scrcase pic {lettrecomptedouble};}
+ }
+ \path (7,7) pic {casecentrale};
+ \ifboolKV[PLSCRABBLETIKZ]{Border}
+ {\draw[line width=\fpeval{\PLSCRBBLEechelle*0.075} cm] (-0.6,-0.6) rectangle (14.6,14.6) ;}%
+ {}
+ \ifboolKV[PLSCRABBLETIKZ]{Help}
+ {%
+ \foreach \numberscr in {1,2,...,15}
+ {\draw[gray] ({\numberscr-1},-0.65) node[below,font=\sffamily] {\numberscr};\draw[gray] (-0.65,{\numberscr-1}) node[left,font=\sffamily] {\numberscr};}
+ }%
+ {}
+}
+{
+ \end{tikzpicture}%
+}
+\fi
+
+\endinput \ No newline at end of file