summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-07-13 19:56:20 +0000
committerKarl Berry <karl@freefriends.org>2023-07-13 19:56:20 +0000
commita1d2bad88caeeb4818d691f09de04621ef6d1811 (patch)
tree3e08791ea20a47a9c51407c92c4e38677fcc58e5
parentca30997845b1703ad8e59906576ea0617cdb939d (diff)
wordle (13jul23)
git-svn-id: svn://tug.org/texlive/trunk@67619 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/wordle/README.md8
-rw-r--r--Master/texmf-dist/doc/latex/wordle/wordle-doc-en.pdfbin0 -> 283172 bytes
-rw-r--r--Master/texmf-dist/doc/latex/wordle/wordle-doc-en.tex678
-rw-r--r--Master/texmf-dist/doc/latex/wordle/wordle-doc-fr.pdfbin0 -> 280114 bytes
-rw-r--r--Master/texmf-dist/doc/latex/wordle/wordle-doc-fr.tex674
-rw-r--r--Master/texmf-dist/tex/latex/wordle/wordle.sty297
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check2
-rwxr-xr-xMaster/tlpkg/libexec/ctan2tds1
-rw-r--r--Master/tlpkg/tlpsrc/collection-games.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/wordle.tlpsrc0
10 files changed, 1660 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/latex/wordle/README.md b/Master/texmf-dist/doc/latex/wordle/README.md
new file mode 100644
index 00000000000..f1977a1ae76
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/wordle/README.md
@@ -0,0 +1,8 @@
+wordle is a package to work with Wordle game.
+-----------------------------------------------------------
+wordle est un package pour travailler avec le jeu du sutom.
+-----------------------------------------------------------
+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
+Source : https://tex.stackexchange.com/questions/659860/wordle-like-colored-letter-boxes-in-latex \ No newline at end of file
diff --git a/Master/texmf-dist/doc/latex/wordle/wordle-doc-en.pdf b/Master/texmf-dist/doc/latex/wordle/wordle-doc-en.pdf
new file mode 100644
index 00000000000..18e6e84c930
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/wordle/wordle-doc-en.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/wordle/wordle-doc-en.tex b/Master/texmf-dist/doc/latex/wordle/wordle-doc-en.tex
new file mode 100644
index 00000000000..606a2c15353
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/wordle/wordle-doc-en.tex
@@ -0,0 +1,678 @@
+% !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[english,a4paper,11pt]{article}
+\usepackage[margin=2cm,includefoot]{geometry}
+\def\TPversion{0.1.0}
+\def\TPdate{12/07/2023}
+\usepackage{amssymb,amsfonts,amsmath}
+\usepackage[utf8]{inputenc}
+%\usepackage[T1]{fontenc}
+\usepackage{wordle}
+\usepackage{awesomebox}
+\usepackage{fontawesome5}
+\usepackage{footnote}
+\makesavenoteenv{tabular}
+\usepackage{enumitem}
+\usepackage{tabularray}
+\usepackage{fancyvrb}
+\usepackage{fancyhdr}
+\fancyhf{}
+\renewcommand{\headrulewidth}{0pt}
+\lfoot{\sffamily\small [wordle]}
+\cfoot{\sffamily\small - \thepage{} -}
+\rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}}
+
+%\usepackage{hvlogos}
+\usepackage{xspace}
+\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}}
+ {\LARGE \LaTeX} & & & & &\\
+ & {\LARGE \hologo{pdfLaTeX}} & & & & \\
+ & & {\LARGE \hologo{LuaLaTeX}} & & & \\
+ & & & {\LARGE \TikZ} & & \\
+ & & & & {\LARGE \TeXLive} & \\
+ & & & & & {\LARGE \hologo{MiKTeX}} \\
+ \end{tblr}
+}
+
+\usepackage{hyperref}
+\urlstyle{same}
+\hypersetup{pdfborder=0 0 0}
+\setlength{\parindent}{0pt}
+\definecolor{LightGray}{gray}{0.9}
+
+\usepackage{babel}
+%\AddThinSpaceBeforeFootnotes
+%\FrenchFootnotes
+
+\usepackage{listings}
+
+\usepackage{newverbs}
+\newverbcommand{\motcletex}{\color{cyan!75!black}}{}
+\newverbcommand{\packagetex}{\color{violet!75!black}}{}
+
+\usepackage[most]{tcolorbox}
+\tcbuselibrary{listingsutf8}
+\newtcblisting{DemoCode}[1][]{%
+ enhanced,width=0.95\linewidth,center,%
+ bicolor,size=title,%
+ colback=cyan!2!white,%
+ colbacklower=cyan!1!white,%
+ colframe=cyan!75!black,%
+ listing options={%
+ breaklines=true,%
+ breakatwhitespace=true,%
+ style=tcblatex,basicstyle=\small\ttfamily,%
+ tabsize=4,%
+ commentstyle={\itshape\color{gray}},
+ keywordstyle={\color{blue}},%
+ classoffset=0,%
+ keywords={},%
+ alsoletter={-},%
+ keywordstyle={\color{blue}},%
+ classoffset=1,%
+ alsoletter={-},%
+ morekeywords={center,justify},%
+ keywordstyle={\color{violet}},%
+ classoffset=2,%
+ alsoletter={-},%
+ morekeywords={WordleGrid},%
+ keywordstyle={\color{green!50!black}},%
+ classoffset=3,%
+ morekeywords={Colors,Rounded,Unit,Font,ColorLetters,Letters,Style,Thickness,BorderColor},%
+ keywordstyle={\color{orange}}
+ },%
+ #1
+}
+
+\tcbset{vignettes/.style={%
+ nobeforeafter,box align=base,boxsep=0pt,enhanced,sharp corners=all,rounded corners=southeast,%
+ boxrule=0.75pt,left=7pt,right=1pt,top=0pt,bottom=0.25pt,%
+ }
+}
+
+\tcbset{vignetteMaJ/.style={%
+ fontupper={\vphantom{pf}\footnotesize\ttfamily},
+ vignettes,colframe=purple!50!black,coltitle=white,colback=purple!10,%
+ overlay={\begin{tcbclipinterior}%
+ \fill[fill=purple!75]($(interior.south west)$) rectangle node[rotate=90]{\tiny \sffamily{\textcolor{black}{\scalebox{0.66}[0.66]{\textbf{MàJ}}}}} ($(interior.north west)+(5pt,0pt)$);%
+ \end{tcbclipinterior}}
+ }
+}
+
+\newcommand\Cle[1]{{\small\sffamily\textlangle \textcolor{orange}{#1}\textrangle}}
+\newcommand\cmaj[1]{\tcbox[vignetteMaJ]{#1}\xspace}
+
+\begin{document}
+
+\setlength{\aweboxleftmargin}{0.07\linewidth}
+\setlength{\aweboxcontentwidth}{0.93\linewidth}
+\setlength{\aweboxvskip}{8pt}
+
+\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{wordle} [en]}\\
+ \\
+ {\LARGE Grids of Wordle,} \\
+ \\
+ {\LARGE made with \textsf{Ti\textit{k}Z}.} \\
+ \end{tabular}
+
+ \bigskip
+
+ {\small \texttt{Version \TPversion{} -- \TPdate}}
+ \end{center}
+ \end{tcolorbox}
+\end{minipage}
+\end{center}
+
+\begin{center}
+ \begin{tabular}{c}
+ \texttt{Cédric Pierquet}\\
+ {\ttfamily c pierquet -- at -- outlook . fr}\\
+ \texttt{\url{https://github.com/cpierquet/wordle}}
+\end{tabular}
+\end{center}
+
+\vspace{0.25cm}
+
+{$\blacktriangleright$~~Create Wordle grids Wordle/Sutom\footnotemark\footnotetext{\url{https://en.wikipedia.org/wiki/Wordle}}.}
+
+\vspace{0.25cm}
+
+{$\blacktriangleright$~~Specify colors and font\footnotemark\footnotetext{Ideas from \url{ttps://tex.stackexchange.com/questions/659860/wordle-like-colored-letter-boxes-in-latex}}.
+
+\vspace{0.5cm}
+
+\begin{center}
+\begin{WordleGrid}{CRAZE}
+ GRAIL TRACK CRAMP CRABS CRAZY CRAZE
+\end{WordleGrid}
+\end{center}
+
+\begin{center}
+\begin{WordleGrid}[Rounded=0,Colors={lightgray,orange,teal},Style=alt,Unit=0.5,Letters=false]{LADLE}
+ FLAIL LAPEL LADLE
+\end{WordleGrid}
+%
+\hspace{5mm}
+%
+\begin{WordleGrid}[Rounded=0,Colors={lightgray,orange,teal},Style=alt,Unit=0.5]{LADLE}
+ FLAIL LAPEL LADLE
+\end{WordleGrid}
+\end{center}
+
+\vspace{0.25cm}
+
+%\hfill{}\textit{Merci à Denis Bitouzé et à Gilles Le Bourhis pour leurs retours et idées !}
+
+\smallskip
+
+\vfill
+
+\hrule
+
+\medskip
+
+\TableauDocumentation
+
+\medskip
+
+\hrule
+
+\vspace*{1cm}
+
+\newpage
+
+\phantomsection
+\hypertarget{matoc}{}
+
+\tableofcontents
+
+\vfill
+
+\section{History}
+
+\verb|v0.1.0|~:~~~~Initial version.
+
+\newpage
+
+\section{The wordle package}
+
+\subsection{The game}
+
+\begin{noteblock}
+Wordle is a web-based word game created and developed by Welsh software engineer Josh Wardle. Players have six attempts to guess a five-letter word, with feedback given for each guess in the form of colored tiles indicating when letters match or occupy the correct position.
+
+Every day, a five-letter word is chosen which players aim to guess within six tries. After every guess, each letter is marked as either green, yellow or gray: green indicates that letter is correct and in the correct position, yellow means it is in the answer but not in the right position, while gray indicates it is not in the answer at all. Multiple instances of the same letter in a guess, such as the "o"s in "robot", will be colored green or yellow only if the letter also appears multiple times in the answer; otherwise, excess repeating letters will be colored gray.
+
+\smallskip
+
+\hfill{\scriptsize \url{https://en.wikipedia.org/wiki/Wordle}}
+\end{noteblock}
+
+\subsection{The package}
+
+\begin{noteblock}
+This package can display, in a \textsf{tex} file, a wordle grid (with \TikZ{} and within a \motcletex!minipage!), with ability :
+
+\begin{itemize}
+ \item to change dimensions and colors ;
+ \item to pick style for misplaced letters ;
+ \item to change borders and corners ;
+ \item to print or not the letters.
+\end{itemize}
+
+It's possible to "play" with other words than five-letter words !
+\end{noteblock}
+
+\begin{importantblock}
+Most of source code, in \hologo{LaTeX3}, is given by thread from \texttt{tex.stackexchange}, proposed by user \textsf{3141592653589793238}.
+\end{importantblock}
+
+\subsection{Loading of the package, used packages}
+
+\begin{importantblock}
+The package \packagetex!wordle! loads within the preamble.
+
+There's no option, and \packagetex!xcolor! isn't loaded.
+\end{importantblock}
+
+\begin{DemoCode}[listing only]
+\documentclass{article}
+\usepackage{wordle}
+
+\end{DemoCode}
+
+\begin{noteblock}
+\packagetex!wordle! loads the following packages and libraries :
+
+\begin{itemize}
+ \item \packagetex!tikz!;
+ \item \packagetex!simplekv! ;
+ \item \packagetex!xstring!.
+\end{itemize}
+
+It’s mostly compatible with \textsf{latex}, \textsf{pdflatex}, \textsf{lualatex} or \textsf{xelatex} compilation !
+\end{noteblock}
+
+\vfill~
+
+\pagebreak
+
+\section{WordleGrid environment}
+
+\subsection{Environment}
+
+\begin{cautionblock}
+The environment to display a Wordle grid is \packagetex!WordleGrid!.
+
+It works with keys, between \texttt{[...]} and needs to know :
+
+\begin{itemize}
+ \item the good word ;
+ \item the different guesses.
+\end{itemize}
+
+The code create the grid and the colors !
+\end{cautionblock}
+
+\begin{DemoCode}[listing only]
+\begin{WordleGrid}[keys]{good word}
+ guess n°1
+ guess n°2
+ guess n°3
+\end{WordleGrid}
+\end{DemoCode}
+
+\begin{noteblock}
+the grid is created with a \motcletex!minipage!, with automatic width and spacings !
+\end{noteblock}
+
+\begin{DemoCode}[]
+%default output
+\begin{WordleGrid}{REBUS}
+ ARISE
+ ROUTE
+ RULES
+ REBUS
+\end{WordleGrid}
+\end{DemoCode}
+
+\subsection{Clés et options}
+
+\begin{tipblock}
+The first argument, mandatory and between \texttt{[...]}, proposes the following \Cle{keys} :
+
+\begin{itemize}
+ \item \Cle{Colors} : = colors of the boxes \Cle{back,misplaced,good} ;
+
+ \hfill{}default : \Cle{WordleBack,WordleBad,WordleGood},%
+ \item \Cle{Rounded} := arc for corners, in mm ; \hfill{}default : \Cle{0.1}
+ \item \Cle{Unit} := width of cases, in cm ; \hfill{}default : \Cle{1}
+ \item \Cle{Font} := font for letters ; \hfill{}default : \Cle{\textbackslash LARGE\textbackslash bfseries\textbackslash sffamily}
+ \item \Cle{ColorLetters} := color for letters ; \hfill{}default : \Cle{white}
+ \item \Cle{BorderColor} := color fot the border ; \hfill{}default : \Cle{white}
+ \item \Cle{Letters} := boolean to print letters ; \hfill{}default : \Cle{true}
+ \item \Cle{Style} := style within \Cle{default / other} to change the style ; \hfill{}default : \Cle{default}
+ \item \Cle{Thick} := thickness of the borders, in mm. \hfill{}default : \Cle{0.25}
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{tipblock}
+
+\begin{tipblock}
+The second argument, optional and between \texttt{\{...\}} is the correct word.
+
+\smallskip
+
+Different guesses are given within the body of the environment (line by line or space separated).
+\end{tipblock}
+
+\subsection{Examples}
+
+\begin{DemoCode}[]
+\begin{WordleGrid}{BURGH}
+ ABATE
+ HERBS
+ BURLY
+ BURGH
+\end{WordleGrid}
+%
+\hspace{5mm}
+%
+\begin{WordleGrid}[Style=alt]{BURGH}
+ ABATE HERBS BURLY BURGH
+\end{WordleGrid}
+\end{DemoCode}
+
+\begin{DemoCode}[]
+\begin{WordleGrid}
+ [Thickness=0.3,BorderColor=black,%
+ Colors={lightgray,orange,teal}]{BURGH}
+ ABATE
+ HERBS
+ BURLY
+ BURGH
+\end{WordleGrid}
+%
+\hspace{5mm}
+%
+\begin{WordleGrid}
+ [Rounded=0,Thickness=0.3,BorderColor=black,%
+ Colors={lightgray,orange,teal}]{BURGH}
+ ABATE
+ HERBS
+ BURLY
+ BURGH
+\end{WordleGrid}
+\end{DemoCode}
+
+\begin{DemoCode}[]
+\begin{WordleGrid}[Unit=2,Font=\Huge\ttfamily,ColorLetters=black]{BURGH}
+ ABATE
+ HERBS
+ BURLY
+ BURGH
+\end{WordleGrid}
+\end{DemoCode}
+
+\begin{DemoCode}[]
+\begin{WordleGrid}%
+ [Unit=0.75,Rounded=0,Colors={cyan,orange,violet},Letters=false]{BURGH}
+ ABATE
+ HERBS
+ BURLY
+ BURGH
+\end{WordleGrid}
+\hspace{5mm}
+\begin{WordleGrid}%
+ [Unit=0.75,Rounded=0,Colors={cyan,orange,violet},Style=alt]
+ {BURGH}
+ ABATE
+ HERBS
+ BURLY
+ BURGH
+\end{WordleGrid}
+\hspace{5mm}
+\begin{WordleGrid}%
+ [Unit=0.75,Rounded=0,Colors={cyan,orange,violet},Style=alt,Letters=false]
+ {BURGH}
+ ABATE
+ HERBS
+ BURLY
+ BURGH
+\end{WordleGrid}
+\end{DemoCode}
+
+%\begin{DemoCode}[]
+%\hfill\begin{PostIt}%moteur de rendu tikz
+% [Rendu=tikz,Couleur=violet,Largeur=9cm,Inclinaison=-10,Attache=Trombone,
+% CouleurAttache=black,ExtraMargeDroite=1cm,Titre={Petit Titre},
+% PoliceTitre={\color{white}\bfseries\small\sffamily}]
+%\lipsum[1][1-3]
+%\end{PostIt}\hfill~
+%\end{DemoCode}
+%
+%\begin{DemoCode}[]
+%\hfill\begin{PostIt}%moteur de rendu tikzv2
+% [Rendu=tikzv2,Couleur=orange,Largeur=9cm,Inclinaison=-10,Attache=Scotch, Titre={Essai},
+% PoliceTitre={\color{blue!50!black}\bfseries\itshape\small\ttfamily}]
+%\lipsum[1][1-3]
+%\end{PostIt}\hfill~
+%\end{DemoCode}
+%
+%\begin{DemoCode}[]
+%%usepackage{wrapstuff}
+%\begin{wrapstuff}[r,top=1]
+%\begin{PostIt}[Inclinaison=5,Coin,Couleur=pink,CouleurAttache=blue,Bordure=false]
+%\lipsum[1][1-2]
+%\end{PostIt}
+%\end{wrapstuff}
+%
+%\lipsum[1]
+%\end{DemoCode}
+%
+%\begin{DemoCode}[]
+%%usepackage{wrapstuff}
+%\begin{wrapstuff}[r,top=1]
+%\begin{PostIt}[Inclinaison=5,Rendu=tikz,Couleur=pink, CouleurAttache=blue,Bordure=false]
+%\lipsum[1][1-2]
+%\end{PostIt}
+%\end{wrapstuff}
+%
+%\lipsum[1]
+%\end{DemoCode}
+%
+%\begin{DemoCode}[]
+%%usepackage{wrapstuff}
+%\begin{wrapstuff}[r,top=1]
+%\begin{PostIt}[Inclinaison=5,Rendu=tikzv2,Attache=Scotch,Couleur=pink]
+%\lipsum[1][1-2]
+%\end{PostIt}
+%\end{wrapstuff}
+%
+%\lipsum[1]
+%\end{DemoCode}
+%
+%\begin{DemoCode}[]
+%Un petit Post-It aligné à droite, et centré verticalement :
+%%
+%\hfill\begin{PostIt}[Inclinaison=-10,Couleur=orange,Largeur=5cm,Hauteur=5cm, AlignementV=center,Coin,CouleurAttache=yellow, DecalAttache=-1,AlignementPostIt=center]
+%
+%\textsf{\small\lipsum[1][1-2]}
+%\[\mathsf{\displaystyle\sum_{k=1}^{n} k = \dfrac{n(n+1)}{2}}\]
+%\end{PostIt}
+%\end{DemoCode}
+%
+%%\begin{DemoCode}[]
+%%Un petit Post-It aligné à droite, et centré verticalement :
+%%%
+%%\hfill\begin{PostIt}[Inclinaison=-10,Couleur=orange,Largeur=5cm,Hauteur=5cm, AlignementV=center,Rendu=tikz,Attache=Non,AlignementPostIt=center]
+%%
+%%\textsf{\small\lipsum[1][1-2]}
+%%\[\mathsf{\displaystyle\sum_{k=1}^{n} k = \dfrac{n(n+1)}{2}}\]
+%%\end{PostIt}
+%%\end{DemoCode}
+%%
+%%\vfill~
+%
+%\pagebreak
+%
+%\section{Post-It simple, en ligne}
+%
+%\subsection{Commande et fonctionnement global}
+%
+%\begin{cautionblock}
+%La commande dédiée à la création du \textit{mini-}Post-It est \motcletex!MiniPostIt!.
+%
+%Elle fonctionne sous forme autonome, avec uniquement la couleur en \Cle{option}.
+%
+%\smallskip
+%
+%Cette fois-ci le \textit{mini-} Post-It est créé à l'aide d'une commande \motcletex!tcbox!.
+%
+%\smallskip
+%
+%Les dimensions ne sont pas modifiables, et un \motcletex!\vphantom! est inséré au début de la \motcletex!tcbox! afin d'harmoniser la hauteur.
+%\end{cautionblock}
+%
+%\begin{DemoCode}[listing only]
+%\MiniPostIt(*)[couleur]{contenu}
+%\end{DemoCode}
+%
+%\subsection{Arguments}
+%
+%\begin{noteblock}
+%La version étoilée active l'ombre du \textit{mini-}Post-It.
+%
+%La couleur (\Cle{yellow}), est gérée par l'argument optionnel entre \texttt{[...]}.
+%\end{noteblock}
+%
+%\subsection{Exemples}
+%
+%\begin{DemoCode}[]
+%On va travailler sur une équation diophantienne du type $ax+by=c$.
+%
+%On va utiliser le \MiniPostIt*[orange]{théorème de Bezout}, le \MiniPostIt{théorème de Gauss} sans oublier la \MiniPostIt*[cyan]{réciproque}.
+%
+%Le schéma de résolution est classique, et assez simple à appréhender !
+%\end{DemoCode}
+%
+%\pagebreak
+%
+%\section{Résumé des styles}
+%
+%\subsection{Moteur de rendu tcbox}
+%
+%\begin{DemoCode}[text only]
+%\hfill\begin{PostIt}
+%\texttt{Ombre/Épingle/Bordure}
+%\end{PostIt}
+%\begin{PostIt}[Ombre=false]
+%\texttt{Épingle/Bordure}
+%\end{PostIt}\hfill~
+%
+%\medskip
+%
+%\hfill\begin{PostIt}[Bordure=false]
+%\texttt{Ombre/Épingle}
+%\end{PostIt}
+%\begin{PostIt}[Bordure=false,Ombre=false]
+%\texttt{Épingle}
+%\end{PostIt}\hfill~
+%
+%\medskip
+%
+%\hfill\begin{PostIt}[Attache=Trombone]
+%\texttt{Ombre/Trombone/Bordure}\\
+%~
+%\end{PostIt}
+%\begin{PostIt}[Attache=Scotch]
+%\texttt{Ombre/Scotch/Bordure}\\
+%~
+%\end{PostIt}\hfill~
+%
+%\medskip
+%
+%\hfill\begin{PostIt}[Attache=Non]
+%\texttt{Ombre/Bordure}
+%\end{PostIt}
+%\begin{PostIt}[Coin,Attache=Non]
+%\texttt{Ombre/Bordure/Coin}
+%\end{PostIt}\hfill~
+%
+%\vspace{1cm}
+%
+%\hfill\begin{PostIt}[Titre={Lipsum[1][1-4]},PoliceTitre={\large\sffamily},Inclinaison=5,Couleur=pink,Hauteur=6cm,Attache=Scotch,AlignementV=center,Coin]
+%\lipsum[1][1-4]
+%\end{PostIt}\hfill~
+%\end{DemoCode}
+%
+%\pagebreak
+%
+%\subsection{Moteur de rendu tikz}
+%
+%\begin{DemoCode}[text only]
+%\hfill\begin{PostIt}[Rendu=tikz]
+%\texttt{Ombre/Épingle/Bordure}
+%\end{PostIt}
+%\begin{PostIt}[Ombre=false,Rendu=tikz]
+%\texttt{Épingle/Bordure}
+%\end{PostIt}\hfill~
+%
+%\medskip
+%
+%\hfill\begin{PostIt}[Bordure=false,Rendu=tikz]
+%\texttt{Ombre/Épingle}
+%\end{PostIt}
+%\begin{PostIt}[Bordure=false,Ombre=false,Rendu=tikz]
+%\texttt{Épingle}
+%\end{PostIt}\hfill~
+%
+%\medskip
+%
+%\hfill\begin{PostIt}[Attache=Trombone,Rendu=tikz]
+%\texttt{Ombre/Trombone/Bordure}\\
+%~
+%\end{PostIt}
+%\begin{PostIt}[Attache=Scotch,Rendu=tikz]
+%\texttt{Ombre/Scotch/Bordure}\\
+%~
+%\end{PostIt}\hfill~
+%
+%\medskip
+%
+%\hfill\begin{PostIt}[Attache=Non,Rendu=tikz]
+%\texttt{Ombre/Bordure}
+%\end{PostIt}\hfill~
+%
+%\vspace{1cm}
+%
+%\hfill\begin{PostIt}[Rendu=tikz,Titre={Lipsum[1][1-4]},PoliceTitre={\large\sffamily},Inclinaison=5,Couleur=pink,Hauteur=6cm,Attache=Scotch,AlignementV=center,Coin]
+%\lipsum[1][1-4]
+%\end{PostIt}\hfill~
+%\end{DemoCode}
+%
+%\subsection{Moteur de rendu tikzv2}
+%
+%\begin{DemoCode}[text only]
+%\hfill\begin{PostIt}[Rendu=tikzv2]
+%\texttt{Ombre/Épingle/Bordure}
+%\end{PostIt}
+%\begin{PostIt}[Ombre=false,Rendu=tikzv2]
+%\texttt{Épingle/Bordure}
+%\end{PostIt}\hfill~
+%
+%\medskip
+%
+%\hfill\begin{PostIt}[Bordure=false,Rendu=tikzv2]
+%\texttt{Ombre/Épingle}
+%\end{PostIt}
+%\begin{PostIt}[Bordure=false,Ombre=false,Rendu=tikzv2]
+%\texttt{Épingle}
+%\end{PostIt}\hfill~
+%
+%\medskip
+%
+%\hfill\begin{PostIt}[Attache=Trombone,Rendu=tikzv2]
+%\texttt{Ombre/Trombone/Bordure}\\
+%~
+%\end{PostIt}
+%\begin{PostIt}[Attache=Scotch,Rendu=tikzv2]
+%\texttt{Ombre/Scotch/Bordure}\\
+%~
+%\end{PostIt}\hfill~
+%
+%\medskip
+%
+%\hfill\begin{PostIt}[Attache=Non,Rendu=tikzv2]
+%\texttt{Ombre/Bordure}
+%\end{PostIt}\hfill~
+%
+%\vspace{1cm}
+%
+%\hfill\begin{PostIt}[Rendu=tikzv2,Titre={Lipsum[1][1-4]},PoliceTitre={\large\sffamily},Inclinaison=5,Couleur=pink,Hauteur=6cm,Attache=Scotch,AlignementV=center,Coin]
+%\lipsum[1][1-4]
+%\end{PostIt}\hfill~
+%\end{DemoCode}
+
+
+
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/doc/latex/wordle/wordle-doc-fr.pdf b/Master/texmf-dist/doc/latex/wordle/wordle-doc-fr.pdf
new file mode 100644
index 00000000000..eb1d096d804
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/wordle/wordle-doc-fr.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/wordle/wordle-doc-fr.tex b/Master/texmf-dist/doc/latex/wordle/wordle-doc-fr.tex
new file mode 100644
index 00000000000..6de4d25baf2
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/wordle/wordle-doc-fr.tex
@@ -0,0 +1,674 @@
+% !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[french,a4paper,11pt]{article}
+\usepackage[margin=2cm,includefoot]{geometry}
+\def\TPversion{0.1.0}
+\def\TPdate{12 juillet 2023}
+\usepackage{amssymb,amsfonts,amsmath}
+\usepackage[utf8]{inputenc}
+%\usepackage[T1]{fontenc}
+\usepackage{wordle}
+\usepackage{awesomebox}
+\usepackage{fontawesome5}
+\usepackage{footnote}
+\makesavenoteenv{tabular}
+\usepackage{enumitem}
+\usepackage{tabularray}
+\usepackage{fancyvrb}
+\usepackage{fancyhdr}
+\fancyhf{}
+\renewcommand{\headrulewidth}{0pt}
+\lfoot{\sffamily\small [wordle]}
+\cfoot{\sffamily\small - \thepage{} -}
+\rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}}
+
+%\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}}
+ {\LARGE \LaTeX} & & & & &\\
+ & {\LARGE \hologo{pdfLaTeX}} & & & & \\
+ & & {\LARGE \hologo{LuaLaTeX}} & & & \\
+ & & & {\LARGE \TikZ} & & \\
+ & & & & {\LARGE \TeXLive} & \\
+ & & & & & {\LARGE \hologo{MiKTeX}} \\
+ \end{tblr}
+}
+
+\usepackage{hyperref}
+\urlstyle{same}
+\hypersetup{pdfborder=0 0 0}
+\setlength{\parindent}{0pt}
+\definecolor{LightGray}{gray}{0.9}
+
+\usepackage{babel}
+\AddThinSpaceBeforeFootnotes
+\FrenchFootnotes
+
+\usepackage{listings}
+
+\usepackage{newverbs}
+\newverbcommand{\motcletex}{\color{cyan!75!black}}{}
+\newverbcommand{\packagetex}{\color{violet!75!black}}{}
+
+\usepackage[most]{tcolorbox}
+\tcbuselibrary{listingsutf8}
+\newtcblisting{DemoCode}[1][]{%
+ enhanced,width=0.95\linewidth,center,%
+ bicolor,size=title,%
+ colback=cyan!2!white,%
+ colbacklower=cyan!1!white,%
+ colframe=cyan!75!black,%
+ listing options={%
+ breaklines=true,%
+ breakatwhitespace=true,%
+ style=tcblatex,basicstyle=\small\ttfamily,%
+ tabsize=4,%
+ commentstyle={\itshape\color{gray}},
+ keywordstyle={\color{blue}},%
+ classoffset=0,%
+ keywords={},%
+ alsoletter={-},%
+ keywordstyle={\color{blue}},%
+ classoffset=1,%
+ alsoletter={-},%
+ morekeywords={center,justify},%
+ keywordstyle={\color{violet}},%
+ classoffset=2,%
+ alsoletter={-},%
+ morekeywords={GrilleSutom},%
+ keywordstyle={\color{green!50!black}},%
+ classoffset=3,%
+ morekeywords={Couleurs,Arrondi,Unite,Police,CouleurLettres,Lettres,Style,Epaisseur,CouleurBordure},%
+ keywordstyle={\color{orange}}
+ },%
+ #1
+}
+
+\tcbset{vignettes/.style={%
+ nobeforeafter,box align=base,boxsep=0pt,enhanced,sharp corners=all,rounded corners=southeast,%
+ boxrule=0.75pt,left=7pt,right=1pt,top=0pt,bottom=0.25pt,%
+ }
+}
+
+\tcbset{vignetteMaJ/.style={%
+ fontupper={\vphantom{pf}\footnotesize\ttfamily},
+ vignettes,colframe=purple!50!black,coltitle=white,colback=purple!10,%
+ overlay={\begin{tcbclipinterior}%
+ \fill[fill=purple!75]($(interior.south west)$) rectangle node[rotate=90]{\tiny \sffamily{\textcolor{black}{\scalebox{0.66}[0.66]{\textbf{MàJ}}}}} ($(interior.north west)+(5pt,0pt)$);%
+ \end{tcbclipinterior}}
+ }
+}
+
+\newcommand\Cle[1]{{\small\sffamily\textlangle \textcolor{orange}{#1}\textrangle}}
+\newcommand\cmaj[1]{\tcbox[vignetteMaJ]{#1}\xspace}
+
+\begin{document}
+
+\setlength{\aweboxleftmargin}{0.07\linewidth}
+\setlength{\aweboxcontentwidth}{0.93\linewidth}
+\setlength{\aweboxvskip}{8pt}
+
+\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{wordle} [fr]}\\
+ \\
+ {\LARGE Des grilles de Wordle (Sutom),} \\
+ \\
+ {\LARGE avec \textsf{Ti\textit{k}Z}.} \\
+ \end{tabular}
+
+ \bigskip
+
+ {\small \texttt{Version \TPversion{} -- \TPdate}}
+ \end{center}
+ \end{tcolorbox}
+\end{minipage}
+\end{center}
+
+\begin{center}
+ \begin{tabular}{c}
+ \texttt{Cédric Pierquet}\\
+ {\ttfamily c pierquet -- at -- outlook . fr}\\
+ \texttt{\url{https://github.com/cpierquet/wordle}}
+\end{tabular}
+\end{center}
+
+\vspace{0.25cm}
+
+{$\blacktriangleright$~~Créer des grilles de Wordle/Sutom\footnotemark\footnotetext{\url{https://fr.wikipedia.org/wiki/Wordle}}.}
+
+\vspace{0.25cm}
+
+{$\blacktriangleright$~~Gestion des couleurs, de la taille\footnotemark\footnotetext{Idées venant de \url{ttps://tex.stackexchange.com/questions/659860/wordle-like-colored-letter-boxes-in-latex}}.
+
+\vspace{1cm}
+
+\begin{center}
+\begin{GrilleSutom}{LUCIOLE}
+ LAPINES
+ LUMIERE
+ LOURDES
+ LUCIOLE
+\end{GrilleSutom}
+\end{center}
+
+\medskip
+
+\begin{center}
+\begin{GrilleSutom}[Arrondi=0,Couleurs={lightgray,orange,teal},Style=alt,Unite=0.5,Lettres=false]{REBUS}
+ ABRIS
+ ROUTE
+ RUDES
+ REBUS
+\end{GrilleSutom}
+%
+\hspace{5mm}
+%
+\begin{GrilleSutom}[Arrondi=0,Couleurs={lightgray,orange,teal},Style=alt,Unite=0.5]{REBUS}
+ ABRIS
+ ROUTE
+ RUDES
+ REBUS
+\end{GrilleSutom}
+\end{center}
+
+\vspace{0.5cm}
+
+%\hfill{}\textit{Merci à Denis Bitouzé et à Gilles Le Bourhis pour leurs retours et idées !}
+
+\smallskip
+
+\vfill
+
+\hrule
+
+\medskip
+
+\TableauDocumentation
+
+\medskip
+
+\hrule
+
+\vspace*{1cm}
+
+\newpage
+
+\phantomsection
+\hypertarget{matoc}{}
+
+\tableofcontents
+
+\vfill
+
+\section{Historique}
+
+\verb|v0.1.0|~:~~~~Version initiale.
+
+\newpage
+
+\section{Le package wordle}
+
+\subsection{Le principe du jeu}
+
+\begin{noteblock}
+Wordle est un jeu de lettres en ligne gratuit développé en 2021 par Josh Wardle. Ce jeu est une adaptation directe du jeu télévisé américain Lingo (Motus en France) qui propose de faire deviner un mot par plusieurs tentatives, en indiquant pour chacune d'entre-elles la position des lettres bien placées et mal placées.
+
+Le but du jeu est de deviner un mot spécifique de cinq lettres en un maximum de six tentatives, en tapant des lettres sur un écran de six lignes de cinq cases chacune. La personne qui joue inscrit sur la première ligne un mot de cinq lettres de son choix et entre sa proposition. Après chaque proposition, les lettres apparaissent en couleurs : le fond gris représente les lettres qui ne se trouvent pas dans le mot recherché, le fond jaune représente les lettres qui se trouvent ailleurs dans le mot, et le fond vert représente les lettres qui se trouvent à la bonne place dans le mot à trouver.
+
+\smallskip
+
+\hfill{\scriptsize \url{https://fr.wikipedia.org/wiki/Wordle}}
+\end{noteblock}
+
+\subsection{Le package}
+
+\begin{noteblock}
+Le package propose de quoi afficher, dans son document \LaTeX, une grille de Wordle (ou de Sutom) à l'aide de \TikZ{} et d'une \motcletex!minipage!, avec la possibilité :
+
+\begin{itemize}
+ \item de spécifier les dimensions, la couleur ;
+ \item de choisir le style des lettres mal placées ;
+ \item de personnaliser les bordure et les coins ;
+ \item d'afficher ou non les lettres.
+\end{itemize}
+
+Contrairement au jeu \og initial \fg, il est possible de travailler avec des mots de longueur différente de 5 !
+\end{noteblock}
+
+\begin{importantblock}
+Une bonne partie du code, en \hologo{LaTeX3}, est issu d'un fil sur \texttt{tex.stackexchange}, et proposé par l'internaute \textsf{3141592653589793238}.
+\end{importantblock}
+
+\subsection{Chargement du package, packages utilisés}
+
+\begin{importantblock}
+Le package se charge, de manière classique, dans le préambule.
+
+Il n'existe pas d'option pour le package, et \packagetex!xcolor! n'est pas chargé.
+\end{importantblock}
+
+\begin{DemoCode}[listing only]
+\documentclass{article}
+\usepackage{wordle}
+
+\end{DemoCode}
+
+\begin{noteblock}
+\packagetex!wordle! charge les packages suivants :
+
+\begin{itemize}
+ \item \packagetex!tikz!;
+ \item \packagetex!simplekv! ;
+ \item \packagetex!xstring!.
+\end{itemize}
+
+Il est compatible avec les compilations usuelles en \textsf{latex}, \textsf{pdflatex}, \textsf{lualatex} ou \textsf{xelatex}.
+\end{noteblock}
+
+\vfill~
+
+\pagebreak
+
+\section{Environnement GrilleSutom}
+
+\subsection{Fonctionnement global}
+
+\begin{cautionblock}
+L'environnement dédié à la création de la grille du Sutom est \packagetex!GrilleSutom!.
+
+Il fonctionne avec un système de clés, entre \texttt{[...]}, et nécessite de préciser :
+
+\begin{itemize}
+ \item le bon mot ;
+ \item les différentes propositions.
+\end{itemize}
+
+Le code se charge de mettre en forme (grâce à une \motcletex!minipage!) la grille et les différentes couleurs d'aide.
+\end{cautionblock}
+
+\begin{DemoCode}[listing only]
+\begin{GrilleSutom}[clés]{mot à trouver}
+ proposition n°1
+ proposition n°2
+ proposition n°3
+\end{GrilleSutom}
+\end{DemoCode}
+
+\begin{noteblock}
+Comme indiqué dans l'introduction, la grille est créée à l'aide d'un environnement \motcletex!minipage!, avec gestion automatique de la largeur et des espacements.
+\end{noteblock}
+
+\begin{DemoCode}[]
+%sortie par défaut
+\begin{GrilleSutom}{SUTOM}
+ SAUCE
+ SAUTS
+ SUTOM
+\end{GrilleSutom}
+\end{DemoCode}
+
+\subsection{Clés et options}
+
+\begin{tipblock}
+Le premier argument, optionnel et entre \texttt{[...]}, propose les \Cle{clés} suivantes :
+
+\begin{itemize}
+ \item \Cle{Couleurs} : = couleur des cases, sous la forme \Cle{fond,mal placée,bien placée} ;
+
+ \hfill{}défaut : \Cle{cyan!75!black,yellow,red},%
+ \item \Cle{Arrondi} := arrondi des coins, en mm ; \hfill{}défaut : \Cle{0.1}
+ \item \Cle{Unite} := largeur des cases, en cm ; \hfill{}défaut : \Cle{1}
+ \item \Cle{Police} := police des lettres ; \hfill{}défaut : \Cle{\textbackslash LARGE\textbackslash bfseries\textbackslash sffamily}
+ \item \Cle{CouleurLettres} := couleur des lettres ; \hfill{}défaut : \Cle{white}
+ \item \Cle{CouleurBordure} := couleur de la bordure des cases ; \hfill{}défaut : \Cle{white}
+ \item \Cle{Lettres} := booléen pour afficher les lettre ; \hfill{}défaut : \Cle{true}
+ \item \Cle{Style} := style parmi \Cle{rond / autre} pour changer le style ; \hfill{}défaut : \Cle{rond}
+ \item \Cle{Epaisseur} := épaisseur des traits, en mm. \hfill{}défaut : \Cle{0.25}
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{tipblock}
+
+\begin{tipblock}
+Le second argument, obligatoire et entre \texttt{\{...\}} correspond au mot correct à trouver.
+
+\smallskip
+
+Les différentes propositions sont à donner (ligne par ligne ou séparées par des espaces) dans le corps de l'environnement.
+\end{tipblock}
+
+\subsection{Exemples}
+
+\begin{DemoCode}[]
+\begin{GrilleSutom}{BOURDON}
+ BALEINE
+ BOURBON
+ BROMURE
+ BOURDON
+\end{GrilleSutom}
+%
+\hspace{5mm}
+%
+\begin{GrilleSutom}[Style=alt]{BOURDON}
+ BALEINE BOURBON BROMURE BOURDON
+\end{GrilleSutom}
+\end{DemoCode}
+
+\begin{DemoCode}[]
+\begin{GrilleSutom}
+ [Style=alt,Epaisseur=0.3,CouleurBordure=black,%
+ Couleurs={lightgray,orange,teal}]%
+ {BOURDON}
+ BALEINE BOURBON BROMURE BOURDON
+\end{GrilleSutom}
+%
+\hspace{5mm}
+%
+\begin{GrilleSutom}
+ [Arrondi=0,Epaisseur=0.3,CouleurBordure=black,%
+ Couleurs={lightgray,orange,teal}]%
+ {BOURDON}
+ BALEINE BOURBON BROMURE BOURDON
+\end{GrilleSutom}
+\end{DemoCode}
+
+\begin{DemoCode}[]
+\begin{GrilleSutom}[Unite=2,Police=\Huge\ttfamily,CouleurLettres=black]{BOURDON}
+ BALEINE
+ BOURBON
+ BROMURE
+ BOURDON
+\end{GrilleSutom}
+\end{DemoCode}
+
+\begin{DemoCode}[]
+\begin{GrilleSutom}%
+ [Unite=0.75,Arrondi=0,Couleurs={cyan,orange,violet},%
+ Style=alt,Lettres=false]{REBUS}
+ ABRIS
+ ROUTE
+ RUDES
+ REBUS
+\end{GrilleSutom}
+\hspace{5mm}
+\begin{GrilleSutom}%
+ [Unite=0.75,Arrondi=0,Couleurs={cyan,orange,violet},Style=alt]{REBUS}
+ ABRIS
+ ROUTE
+ RUDES
+ REBUS
+\end{GrilleSutom}
+\end{DemoCode}
+
+%\begin{DemoCode}[]
+%\hfill\begin{PostIt}%moteur de rendu tikz
+% [Rendu=tikz,Couleur=violet,Largeur=9cm,Inclinaison=-10,Attache=Trombone,
+% CouleurAttache=black,ExtraMargeDroite=1cm,Titre={Petit Titre},
+% PoliceTitre={\color{white}\bfseries\small\sffamily}]
+%\lipsum[1][1-3]
+%\end{PostIt}\hfill~
+%\end{DemoCode}
+%
+%\begin{DemoCode}[]
+%\hfill\begin{PostIt}%moteur de rendu tikzv2
+% [Rendu=tikzv2,Couleur=orange,Largeur=9cm,Inclinaison=-10,Attache=Scotch, Titre={Essai},
+% PoliceTitre={\color{blue!50!black}\bfseries\itshape\small\ttfamily}]
+%\lipsum[1][1-3]
+%\end{PostIt}\hfill~
+%\end{DemoCode}
+%
+%\begin{DemoCode}[]
+%%usepackage{wrapstuff}
+%\begin{wrapstuff}[r,top=1]
+%\begin{PostIt}[Inclinaison=5,Coin,Couleur=pink,CouleurAttache=blue,Bordure=false]
+%\lipsum[1][1-2]
+%\end{PostIt}
+%\end{wrapstuff}
+%
+%\lipsum[1]
+%\end{DemoCode}
+%
+%\begin{DemoCode}[]
+%%usepackage{wrapstuff}
+%\begin{wrapstuff}[r,top=1]
+%\begin{PostIt}[Inclinaison=5,Rendu=tikz,Couleur=pink, CouleurAttache=blue,Bordure=false]
+%\lipsum[1][1-2]
+%\end{PostIt}
+%\end{wrapstuff}
+%
+%\lipsum[1]
+%\end{DemoCode}
+%
+%\begin{DemoCode}[]
+%%usepackage{wrapstuff}
+%\begin{wrapstuff}[r,top=1]
+%\begin{PostIt}[Inclinaison=5,Rendu=tikzv2,Attache=Scotch,Couleur=pink]
+%\lipsum[1][1-2]
+%\end{PostIt}
+%\end{wrapstuff}
+%
+%\lipsum[1]
+%\end{DemoCode}
+%
+%\begin{DemoCode}[]
+%Un petit Post-It aligné à droite, et centré verticalement :
+%%
+%\hfill\begin{PostIt}[Inclinaison=-10,Couleur=orange,Largeur=5cm,Hauteur=5cm, AlignementV=center,Coin,CouleurAttache=yellow, DecalAttache=-1,AlignementPostIt=center]
+%
+%\textsf{\small\lipsum[1][1-2]}
+%\[\mathsf{\displaystyle\sum_{k=1}^{n} k = \dfrac{n(n+1)}{2}}\]
+%\end{PostIt}
+%\end{DemoCode}
+%
+%%\begin{DemoCode}[]
+%%Un petit Post-It aligné à droite, et centré verticalement :
+%%%
+%%\hfill\begin{PostIt}[Inclinaison=-10,Couleur=orange,Largeur=5cm,Hauteur=5cm, AlignementV=center,Rendu=tikz,Attache=Non,AlignementPostIt=center]
+%%
+%%\textsf{\small\lipsum[1][1-2]}
+%%\[\mathsf{\displaystyle\sum_{k=1}^{n} k = \dfrac{n(n+1)}{2}}\]
+%%\end{PostIt}
+%%\end{DemoCode}
+%%
+%%\vfill~
+%
+%\pagebreak
+%
+%\section{Post-It simple, en ligne}
+%
+%\subsection{Commande et fonctionnement global}
+%
+%\begin{cautionblock}
+%La commande dédiée à la création du \textit{mini-}Post-It est \motcletex!MiniPostIt!.
+%
+%Elle fonctionne sous forme autonome, avec uniquement la couleur en \Cle{option}.
+%
+%\smallskip
+%
+%Cette fois-ci le \textit{mini-} Post-It est créé à l'aide d'une commande \motcletex!tcbox!.
+%
+%\smallskip
+%
+%Les dimensions ne sont pas modifiables, et un \motcletex!\vphantom! est inséré au début de la \motcletex!tcbox! afin d'harmoniser la hauteur.
+%\end{cautionblock}
+%
+%\begin{DemoCode}[listing only]
+%\MiniPostIt(*)[couleur]{contenu}
+%\end{DemoCode}
+%
+%\subsection{Arguments}
+%
+%\begin{noteblock}
+%La version étoilée active l'ombre du \textit{mini-}Post-It.
+%
+%La couleur (\Cle{yellow}), est gérée par l'argument optionnel entre \texttt{[...]}.
+%\end{noteblock}
+%
+%\subsection{Exemples}
+%
+%\begin{DemoCode}[]
+%On va travailler sur une équation diophantienne du type $ax+by=c$.
+%
+%On va utiliser le \MiniPostIt*[orange]{théorème de Bezout}, le \MiniPostIt{théorème de Gauss} sans oublier la \MiniPostIt*[cyan]{réciproque}.
+%
+%Le schéma de résolution est classique, et assez simple à appréhender !
+%\end{DemoCode}
+%
+%\pagebreak
+%
+%\section{Résumé des styles}
+%
+%\subsection{Moteur de rendu tcbox}
+%
+%\begin{DemoCode}[text only]
+%\hfill\begin{PostIt}
+%\texttt{Ombre/Épingle/Bordure}
+%\end{PostIt}
+%\begin{PostIt}[Ombre=false]
+%\texttt{Épingle/Bordure}
+%\end{PostIt}\hfill~
+%
+%\medskip
+%
+%\hfill\begin{PostIt}[Bordure=false]
+%\texttt{Ombre/Épingle}
+%\end{PostIt}
+%\begin{PostIt}[Bordure=false,Ombre=false]
+%\texttt{Épingle}
+%\end{PostIt}\hfill~
+%
+%\medskip
+%
+%\hfill\begin{PostIt}[Attache=Trombone]
+%\texttt{Ombre/Trombone/Bordure}\\
+%~
+%\end{PostIt}
+%\begin{PostIt}[Attache=Scotch]
+%\texttt{Ombre/Scotch/Bordure}\\
+%~
+%\end{PostIt}\hfill~
+%
+%\medskip
+%
+%\hfill\begin{PostIt}[Attache=Non]
+%\texttt{Ombre/Bordure}
+%\end{PostIt}
+%\begin{PostIt}[Coin,Attache=Non]
+%\texttt{Ombre/Bordure/Coin}
+%\end{PostIt}\hfill~
+%
+%\vspace{1cm}
+%
+%\hfill\begin{PostIt}[Titre={Lipsum[1][1-4]},PoliceTitre={\large\sffamily},Inclinaison=5,Couleur=pink,Hauteur=6cm,Attache=Scotch,AlignementV=center,Coin]
+%\lipsum[1][1-4]
+%\end{PostIt}\hfill~
+%\end{DemoCode}
+%
+%\pagebreak
+%
+%\subsection{Moteur de rendu tikz}
+%
+%\begin{DemoCode}[text only]
+%\hfill\begin{PostIt}[Rendu=tikz]
+%\texttt{Ombre/Épingle/Bordure}
+%\end{PostIt}
+%\begin{PostIt}[Ombre=false,Rendu=tikz]
+%\texttt{Épingle/Bordure}
+%\end{PostIt}\hfill~
+%
+%\medskip
+%
+%\hfill\begin{PostIt}[Bordure=false,Rendu=tikz]
+%\texttt{Ombre/Épingle}
+%\end{PostIt}
+%\begin{PostIt}[Bordure=false,Ombre=false,Rendu=tikz]
+%\texttt{Épingle}
+%\end{PostIt}\hfill~
+%
+%\medskip
+%
+%\hfill\begin{PostIt}[Attache=Trombone,Rendu=tikz]
+%\texttt{Ombre/Trombone/Bordure}\\
+%~
+%\end{PostIt}
+%\begin{PostIt}[Attache=Scotch,Rendu=tikz]
+%\texttt{Ombre/Scotch/Bordure}\\
+%~
+%\end{PostIt}\hfill~
+%
+%\medskip
+%
+%\hfill\begin{PostIt}[Attache=Non,Rendu=tikz]
+%\texttt{Ombre/Bordure}
+%\end{PostIt}\hfill~
+%
+%\vspace{1cm}
+%
+%\hfill\begin{PostIt}[Rendu=tikz,Titre={Lipsum[1][1-4]},PoliceTitre={\large\sffamily},Inclinaison=5,Couleur=pink,Hauteur=6cm,Attache=Scotch,AlignementV=center,Coin]
+%\lipsum[1][1-4]
+%\end{PostIt}\hfill~
+%\end{DemoCode}
+%
+%\subsection{Moteur de rendu tikzv2}
+%
+%\begin{DemoCode}[text only]
+%\hfill\begin{PostIt}[Rendu=tikzv2]
+%\texttt{Ombre/Épingle/Bordure}
+%\end{PostIt}
+%\begin{PostIt}[Ombre=false,Rendu=tikzv2]
+%\texttt{Épingle/Bordure}
+%\end{PostIt}\hfill~
+%
+%\medskip
+%
+%\hfill\begin{PostIt}[Bordure=false,Rendu=tikzv2]
+%\texttt{Ombre/Épingle}
+%\end{PostIt}
+%\begin{PostIt}[Bordure=false,Ombre=false,Rendu=tikzv2]
+%\texttt{Épingle}
+%\end{PostIt}\hfill~
+%
+%\medskip
+%
+%\hfill\begin{PostIt}[Attache=Trombone,Rendu=tikzv2]
+%\texttt{Ombre/Trombone/Bordure}\\
+%~
+%\end{PostIt}
+%\begin{PostIt}[Attache=Scotch,Rendu=tikzv2]
+%\texttt{Ombre/Scotch/Bordure}\\
+%~
+%\end{PostIt}\hfill~
+%
+%\medskip
+%
+%\hfill\begin{PostIt}[Attache=Non,Rendu=tikzv2]
+%\texttt{Ombre/Bordure}
+%\end{PostIt}\hfill~
+%
+%\vspace{1cm}
+%
+%\hfill\begin{PostIt}[Rendu=tikzv2,Titre={Lipsum[1][1-4]},PoliceTitre={\large\sffamily},Inclinaison=5,Couleur=pink,Hauteur=6cm,Attache=Scotch,AlignementV=center,Coin]
+%\lipsum[1][1-4]
+%\end{PostIt}\hfill~
+%\end{DemoCode}
+
+
+
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/wordle/wordle.sty b/Master/texmf-dist/tex/latex/wordle/wordle.sty
new file mode 100644
index 00000000000..b73734341a5
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/wordle/wordle.sty
@@ -0,0 +1,297 @@
+% Author.........: C. Pierquet
+% licence........: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
+% Inspiration....: https://tex.stackexchange.com/questions/659860/wordle-like-colored-letter-boxes-in-latex
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{wordle}[2023/07/12 v0.1.0 Wordle grid]
+% 0.1.0 Version initiale + quelques modèles
+
+%------Packages utiles
+\RequirePackage{tikz}
+\RequirePackage{simplekv}
+\RequirePackage{xstring}
+
+%commandes utiles
+\usepackage{expl3}
+\ExplSyntaxOn
+
+%boite en [fr]
+\cs_new:Npn \l__sutom_boite_lettre:nn #1#2#3
+{
+ \ifboolKV[SUTOM]{Lettres}%
+ {%
+ \tikz \draw[rounded~corners=\fpeval{#3*\SutomUnit}cm,draw=\SutomBorder,line~width=\SutomWidth~mm,fill=#1] (0,0) rectangle++ (\SutomUnit,\SutomUnit) node[midway,font=\SutomFonte,text=\SutomFonteColor,scale=\SutomUnit] {#2} ;
+ }%
+ {%
+ \tikz \draw[rounded~corners=\fpeval{#3*\SutomUnit}cm,draw=\SutomBorder,line~width=\SutomWidth~mm,fill=#1] (0,0) rectangle++ (\SutomUnit,\SutomUnit) ;
+ }%
+}
+
+\cs_new:Npn \l__sutom_boite_lettre_rond:nn #1#2#3#4
+{
+ \IfStrEq{\SutomStyle}{rond}
+ {%
+ \tikz {\draw[rounded~corners=\fpeval{#4*\SutomUnit}cm,draw=\SutomBorder,line~width=\SutomWidth~mm,fill=#1] (0,0) rectangle++ (\SutomUnit,\SutomUnit) ;
+ \ifboolKV[SUTOM]{Lettres}%
+ {%
+ \draw[line~width=\SutomWidth~mm,draw=#2,fill=#2] ({0.5*\SutomUnit},{0.5*\SutomUnit}) circle[radius=\fpeval{0.5*\SutomUnit-0.1*\SutomWidth}] node[font=\SutomFonte,text=\SutomFonteColor,scale=\SutomUnit] {#3} ;
+ }%
+ {%
+ \draw[line~width=\SutomWidth~mm,draw=#2,fill=#2] ({0.5*\SutomUnit},{0.5*\SutomUnit}) circle[radius=\fpeval{0.5*\SutomUnit-0.1*\SutomWidth}];
+ }%
+ }%
+ }%
+ {%
+ \ifboolKV[SUTOM]{Lettres}%
+ {%
+ \tikz \draw[rounded~corners=\fpeval{#4*\SutomUnit}cm,line~width=0\SutomWidth~mm,draw=\SutomBorder,fill=#2] (0,0) rectangle++ (\SutomUnit,\SutomUnit) node[midway,font=\SutomFonte,text=\SutomFonteColor,scale=\SutomUnit] {#3} ;
+ }%
+ {%
+ \tikz \draw[rounded~corners=\fpeval{#4*\SutomUnit}cm,line~width=\SutomWidth~mm,draw=\SutomBorder,fill=#2] (0,0) rectangle++ (\SutomUnit,\SutomUnit) ;
+ }%
+ }%
+}
+
+%boite en [en]
+\cs_new:Npn \l__wordle_boite_lettre:nn #1#2#3
+{
+ \ifboolKV[WORDLE]{Letters}%
+ {%
+ \tikz \draw[rounded~corners=\fpeval{#3*\SutomUnit}cm,draw=\SutomBorder,line~width=\SutomWidth~mm,fill=#1] (0,0) rectangle++ (\SutomUnit,\SutomUnit) node[midway,font=\SutomFonte,text=\SutomFonteColor,scale=\SutomUnit] {#2} ;
+ }%
+ {%
+ \tikz \draw[rounded~corners=\fpeval{#3*\SutomUnit}cm,draw=\SutomBorder,line~width=\SutomWidth~mm,fill=#1] (0,0) rectangle++ (\SutomUnit,\SutomUnit) ;
+ }%
+}
+
+\cs_new:Npn \l__wordle_boite_lettre_rond:nn #1#2#3#4
+{
+ \IfStrEq{\SutomStyle}{default}
+ {%
+ \ifboolKV[WORDLE]{Letters}%
+ {%
+ \tikz \draw[rounded~corners=\fpeval{#4*\SutomUnit}cm,line~width=\SutomWidth~mm,draw=\SutomBorder,fill=#2] (0,0) rectangle++ (\SutomUnit,\SutomUnit) node[midway,font=\SutomFonte,text=\SutomFonteColor,scale=\SutomUnit] {#3} ;
+ }%
+ {%
+ \tikz \draw[rounded~corners=\fpeval{#4*\SutomUnit}cm,line~width=\SutomWidth~mm,draw=\SutomBorder,fill=#2] (0,0) rectangle++ (\SutomUnit,\SutomUnit) ;
+ }%
+ }%
+ {%
+ \tikz {\draw[rounded~corners=\fpeval{#4*\SutomUnit}cm,draw=\SutomBorder,line~width=\SutomWidth~mm,fill=#1] (0,0) rectangle++ (\SutomUnit,\SutomUnit) ;
+ \ifboolKV[WORDLE]{Letters}%
+ {%
+ \draw[line~width=\SutomWidth~mm,draw=#2,fill=#2] ({0.5*\SutomUnit},{0.5*\SutomUnit}) circle[radius=\fpeval{0.5*\SutomUnit-0.1*\SutomWidth}] node[font=\SutomFonte,text=\SutomFonteColor,scale=\SutomUnit] {#3} ;
+ }%
+ {%
+ \draw[line~width=\SutomWidth~mm,draw=#2,fill=#2] ({0.5*\SutomUnit},{0.5*\SutomUnit}) circle[radius=\fpeval{0.5*\SutomUnit-0.1*\SutomWidth}];
+ }%
+ }%
+ }%
+}
+
+\seq_new:N \l_wordle_seq % the answer
+\prop_new:N \l_wordle_prop % count letters in wordle
+\seq_new:N \l_words_seq % list of all words
+\prop_new:N \l_word_prop % count letters in word
+\int_new:N \l_letter_int % index of current letter in word
+
+% a conditional for nonnegative prop counter in \l_word_prop
+\prg_new_protected_conditional:Npnn \if_wordle_letter_nonnegative:n #1 {TF}
+{
+ \prop_if_in:NnTF \l_word_prop {#1}
+ { % letter in in prop
+ \prop_get:NnN \l_word_prop {#1} \l_tmpa_tl
+ \int_compare:nNnTF {\l_tmpa_tl} < {0}
+ {\prg_return_false:} {\prg_return_true:}
+ }
+ {\prg_return_false:}
+}
+
+% a conditional for comparing letters
+\prg_new_protected_conditional:Npnn \if_wordle_letters_agree:n #1 {T, TF}
+{
+ \str_set:Nx \l_tmpa_str {\seq_item:Nn \l_wordle_seq {\l_letter_int}}
+ \str_if_eq:nVTF {#1} \l_tmpa_str {\prg_return_true:} {\prg_return_false:}
+}
+
+% add #3 to <prop=#1>.#2
+\cs_new_protected:Npn \wordle__add_to_prop_counter:Nnn #1#2#3
+{
+ \prop_put_if_new:Nnn #1 {#2} {0}
+ \prop_pop:NnN #1 {#2} \l_tmp_a
+ \prop_put:Nnx #1 {#2} {\int_eval:n {#3+\l_tmp_a}}
+}
+
+% make \l_wordle_prop<x> = #x's in wordle_seq
+\cs_new_protected:Npn \count_letters_in_wordle:n #1
+{
+ \wordle__add_to_prop_counter:Nnn \l_wordle_prop {#1} {1}%
+}
+
+% first run: subtract correct matches from letter counts
+\cs_new:Npn \count_letters_in_word:n #1
+{
+ \int_incr:N \l_letter_int
+ \if_wordle_letters_agree:nT {#1}
+ { \wordle__add_to_prop_counter:Nnn \l_word_prop {#1} {-1} }%
+}
+
+%commande [fr]
+% on the second run we print a coloured wordle word
+\cs_new:Npn \write_letters_in_word:n #1
+{
+ \int_incr:N \l_letter_int
+ \if_wordle_letters_agree:nTF {#1}
+ { \l__sutom_boite_lettre:nn {\SutomBienPlacee}{#1}{\SutomRounded} }
+ {
+ % subtract 1 from the prop counter
+ \wordle__add_to_prop_counter:Nnn \l_word_prop {#1} {-1}
+ % if the counter is non-negative this is a pseudo match
+ \if_wordle_letter_nonnegative:nTF {#1}
+ { \l__sutom_boite_lettre_rond:nn {\SutomCoulFond}{\SutomCoulMalPlacee}{#1}{\SutomRounded} }
+ { \l__sutom_boite_lettre:nn {\SutomCoulFond}{#1}{\SutomRounded} }
+ }%
+}
+
+%commande [en]
+% on the second run we print a coloured wordle word
+\cs_new:Npn \write_letters_in_wordle:n #1
+{
+ \int_incr:N \l_letter_int
+ \if_wordle_letters_agree:nTF {#1}
+ { \l__wordle_boite_lettre:nn {\SutomBienPlacee}{#1}{\SutomRounded} }
+ {
+ % subtract 1 from the prop counter
+ \wordle__add_to_prop_counter:Nnn \l_word_prop {#1} {-1}
+ % if the counter is non-negative this is a pseudo match
+ \if_wordle_letter_nonnegative:nTF {#1}
+ { \l__wordle_boite_lettre_rond:nn {\SutomCoulFond}{\SutomCoulMalPlacee}{#1}{\SutomRounded} }
+ { \l__wordle_boite_lettre:nn {\SutomCoulFond}{#1}{\SutomRounded} }
+ }%
+}
+
+%clés [fr]
+\defKV[SUTOM]{%
+ Couleurs=\def\SutomCouleurs{#1},%
+ Arrondi=\def\SutomRounded{#1},%
+ Unite=\def\SutomUnit{#1},%
+ Police=\def\SutomFonte{#1},%
+ CouleurLettres=\def\SutomFonteColor{#1},%
+ Style=\def\SutomStyle{#1},%
+ Epaisseur=\def\SutomWidth{#1},%
+ CouleurBordure=\def\SutomBorder{#1}
+}
+
+\setKVdefault[SUTOM]{%
+ Couleurs={cyan!75!black,yellow,red},%
+ Arrondi=0.1,%
+ Unite=1,%
+ Police=\LARGE\bfseries\sffamily,%
+ CouleurLettres=white,%
+ Lettres=true,%
+ Style=rond,%
+ Epaisseur=0.25,%
+ CouleurBordure=white
+}
+
+%environnement [fr]
+\NewDocumentEnvironment{GrilleSutom}{ O{} m b }%
+{%
+ \restoreKV[SUTOM]%
+ \setKV[SUTOM]{#1}%
+ \StrBefore{\SutomCouleurs}{,}[\SutomCoulFond]%
+ \StrBetween[1,2]{\SutomCouleurs}{,}{,}[\SutomCoulMalPlacee]%
+ \StrBehind[2]{\SutomCouleurs}{,}[\SutomBienPlacee]%
+ \StrLen{#2}[\SutomNbLettres]%
+ \def\SutomLarg{\fpeval{1.01*\SutomUnit*\SutomNbLettres}}%
+ \begin{minipage}{\SutomLarg~cm}
+ \lineskip=0pt%
+ \parindent=0pt%
+ % split the answer into letters
+ \seq_set_split:Nnn \l_wordle_seq {} {#2}
+ % we need to count the number of times each letter appears in \l_wordle_seq
+ \prop_clear:N \l_wordle_prop
+ \tl_map_function:nN {#2} \count_letters_in_wordle:n
+ % split the solution into words
+ \regex_split:nnN {\s} {#3} \l_words_seq
+ % process the words
+ \seq_map_inline:Nn \l_words_seq
+ {
+ \int_zero:N \l_letter_int
+ \prop_set_eq:NN \l_word_prop \l_wordle_prop
+ \tl_map_function:nN {##1} \count_letters_in_word:n
+ \int_zero:N \l_letter_int
+ \tl_map_function:nN {##1} \write_letters_in_word:n
+ \par
+ }
+}%
+{%
+ \end{minipage}%
+}
+
+%clés [en]
+\definecolor{WordleBack}{HTML}{797D7F}
+\definecolor{WordleBad}{HTML}{CAB557}
+\definecolor{WordleGood}{HTML}{6AAB64}
+
+\defKV[WORDLE]{%
+ Colors=\def\SutomCouleurs{#1},%
+ Rounded=\def\SutomRounded{#1},%
+ Unit=\def\SutomUnit{#1},%
+ Fonte=\def\SutomFonte{#1},%
+ ColorLetters=\def\SutomFonteColor{#1},%
+ Style=\def\SutomStyle{#1},%
+ Thickness=\def\SutomWidth{#1},%
+ BorderColor=\def\SutomBorder{#1}
+}
+
+\setKVdefault[WORDLE]{%
+ Colors={WordleBack,WordleBad,WordleGood},%
+ Rounded=0.1,%
+ Unit=1,%
+ Fonte=\LARGE\bfseries\sffamily,%
+ CouleurLettres=white,%
+ Letters=true,%
+ Style=default,%
+ Thick=0.25,%
+ BorderColor=white
+}
+
+%environnement [en]
+\NewDocumentEnvironment{WordleGrid}{ O{} m b }
+{%
+ \restoreKV[WORDLE]%
+ \setKV[WORDLE]{#1}%
+ \StrBefore{\SutomCouleurs}{,}[\SutomCoulFond]%
+ \StrBetween[1,2]{\SutomCouleurs}{,}{,}[\SutomCoulMalPlacee]%
+ \StrBehind[2]{\SutomCouleurs}{,}[\SutomBienPlacee]%
+ \StrLen{#2}[\SutomNbLettres]%
+ \def\SutomLarg{\fpeval{1.01*\SutomUnit*\SutomNbLettres}}%
+ \begin{minipage}{\SutomLarg~cm}
+ \parindent=0pt
+ \lineskip=0pt
+ % split the answer into letters
+ \seq_set_split:Nnn \l_wordle_seq {} {#2}
+ % we need to count the number of times each letter appears in \l_wordle_seq
+ \prop_clear:N \l_wordle_prop
+ \tl_map_function:nN {#2} \count_letters_in_wordle:n
+ % split the solution into words
+ \regex_split:nnN {\s} {#3} \l_words_seq
+ % process the words
+ \seq_map_inline:Nn \l_words_seq
+ {
+ \int_zero:N \l_letter_int
+ \prop_set_eq:NN \l_word_prop \l_wordle_prop
+ \tl_map_function:nN {##1} \count_letters_in_wordle:n
+ \int_zero:N \l_letter_int
+ \tl_map_function:nN {##1} \write_letters_in_wordle:n
+ \par
+ }
+}%
+{%
+ \end{minipage}%
+}
+
+\ExplSyntaxOff
+
+\endinput \ No newline at end of file
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index 69caf8d1476..e43e52b3ce9 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -895,7 +895,7 @@ my @TLP_working = qw(
was wasy wasy-type1 wasysym webguide webquiz wheelchart
widetable widows-and-orphans williams willowtreebook
windycity withargs witharrows
- wnri wnri-latex wordcount wordlike worldflags worksheet
+ wnri wnri-latex wordcount wordle wordlike worldflags worksheet
wrapfig wrapfig2 wrapstuff writeongrid wsemclassic wsuipa wtref
xargs xassoccnt xbmks xcharter xcharter-math xcite xcjk2uni xcntperchap
xcolor xcolor-material xcolor-solarized
diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds
index ab9e0fa8d5c..b9b64188b01 100755
--- a/Master/tlpkg/libexec/ctan2tds
+++ b/Master/tlpkg/libexec/ctan2tds
@@ -1835,6 +1835,7 @@ chomp (my $ctan_root = `tlpkginfo --ctan-root`);
'upmendex' => '&POSTupmendex',
'velthuis' => '&POSTvelthuis',
'webquiz' => '&POST_deref_symlink',
+ 'wordle' => '&POST_onelevel',
'writeongrid' => '&POST_onelevel',
'xetex-pstricks' => '&POSTxetexpstricks',
'xindex' => '&POSTxindex',
diff --git a/Master/tlpkg/tlpsrc/collection-games.tlpsrc b/Master/tlpkg/tlpsrc/collection-games.tlpsrc
index 85614421117..c060ecaf7b9 100644
--- a/Master/tlpkg/tlpsrc/collection-games.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-games.tlpsrc
@@ -52,5 +52,6 @@ depend sudoku
depend sudokubundle
depend tangramtikz
depend wargame
+depend wordle
depend xq
depend xskak
diff --git a/Master/tlpkg/tlpsrc/wordle.tlpsrc b/Master/tlpkg/tlpsrc/wordle.tlpsrc
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/wordle.tlpsrc