% !TeX TXS-program:compile = txs:///pdflatex

\documentclass[11pt,a4paper]{ltxdoc}
\usepackage{TrivialPursuit}
\usepackage{fancyvrb}
\usepackage{fancyhdr}
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
\lfoot{\sffamily\small [TrivialPursuit]}
\cfoot{\sffamily\small - \thepage{} -}
\rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}}
\usepackage{hologo}
\providecommand\tikzlogo{Ti\textit{k}Z}
\providecommand\TeXLive{\TeX{}Live\xspace}
\providecommand\PSTricks{\textsf{PSTricks}\xspace}
\let\pstricks\PSTricks
\let\TikZ\tikzlogo

\usepackage{hyperref}
\urlstyle{same}
\hypersetup{pdfborder=0 0 0}
\usepackage[margin=2cm]{geometry}
\setlength{\parindent}{0pt}
\def\TPversion{0.1.7}
\def\TPdate{25 août 2025}
\usepackage{tcolorbox}
\tcbuselibrary{skins,hooks,listingsutf8}
\usepackage{openmoji}
\usepackage{soul}
\sethlcolor{lightgray!25}
\NewDocumentCommand\MontreCode{ m }{%
	\hl{\vphantom{\texttt{pf}}\texttt{#1}}%
}

\begin{document}

\pagestyle{fancy}

\thispagestyle{empty}

\begin{center}
	\begin{minipage}{0.88\linewidth}
	\begin{tcolorbox}[colframe=yellow,colback=yellow!15]
		\begin{center}
			\begin{tabular}{c}
				{\Huge \texttt{TrivialPursuit [fr]}}\\
				\\
				{\LARGE Créer un plateau type '\textit{Trivial Pursuit}',} \\
				{\LARGE avec personnalisations.} \\
				\\
				{\small \texttt{Version \TPversion{} -- \TPdate}}
		\end{tabular}
		\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/latex-packages/tree/main/trivialpursuit}} \\
	\\
	\texttt{Trivial Pursuit\texttrademark, est une marque déposée par Hasbro.}
\end{tabular}
\end{center}

\hrule

\vfill

\begin{tcolorbox}[colframe=lightgray,colback=lightgray!5]
\PlateauTrivialPursuit
\end{tcolorbox}

\vfill~

\pagebreak

\phantomsection

\hypertarget{matoc}{}

\tableofcontents

\vspace*{5mm}

\hrule

\vspace*{5mm}

\section{Introduction}

\subsection{Description}

L'idée de ce package est de proposer un plateau de jeu de type \textsf{Trivial Pursuit} (marque déposée par Hasbro) avec personnalisations au niveau :

\begin{itemize}
	\item des dimensions (rayon + hauteur bordure) ;
	\item des couleurs ;
	\item des logos (sous forme de caractères, comme \MontreCode{fontawesome}).
\end{itemize}

L'alternance des cases et des couleurs est reprise du plateau \textit{classique}, donc est fixée globalement.

\medskip

Pour le moment, les \textit{limitations} sont :

\begin{itemize}
	\item le nombre de catégories est (pour le moment) fixé à 6 ;
	\item les logos sont des caractères, comme ceux du package \MontreCode{fontawesome}.
\end{itemize}

\subsection{Chargement}

Pour charger le package, il suffit d'ajouter, dans le préambule :

\begin{quote}
\begin{verbatim}
\usepackage{TrivialPursuit}                   %avec fa5, par défaut
\usepackage[fa6]{TrivialPursuit}              %avec fa6 (test)
\usepackage[fa7]{TrivialPursuit}              %avec fa7 (test)
\usepackage[nonfa]{TrivialPursuit}            %sans fa (test), à charger manuellement
\end{verbatim}
\end{quote}

Les packages chargés et utilisés par \MontreCode{TrivialPursuit} sont :

\begin{itemize}
	\item \MontreCode{tikz} avec les librairies \MontreCode{calc,positioning} ;
	\item \MontreCode{calc} et \MontreCode{fontawesome5} ;
	\item \MontreCode{simplekv} ; \MontreCode{xintexpr} et \MontreCode{listofitems}.
\end{itemize}

\pagebreak

\section{Historique}

\begin{quote}
\begin{verbatim}
0.1.7 : Ajout de cartes
0.1.6 : Bugfix + pré-compatibilité avec fa67
0.1.5 : Bugfix (compatibilité avec twemoji)
0.1.4 : Bugfix + pré-compatibilité avec fa6
0.1.2 : Ajout d'une clé [VersionCourte] pour diminuer le nombre de cases
0.1.1 : Ajout de palettes de couleurs prédéfinies
0.1.0 : Version initiale
\end{verbatim}
\end{quote}

\pagebreak

\section{La commande pour le plateau}

\subsection{Fonctionnement global}

Le code se charge de tracer le plateau avec les éventuels \textit{ornements}.

Toutes les clés disponibles sont présentées dans le paragraphe suivant, mais concernant les dimensions, des \textit{générales} sont proposées par défaut, mais il est toutefois possible de les modifier :

