texlive[69024] Master/texmf-dist: scrabble (3dec23)

commits+karl at tug.org commits+karl at tug.org
Sun Dec 3 22:08:31 CET 2023


Revision: 69024
          https://tug.org/svn/texlive?view=revision&revision=69024
Author:   karl
Date:     2023-12-03 22:08:31 +0100 (Sun, 03 Dec 2023)
Log Message:
-----------
scrabble (3dec23)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/scrabble/Scrabble-doc-en.pdf
    trunk/Master/texmf-dist/doc/latex/scrabble/Scrabble-doc-en.tex
    trunk/Master/texmf-dist/doc/latex/scrabble/Scrabble-doc-fr.pdf
    trunk/Master/texmf-dist/doc/latex/scrabble/Scrabble-doc-fr.tex
    trunk/Master/texmf-dist/tex/latex/scrabble/Scrabble.sty

Modified: trunk/Master/texmf-dist/doc/latex/scrabble/Scrabble-doc-en.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/scrabble/Scrabble-doc-en.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/scrabble/Scrabble-doc-en.tex	2023-12-03 21:08:22 UTC (rev 69023)
+++ trunk/Master/texmf-dist/doc/latex/scrabble/Scrabble-doc-en.tex	2023-12-03 21:08:31 UTC (rev 69024)
@@ -23,7 +23,22 @@
 \cfoot{\sffamily\small - \thepage{} -}
 \rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}}
 
-\usepackage{hvlogos}
+\usepackage{hologo}
+\usepackage{xspace}
+\newcommand\tikzlogo{Ti\textit{k}Z}
+\newcommand\TeXLive{\hologo{TeX}Live\xspace}
+\let\TikZ\tikzlogo
+\newcommand\TableauDocumentation{%
+	\begin{tblr}{width=\linewidth,colspec={X[c]X[c]X[c]X[c]X[c]X[c]},cells={font=\sffamily}}
+		{\huge \LaTeX} & & & & &\\
+		& {\huge \hologo{pdfLaTeX}} & & & & \\
+		& & {\huge \hologo{LuaLaTeX}} & & & \\
+		& & & {\huge \TikZ} & & \\
+		& & & & {\huge \TeXLive} & \\
+		& & & & & {\huge \hologo{MiKTeX}} \\
+	\end{tblr}
+}
+
 \usepackage{hyperref}
 \urlstyle{same}
 \hypersetup{pdfborder=0 0 0}
@@ -31,8 +46,8 @@
 \setlength{\parindent}{0pt}
 \definecolor{LightGray}{gray}{0.9}
 
-\def\TPversion{0.1.3}
-\def\TPdate{09/01/2023}
+\def\TPversion{0.1.4}
+\def\TPdate{03/12/2023}
 
 \usepackage[most]{tcolorbox}
 \tcbuselibrary{minted}
@@ -104,7 +119,7 @@
 
 {$\blacktriangleright$~~Ideas from \url{https://tex.stackexchange.com/questions/194780/tikz-drawing-a-rectangle-with-spikes-on-borders}}
 
-\vspace{0.5cm}
+\vspace{0.15cm}
 
 \begin{center}
 	\ScrabbleBoard[Scale=0.5]
@@ -133,14 +148,7 @@
 
 \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}
+\TableauDocumentation
 
 \medskip
 
@@ -295,14 +303,61 @@
 \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} ;
+	\draw (7,15) node[font=\LARGE\sffamily] {Spanish version} ;
 \end{EnvScrabble}
 \end{PresentationCode}
 
 \newpage
 
