% !TeX TS-program = pdflatex

\documentclass[svgnames]{report}
\usepackage{wordle}
\usepackage{enumitem}
\setlist[description]{font=\sffamily\bfseries\color{ForestGreen},labelwidth=\textwidth}
\usepackage{booktabs}
\usepackage[a4paper,margin=18mm]{geometry}
\synctex=1
\parindent=0pt
\parskip=2mm

\usepackage[T1]{fontenc} % precomposed glyphs, so diacritics copy correctly from the PDF
\setcounter{secnumdepth}{0}

\usepackage{listings}\lstset{language=[LaTeX]TeX,framerule=2pt}
\lstset{language=[LaTeX]TeX,
        texcsstyle=*\bfseries\color{Peru},
        backgroundcolor=\color{Ivory},
        numbers=none,
        breaklines=true,
        keywordstyle=\color{Sienna},
        commentstyle=\color{BurlyWood},
        tabsize=2,
        morekeywords={Wordle,wordle,GrilleSutom},
        resetmargins=true,
}
% hyperref links to ctan
\newcommand\ctan[1]{\href{https://www.ctan.org/pkg/#1}{\texttt{#1}}}

\newcommand\Section[1]{\subsection{\textcolor{DarkGreen}{#1}}}

\ExplSyntaxOn
\NewDocumentCommand\option{ omo }{%
  \IfNoValueTF{#1}{\textsf{#2}}
  {%
    \textbf{\textcolor{Crimson}{#2}}
    \str_if_empty:nF {#1}{~(défaut~:~\textcolor{DarkRed}{#1})}%
    \IfNoValueF{#3}{\hfill\textcolor{Gray}{[accepte~:~#3]}}%
  }%
  \index{#2}%
}
\ExplSyntaxOff

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{imakeidx}
\indexsetup{level=\section*, toclevel=section, noclearpage}
\makeindex[intoc,columns=3]

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[skins,listings]{tcolorbox}
\usetikzlibrary{backgrounds, shapes.geometric} % for tikz={framed,...}

\DeclareTotalTCBox\keyword{ O{} v }{
  fontupper=\sffamily,
  nobeforeafter,
  skin=tile,
  verbatim,
  on line,
  tcbox raise base,
  top=0pt,bottom=0pt,left=0mm,right=0mm,
  colback=OldLace,
  colupper=ForestGreen,
  #1}
{#2}

\lstdefinestyle{tikz}{style=tcblatex,
  classoffset=0,
  texcsstyle=*\color{DarkGoldenrod},%
  deletetexcs={begin, end},
  moretexcs={,%
    node,
    draw,
    true,
    false
  },%
  classoffset=1,
  keywordstyle=\color{ForestGreen},%
  morekeywords={wordle,GrilleSutom},
  classoffset=2,
  keywordstyle=\color{Crimson},%
  morekeywords={
    absent,
    Strict,
    Taille,
    Lignes,
    Epaisseur,
    align,
    border,
    borders,
    Bords,
    Cadres,
    Style,
    Formes,
    Separation,
    case,
    Police,
    Arrondi,
    Echelle,
    NonLettres,
    color,
    Couleurs,
    CouleurBordures,
    CouleurLettres,
    bordure,
    couleur,
    colours,
    correct,
    vide,
    font,
    frame,
    frames,
    letters,
    lower,
    params,
    name,
    natural,
    noalign,
    noletters,
    present,
    rounded,
    rows,
    scale,
    sensitive,
    separation,
    shape,
    shapes,
    size,
    strict,
    style,
    style,
    text,
    thickness,
    tikz,
    tile,
    upper,
  },
  classoffset=3,
  keywordstyle=\color{DarkOrange},%
  morekeywords={
    hard,
    standard,
    sutom,
  }
}

\DeclareTCBListing{example}{ !O{} }{%
  skin=bicolor,
  colframe=MediumSeaGreen,
  colbacklower=OldLace,
  colback=LawnGreen!20,
  lefthand width=50mm,
  listing style=tikz,
  sidebyside,
  sidebyside align=center,
  sidebyside gap=4mm,
  text and listing,
  text outside listing,
  boxsep = 0pt,
  #1
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\makeatletter
\author{Andrew Mathas \&\ Cédric Pierquet}
\usepackage{tikz}
\usetikzlibrary{shadows.blur}
\tikzset{shadowed/.style={blur shadow={shadow blur steps=5},
                          bottom color=ForestGreen!30,
                          draw=MediumSeaGreen!70,
                          shade,
                          font=\normalfont\Huge\bfseries\scshape,
                          rounded corners=8pt,
                          top color=SeaGreen,
      },
      boxes/.style={draw=SeaGreen,
                    fill=Cornsilk,
                    font=\sffamily\small,
                    inner sep=5pt,
                    rectangle,
                    rounded corners=8pt,
                    text=DarkGreen,
     }
}
\newcommand\Wordle{%
  \begin{tikzpicture}[remember picture,overlay]
      \node[yshift=-3cm] at (current page.north west)
        {\begin{tikzpicture}[remember picture, overlay]
          \draw[shadowed](30mm,0) rectangle node[white]{wordle} (\paperwidth-30mm,16mm);
          \node[anchor=west,boxes] at (4cm,0cm) {\@author};
          \node[anchor=east,boxes] at (\paperwidth-4cm,0) {Version \wordle@version};
         \end{tikzpicture}
        };
   \end{tikzpicture}
   \vspace*{20mm}
}

\def\@oddfoot{\textsc{Wordle} --- \wordle@version~(version~du~\wordle@release)\hfill\thepage}

\usepackage[colorlinks=true,linkcolor=blue,urlcolor=MediumBlue]{hyperref}
\hypersetup{
  pdfcreator={ Generated by pdfLaTeX },
  pdfinfo={
    Author  ={ Andrew Mathas et Cédric Pierquet },
    Keywords={ wordle },
    License ={ LaTeX Project Public License v1.3c or later },
    Subject ={ LaTeXing Wordle puzzles },
    Title   ={ Wordle - \wordle@version }
  },
}
\makeatother

\begin{document}

  \Wordle

  Ce package fournit un moyen \textit{stupidement} riche en fonctionnalités de créer des puzzles \keyword{Wordle} en \LaTeX, que \href{https://en.wikipedia.org/wiki/Wordle}{Wikipedia} décrit comme
  un jeu de lettres en ligne extrêmement populaire, créé et développé par l'ingénieur logiciel gallois Josh Wardle. Ce paquet
  est une version améliorée d'une des solutions à une question posée par \textcolor{FireBrick}{valerio\_new} sur \href{https://tex.stackexchange.com/questions/659860/wordle-like-colored-letter-boxes-in-latex/660056#660056}{tex.stackexchange.com}.

  Ce paquet fournit l'environnement \keyword{GrilleSutom}, qui utilise la syntaxe :

  \begin{tcblisting}{
    listing only,
    skin=bicolor,
    colframe=MediumSeaGreen,
    colbacklower=OldLace,
    colback=LawnGreen!20,
    listing style=tikz,
    boxsep = 0pt,
  }
  % \usepackage{wordle}
  \begin{GrilleSutom}[params sutom]{solution}[commandes tikz optionnelles]
    essai1 essai2 ...
  \end{GrilleSutom}
  \end{tcblisting}
  \index{environnement!GrilleSutom}
  \index{GrilleSutom}
  \index{sutom}

  et l'environnement \keyword{wordle}, pour la version anglaise du jeu :

  \begin{tcblisting}{
    listing only,
    skin=bicolor,
    colframe=MediumSeaGreen,
    colbacklower=OldLace,
    colback=LawnGreen!20,
    listing style=tikz,
    boxsep = 0pt,
  }
  % \usepackage{wordle}
  \begin{wordle}[params wordle]{solution}[commandes tikz optionnelles]
    essai1 essai2 ...
  \end{wordle}
  \end{tcblisting}
  \index{environnement!wordle}
  \index{wordle}

  Les mots du puzzle peuvent être saisis sur une seule ligne ou sur des lignes séparées. Voici quelques exemples :

  \begin{example}
  % Version fr du wordle (sutom)
  \begin{GrilleSutom}{REBUS}
    ABRIS
    ROUTE
    REBUS
  \end{GrilleSutom}
  \end{example}

  \begin{example}
  % Version en du sutom (wordle)
  \begin{wordle}{SUTOM}
    SAUCE
    SAUTS
    SUTOM
  \end{wordle}
  \end{example}

  Comme pour les puzzles en ligne, l'environnement \keyword{GrilleSutom}
  colore automatiquement les lettres en
  \keyword[colback=WordleSutomCorrect,colupper=White]{rouge}
  lorsque la lettre se trouve dans la même position que la solution, et en
  \keyword[colback=WordlePresent,colupper=White]{or} lorsque la lettre est dans la solution mais qu'elle n'est pas bien placée.
  De même, \keyword{wordle} colore les lettres correctes en
  \keyword[colback=WordleCorrect,colupper=White]{vert}
  et les lettres actuelles en
  \keyword[colback=WordlePresent,colupper=White]{or}.
  Comme décrites ci-dessous, ces couleurs peuvent être modifiées en fonction de vos goûts.

  Le nombre de lettres du puzzle est déterminé par la solution, et n'est limité que par la largeur de la page.

  \begin{example}
  \begin{GrilleSutom}[Lignes=4]{orange}
     normal
     ordres
     orange
  \end{GrilleSutom}
  \end{example}

  Les lettres du puzzle peuvent être saisies en majuscules, en minuscules ou en mélange de majuscules et de minuscules. Par défaut, la casse des lettres est ignorée lors de la détermination des couleurs des cases de lettres.

  Comme décrit ci-dessous, les environnements \keyword{wordle} et \keyword{GrilleSutom} acceptent une liste d'options différentes qui modifient les couleurs, les polices et les formes de la tuile. De plus, vous pouvez modifier la sensibilité à la casse des environnements, ajouter des lignes supplémentaires au puzzle, désactiver la mise en forme spéciale des \textit{cases de lettres}. Ces options sont données sous la forme d'une liste séparée par des virgules de paires \texttt{clé-valeur}. Elles peuvent être définies localement, en utilisant l'argument optionnel de l'environnement \keyword|wordle|, ou globalement (plus précisément, dans le groupe \LaTeX\ actuel) en utilisant la commande \keyword{\ParamsSutom} \index{\textbackslash ParamsSutom}, ou comme options globales du package, via \keyword{\usepackage[options]{wordle}}. L'ordre des options n'a pas d'importance, sauf que les options ultérieures ont priorité sur les options précédentes, à l'exception des clés \option{tikz} et \option{tile style} qui sont toujours appliquées en dernier.

  Les puzzles \keyword{wordle} sont dessinés à l'aide de \ctan{TikZ}, chaque lettre du puzzle étant placée à l'intérieur d'un nœud \ctan{TikZ}. De nombreuses options contrôlent les paramètres de ces nœuds. Les descriptions des options ci-dessous sont regroupées en fonction de leur fonction.

  La plupart des options possèdent à la fois un nom français et un nom anglais (par exemple, \option{Lignes} et \option{rows}, ou \option{Couleurs} et \option{colours}). Les deux noms sont interchangeables et l'un comme l'autre peuvent être utilisés dans l'environnement \keyword{wordle} comme dans l'environnement \keyword{GrilleSutom}, quelle que soit la langue du puzzle.

  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  \Section{Styles Wordle}

  La clé \option{Style} peut être utilisée pour modifier de nombreuses caractéristiques des cases dans un puzzle \keyword{wordle}, y compris leurs couleurs, les polices et ainsi de suite. Les paramètres les plus courants peuvent être définis à l'aide du mot-clé \option{style}. \textit{Le style doit toujours être défini en premier car, sinon, les paramètres de style peuvent remplacer les paramètres précédents.}

  Les styles suivants sont pris en charge :

  \textcolor{DarkOrange}{sutom}
  \index{Style!sutom}
  \index{sutom}

  \begin{example}
  \begin{GrilleSutom}[Style=sutom]{REBUS}
    ABRIS
    ROUTE
    REBUS
  \end{GrilleSutom}
  \end{example}

  En plus de définir les couleurs des cases, les cadres et les formes, le style \textsf{sutom} définit également la taille des cases à 8 mm. Le style \textsf{sutom} est le style par défaut pour l'environnement \keyword{GrilleSutom}.

  \textcolor{DarkOrange}{standard}
  \index{style!standard}

  \begin{example}
  \begin{GrilleSutom}[Style=standard]{REBUS}
    ABRIS
    ROUTE
    REBUS
  \end{GrilleSutom}
  \end{example}

  Le style \textcolor{DarkOrange}{standard} est le style par défaut pour l'environnement \keyword{wordle}.

  \textcolor{DarkOrange}{hard}
  \index{style!hard}

  \begin{example}
  \begin{GrilleSutom}[Style=hard]{REBUS}
    ABRIS
    ROUTE
    REBUS
  \end{GrilleSutom}
  \end{example}

  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  \Section{Options pour les styles individuels des cases de lettres}

  Il existe quatre types de cases de lettres dans \keyword{wordle} :
  \option{absent}, \option{present}, \option{correct} et
  \option{vide}, correspondant respectivement aux lettres qui ne sont pas dans la solution,
  aux lettres mal placées, aux lettres correctement placées et aux cases vides. Les options de cette section peuvent être utilisées pour
  définir les couleurs du texte, des cases et des bordures, les formes et les cadres de ces cases.

  Les cases de lettres dans un environnement \keyword{wordle} sont composées à l'intérieur
  d'un \keyword{\node} \ctan{TikZ}. Les options ci-dessous contrôlent les
  différents paramètres de style de ces nœuds.

  \option[--]{Couleurs}[liste de couleurs valides séparées par des virgules]

  L'option \option{Couleurs} est un raccourci pour spécifier les
  couleurs des cases \option{absent}, \option{present}, \option{correct} et
  \option{vide}, dans cet ordre. Les couleurs suivantes peuvent être omises, mais
  les couleurs doivent être données dans cet ordre, de gauche à droite.
  Si une seule couleur est donnée, cette couleur est appliquée à toutes les cases.

  \begin{example}
  \begin{GrilleSutom}[Couleurs={LightGray,Orange,Teal}]{cellar}
    pounds
    taylor
    cellar
  \end{GrilleSutom}
  \end{example}

  Les couleurs peuvent également être définies individuellement à l'aide de \option{couleur absent}, \option{couleur present}, \option{couleur correct} et \option{couleur vide}.

  \begin{example}
  \begin{GrilleSutom}[couleur absent=DarkGray,couleur present=Salmon,
                 couleur correct=SeaGreen]{cellar}
    pounds
    taylor
    cellar
  \end{GrilleSutom}
  \end{example}

  \option[white]{CouleurBordures}[liste de couleurs valides séparées par des virgules]

  De manière similaire à l'option \option{Couleurs}, il s'agit d'un raccourci pour le paramétrage des couleurs des bordures des cases \option{absent}, \option{present},
  \option{correct} et \option{vide}, dans cet ordre.

  Si une seule couleur est donnée, elle est appliquée à toutes les cases.

  \begin{example}
  \begin{GrilleSutom}[CouleurBordures={red,orange,blue}]{REBUS}
    ABRIS
    ROUTE
    REBUS
  \end{GrilleSutom}
  \end{example}

  Les bordures pour les cases individuelles peuvent être paramétrées via
  \option{bordure absent}, \option{bordure present}, \option{bordure correct} et \option{bordure vide}.

  \option[false]{Cadres}[liste de booléens true/false séparées par des virgules]

  Il s'agit d'un raccourci pour ajouter un cadre autour des cases \option{absent}, \option{present}, \option{correct} et \option{vide}, dans cet ordre, avec la même couleur que \option{absent}. C'est utile uniquement pour les cases non carrées.

  \begin{example}
  \begin{GrilleSutom}[Cadres={false,true,true},
                      Formes=circle]{REBUS}
    ABRIS
    ROUTE
    REBUS
  \end{GrilleSutom}
  \end{example}

  Les cadres pour les cases individuelles peuvent être paramétrés via \option{cadre absent}, \option{cadre present},
  \option{cadre correct} et \option{cadre vide}.

  \option[rectangle]{Formes}[liste de formes TikZ séparées par des virgules]

  De même que pour l'option \option{Couleurs}, c'est un raccourci pour paramétrer les formes des cases \option{absent}, \option{present},
  \option{correct} et \option{vide}, dans cet ordre.

  \begin{example}
  \begin{GrilleSutom}[Formes={circle, rectangle, circle}]{REBUS}
    ABRIS
    ROUTE
    REBUS
  \end{GrilleSutom}
  \end{example}

  Les formes individuelles peuvent être paramétrées via \option{forme absent}, \option{forme present},
  \option{forme correct} et \option{forme vide}.

  Vous pouvez utiliser les formes proposées par le package \ctan{TikZ}
  \texttt{shapes.geometric}, incluant \texttt{diamond},
  \texttt{ellipse}, \texttt{trapezium} et \texttt{star} (voir section~71.2 du manuel \ctan{TikZ}).

  \begin{example}
  % \usepackage{shapes.geometric}
  \begin{GrilleSutom}[Formes={diamond,ellipse,star}]{LADLE}
     FLAIL
     LAPEL
     *
     LADLE
     LOVER
  \end{GrilleSutom}
  \end{example}

  \option[white]{CouleurLettres}[liste de couleurs valides séparées par des virgules]

  Il s'agit d'un raccourci pour paramétrer la couleur des lettres des cases \option{absent}, \option{present}, \option{correct} et \option{vide}, dans cet ordre.

  \begin{example}
  \begin{GrilleSutom}[CouleurLettres={red,orange,blue}]{REBUS}
    ABRIS
    ROUTE
    REBUS
  \end{GrilleSutom}
  \end{example}

  Les cases individuelles peuvent être paramétrées via \option{coultxt absent}, \option{coultxt present}, \option{coultxt correct} et \option{coultxt vide}.


  \Section{Caractéristiques communes des cases}

  Les options suivantes s'appliquent à toutes les cases.

  \option[]{nonalign} (défaut) \qquad
  \option[]{align}

  Cette option s'occupe de l'alignement vertical des lettres. C'est utile essentiellement lors de l'utilisation de minuscules.

  \begin{example}
  \begin{GrilleSutom}[align]{agony}
     groan
     angry
     agony
  \end{GrilleSutom}
  \end{example}

  \begin{example}
  \begin{GrilleSutom}{agony} % nonalign par defaut
    groan
    angry
    agony
  \end{GrilleSutom}
  \end{example}

  \option[\textbackslash Large\textbackslash bfseries\textbackslash sffamily]{Police}
       [Police \LaTeX]

  Cela permet de paramétrer la police de toutes les lettres. Toute commande valide est acceptée.

  \begin{example}
  \begin{GrilleSutom}[Police=\large\ttfamily]{REBUS}
    ABRIS
    ROUTE
    REBUS
  \end{GrilleSutom}
  \end{example}

  \option[1mm]{Arrondi}[une longueur]

  Cela permet de paramétrer le paramètre \texttt{rounded corners} (de TikZ) pour les cases \keyword{wordle}.

  \begin{example}
  \begin{GrilleSutom}[Arrondi=2.5mm]{REBUS}
    ABRIS
    ROUTE
    REBUS
  \end{GrilleSutom}
  \end{example}

  \option[0.5mm]{Separation}[une longueur]

  Cela permet de paramétrer la séparation entre les cases du \keyword{wordle}.

  \begin{example}
  \begin{GrilleSutom}[Separation=2mm,
                      CouleurBordures=black]{REBUS}
    ABRIS
    ROUTE
    REBUS
  \end{GrilleSutom}
  \end{example}

  \option[1]{Echelle}[un nombre]

  L'option \option{Echelle} applique un facteur à l'environnement \keyword{wordle}.
  Cette option modifie les dimensions définies par les options \option{Arrondi},
  \option{Separation}, \option{Taille} et \option{Epaisseur}. Si vous changez l'échelle, vous voudrez également changer la police de caractères via \option{Police} :

  \begin{example}
  \begin{GrilleSutom}[Echelle=1.5,Police=\huge\bfseries]{SIZE}
     HELP
     WISE
     SIZE
  \end{GrilleSutom}
  \end{example}

  \option[8mm]{Taille}[une longueur]

  L'option \option{Taille} définit la taille des cases. Contrairement à l'option \option{Echelle}, \option{Taille} change uniquement la dimension des cases.

  \begin{example}
  \begin{GrilleSutom}[Taille=10mm,Police=\huge\bfseries]{REPU}
     ABRI ROUE * REPU
  \end{GrilleSutom}
  \end{example}

  \option[0.25mm]{Epaisseur}[une longueur]

  Cela permet de paramétrer la taille des bordures des cases. Par défaut la couleur est blanche, donc pour illustrer cette option elle sera paramétrée en rouge.

  \begin{example}
  \begin{GrilleSutom}[Epaisseur=0.75mm,
                      CouleurBordures=red]{LADLE}
     FLAIL
     LAPEL
     LADLE
  \end{GrilleSutom}
  \end{example}

  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  \Section{Lignes et colonnes supplémentaires}

  Par défaut, le nombre de lignes et de colonnes de la grille est fixé par les mots donnés.

  \option[]{Lettres} (défaut)\qquad
  \option[]{NonLettres}

  Par défaut, les lettres sont affichées, mais elles peuvent être cachées avec l'option \option{NonLettres}.

  \begin{example}
  \begin{GrilleSutom}{CRAZE} % the default
    TRACE
    CREAM
    CRAZE
  \end{GrilleSutom}
  \end{example}

  \begin{example}
  \begin{GrilleSutom}[NonLettres]{CRAZE}
    TRACE
    CREAM
    CRAZE
  \end{GrilleSutom}
  \end{example}

  \option[false]{Strict}[true/false/--]

  Par défaut, l'environnement ne vérifie pas si tous les mots sont de la même taille, donc les lettres \textit{en trop} n'ont pas de style particulier.

  \begin{example}
  \begin{GrilleSutom}[Strict=false]{CRAZE} % par defaut
    GRAIL
    CRAMPS
    CRAM
    CRABS
  \end{GrilleSutom}
  \end{example}

  L'option booléenne \option{Strict} force un style particulier des lettres \textit{en trop}.

  \begin{example}
  \begin{GrilleSutom}[Strict]{CRAZE}
    GRAIL
    CRAMPS
    CRAM
    CRABS
  \end{GrilleSutom}
  \end{example}

  \option[--]{Lignes}

  Par défaut, l'environnement \keyword{wordle} affiche le nombre de lignes en adéquation avec le nombre de mots donnés. L'option \option{Lignes} permet de modifier le nombre de lignes (éventuellement vides).

  \begin{example}
  \begin{GrilleSutom}[Lignes=4]{ANVIL}
    CRANE
    NATAL
    ANVIL
  \end{GrilleSutom}
  \end{example}

  \begin{example}
  \begin{GrilleSutom}[Lignes=2]{ANVIL}
    CRANE
    NATAL
    ANVIL
  \end{GrilleSutom}
  \end{example}

  \option[]{*}

  Le style des cases peut être annulé en ajoutant un astérisque,~\option{*}, en tant que mot.

  \begin{example}
  \begin{GrilleSutom}{ANVIL}
    CRANE
    NATAL
    *      % annule la mise en forme
    ANNUL
    ANVIL
  \end{GrilleSutom}
  \end{example}


  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  \Section{Sensibilité à la casse}
  \index{case~sensitive}
  \index{case~sensitive!lower case}
  \index{case~sensitive!natural case}
  \index{case~sensitive!upper case}

  Par défaut, les lettres peuvent être écrites en majuscule ou en minuscule, comme saisies par l'utilisateur.

  L'option \option{case~sensitive} permet de spécifier un paramétrage de la casse.

  \begin{example}
  \begin{GrilleSutom}[case sensitive=false]{youth} % par defaut
    North
    South
    Youth
  \end{GrilleSutom}
  \end{example}

  \begin{example}
  \begin{GrilleSutom}[case sensitive]{youth}
    North
    South
    Youth
  \end{GrilleSutom}
  \end{example}

  Les options \textit{fines} \option{natural case} (défaut), \option{lower case} et \option{upper case} permettent de travailler plus finement sur la casse des lettres correctes et/ou mal placées.

  \begin{example}
  \begin{GrilleSutom}[lower case]{YOUTH}
    North
    South
    Youth
  \end{GrilleSutom}
  \end{example}

  \begin{example}
  \begin{GrilleSutom}[upper case]{youth}
    North
    South
    Youth
  \end{GrilleSutom}
  \end{example}

  \begin{example}
  \begin{GrilleSutom}[natural case]{youth} % par defaut
    North
    South
    youth
  \end{GrilleSutom}
  \end{example}

  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  \Section{Style \ctan{TikZ} complémentaire}

  \option[]{tikz}[commandes TikZ]

  \begin{example}
  % \usetikzlibrary{backgrounds}
  \begin{GrilleSutom}[
      tikz={framed,
            background rectangle/.style={
              double,ultra thick, draw=SteelBlue
            }
      }]{youth}
    North South youth
  \end{GrilleSutom}
  \end{example}

  \pagebreak

  \option[W]{Nom}

  Toutes les cases d'un puzzle \keyword{wordle} reçoivent un nom de nœud de
  la forme $\langle$\textsf{nom}$\rangle$-$\mathsf{l}$-$\mathsf{c}$, pour la
  case située à la ligne~$\mathsf{l}$ et à la colonne~$\mathsf{c}$. Par défaut,
  le préfixe \textsf{nom} est \texttt{W}, mais il peut être remplacé par la
  valeur de votre choix à l'aide de l'option \option{Nom}.

  Une façon d'utiliser ces noms de nœuds est de les combiner avec les clés
  \texttt{overlay} et \texttt{remember picture} de \ctan{TikZ}, ce qui permet
  par exemple de tracer des flèches vers les cases d'un puzzle :

  \begin{example}
  \begin{GrilleSutom}[tikz={remember picture}]{CRAZE}
    TRACE
    CREAM
    CRAZE
  \end{GrilleSutom}
  \end{example}

  \begin{example}
  \tikz[remember picture]\draw[overlay, very thick, opacity=0.5,->,red](0,0)node{Pas de  M !!!} to [out=90, in=180](W-2-5);
  \end{example}

  \begin{example}
  \begin{GrilleSutom}[name=M,
        tikz={arr/.style={red,ultra thick,->}}
      ]{MACAW}
      [{
        \draw[arr](M-1-3.south)--(M-3-2.north)--(M-4-2.north);
        \draw[arr](M-1-1.south)--(M-3-5)--(M-4-3.north east);
      }]
    CRANE HOTLY BASIC MACAW
  \end{GrilleSutom}
  \end{example}

  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  \Section{Le code}

  Le package \keyword{wordle} est écrit en \LaTeX3.  Beaucoup de commentaires permettent d'expliciter le fonctionnement du code. La coloration automatique des cases est un exercice amusant en \LaTeX3, motivé par un message issu de
  \href{https://tex.stackexchange.com/questions/659860/wordle-like-colored-letter-boxes-in-latex/660056#660056}{tex.stackexchange.com}.

  Le dépôt \href{https://github.com/AndrewMathas/Wordle}{github.com/AndrewMathas/Wordle} est disponible pour signaler tout bug.

  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  \printindex

\end{document}