\begin{itemize}
	\item soit explicitement par les clés \MontreCode{[Rayon=...]} et \MontreCode{[HauteurCases=...]} ;
	\item soit en spécifiant une unité particulière grâce à la clé \MontreCode{[Unite=...]}, au quel cas la forme générale du plateau sera conservée.
\end{itemize}

\begin{tcblisting}{colframe=lightgray,colback=lightgray!5}
\PlateauTrivialPursuit[Unite=0.5]
%
\PlateauTrivialPursuit[Rayon=4,HauteurCases=1.25] %attention au rendu...

\PlateauTrivialPursuit[Unite=0.33]
%
\PlateauTrivialPursuit[Unite=0.33,VersionCourte]
\end{tcblisting}

\pagebreak

\subsection{Clés et options}

Les \textsf{clés} disponibles sont :

\begin{itemize}
	\item \MontreCode{Rayon} := rayon du plateau (en unité), et valant \MontreCode{8} par défaut ;
	\item \MontreCode{HauteurCases} := hauteur des cases extérieures, et valant \MontreCode{1.5} par défaut ;
	\item \MontreCode{ListeCouleurs} := couleurs des catégories (sens trigo),
	
	\hfill{}et valant \MontreCode{yellow,orange,blue,brown,green,pink} par défaut ;
	\item \MontreCode{ListeIcones} := icônes des catégories (sens trigo),
	
	\hfill\MontreCode{A,B,C,D,E,F} par défaut ;
	%\hfill\MontreCode{\textbackslash faArchway,\textbackslash faTableTennis,\textbackslash faUmbrellaBeach,\textbackslash faGuitar,\textbackslash faTree,\textbackslash faMusic} par défaut ;
	\item \MontreCode{Icones} := booléen pour afficher les icônes, et valant \MontreCode{true} par défaut ;
	\item \MontreCode{Centre} := booléen pour colorer l'hexagone centrale, et valant \MontreCode{true} par défaut ;
	\item \MontreCode{CouleurCentre} := couleur du centre hexagonal, et valant \MontreCode{lightgray!25} par défaut ;
	\item \MontreCode{Couleurs} := booléen pour afficher les couleurs, et valant \MontreCode{true} par défaut ;
	\item \MontreCode{Logo} := booléen pour afficher un logo central, et valant \MontreCode{true} par défaut ;
	\item \MontreCode{Jokers} := booléen pour afficher les jokers, et valant \MontreCode{true} par défaut ;
	\item \MontreCode{IconeJoker} := icône des jokers, et valant \MontreCode{J} par défaut ;%\MontreCode{\textbackslash faDice} par défaut ;
	\item \MontreCode{Vide} := booléen pour afficher le plateau vide, et valant \MontreCode{false} par défaut ;
	\item \MontreCode{Unite} := pour préciser l'unité (et gérer un facteur d'échelle), et valant \MontreCode{1} par défaut ;
	\item \MontreCode{Epaisseur} := épaisseur des tracés, et valant \MontreCode{0.8pt} par défaut ;
	\item \MontreCode{Rotation} := rotation éventuelle du plateau, et valant \MontreCode{0} par défaut ;
	\item \MontreCode{VersionCourte} := utiliser 5 cases au lieu de 6 entre les camemberts, et valant \MontreCode{false} par défaut.
\end{itemize}

\begin{tcblisting}{colframe=lightgray,colback=lightgray!5}
\PlateauTrivialPursuit[Rotation=35,Unite=0.5]
\PlateauTrivialPursuit[Unite=0.5]
\end{tcblisting}

\begin{tcblisting}{colframe=lightgray,colback=lightgray!5}
\PlateauTrivialPursuit[Unite=0.5,Icones=false]
\PlateauTrivialPursuit[Unite=0.5,Couleurs=false]
\end{tcblisting}

\begin{tcblisting}{colframe=lightgray,colback=lightgray!5}
\PlateauTrivialPursuit[Unite=0.5,Vide]
\PlateauTrivialPursuit[Unite=0.5,Logo=false,Centre=false,IconeJoker=\faAward]
\end{tcblisting}

\begin{tcblisting}{colframe=lightgray,colback=lightgray!5}
\PlateauTrivialPursuit[%
	Jokers=false,%
	ListeCouleurs={%
		blue!25,red!25,teal!25,orange!25,gray!50,violet!25},%
	ListeIcones={%avec fa5
		\faAddressCard,\faAngleDoubleRight,\faAngry[regular],%
		\faAtom,\faBalanceScaleLeft,\faBell}
]
\end{tcblisting}

\pagebreak

\subsection{Palettes de couleurs prédéfinies, icônes fa prédéfinies}

En complément (sur une suggestion de \textsf{quark67}), deux styles de couleurs ont été définies en interne :

\begin{quote}
\begin{verbatim}
\TPColorsA
\TPColorsB
\end{verbatim}
\end{quote}

\begin{tcblisting}{colframe=lightgray,colback=lightgray!5}
\PlateauTrivialPursuit[Unite=0.5,ListeCouleurs=\TPColorsA]
\PlateauTrivialPursuit[Unite=0.5,ListeCouleurs=\TPColorsB]
\end{tcblisting}