+\subsection{\textit{Inline} word}
+
+The idea is to propose a command to insert a word in \textit{online} mode, with automatic adjustment of size and position.
+
+\begin{PresentationCode}{listing only}
+%command to put inline word
+\ScrabbleWord[keys]{word}
+\end{PresentationCode}
+
+The first argument, \textit{optional}, between \texttt{[...]} allows you to configure the \Cle{keys}:
+
+\begin{itemize}
+	\item \Cle{Colback} for the color of the pieces ; \hfill~default: \Cle{yellow!40}
+	\item \Cle{Font} for the font ; \hfill~default: \Cle{\textbackslash bfseries\textbackslash sffamily}
+	\item \Cle{Colfonte} for the color of the characters ; \hfill~default: \Cle{black}
+	\item \Cle{Lang} to choose the language (for the number of points) ; \hfill~default: \Cle{EN}
+	\item \Cle{Offset} to specify horizontal spacing between pieces ; \hfill~default: \Cle{0.1pt}
+	\item \Cle{Scale} to specify a base scale for texts ; \hfill~default: \Cle{0.6}
+	\item \Cle{Score} which is a boolean to display the score of each piece. \hfill~default: \Cle{true}
+\end{itemize}
+
+\textbf{Note 1 :} the code is responsible for positioning the pieces for \textit{satisfactory} alignment and scaling based on the active font.
+
+\smallskip
+
+\textbf{Note 2 :} the \textit{blank} (or \textit{wildcard}) is obtained by the character \texttt{*}.
+
+\begin{PresentationCode}{}
+Online Scrabble word test positioning \ScrabbleWord{TE*ST} to see !
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+{\Huge\sffamily Test positioning \ScrabbleWord[Colback=teal!5,Colfonte=orange]{PYTHAG*RE} to see !}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+\scalebox{3}[3]{Positioning \ScrabbleWord[Lang=DE,Font=\ttfamily,Scale=0.75]{PYTHAG*RE} to see !}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+{\LARGE Test positioning \ScrabbleWord[Score=false,Offset=1pt,Colback=orange!50]{PSTRICKS} to see !}
+\end{PresentationCode}
+
+\newpage
+
 \part*{History}
 
+\verb|v0.1.4|~:~~~~Command to insert \textit{inline} words
+
 \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

Modified: trunk/Master/texmf-dist/doc/latex/scrabble/Scrabble-doc-fr.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/scrabble/Scrabble-doc-fr.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/scrabble/Scrabble-doc-fr.tex	2023-12-03 21:08:22 UTC (rev 69023)
+++ trunk/Master/texmf-dist/doc/latex/scrabble/Scrabble-doc-fr.tex	2023-12-03 21:08:31 UTC (rev 69024)
@@ -23,7 +23,24 @@
 \cfoot{\sffamily\small - \thepage{} -}
 \rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}}
 
-\usepackage{hvlogos}
+%\usepackage{hvlogos}
+\usepackage{hologo}
+\providecommand\tikzlogo{Ti\textit{k}Z}
+\providecommand\TeXLive{\TeX{}Live\xspace}
+\providecommand\PSTricks{\textsf{PSTricks}\xspace}
+\let\pstricks\PSTricks
+\let\TikZ\tikzlogo
+\newcommand\TableauDocumentation{%
+	\begin{tblr}{width=\linewidth,colspec={X[c]X[c]X[c]X[c]X[c]X[c]},cells={font=\sffamily}}
+		{\huge \LaTeX} & & & & &\\
+		& {\huge \hologo{pdfLaTeX}} & & & & \\
+		& & {\huge \hologo{LuaLaTeX}} & & & \\
+		& & & {\huge \TikZ} & & \\
+		& & & & {\huge \TeXLive} & \\
+		& & & & & {\huge \hologo{MiKTeX}} \\
+	\end{tblr}
+}
+
 \usepackage{hyperref}
 \urlstyle{same}
 \hypersetup{pdfborder=0 0 0}
@@ -31,8 +48,8 @@
 \setlength{\parindent}{0pt}
 \definecolor{LightGray}{gray}{0.9}
 
-\def\TPversion{0.1.3}
-\def\TPdate{9 Janvier 2023}
+\def\TPversion{0.1.4}
+\def\TPdate{3 décembre 2023}
 
 \usepackage[most]{tcolorbox}
 \tcbuselibrary{minted}
@@ -102,14 +119,18 @@
 
 \smallskip
 
