% !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.3}
\def\TPdate{09/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 board 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$~~Ideas 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{TIKZ}{1,13}
		\ScrabblePutWord[V]{pstricks}{1,15}
		\ScrabblePutWord[V]{KaTeX}{3,13}
		\ScrabblePutWord{cleveref}{1,10}
		\ScrabblePutWord[V]{METAPOST}{7,11}
		\ScrabblePutWord{LUALATEX}{5,8}
		\ScrabblePutWord[V]{ProfLy*ee}{11,15}
		\ScrabblePutWord{PROFCOLLE*E}{1,1}
		\ScrabblePutWord{SYNTAX}{7,5}
		\ScrabblePutWord[V]{STRIN*}{10,6}
	\end{EnvScrabble}
\end{center}

\vspace{0.5cm}

\hfill{}\textit{Thanks to Denis Bitouzé and Patrick Bideault for help and ideas !}

\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*{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}, \texttt{xparse}, \texttt{simplekv} and \texttt{listofitems}.
\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{independent} ;
	\item in an \textit{environment} with words.
\end{itemize}

\begin{PresentationCode}{listing only}
%independent command for the empty board
\ScrabbleBoard<language>[keys]

%environment with word(s)
\begin{EnvScrabble}<language>[keys]
	\ScrabblePutWord[orientation]{word}{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 (code ISO 639-1 EN) ;
	\item french (code ISO 639-1 FR) ;
	\item german (code ISO 639-1 DE) ;
	\item spanish (code ISO 639-1 ES).
\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{DE} (german) et \Cle{ES} (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 \Cle{ScaleLabels} for the cell's names ; \hfill~défaut : \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~default : \Cle{true}
	\item the boolean \Cle{Help} pour print numbers to reperate th cells ;\hfill~default : \Cle{false}
\end{itemize}

\begin{PresentationCode}{}
\ScrabbleBoard[Labels=false,Scale=0.55]\\      %board without cell's names
\ScrabbleBoard<ES>[Scale=0.55,Border=false]     %board in spanish, without border
\end{PresentationCode}

\newpage

\subsection{The board with words}

Here we can use the \textsf{environment} 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 independent \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 word, with uppercase or lowercase letters ;
	\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{TIKZ}{1,13}
	\ScrabblePutWord[V]{pstricks}{1,15}
	\ScrabblePutWord[V]{KaTeX}{3,13}
	\ScrabblePutWord{cleveref}{1,10}
	\ScrabblePutWord[V]{METAPOST}{7,11}
	\ScrabblePutWord{LUALATEX}{5,8}
	\ScrabblePutWord[V]{ProfLy*ee}{11,15}
	\ScrabblePutWord{PROFCOLLE*E}{1,1}
	\ScrabblePutWord{SYNTAX}{7,5}
	\ScrabblePutWord[V]{STRIN*}{10,6}
\end{EnvScrabble}
\end{PresentationCode}

\begin{PresentationCode}{}
\begin{EnvScrabble}[Scale=0.55]
	\ScrabblePutWord{tikz}{1,13} \ScrabblePutWord[V]{PSTRiCKS}{1,15}
	\draw (7,15) node[font=\LARGE\sffamily] {English version} ;
\end{EnvScrabble}~~~
\begin{EnvScrabble}<FR>[Scale=0.55]
	\ScrabblePutWord{tikz}{1,13} \ScrabblePutWord[V]{PSTRiCKS}{1,15}
	\draw (7,15) node[font=\LARGE\sffamily] {French version} ;
\end{EnvScrabble}\\
\begin{EnvScrabble}<DE>[Scale=0.55]
	\ScrabblePutWord{tikz}{1,13} \ScrabblePutWord[V]{PSTRiCKS}{1,15}
	\draw (7,15) node[font=\LARGE\sffamily] {German version} ;
\end{EnvScrabble}~~~
\begin{EnvScrabble}<ES>[Scale=0.55]
	\ScrabblePutWord{LaTeX}{1,14} \ScrabblePutWord[V]{Madrid}{2,15}
	\draw (7,15) node[font=\LARGE\sffamily] {Spanish vesion} ;
\end{EnvScrabble}
\end{PresentationCode}

\newpage

\part*{History}

\verb|v0.1.3|~:~~~~Words in uppercase or lowercase, adjusted codes for language (ISO 639-1)

\verb|v0.1.2|~:~~~~Key \textsf{<ScaleLabels>} to modify scale of the cell's names

\verb|v0.1  |~:~~~~Initial version

\end{document}