\begin{quote}
\begin{verbatim}
\categtrivialpursuit
\end{verbatim}
\end{quote}

\begin{tcblisting}{colframe=lightgray,colback=lightgray!5}
\PlateauTrivialPursuit%
  [ListeIcones=\categtrivialpursuit,ListeCouleurs=\TPColorsB,IconeJoker=\faDice]
\end{tcblisting}

\pagebreak

\section{La commande pour les cartes}

\subsection{Fonctionnement global}

Le code se charge de représenter des cartes, recto ou verso, avec :

\begin{itemize}
	\item des dimensions \textit{fixées} (mais une échelle globale peut être appliquée) ;
	\item des couleurs, catégories, questions/réponses personnalisables ;
	\item des logos éventuels
\end{itemize}

\begin{tcblisting}{colframe=lightgray,colback=lightgray!5}
\CardTrivialRecto{Q1}{Q2}{Q3}{Q4}{Q5}{Q6}{10}

\CardTrivialVerso{R1}{R2}{R3}{R4}{R5}{R6}{256}

\CardTrivialVerso[scale=-0.5,rotate=15]{R1}{R2}{R3}{R4}{R5}{R6}{256}
\end{tcblisting}

Les textes (labels + numéro) sont adaptés automatiquement aux éléments graphiques, la taille de la police des Q/R peut-être adaptée le cas échéant.

\begin{tcblisting}{colframe=lightgray,colback=lightgray!5,listing only}
\CardTrivialRecto%
  [options tikzpicture]%
  {Q1}{Q2}{Q3}{Q4}{Q5}{Q6}%
  {numéro de la carte}

\CardTrivialVerso%
  [options tikzpicture]%
  {R1}{R2}{R3}{R4}{R5}{R6}%
  {numéro de la carte}
\end{tcblisting}

\subsection{Macro(s) de personnalisation}

Il existe une macro auxiliaire qui permet de modifier différents paramètres des cartes.

\begin{tcblisting}{colframe=lightgray,colback=lightgray!5,listing only}
\SetParamsCardTrivial{%
  QA font=...,                        %police des Q/R
  num font=...,                       %police du numéro
  label font=...,                     %police des catégories
  categ=...,                          %labels des catégories
  border deco color=...,              %couleur de bordure
  alt deco color=...,                 %couleur secondaire
  color categ A=...,                  %couleur catégorie A
  color categ B=...,                  %couleur catégorie B
  color categ C=...,                  %couleur catégorie C
  color categ D=...,                  %couleur catégorie D
  color categ E=...,                  %couleur catégorie E
  color categ F=...,                  %couleur catégorie F
  alt deco=TF                         %booleén pour afficher la bordure
}
\end{tcblisting}

\begin{tcblisting}{colframe=lightgray,colback=lightgray!5,listing only}
%logo verso
\def\intlogocardversotrivial{%
  \draw[white] (CARD-LOGO) node[rotate=90,text width=3.75cm,font=\Huge\sffamily,align=left] {{\TeX} \\\hfill{\itshape Pursuit}} ;
}
\end{tcblisting}

\begin{tcblisting}{colframe=lightgray,colback=lightgray!5,listing only}
%logo recto (fond)
\def\intlogocardrectotrivial{}
\end{tcblisting}

\subsection{Exemple personnalisé}

\begin{tcblisting}{colframe=lightgray,colback=lightgray!5,listing only}
%\usepackage{openmoji}

\SetParamsCardTrivial{%
  border deco color=teal,
  alt deco color=orange,
  QA font={\sffamily\fontsize{8pt}{10pt}\selectfont},%
  label font={\bfseries},
  categ={No,H,Ma,Oo,A,G}
}
\def\intlogocardversotrivial{%
  \draw (CARD-LOGO) node[rotate=90]
  {\openmoji[height=2.25cm]{game die}\openmoji[height=2.25cm]{glowing star}} ;
}
\def\intlogocardrectotrivial{%
  \draw (CARD-LOGO) node[opacity=0.05]
  {\openmoji[height=4.25cm]{green apple}} ;
}
\end{tcblisting}

\SetParamsCardTrivial{%
  border deco color=teal,
  alt deco color=orange,
  QA font={\sffamily\fontsize{8pt}{10pt}\selectfont},%
  label font={\bfseries},
  categ={No,H,Ma,Oo,A,G}
}
\def\intlogocardversotrivial{%
  \draw (CARD-LOGO) node[rotate=90]
  {\openmoji[height=2.25cm]{game die}\openmoji[height=2.25cm]{glowing star}} ;
}
\def\intlogocardrectotrivial{%
  \draw (CARD-LOGO) node[opacity=0.05]
  {\openmoji[height=4.25cm]{green apple}} ;
}
\begin{tcblisting}{colframe=lightgray,colback=lightgray!5}
\CardTrivialRecto{Q1}{Q2}{Q3}{Q4}{Q5}{Q6}{12}

\CardTrivialVerso[scale=-1]{R1}{R2}{R3}{R4}{R5}{R6}{12}
\end{tcblisting}

\end{document}