+{$\blacktriangleright$~~Possibilité d'insérer un mot en mode \textit{en ligne}.}
+
+\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}
+\vspace{0.15cm}
 
 \begin{center}
-	\PlateauScrabble[Echelle=0.4]
+	\PlateauScrabble[Echelle=0.5]
 	~~~~
-	\begin{EnvScrabbleFR}[Echelle=0.4]
+	\begin{EnvScrabbleFR}[Echelle=0.5]
 		\ScrabblePlaceMot{TIKZ}{1,13}
 		\ScrabblePlaceMot[V]{pstricks}{1,15}
 		\ScrabblePlaceMot[V]{KaTeX}{3,13}
@@ -135,14 +156,7 @@
 
 \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}
+\TableauDocumentation
 
 \medskip
 
@@ -258,8 +272,8 @@
 
 \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 le mot à placer, en majuscules ou minuscules ;
-	\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).
+	\item le deuxième argument, \textit{obligatoire}, entre \texttt{\{...\}}, est le mot à placer, en majuscules ou minuscules ;
+	\item le dernier argument, \textit{obligatoire}, 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 !
@@ -304,6 +318,51 @@
 
 \newpage
 
+\subsection{Mot \textit{en ligne}}
+
+Il s'agit ici de proposer une commande pour insérer un mot en mode \textit{en ligne}, avec ajustement automatique de la taille et de la position.
+
+\begin{PresentationCode}{listing only}
+%commande pour placer un mot en ligne
+\MotScrabble[clés]{mot}
+\end{PresentationCode}
+
+Le premier argument, \textit{optionnel}, entre \texttt{[...]} permet de paramétrer les \Cle{clés} :
+
+\begin{itemize}
+	\item \Cle{CouleurFond} pour la couleur des cases ; \hfill~défaut : \Cle{yellow!40}
+	\item \Cle{Police} pour la police des caractères ; \hfill~défaut : \Cle{\textbackslash bfseries\textbackslash sffamily}
+	\item \Cle{CouleurPolice} pour la couleur des caractères ; \hfill~défaut : \Cle{black}
+	\item \Cle{Langue} pour choisir la langue (pour les nombres de points) ; \hfill~défaut : \Cle{FR}
+	\item \Cle{Offset} pour spécifier un espacement horizontal entre les jetons ; \hfill~défaut : \Cle{0.1pt}
+	\item \Cle{Echelle} pour spécifier une échelle de base pour les textes ; \hfill~défaut : \Cle{0.6}
+	\item \Cle{Score} qui est un booléen pour afficher le score de chaque jeton.\hfill~défaut : \Cle{true}
+\end{itemize}
+
+\textbf{Remarque 1 :} le code se charge de positionner le jeton pour un alignement et une mise à l'échelle \textit{satisfaisants} en fonction de la police active.
+
+\smallskip
+
+\textbf{Remarque 2 :} le \textit{blanc} (ou \textit{joker}) est obtenu par le caractère \texttt{*}.
+
+\begin{PresentationCode}{}
+Essai de mot de Scrabble en ligne \MotScrabble{TE*ST} pour voir !
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+{\Huge\sffamily En ligne \MotScrabble[CouleurFond=teal!5,CouleurPolice=orange]{PYTHAG*RE} pour voir !}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+\scalebox{3}[3]{En ligne \MotScrabble[Langue=EN,Police=\ttfamily,Echelle=0.75]{PYTHAG*RE} pour voir !}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+{\LARGE En ligne \MotScrabble[Score=false,Offset=1pt,CouleurFond=orange!50]{PSTRICKS} pour voir !}
+\end{PresentationCode}
+
+\newpage
+
 \subsection{Commandes anglaises}
 
 Le package ayant potentiellement une portée \textit{internationale}, les commandes existent également en version \textit{anglaise}. Dans ce cas, les \Cle{clés} sont également à donner en anglais.
@@ -327,6 +386,8 @@
 
 \part*{Historique}
 
+\verb|v0.1.4|~:~~~~Ajout d'une commande pour placer en \textit{mot} en mode \og en ligne \fg
+
 \verb|v0.1.3|~:~~~~Meilleure gestion de la saisie des mots (sans virgule, majuscule ou minuscule)
 
 \verb|v0.1.2|~:~~~~Clé \textsf{<EchelleLabels>} pour modifier l'échelle des noms des cases

Modified: trunk/Master/texmf-dist/tex/latex/scrabble/Scrabble.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/scrabble/Scrabble.sty	2023-12-03 21:08:22 UTC (rev 69023)
+++ trunk/Master/texmf-dist/tex/latex/scrabble/Scrabble.sty	2023-12-03 21:08:31 UTC (rev 69024)
@@ -4,7 +4,8 @@
 % Inspiration                    : Mark Wibrow in https://tex.stackexchange.com/questions/194780/tikz-drawing-a-rectangle-with-spikes-on-borders
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{Scrabble}[2023/01/09 v0.1.3 Scrabble]
+\ProvidesPackage{Scrabble}[2023/12/03 0.1.4 Scrabble]
+% 0.1.4		Ajout d'un mode inline
 % 0.1.3		Refonte des commandes fr/en + gestion mot
 % 0.1.2		Clé <EchelleLabels> pour les labels des cases
 % 0.1.1		Commandes en/fr
@@ -17,6 +18,7 @@
 \RequirePackage{xparse}
 \RequirePackage{simplekv}
 \RequirePackage{listofitems}
+\RequirePackage{calc}
 %librairies tikz
 \usetikzlibrary{calc,shapes.geometric}
 
@@ -312,4 +314,104 @@
 	\end{tikzpicture}%
 }
 
+%place mot inline
+\newlength{\tmp at scrabword@total at height}
+\newlength{\tmp at scrabword@depth}
+
+\defKV[SCRABBLEWORDINLINEFR]{%
+	CouleurFond=\def\ScrWordInlColFond{#1},%
+	Police=\def\ScrWordInlFonte{#1},%
+	CouleurPolice=\def\ScrWordInlColFonte{#1},%
+	Langue=\def\ScrWordInlLang{#1},%
+	Offset=\def\ScrWordInlOffset{#1},%
+	Echelle=\def\ScrWordInlScale{#1}
+}
+
+\setKVdefault[SCRABBLEWORDINLINEFR]{%
+	CouleurFond=yellow!40,%
+	Police=\bfseries\sffamily,%
+	CouleurPolice=black,%
+	Langue=FR,%
+	Offset=0.1pt,%
+	Score=true,%
+	Echelle=0.6
+}
+
+\NewDocumentCommand\MotScrabble{ O{} m }{%
+	\useKVdefault[SCRABBLEWORDINLINEFR]%
+	\setKV[SCRABBLEWORDINLINEFR]{#1}%
+	\settototalheight{\tmp at scrabword@total at height}{\hbox{ABCDEFGHIJKLMNOPQQRSTUVWXYZabcdefghijklmnopqqrstuvwxyz}}%
+	\settodepth{\tmp at scrabword@depth}{\hbox{q}}%
+	\StrLen{#2}[\lgmot]%
+	\raisebox{-\tmp at scrabword@depth+0.025\tmp at scrabword@total at height}{%
+		\foreach \l in {1,2,...,\lgmot}%
+			{%
+				\StrChar{#2}{\l}[\ll]%
+				\IfStrEq{\ll}{*}%
+					{%
+						{\tikz \filldraw[\ScrWordInlColFond,rounded corners={0.15\tmp at scrabword@total at height}] (0,0) rectangle++ ({0.9\tmp at scrabword@total at height},{0.9\tmp at scrabword@total at height}) ;}%
+					}%
+					{%
+						{\tikz {%
+							\filldraw[\ScrWordInlColFond,rounded corners={0.15\tmp at scrabword@total at height}] (0,0) rectangle++ ({0.9\tmp at scrabword@total at height},{0.9\tmp at scrabword@total at height}) node[inner sep=0pt,midway,font=\ScrWordInlFonte,scale=\ScrWordInlScale,text=\ScrWordInlColFonte] {\expandafter\MakeUppercase\expandafter{\ll}};%
+							\ifboolKV[SCRABBLEWORDINLINEFR]{Score}%
+								{\draw ({0.9\tmp at scrabword@total at height},0) node[inner sep=0pt,above left={0.075\tmp at scrabword@total at height},font=\ScrWordInlFonte,scale={0.25*\ScrWordInlScale},text=\ScrWordInlColFonte] { \scrabblescorelettre[\ScrWordInlLang]{\ll} } ;}
+								{}%
+							}%
+						}%
+					}%
+			\ifnum \l<\lgmot\hspace*{\ScrWordInlOffset}\fi%
+			}%
+	}%
+}
+
+\defKV[SCRABBLEWORDINLINEEN]{%
+	Colback=\def\ScrWordInlColFond{#1},%
+	Font=\def\ScrWordInlFonte{#1},%
+	Colfonte=\def\ScrWordInlColFonte{#1},%
+	Lang=\def\ScrWordInlLang{#1},%
+	Offset=\def\ScrWordInlOffset{#1},%
+	Scale=\def\ScrWordInlScale{#1}
+}
+
+\setKVdefault[SCRABBLEWORDINLINEEN]{%
+	Colback=yellow!40,%
+	Font=\bfseries\sffamily,%
+	Colfonte=black,%
+	Lang=EN,%
+	Offset=0.1pt,%
+	Score=true,%
+	Scale=0.6
+}
+
+\NewDocumentCommand\ScrabbleWord{ O{} m }{%
+	\useKVdefault[SCRABBLEWORDINLINEEN]%
+	\setKV[SCRABBLEWORDINLINEEN]{#1}%
+	\settototalheight{\tmp at scrabword@total at height}{\hbox{ABCDEFGHIJKLMNOPQQRSTUVWXYZabcdefghijklmnopqqrstuvwxyz}}%
+	\settodepth{\tmp at scrabword@depth}{\hbox{q}}%
+	\StrLen{#2}[\lgmot]%
+	\raisebox{-\tmp at scrabword@depth+0.025\tmp at scrabword@total at height}{%
+		\foreach \l in {1,2,...,\lgmot}%
+			{%
+				\StrChar{#2}{\l}[\ll]%
+				\IfStrEq{\ll}{*}%
+					{%
+						{\tikz \filldraw[\ScrWordInlColFond,rounded corners={0.15\tmp at scrabword@total at height}] (0,0) rectangle++ ({0.9\tmp at scrabword@total at height},{0.9\tmp at scrabword@total at height}) ;}%
+					}%
+					{%
+						{\tikz {%
+							\filldraw[\ScrWordInlColFond,rounded corners={0.15\tmp at scrabword@total at height}] (0,0) rectangle++ ({0.9\tmp at scrabword@total at height},{0.9\tmp at scrabword@total at height}) node[inner sep=0pt,midway,font=\ScrWordInlFonte,scale=\ScrWordInlScale,text=\ScrWordInlColFonte] {\expandafter\MakeUppercase\expandafter{\ll}};%
+							\ifboolKV[SCRABBLEWORDINLINEEN]{Score}%
+								{\draw ({0.9\tmp at scrabword@total at height},0) node[inner sep=0pt,above left={0.075\tmp at scrabword@total at height},font=\ScrWordInlFonte,scale={0.25*\ScrWordInlScale},text=\ScrWordInlColFonte] { \scrabblescorelettre[\ScrWordInlLang]{\ll} } ;}
+								{}%
+							}%
+						}%
+					}%
+			\ifnum \l<\lgmot\hspace*{\ScrWordInlOffset}\fi%
+			}%
+	}%
+}
+
+
+
 \endinput
\ No newline at end of file



More information about the tex-live-commits mailing list.