texlive[73374] Master: neoschool (8jan25)
commits+karl at tug.org
commits+karl at tug.org
Wed Jan 8 22:13:05 CET 2025
Revision: 73374
https://tug.org/svn/texlive?view=revision&revision=73374
Author: karl
Date: 2025-01-08 22:13:05 +0100 (Wed, 08 Jan 2025)
Log Message:
-----------
neoschool (8jan25)
Modified Paths:
--------------
trunk/Master/tlpkg/bin/tlpkg-ctan-check
trunk/Master/tlpkg/libexec/ctan2tds
trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
Added Paths:
-----------
trunk/Master/texmf-dist/doc/latex/neoschool/
trunk/Master/texmf-dist/doc/latex/neoschool/README.md
trunk/Master/texmf-dist/doc/latex/neoschool/neoschool-fr.pdf
trunk/Master/texmf-dist/doc/latex/neoschool/neoschool-fr.tex
trunk/Master/texmf-dist/doc/latex/neoschool/neoschool.pdf
trunk/Master/texmf-dist/doc/latex/neoschool/neoschool.tex
trunk/Master/texmf-dist/tex/latex/neoschool/
trunk/Master/texmf-dist/tex/latex/neoschool/neoschool.cls
trunk/Master/tlpkg/tlpsrc/neoschool.tlpsrc
Added: trunk/Master/texmf-dist/doc/latex/neoschool/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/neoschool/README.md (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/neoschool/README.md 2025-01-08 21:13:05 UTC (rev 73374)
@@ -0,0 +1,13 @@
+README file for neoschool class 1.0.0 [2025/01/04]
+
+neoschool is a document class designed for secondary school teachers. Features pre-configured templates, color themes, and specialized environments for educational documents. Simplifies LaTeX usage in education through integration of common packages and multilingual support.
+
+Copyright 2025 Razik Ikhlef
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3c
+of this license or (at your option) any later version.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3c or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
Property changes on: trunk/Master/texmf-dist/doc/latex/neoschool/README.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/neoschool/neoschool-fr.pdf
===================================================================
(Binary files differ)
Index: trunk/Master/texmf-dist/doc/latex/neoschool/neoschool-fr.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/neoschool/neoschool-fr.pdf 2025-01-08 21:11:53 UTC (rev 73373)
+++ trunk/Master/texmf-dist/doc/latex/neoschool/neoschool-fr.pdf 2025-01-08 21:13:05 UTC (rev 73374)
Property changes on: trunk/Master/texmf-dist/doc/latex/neoschool/neoschool-fr.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/neoschool/neoschool-fr.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/neoschool/neoschool-fr.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/neoschool/neoschool-fr.tex 2025-01-08 21:13:05 UTC (rev 73374)
@@ -0,0 +1,1398 @@
+\documentclass[
+ french,
+ margin=2cm
+]{neoschool}
+
+\title{La classe \texttt{neoschool}}
+\author{Version : 1.0.0 \quad\textemdash{}\quad Auteur : Razik Ikhlef}
+\date{04/01/2025}
+
+\begin{document}
+
+\maketitle
+
+La classe \texttt{neoschool} propose aux enseignants du secondaire un
+ensemble d'outils pour concevoir leurs documents pédagogiques (évaluations,
+supports de cours, fiches d'exercices avec leur correction, etc). Pour répondre
+aux différents besoins, elle propose huit thèmes de couleurs prédéfinis, des
+options de classe variées pour la mise en page et la typographie, des
+environnements spécialisés, des commandes dédiées et différents styles
+d'en-têtes préformatés pour chaque type de document. Elle intègre plusieurs
+dizaines d'extensions LaTeX couramment utilisées (voir la liste ci-dessous), ce
+qui allège considérablement le préambule et évite autant que possible les
+incompatibilités. Multilingue, elle prend en charge le français, l'anglais et
+l'allemand.
+
+\tableofcontents
+
+\section{Extensions chargées}
+
+Les extensions suivantes sont automatiquement chargées par la classe \texttt{neoschool}.
+
+\texttt{adforn}, \texttt{adjustbox}, \texttt{algpseudocode}, \texttt{amssymb}, \texttt{babel}, \texttt{bookmark}, \texttt{calc}, \texttt{changespace}, \texttt{cuted}, \texttt{environ}, \texttt{fancyvrb}, \texttt{fontawesome5}, \texttt{forest}, \texttt{iftex}, \texttt{ifthen}, \texttt{kvoptions}, \texttt{lastpage}, \texttt{marginnote}, \texttt{microtype}, \texttt{mismath} (qui charge \texttt{mathtools}), \texttt{multicol}, \texttt{needspace}, \texttt{pdftexcmds}, \texttt{pgffor}, \texttt{pgfplots}, \texttt{qrcode}, \texttt{scrlayer-scrpage}, \texttt{silence}, \texttt{siunitx}, \texttt{tabularray}, \texttt{tasks}, \texttt{tcolorbox} (avec l'option \texttt{most} qui charge les extensions \texttt{listings} et \texttt{minted}), \texttt{textcase}, \texttt{tikz}, \texttt{tikzpagenodes}, \texttt{tikzsymbols}, \texttt{ulem} (avec l'option \texttt{normalem}), \texttt{xcolor} (avec les options \texttt{table}, \texttt{svgnames}, \texttt{dvipsnames} et \texttt{x11names}), \texttt{xhfill}, \texttt{xkeyval}, \texttt{xsim} (avec les options \texttt{use-files} et \texttt{clear-aux}), \texttt{xstring}.
+
+La compilation en \texttt{pdflatex} charge les extensions \texttt{fonttenc} (avec l'option \texttt{T1}), \texttt{inputenc} (avec l'option \texttt{utf8}), \texttt{newpxtext} et \texttt{newpxmath}. La compilation en \texttt{lualatex} rend disponible les extensions \texttt{fontspec}, \texttt{luacas}, \texttt{lua-ul}, \texttt{luacolor} et applique les polices \texttt{TeX Gyre PagellaX} et \texttt{TeX Gyre Heros} en plus de \texttt{newpxmath}.
+
+L'options \texttt{graphics} charge les extensions \texttt{graphicx} et \texttt{wrapfig}, l'option \texttt{draft} les extensions \texttt{blindtext} et \texttt{lipsum} et l'option \texttt{mathastext} l'extension \texttt{mathastext}.
+
+L'option \texttt{math} charge les extensions \texttt{annotate-equations}, \texttt{bm}, \texttt{cancel}, \texttt{mathrsfs}, \texttt{nncomma}, \texttt{numprint}, \texttt{tdsfrmath} (avec les options \texttt{suite} et \texttt{taupe}), \texttt{tkz-euclide}, \texttt{witharrows} et \texttt{xlop}.
+
+L'option \texttt{notes} permet d'afficher des notes encadrées et à fond coloré dans les marges gauche et droite, de façon alternée. Elle charge l'extension \texttt{todonotes}.
+
+L'option \texttt{apmep}, qui permet de compiler directement les sujets d'annales de l'association du même nom, définit une ensemble de commandes mathématiques et charge les extensions \texttt{esvect}, \texttt{fourier-ons}, \texttt{numprint} (avec l'option \texttt{np}), \texttt{pstricks} (et de nombreux paquets de l'écosystème \texttt{pstricks}), \texttt{tabularx} et \texttt{textcomp}.
+
+L'option \texttt{mathics} permet de faire du calcul formel via \texttt{mathics} (version libre de \texttt{mathematica}) et charge les extensions \texttt{asymptote} et \texttt{latexalpha2}.
+
+\section{Options de configuration}
+
+\subsection{Langue}
+
+\begin{itemize}
+\item
+ \textbf{english, french, german} : active les traductions et
+ conventions liées à chaque langue. Ces options affectent les intitulés des théorèmes et environnements, la typographie et les conventions mathématiques.
+\item
+ \textbf{nofrenchlist} : désactive le style français des listes (remet
+ des points à la place des tirets).
+\item
+ \textbf{frenchlistaspar} : traite les listes comme des paragraphes en
+ français.
+\item
+ \textbf{frenchmath} : applique les conventions mathématiques
+ françaises (majuscules et lettres grecques droites).
+\end{itemize}
+
+\subsection{Apparence globale}
+
+\subsubsection{Thèmes prédéfinis}
+
+L'option \textbf{theme} = \texttt{nom-du-theme} définit
+le thème de couleurs du document. Les thèmes disponibles sont : \texttt{cyprus}, \texttt{kassio}, \texttt{frost}, \texttt{spring}, \texttt{arbutus}, \texttt{duo}, \texttt{navy}, \texttt{royal}. La plupart d'entre eux sont inspirés des \textit{ef-themes} pour \textit{emacs} de Protesilaos Stavrou.
+
+\subsubsection{Modes de couleur}
+
+\begin{itemize}
+\item \textbf{normal} : utilise des couleurs différentes pour chaque type
+ d'environnement.
+\item \textbf{unicolor} : utilise une couleur unique pour tous les
+ environnements :
+ \begin{itemize}
+ \item la couleur du titre est utilisée comme base ;
+ \item les variations sont obtenues par transparence.
+ \end{itemize}
+\item \textbf{print} : convertit toutes les couleurs en noir pour
+ l'impression.
+\item \textbf{gradientheadpalette} : utilise un dégradé de la couleur du titre pour les autres titres (sections, sous-sections, titre de théorèmes, etc.).
+\end{itemize}
+
+\subsubsection{Personnalisation des couleurs}
+
+\begin{itemize}
+\item \textbf{globalcolor} = \texttt{couleur} : définit la
+ couleur du texte.
+\item \textbf{titlecolor} = \texttt{couleur} ou \textbf{titlehexcolor} = \texttt{code hex} : définit la
+ couleur du titre.
+\item \textbf{headcolor} = \texttt{couleur} : définit la
+ couleur des en-têtes de section.
+\item \textbf{subcolor} = \texttt{couleur} : définit la
+ couleur des sous-sections.
+\item \textbf{subsubcolor} = \texttt{couleur} : définit la
+ couleur des sous-sous-sections.
+\item \textbf{headfootcolor} = \texttt{couleur} : définit
+ la couleur des en-têtes et pieds de page.
+\end{itemize}
+
+\subsubsection{Options d'affichage}
+
+\begin{itemize}
+\item \textbf{noframe} : supprime les cadres des environnements.
+\item \textbf{noback} : supprime les fonds colorés.
+\item \textbf{nocodeframe} : supprime les cadres des blocs de code.
+\item \textbf{scale} : harmonise les dimensions des polices en \texttt{lualatex}.
+\end{itemize}
+
+\subsection{Personnalisation du résumé}
+
+L'option \texttt{abstracttitle} permet de personnaliser
+le titre de l'environnement \texttt{abstract} :
+
+\begin{code}{latex}
+% Dans le préambule
+\documentclass[abstracttitle=Résumé]{neoschool}
+
+% Dans le document
+\begin{abstract}
+ Contenu du résumé...
+\end{abstract}
+\end{code}
+
+\subsection{Typographie}
+
+\begin{itemize}
+\item \textbf{sfbody} : active la police sans empattements pour le corps du
+ texte.
+\item \textbf{sfall} : active la police sans empattements pour tout le
+ document.
+\item \textbf{mathastext} : utilise la police de texte pour les
+ mathématiques.
+\item \textbf{mainface} = \texttt{police} : police
+ principale du document.
+\item \textbf{mainfaceoptions} = \texttt{options} : options
+ de la police principale.
+\item \textbf{sansface} = \texttt{police} : police sans
+ empattements.
+\item \textbf{sansfaceoptions} = \texttt{options} : options
+ de la police sans empattements.
+\item \textbf{monoface} = \texttt{police} : police à chasse
+ fixe.
+\item \textbf{monofaceoptions} = \texttt{options} : options
+ de la police à chasse fixe.
+\item \textbf{mathface} = \texttt{police} : police
+ mathématique.
+\item \textbf{mathfaceoptions} = \texttt{options} : options
+ de la police mathématique (uniquement en \texttt{pdflatex}).
+\item \textbf{facefamily} = \texttt{famille} : famille de
+ polices complète.
+\item \textbf{facefamilyoptions} = \texttt{options} :
+ options de la famille de polices.
+\end{itemize}
+
+\subsection{Mise en page}
+
+\subsubsection{Marges et espacement}
+
+\begin{itemize}
+\item \textbf{margin} = \texttt{longueur} : définit la
+ largeur des marges horizontales (2,5 cm par défaut) ; les marges verticales s'adaptent en conséquence.
+\item \textbf{notes} = \texttt{longueur} : active les \textit{todonotes}
+ dans les marges et définit leur largeur.
+\item \textbf{noindent} : supprime l'indentation des paragraphes.
+\item \textbf{indent} = \texttt{longueur} : définit la
+ largeur de l'indentation (1 em par défaut).
+\item \textbf{compact} :
+ \begin{itemize}
+ \item réduit l'espacement entre les paragraphes ;
+ \item diminue les marges des environnements ;
+ \item compresse l'interligne.
+ \end{itemize}
+\end{itemize}
+
+\subsubsection{Options de sortie}
+
+\begin{itemize}
+\item \textbf{2a5toa4} : affiche deux fois la même page A5 sur une page A4 en mode paysage.
+\item \textbf{2a4toa3} : affiche deux fois la même page A4 sur une page A3 en mode paysage.
+\item \textbf{4a5toa3} : affiche quatre fois la même page A5 sur une page A3.
+\item \textbf{2toa3} : affiche deux pages A4 quelconques sur une page A3 en mode paysage.
+\item \textbf{bookleta5} : génère un livret en A5 (quatre pages par feuille A4).
+\item \textbf{bookleta4} : génère un livret en A4 (quatre pages par feuille A3).
+\end{itemize}
+
+\subsubsection{En-têtes et pieds de page}
+
+\begin{itemize}
+
+\item
+ \textbf{fullheader} : active l'en-tête et le pied de page complets.
+ \begin{itemize}
+ \item En-tête : type de document à gauche, titre au centre et niveau de classe à
+ droite.
+ \item Pied de page : date à gauche, établissement au centre et pagination
+ à droite.
+ \end{itemize}
+\item \textbf{headrule} : ajoute un filet sous l'en-tête.
+\item \textbf{footrule} : ajoute un filet au-dessus du pied de page.
+\item \textbf{headfootrule} : active les deux filets.
+\end{itemize}
+
+\section{Styles de document}
+
+\subsection{Styles de titre}
+
+\subsubsection{Styles d'examen}
+
+\begin{itemize}
+
+\item \textbf{exam} : style complet pour examens avec en-tête détaillé.
+\end{itemize}
+
+\begin{code}{latex}
+\documentclass[exam]{neoschool}
+
+\neoheader{
+ type = Devoir surveillé,
+ school = Lycée Poincarré,
+ level = Terminale,
+ duration = 2h,
+ calculator = true % ou false ou exam
+}
+\end{code}
+
+\begin{itemize}
+
+\item \textbf{shortexam} : style compact pour examens avec en-tête simplifié.
+\item \textbf{mockexam} : style pour épreuves type baccalauréat ou brevet blancs
+ avec page de garde normalisée.
+\end{itemize}
+
+\subsubsection{Styles d'évaluation}
+
+\begin{itemize}
+
+\item \textbf{eval} : style standard pour évaluations.
+\end{itemize}
+
+\begin{code}{latex}
+\documentclass[eval]{neoschool}
+
+\neoheader{
+ type = Contrôle,
+ school = Collège Alan Turing,
+ level = Quatrième
+}
+\end{code}
+
+\begin{itemize}
+\item \textbf{evalicons} : ajoute des icônes à l'en-têtes \texttt{evel}.
+\item \textbf{evalgrade} : ajoute un bandeau de notation.
+\item \textbf{evaliconsgrade} : style complet avec icônes et notation.
+\item \textbf{shorteval} : style compact pour évaluations.
+\end{itemize}
+
+\subsubsection{Styles avec bulles}
+
+\begin{itemize}
+\item \textbf{bubbles} : style avec fond à bulles colorées.
+\item \textbf{shortbubbles} : version compacte du style bulles.
+\end{itemize}
+
+\subsubsection{Autres styles de titre}
+
+\begin{itemize}
+\item \textbf{titleornament} : ajoute des ornements en-dessous du titre.
+\item \textbf{titlerule} : ajoute un filet sous le titre.
+\item \textbf{titlemidrule} : ajoute un filet central sous le titre.
+\item \textbf{titlefullrule} : ajoute un filet en pleine largeur sous le titre.
+\item \textbf{fancybox} : titre avec boîte grise élégante.
+\item \textbf{onlytitleleft} : affiche uniquement le titre, aligné à gauche.
+\item \textbf{onlytitle} : affiche uniquement le titre, centré.
+\item \textbf{onlytitleright} : affiche uniquement titre, aligné à droite.
+\item \textbf{shorttitle} : style de titre compact.
+\item \textbf{shortlesson} : style compact pour les leçons.
+\end{itemize}
+
+\subsection{Configuration de l'en-tête}
+
+L'en-tête du document peut être configuré avec la commande
+\texttt{\textbackslash neoheader} :
+
+\begin{code}{latex}
+\neoheader{
+ type = {Type de document},
+ school = {Nom de l'établissement},
+ academy = {Nom de l'académie},
+ level = {Niveau de classe},
+ duration = {Durée},
+ calculator = {true/false/exam},
+ leftcontent = {\faIcon{...}},
+ rightcontent = {\faIcon{...}},
+}
+\end{code}
+
+\subsection{Options de formatage des titres}
+
+\subsubsection{Styles globaux}
+
+\begin{itemize}
+\item \textbf{headstyle} = \texttt{style} : style de police
+ pour tous les en-têtes (\texttt{sffamily} par défaut).
+ \begin{itemize}
+ \item Sections, sous-sections, etc.
+ \item En-têtes de théorèmes et exercices.
+ \end{itemize}
+\begin{code}{latex}
+\documentclass[headstyle=rmfamily]{neoschool}
+\end{code}
+\item \textbf{headweight} = \texttt{graisse} : graisse pour
+ tous les en-têtes (\texttt{bfseries} par défaut).
+\begin{code}{latex}
+\documentclass[
+ headstyle=sffamily,
+ headweight=mdseries
+]{neoschool}
+\end{code}
+\item \textbf{headshape} = \texttt{forme} : forme pour tous
+ les en-têtes (\texttt{scshape} par défaut).
+\begin{code}{latex}
+\documentclass[
+ headstyle=sffamily,
+ headshape=upshape
+]{neoschool}
+\end{code}
+\end{itemize}
+
+\subsubsection{Style du titre principal}
+
+\begin{itemize}
+\item \textbf{titlestyle} = \texttt{style} : style pour le
+ titre principal (hérite de \texttt{headstyle}).
+\item \textbf{titleweight} = \texttt{graisse} : graisse du
+ titre principal (hérite de \texttt{headweight}).
+\item \textbf{titleshape} = \texttt{forme} : forme du titre
+ principal (\texttt{upshape} par défaut).
+\item \textbf{titlealign} = \texttt{alignement} :
+ alignement du titre (\texttt{center} par défaut).
+\end{itemize}
+
+\begin{code}{latex}
+\documentclass[
+ titlestyle=sffamily,
+ titleweight=bfseries,
+ titleshape=upshape,
+ titlealign=left
+]{neoschool}
+\end{code}
+
+\subsubsection{Style des sections}
+
+\begin{itemize}
+\item \textbf{sectionnumstyle} = \texttt{style} : style de
+ numérotation.
+ \begin{itemize}
+ \item \texttt{circle} : numéro encerclé.
+ \item \texttt{box} : numéro encadré.
+ \item \texttt{dash} : tiret après le numéro.
+ \item \texttt{plain} : numéro simple.
+ \end{itemize}
+\item \textbf{sectiontextstyle} = \texttt{style} : style du
+ texte.
+ \begin{itemize}
+ \item \texttt{sc} : petites capitales.
+ \item \texttt{upper} : majuscules.
+ \item \texttt{lower} : minuscules.
+ \end{itemize}
+\item \textbf{sectionstyle} = \texttt{style} : style global
+ de la section.
+ \begin{itemize}
+ \item \texttt{ornaments} : avec ornements décoratifs.
+ \item \texttt{underline} : souligné.
+ \item \texttt{normal} : style simple.
+ \item \texttt{highlighted} : avec surlignage.
+ \item \texttt{shadedline} : avec ligne ombrée.
+ \end{itemize}
+\item \textbf{sectionalign} = \texttt{alignement} :
+ alignement des sections.
+ \begin{itemize}
+ \item \texttt{left} : à gauche.
+ \item \texttt{center} : centré
+ \item \texttt{right} : à droite.
+ \end{itemize}
+\end{itemize}
+
+\begin{code}{latex}
+\documentclass[
+ sectionnumstyle=circle,
+ sectiontextstyle=upper,
+ sectionstyle=highlighted,
+ sectionalign=left
+]{neoschool}
+\end{code}
+
+\subsubsection{Style des en-têtes/pieds de page}
+
+\begin{itemize}
+\item \textbf{headfootstyle} = \texttt{style} : style des
+ en-têtes/pieds de page (basé sur \texttt{headstyle}).
+\end{itemize}
+
+\begin{code}{latex}
+\documentclass[headfootstyle=sffamily]{neoschool}
+\end{code}
+
+\subsubsection{Exemple complet de configuration}
+
+\begin{code}{latex}
+\documentclass[
+ % Style global
+ headstyle=sffamily,
+ headweight=bfseries,
+ headshape=scshape,
+
+ % Titre principal
+ titlestyle=sffamily,
+ titleweight=bfseries,
+ titleshape=upshape,
+ titlealign=center,
+
+ % Sections
+ sectionnumstyle=circle,
+ sectiontextstyle=upper,
+ sectionstyle=highlighted,
+ sectionalign=left,
+
+ % En-têtes/pieds de page
+ headfootstyle=sffamily
+]{neoschool}
+\end{code}
+
+\section{Disposition des contenus}
+
+\subsection{Positionnement absolu d'objets}
+
+La commande \texttt{\textbackslash positionobject} permet de placer
+précisément un élément sur la page :
+
+\begin{code}{latex}
+% Syntaxe
+\positionobject{x-shift}{y-shift}{scale}{contenu}
+
+\begin{itemize}
+\item \texttt{x-shift} : décalage horizontal depuis le coin
+ supérieur gauche.
+\item \texttt{y-shift} : décalage vertical depuis le coin
+ supérieur gauche.
+\item \texttt{scale} : facteur d'échelle pour le contenu.
+\item \texttt{contenu} : élément à positionner (image,
+ texte, etc.).
+\end{itemize}
+
+% Exemple : Image en haut à droite
+\positionobject{15cm}{1cm}{0.5}{\includegraphics{logo.png}}
+
+% Exemple : Texte en bas de page
+\positionobject{2cm}{25cm}{1}{Note de bas de page spéciale}
+\end{code}
+
+\subsection{Mise en page à deux colonnes}
+
+La commande \textbf{\textbackslash splitcontent} permet de diviser le
+contenu horizontalement :
+
+\begin{code}{latex}
+% Syntaxe : \splitcontent[largeur1][espace]{contenu1}{contenu2}
+
+% Exemple avec valeurs personnalisées
+\splitcontent[0.6][0.05]{
+ Cette partie occupe 60 %
+ de la largeur totale
+}{
+ Cette partie occupe 35 %
+ (5 % d'espace entre les deux)
+}
+
+% Exemple avec valeurs par défaut (50 % / 50 %)
+\splitcontent{
+ Première colonne
+}{
+ Seconde colonne
+}
+\end{code}
+
+\subsection{Environnements côte à côte}
+
+L'environnement \texttt{sidebyside} permet de créer des
+boîtes à deux colonnes avec des styles cohérents :
+
+\begin{code}{latex}
+\begin{sidebyside}[options]
+ % Contenu gauche
+ \tcblower
+ % Contenu droit
+\end{sidebyside}
+\end{code}
+
+Les options sont celles de \texttt{tcolorbox}.
+
+\begin{code}{latex}
+\begin{sidebyside}[
+ title=Comparaison,
+ colback=exampleColor!5,
+ colbacklower=exampleColor!10
+]
+ Première version
+ \tcblower
+ Version améliorée
+\end{sidebyside}
+\end{code}
+
+\subsection{Association texte et image}
+
+La commande \textbf{\textbackslash textwithimage} combine texte et image~:
+
+\begin{code}{latex}
+% Syntaxe : \textwithimage[*]{largeur_image}{échelle_image}{texte}{chemin_image}
+% L'étoile (*) inverse la position de l'image (droite par défaut)
+
+% Image à droite (30 % de la largeur)
+\textwithimage{0.3}{0.95}{
+ Ce texte décrit l'image ci-contre...
+}{images/figure.png}
+
+% Image à gauche (40 % de la largeur)
+\textwithimage*{0.4}{0.9}{
+ Description à droite de l'image...
+}{images/schema.png}
+\end{code}
+
+\subsection{QR codes et contenus}
+
+La commande \textbf{\textbackslash withqrcode} intègre un QR code avec
+du contenu associé :
+
+\begin{code}{latex}
+% Syntaxe : \withqrcode[*][taille]{url}{contenu}
+% L'étoile (*) place le QR code à droite (gauche par défaut)
+
+% QR code à gauche (2 cm par défaut)
+\withqrcode{https://example.com}{
+ Scanner pour plus d'informations
+}
+
+% QR code de 3cm à droite
+\withqrcode*[3cm]{https://exercises.com}{
+ Accéder aux exercices en ligne
+}
+\end{code}
+
+\subsection{Grilles et papiers}
+
+\subsubsection{Grilles personnalisables}
+
+\begin{itemize}
+\item \textbf{\textbackslash grid} : grille à petits carreaux.
+\end{itemize}
+
+\begin{code}{latex}
+\grid[blue]{10cm}{5cm} % Grille bleue de 10 x 5 cm
+\end{code}
+
+\begin{itemize}
+\item \textbf{\textbackslash customgrid} : grille avec espacement.
+ personnalisé
+\end{itemize}
+
+\begin{code}{latex}
+\customgrid[red][4mm][4mm]{12cm}{8cm} % Grille rouge, mailles de 4 mm
+\end{code}
+
+\begin{itemize}
+\item \textbf{\textbackslash frenchgrid} : grille à grands carreaux de type Seyès.
+\end{itemize}
+
+\begin{code}{latex}
+\frenchgrid{15cm}{10cm} % Grille de type cahier français
+\end{code}
+
+\subsubsection{Pages entières}
+
+\begin{itemize}
+\item \textbf{\textbackslash notebook} : page de type cahier avec lignes horizontales et
+ marge rouge.
+\end{itemize}
+
+\begin{code}{latex}
+\notebook % Active le style cahier ligné
+\end{code}
+
+\begin{itemize}
+\item \textbf{\textbackslash nbminorgrid} : page entièrement recouverte de petits carreaux.
+\end{itemize}
+
+\begin{code}{latex}
+\nbminorgrid % Active le quadrillage fin
+\end{code}
+
+\begin{itemize}
+\item \textbf{\textbackslash nbmajorgrid} : page entièrement recouverte de grands carreaux.
+\end{itemize}
+
+\begin{code}{latex}
+\nbmajorgrid % Active le quadrillage Seyès
+\end{code}
+
+\subsection{Boîtes simples}
+
+L'environnement \texttt{neobox} permet de créer rapidement des boîtes simples. Il existe en deux variantes : \texttt{neobox} avec cadre et \texttt{neobox*} sans cadre visible :
+
+\begin{code}{latex}
+% Boîte standard
+\begin{neobox}[colframe=blue,colback=blue!5]
+ Texte dans une boîte...
+\end{neobox}
+
+% Boîte sans cadre avec fond coloré
+\begin{neobox*}[colback=gray!10]
+ Texte sur fond gris...
+\end{neobox*}
+\end{code}
+
+\section{Exercices}
+
+\subsection{Exercices et évaluations}
+
+\subsubsection{Configuration des exercices}
+
+L'environnement \texttt{exercise} accepte les options
+suivantes.
+
+\begin{itemize}
+\item \textbf{points} = \texttt{nombre} : nombre de points
+ de l'exercice.
+\item \textbf{level} = \texttt{nombre} : niveau de
+ difficulté (affiché sous forme d'étoiles).
+\item \textbf{subtitle} = \texttt{texte} : sous-titre ou
+ description de l'exercice.
+\item \textbf{icon} = \texttt{icône} : icône personnalisée
+ (utilise la bibliothèque d'icônes \textit{Font Awesome}).
+\item \textbf{topic} = \texttt{thème} : thème ou chapitre
+ concerné.
+\item \textbf{subject} = \texttt{matière} : matière
+ concernée.
+\item \textbf{ID} = \texttt{identifiant} : identifiant
+ unique pour référencement.
+\item \textbf{template} = \texttt{style} : style
+ d'affichage spécifique pour cet exercice.
+\end{itemize}
+
+\begin{code}{latex}
+\begin{exercise}[
+ points=4,
+ level=2,
+ subtitle=Dérivation,
+ icon=\faPencil,
+ topic=Analyse,
+ subject=Mathématiques,
+ ID=der01,
+ template=elegant-box
+]
+ Calculer la dérivée de la fonction $f$ définie sur $]0 ; +\infty[$
+ par $f(x)=x^2\ln(x)$.
+\end{exercise}
+
+L'environnement \texttt{solution} doit immédiatement suivre l'environnement \texttt{exercise} correspondant. La correction des exercices ne s'affiche pas par défaut.
+
+\begin{solution}
+ On utilise la formule du produit...
+\end{solution}
+
+% Pour référencer l'exercice ailleurs :
+Comme vu dans l'exercice~\exercisenumber{der01}.
+\end{code}
+
+\subsubsection{Options globales}
+
+\begin{itemize}
+\item \textbf{exerciseicons} : active les icônes pour tous les exercices.
+\item \textbf{answers} : affiche automatiquement toutes les corrections des exercices.
+\item \textbf{shuffle} : mélange les choix de réponse dans les QCM.
+\item \textbf{sectionthmcounter} : numérote les exercices par section.
+\item \textbf{sharedexcounter} : partage le compteur avec les théorèmes.
+\end{itemize}
+
+\subsubsection{Templates d'exercices}
+
+La classe offre de nombreux styles prédéfinis pour les exercices.
+
+\begin{itemize}
+\item \textbf{box} : boîte standard avec bordure et titre.
+\item \textbf{elegant-box} : boîte avec barre latérale colorée.
+\item \textbf{shaded-box} : boîte avec ombrage et titre en bannière.
+\item \textbf{slanted-box} : boîte avec titre en bandeau incliné.
+\item \textbf{sober-box} : boîte minimaliste avec titre en couleur.
+\item \textbf{classic-box} : boîte classique avec titre en bandeau.
+\item \textbf{classy-box} : boîte sophistiquée avec titre décoratif.
+\item \textbf{rect-box} : boîte rectangulaire simple.
+\item \textbf{rect-box-outlined} : boîte rectangulaire avec contour.
+\item \textbf{num-box} : boîte numérotée compacte.
+\item \textbf{num-box-outlined} : boîte numérotée avec contour.
+\item \textbf{ex-num-box} : boîte ``Ex.'' numérotée.
+\item \textbf{ex-num-box-outlined} : boîte ``Ex.'' numérotée avec contour.
+\item \textbf{box-hrule} : boîte avec règle horizontale.
+\item \textbf{box-hrule-out} : boîte avec règle horizontale et contour.
+\item \textbf{box-hrule-in} : boîte avec règle horizontale intérieure.
+\item \textbf{boxed} : simple boîte avec titre.
+\item \textbf{boxed-out} : boîte avec contour et titre.
+\item \textbf{inline} : texte en ligne avec titre.
+\item \textbf{section} : titre de type section.
+\item \textbf{subsection} : titre de type sous-section.
+\item \textbf{terminal} : style console avec icône terminal.
+\item \textbf{block} : style minimaliste.
+\item \textbf{hrule} : avec règle horizontale.
+\end{itemize}
+
+Pour définir un template pour tout le document, il suffit d'utiliser la commande \texttt{\textbackslash xsimsetup} dans la préambule :
+
+\begin{code}{latex}
+\xsimsetup{
+ exercise/template = elegant-box, % template des exercices
+ solution/template = sol-box % template des solutions
+}
+\end{code}
+
+\subsubsection{QCM et choix multiples}
+
+\begin{itemize}
+\item \textbf{choices} : pour les QCM à réponse unique.
+\end{itemize}
+
+\begin{code}{latex}
+\begin{exercise}[points=2,ID=qcm01]
+ Quelle est la dérivée de $e^x$ ?
+ \begin{choices}
+ \choice $x e^x$
+ \choice[\correct] $e^x$
+ \choice $e^{x-1}$
+ \choice $\ln(x)$
+ \end{choices}
+\end{exercise}
+\end{code}
+
+\begin{itemize}
+
+\item
+ \textbf{checkboxes} : pour les QCM à réponses multiples.
+\end{itemize}
+
+\begin{code}{latex}
+\begin{exercise}[points=3,ID=qcm02]
+ Parmi ces nombres, lesquels sont premiers ?
+ \begin{checkboxes}
+ \checkbox[\correct*] 2
+ \checkbox[\correct*] 3
+ \checkbox 4
+ \checkbox[\correct*] 5
+ \end{checkboxes}
+\end{exercise}
+\end{code}
+
+\section{Environnements mathématiques}
+
+\subsection{Styles de théorèmes}
+
+Les styles suivants sont disponibles pour tous les environnements de
+type théorème : \textbf{amslikethm} (style minimaliste), \textbf{boxedthm}, \textbf{classicthm}, \textbf{classythm}, \textbf{elegantthm}, \textbf{shadedthm}, \textbf{slantedthm}, \textbf{soberthm}.
+
+Options communes :
+
+\begin{itemize}
+\item \textbf{title} = \texttt{texte} : titre du théorème.
+\item \textbf{label} = \texttt{nom} : étiquette pour
+ référencement.
+\item \textbf{colback} = \texttt{couleur} : couleur de fond.
+\item \textbf{colframe} = \texttt{couleur} : couleur du
+ cadre.
+\item \textbf{coltitle} = \texttt{couleur} : couleur du
+ titre.
+\item \textbf{fonttitle} = \texttt{commandes} : style du
+ titre.
+\end{itemize}
+
+\subsection{Options de numérotation}
+
+\begin{itemize}
+\item \textbf{sectionthmcounter} : compteurs relatifs à chaque section.
+\item \textbf{sharedthmcounter} : compteur partagé entre tous les
+ environnements.
+\item \textbf{theoremgroup} : regroupe certains environnements de théorèmes.
+\item \textbf{thmgroupcounter} : active un compteur pour les groupes.
+\end{itemize}
+
+\subsection{Environnements mathématiques}
+
+\begin{itemize}
+\item \textbf{theorem} : pour les théorèmes.
+\end{itemize}
+
+\begin{code}{latex}
+\begin{theorem}[title=Théorème de Pythagore,label=pyth]
+ Dans un triangle rectangle, le carré de
+ l'hypoténuse est égal à la somme des carrés
+ des deux autres côtés.
+\end{theorem}
+
+% Référencement :
+D'après le théorème~\ref{thm:pyth}
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{lemma} : pour les lemmes.
+\end{itemize}
+
+\begin{code}{latex}
+\begin{lemma}[title=Lemme préparatoire,label=prep]
+ Contenu du lemme...
+\end{lemma}
+
+% Référencement :
+Selon le lemme~\ref{lem:prep}
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{corollary} : pour les corollaires.
+\end{itemize}
+
+\begin{code}{latex}
+\begin{corollary}[
+ title=Réciproque de Pythagore,
+ label=pythrecip
+]
+ Si $a^2 + b^2 = c^2$, alors le triangle est
+ rectangle en $A$.
+\end{corollary}
+
+% Référencement :
+Selon le corollaire~\ref{cor:pythrecip}
+\end{code}
+
+\begin{itemize}
+\item \textbf{proposition} : pour les propositions (\textbf{propo} pour le
+ référencement).
+\item \textbf{property} : pour les propriétés (\textbf{prop} pour le
+ référencement).
+\item \textbf{definition} : pour les définitions (\textbf{def} pour le
+ référencement).
+\item \textbf{method} : pour les méthodes (\textbf{meth} pour le
+ référencement).
+\item \textbf{activity} : pour les activités (\textbf{act} pour le
+ référencement).
+\item \textbf{application} : pour les applications (\textbf{appl} pour le
+ référencement).
+\item \textbf{remark} : pour les remarques.
+\item \textbf{remarks} : pour une série de remarques.
+\item \textbf{example} : pour les exemples.
+\item \textbf{examples} : pour une série d'exemples.
+\end{itemize}
+
+\section{Code informatique}
+
+La classe \texttt{neoschool} propose deux options pour la
+gestion du code.
+
+\begin{itemize}
+\item \textbf{listings} (par défaut) : utilise l'extension \texttt{listings}.
+\item \textbf{minted} : utilise l'extension \texttt{minted} (qui nécessite le langage \textit{Python} et sa bibliothèque
+ \texttt{Pygments}).
+\end{itemize}
+
+\subsection{Option listings}
+
+\subsubsection{Styles de code disponibles}
+
+\begin{itemize}
+\item \textbf{lststyle} = \texttt{style} : style de
+ coloration.
+ \begin{itemize}
+ \item \texttt{colorful} : coloration complète (par défaut).
+ \item \texttt{minimal} : style minimaliste.
+ \item \texttt{academic} : style ``académique'' avec numéros de ligne.
+ \item \texttt{modern} : style ``moderne'' avec fond coloré.
+ \end{itemize}
+\end{itemize}
+
+\subsubsection{Boîtes de code personnalisées}
+
+La classe définit l'environnement \texttt{code} dont la structure est la suivante :
+
+\begin{lstlisting}[style=latex]
+\begin{code}[options]{langage}[titre][style-boite]
+ code source...
+\end{code}
+\end{lstlisting}
+
+Styles de boîtes : \textbf{box-minimal}, \textbf{box-fancy}, \textbf{box-classic}, \textbf{box-elegant}, \textbf{box-diagonal}, \textbf{box-bevel}, \textbf{box-corner}, \textbf{box-rounded}, \textbf{box-downhill}, \textbf{box-bottomtitle}, \textbf{box-bottomtitlef}.
+
+\begin{lstlisting}[language=TeX]
+\begin{code}[numbers=left]{python}[Exemple de fonction][box-fancy]
+def hello(name):
+ print(f"Hello, {name}!")
+\end{code}
+\end{lstlisting}
+
+\subsubsection{Langages et styles préconfigurés}
+
+\begin{itemize}
+\item Python
+\item Java
+\item C++
+\item JavaScript
+\item SQL
+\item LaTeX
+\item Bash
+\item Assembly
+\item Lisp
+\item JSON
+\item YAML
+\item TOML
+\item CSV
+\item Markdown
+\end{itemize}
+
+\subsubsection{Commandes additionnelles}
+
+\begin{itemize}
+\item \textbf{\textbackslash codeinline} : code en ligne.
+\end{itemize}
+
+\begin{code}{latex}
+\codeinline[python]{print("Hello")}
+\end{code}
+
+\begin{itemize}
+
+\item \textbf{\textbackslash codeinput} : code chargé depuis un fichier.
+\end{itemize}
+
+\begin{code}{latex}
+\codeinput[options]{langage}{fichier.py}[titre][style-boite]
+\end{code}
+
+\subsection{Option minted}
+
+Lorsque l'option \textbf{minted} est activée, les environnements de code utilisent \texttt{Pygments} pour la coloration
+syntaxique. L'environnement \texttt{code} est également disponible avec l'option \texttt{minted}, avec la même syntaxe :
+
+\begin{lstlisting}[language=TeX]
+\usemintedstyle{tango}
+\begin{code}[linenos,highlightlines={2,3}]{python}[Fonction][box-fancy]
+def greet(name):
+ message = f"Hello, {name}!"
+ print(message)
+ return message
+\end{code}
+\end{lstlisting}
+
+\section{Notes et annotations}
+
+\subsection{Notes marginales}
+
+Les notes peuvent être placées dans la marge avec différentes options :
+
+\begin{itemize}
+\item \textbf{\textbackslash tdnote} : notes colorées et encadrées dans la
+ marge, alternant entre gauche et droite.
+\end{itemize}
+
+\begin{code}{latex}
+\tdnote{Point important à retenir}
+\tdnote[backgroundcolor=blue!5]{Note avec fond bleu clair}
+\end{code}
+
+\begin{itemize}
+\item \textbf{\textbackslash boxnote/\textbackslash tdmark} : l'extension \texttt{todonote} ne permettant pas de placer des notes directement dans des environnements, il est nécessaire d'utiliser un point d'ancrage (\textbf{\textbackslash tdmark}) ayant le même label que le contenu de la note proprement dite (\textbf{\textbackslash boxnote}).
+\end{itemize}
+
+\begin{code}{latex}
+\boxnote[thm1]{Ce théorème est important}
+\begin{theorem}
+ \tdmark[thm1] % Point de référence pour la note (même label)
+ Contenu du théorème...
+\end{theorem}
+\end{code}
+
+Les options possibles pour les notes sont les suivantes.
+
+\begin{itemize}
+\item \textbf{backgroundcolor} = \texttt{couleur} : couleur
+ de fond.
+\item \textbf{color} = \texttt{couleur} : couleur du texte.
+\item \textbf{bordercolor} = \texttt{couleur} : couleur de
+ la bordure.
+\item \textbf{width} = \texttt{longueur} : largeur de la
+ note.
+\item \textbf{linecolor} = \texttt{couleur} : couleur de la
+ ligne de référence.
+\end{itemize}
+
+\subsection{Admonitions}
+
+Les environnements d'admonition permettent de mettre en avant des
+informations importantes. Chaque type a sa propre couleur et icône par
+défaut.
+
+\begin{itemize}
+\item \textbf{note} : remarques générales.
+\end{itemize}
+
+\begin{code}{latex}
+\begin{note}[Remarque importante][\faInfo]
+ Points à retenir...
+\end{note}
+\end{code}
+
+\begin{itemize}
+\item \textbf{info} : informations complémentaires.
+\end{itemize}
+
+\begin{code}{latex}
+\begin{info}[Pour aller plus loin]
+ Informations additionnelles...
+\end{info}
+\end{code}
+
+\begin{itemize}
+\item \textbf{warning} : avertissements.
+\end{itemize}
+
+\begin{code}{latex}
+\begin{warning}[Attention !][\faExclamationTriangle]
+ Points critiques à ne pas oublier...
+\end{warning}
+\end{code}
+
+\begin{itemize}
+\item \textbf{important} : points essentiels.
+\end{itemize}
+
+\begin{code}{latex}
+\begin{important}[Point clé]
+ Concept fondamental...
+\end{important}
+\end{code}
+
+\begin{itemize}
+\item \textbf{tip} : conseils et astuces.
+\end{itemize}
+
+\begin{code}{latex}
+\begin{tip}[Astuce de calcul][\faLightbulb]
+ Une méthode plus rapide...
+\end{tip}
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{reminder} : points à retenir.
+\end{itemize}
+
+\begin{code}{latex}
+\begin{reminder}[À mémoriser]
+ Formules essentielles...
+\end{reminder}
+\end{code}
+
+\begin{itemize}
+\item \textbf{summary} : résumés.
+\end{itemize}
+
+\begin{code}{latex}
+\begin{summary}[En bref]
+ Points principaux du chapitre...
+\end{summary}
+\end{code}
+
+\begin{itemize}
+\item \textbf{toolbox} : boîte à outils.
+\end{itemize}
+
+\begin{code}{latex}
+\begin{toolbox}[Outils nécessaires]
+ \begin{itemize}
+ \item Calculatrice
+ \item Règle graduée
+ \item Compas
+ \end{itemize}
+\end{toolbox}
+\end{code}
+
+Toutes les admonitions acceptent trois paramètres optionnels :
+
+\begin{itemize}
+\item un titre optionnel ;
+\item une icône personnalisée ;
+\item des options de personnalisation (couleurs, bordures).
+\end{itemize}
+
+\section{Notation et correction}
+
+\subsection{Outils de notation}
+
+\begin{itemize}
+\item \textbf{\textbackslash gradingstrip} : bandeau de notation (note et appréciation).
+\end{itemize}
+
+\begin{code}{latex}
+% Bandeau simple
+\gradingstrip
+
+% Bandeau avec total spécifié
+\gradingstrip[20]
+\end{code}
+
+L'option \textbf{totalpoints} définit le nombre total de points par défaut.
+
+\begin{code}{latex}
+\documentclass[totalpoints=20]{neoschool}
+\end{code}
+
+\begin{itemize}
+
+\item \textbf{\textbackslash mrk, \textbackslash mrks} : points dans la
+ marge.
+\end{itemize}
+
+\begin{code}{latex}
+% Un point
+\mrk[Bien vu !]{1} % Marge droite avec commentaire
+\mrk*{1} % Marge gauche
+
+% Plusieurs points
+\mrks{3} % 3 points marge droite
+\mrks*[Barème]{3} % 3 points marge gauche avec texte
+\end{code}
+
+\subsection{Zones de réponse}
+
+\begin{itemize}
+\item
+ \textbf{\textbackslash answerfield} : zone de réponse avec fond coloré.
+\end{itemize}
+
+\begin{code}{latex}
+% Zone pleine largeur, 3 lignes
+\answerfield{3}
+
+% Zone 80% largeur, 5 lignes
+\answerfield[0.8\linewidth]{5}
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{\textbackslash answerframe} : zone de réponse encadrée.
+\end{itemize}
+
+\begin{code}{latex}
+% Cadre pleine largeur, 3 lignes
+\answerframe{3}
+
+% Cadre 80% largeur, 5 lignes
+\answerframe[0.8\linewidth]{5}
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{\textbackslash vardots} : ligne pointillée de longueur
+ variable.
+\end{itemize}
+
+\begin{code}{latex}
+% Ligne pointillée pleine largeur
+\vardots
+
+% Ligne pointillée de 5cm
+\vardots[5cm]
+\end{code}
+
+\subsection{Marqueurs et symboles}
+
+\begin{itemize}
+\item
+ \textbf{\textbackslash cmark} : symbole de validation (\cmark)
+\item
+ \textbf{\textbackslash xmark} : symbole d'erreur (\xmark)
+\item
+ \textbf{\textbackslash unchecked} : case à cocher vide \unchecked
+\item
+ \textbf{\textbackslash done} : case cochée avec \done
+\item
+ \textbf{\textbackslash wontfix} : case cochée avec \wontfix
+\end{itemize}
+
+\begin{code}{latex}
+\begin{itemize}
+ \unchecked Objectif 1 à réaliser
+ \done Objectif 2 terminé
+ \wontfix Objectif 3 abandonné
+\end{itemize}
+\end{code}
+
+\subsection{Compétences et évaluation}
+
+\begin{itemize}
+\item
+ \textbf{\textbackslash competencies} : tableau d'évaluation par
+ compétences.
+\end{itemize}
+
+\begin{code}{latex}
+\competencies{
+ Calculer une dérivée\\
+ Étudier les variations\\
+ Résoudre une équation
+}
+\end{code}
+
+Le tableau affiche automatiquement :
+\begin{itemize}
+\item 4 niveaux de maîtrise avec émojis ;
+\item des cases à cocher pour l'évaluation.
+\end{itemize}
+
+\section{Commandes mathématiques et outils spéciaux}
+
+\subsection{Commandes
+mathématiques}\label{commandes-mathuxe9matiques}
+
+\subsubsection{Mise en valeur et
+coloration}\label{mise-en-valeur-et-coloration}
+
+\begin{itemize}
+\item
+ \textbf{\textbackslash mhl} : surlignage d'expressions mathématiques.
+\end{itemize}
+
+\begin{code}{latex}
+% Surlignage jaune par défaut
+$\mhl{x^2}$
+
+% Surlignage personnalisé
+$\mhl[blue!20]{f'(x)}$
+
+% Dans une équation sur plusieurs lignes
+\begin{align*}
+ f(x) &= x^2 + \mhl{2x} + 1 \\
+ f'(x) &= 2x + \mhl{2}
+\end{align*}
+\end{code}
+
+\begin{itemize}
+
+\item
+ \textbf{\textbackslash mc} : coloration d'expressions mathématiques.
+\end{itemize}
+
+\begin{code}{latex}
+% Couleur du thème par défaut
+$\mc{f(x)}$
+
+% Couleur personnalisée
+$\mc[red]{g(x)}$
+
+% Dans une équation
+\[ \mc{f'(x)} = \lim_{h \to 0} \mc[blue]{\frac{f(x+h)-f(x)}{h}} \]
+\end{code}
+
+\subsubsection{Support APMEP}
+
+Lorsque l'option \textbf{apmep} est activée, les commandes suivantes sont disponibles.
+\begin{itemize}
+\item Commandes de vecteurs :
+\end{itemize}
+
+\begin{code}{latex}
+\vect{u} % Vecteur u avec flèche
+\vectt{AB} % Vecteur AB avec espacement
+\end{code}
+
+\begin{itemize}
+\item Repères et coordonnées :
+\end{itemize}
+
+\begin{code}{latex}
+\Oij % Repère (O; i,j)
+\Oijk % Repère (O; i,j,k)
+\Ouv % Repère (O; u,v)
+\end{code}
+
+\begin{itemize}
+\item Commandes spéciales :
+\end{itemize}
+
+\begin{code}{latex}
+\euro % Symbole euro
+\cg % Crochet gauche
+\cd % Crochet droit
+\pg % Plus grand ou égal
+\pp % Plus petit ou égal
+\barre{x} % x surligné
+\ds % \displaystyle
+\end{code}
+
+\subsection{Outils spéciaux}
+
+\subsubsection{Arbres et graphes}
+
+\begin{itemize}
+\item
+ Arbres avec \emph{l}xtension \texttt{forest} :
+\end{itemize}
+
+\begin{code}{latex}
+\begin{neotree}
+A
+ [B
+ [D]
+ [E]
+ ]
+ [C
+ [F]
+ [G]
+ ]
+\end{neotree}
+
+% Avec poids sur les arêtes
+\begin{neotree}
+A
+ [B, w=\frac{1}{3}
+ [D]
+ [E]
+ ]
+ [C, w=\frac{2}{3}]
+\end{neotree}
+\end{code}
+
+\begin{itemize}
+\item
+ Graphes (uniquement avec une compilation en \texttt{lualatex}) :
+\end{itemize}
+
+\begin{code}{latex}
+\neograph{
+ A -- {B, C, D, F},
+ B -- {C, D, F},
+ C -> ["3"] D,
+ D -- [bend left=10] {E},
+ E -- [bend left=10] {D},
+ E -- [bend left=10] {F},
+ F -- [bend left=10] {E},
+ A -- [loop] A
+}
+\end{code}
+
+\subsubsection{Grille mathématique}
+
+L'environnement \texttt{mathgrid} permet de disposer
+des équations en grille :
+
+\begin{code}{latex}
+\begin{mathgrid}{3}
+ \neoline
+ \neocol{
+ T &= 7xx+9x\\
+ &= (7+9)x \\
+ &= 16x
+ }
+ \neocol{
+ U &= 8x^{2}-5x^{2}+x^{2}\\
+ &= (8-5+1)x^{2} \\
+ &= 4x^{2}
+ }
+ \neocol{
+ V &= 5a^{2}-6a\\
+ &= a(5a-6)
+ }
+ \neoline
+ \neocol[2]{
+ W &= 5a^{2}-6a+3+7a^{2}+a-6\\
+ &= (5+7)a^{2}+(-6+1)a+(3-6)\\
+ &= 12a^{2}-5a-3
+ }
+ \neocol{
+ A &= 2x + 3x\\
+ &= 5x
+ }
+\end{mathgrid}
+\end{code}
+
+\end{document}
Property changes on: trunk/Master/texmf-dist/doc/latex/neoschool/neoschool-fr.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/neoschool/neoschool.pdf
===================================================================
(Binary files differ)
Index: trunk/Master/texmf-dist/doc/latex/neoschool/neoschool.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/neoschool/neoschool.pdf 2025-01-08 21:11:53 UTC (rev 73373)
+++ trunk/Master/texmf-dist/doc/latex/neoschool/neoschool.pdf 2025-01-08 21:13:05 UTC (rev 73374)
Property changes on: trunk/Master/texmf-dist/doc/latex/neoschool/neoschool.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/neoschool/neoschool.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/neoschool/neoschool.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/neoschool/neoschool.tex 2025-01-08 21:13:05 UTC (rev 73374)
@@ -0,0 +1,1629 @@
+\documentclass[
+ margin=2cm
+]{neoschool}
+
+\title{The \texttt{neoschool} Class}
+\author{Version : 1.0.0 \quad\textemdash{}\quad Author : Razik Ikhlef}
+\date{2025/01/04}
+
+\begin{document}
+\maketitle
+
+The \texttt{neoschool} class provides secondary school
+teachers with a comprehensive set of tools to create their educational
+documents (assessments, course materials, exercise sheets with
+solutions, etc.). To meet various needs, it offers eight predefined
+color themes, diverse class options for layout and typography,
+specialized environments, dedicated commands, and different preformatted
+header styles for each type of document. It integrates dozens of
+commonly used LaTeX packages (see list below), which significantly
+reduces the preamble and avoids compatibility issues as much as
+possible. It's multilingual, supporting French, English, and German.
+
+\tableofcontents
+
+\section{Loaded Packages}
+
+The following packages are automatically loaded by the
+\texttt{neoschool} class:
+
+\texttt{adforn}, \texttt{adjustbox}, \texttt{algpseudocode},
+\texttt{amssymb}, \texttt{babel}, \texttt{bookmark}, \texttt{calc},
+\texttt{changespace}, \texttt{cuted}, \texttt{environ},
+\texttt{fancyvrb}, \texttt{fontawesome5}, \texttt{forest},
+\texttt{iftex}, \texttt{ifthen}, \texttt{kvoptions}, \texttt{lastpage},
+\texttt{marginnote}, \texttt{microtype}, \texttt{mismath} (which loads
+\texttt{mathtools}), \texttt{multicol}, \texttt{needspace},
+\texttt{pdftexcmds}, \texttt{pgffor}, \texttt{pgfplots},
+\texttt{qrcode}, \texttt{scrlayer-scrpage}, \texttt{silence},
+\texttt{siunitx}, \texttt{tabularray}, \texttt{tasks},
+\texttt{tcolorbox} (with the \texttt{most} option loading
+\texttt{listings} and \texttt{minted} packagess), \texttt{textcase},
+\texttt{tikz}, \texttt{tikzpagenodes}, \texttt{tikzsymbols},
+\texttt{ulem} (with \texttt{normalem} option), \texttt{xcolor} (with
+\texttt{table}, \texttt{svgnames}, \texttt{dvipsnames}, and
+\texttt{x11names} options), \texttt{xhfill}, \texttt{xkeyval},
+\texttt{xsim} (with \texttt{use-files} and \texttt{clear-aux} options),
+\texttt{xstring}.
+
+Compilation in \texttt{pdflatex} loads \texttt{fonttenc} (with
+\texttt{T1} option), \texttt{inputenc} (with \texttt{utf8} option),
+\texttt{newpxtext}, and \texttt{newpxmath}. Compilation in
+\texttt{lualatex} makes available \texttt{fontspec}, \texttt{luacas},
+\texttt{lua-ul}, \texttt{luacolor} packagess and applies
+\texttt{TeX\ Gyre\ PagellaX} and \texttt{TeX\ Gyre\ Heros} fonts in
+addition to \texttt{newpxmath}.
+
+The \texttt{graphics} option loads \texttt{graphicx} and
+\texttt{wrapfig}, the \texttt{draft} option loads \texttt{blindtext} and
+\texttt{lipsum}, and the \texttt{mathastext} option loads the
+\texttt{mathastext} packages.
+
+The \texttt{math} option loads \texttt{annotate-equations}, \texttt{bm},
+\texttt{cancel}, \texttt{mathrsfs}, \texttt{nncomma}, \texttt{numprint},
+\texttt{tdsfrmath} (with \texttt{suite} and \texttt{taupe} options),
+\texttt{tkz-euclide}, \texttt{witharrows}, and \texttt{xlop}.
+
+The \texttt{notes} option enables colored and framed notes in the left
+and right margins alternately and loads the \texttt{todonotes}
+packages.
+
+The \texttt{apmep} option, which allows direct compilation of
+examination papers from the association of the same name, defines a set
+of mathematical commands and loads \texttt{esvect},
+\texttt{fourier-ons}, \texttt{numprint} (with \texttt{np} option),
+\texttt{pstricks} (and many packages from the \texttt{pstricks}
+ecosystem), \texttt{tabularx}, and \texttt{textcomp}.
+
+The \texttt{mathics} option enables computer algebra via
+\texttt{mathics} (free version of \texttt{mathematica}) and loads
+\texttt{asymptote} and \texttt{latexalpha2} packagess.
+
+\section{Configuration Options}
+
+\subsection{Language}
+
+\begin{itemize}
+\item
+ \textbf{english, french, german}: Activates translations and
+ conventions for each language. These options affect theorem and
+ environment titles, typography, and mathematical conventions.
+\item
+ \textbf{nofrenchlist}: Disables French-style lists (restores dots
+ instead of dashes).
+\item
+ \textbf{frenchlistaspar}: Treats lists as paragraphs in French.
+\item
+ \textbf{frenchmath}: Applies French mathematical conventions (upright
+ capitals and Greek letters).
+\end{itemize}
+
+\subsection{Global Appearance}
+
+\subsubsection{Predefined Themes}
+
+The \textbf{theme} = \texttt{theme-name} option sets the document's color theme.
+Available themes are: \texttt{cyprus}, \texttt{kassio}, \texttt{frost},
+\texttt{spring}, \texttt{arbutus}, \texttt{duo}, \texttt{navy}, \texttt{royal}.
+Most of them are inspired by the \textit{ef-themes} for \textit{Emacs} by
+Protesilaos Stavrou.
+
+\subsubsection{Color Modes}
+
+\begin{itemize}
+\item
+ \textbf{normal}: Uses different colors for each type of environment.
+\item
+ \textbf{unicolor}: Uses a single color for all environments:
+
+ \begin{itemize}
+ \item
+ The title color is used as the base
+ \item
+ Variations are obtained through transparency
+ \end{itemize}
+\item
+ \textbf{print}: Converts all colors to black for printing.
+\item
+ \textbf{gradientheadpalette}: Uses a gradient of the title color for
+ other headings (sections, subsections, theorem titles, etc.).
+\end{itemize}
+
+\subsubsection{Custom Colors}
+
+\begin{itemize}
+\item
+ \textbf{globalcolor} = \texttt{color}: Sets the text
+ color.
+\item
+ \textbf{titlecolor} = \texttt{color} or
+ \textbf{titlehexcolor} = \texttt{hex code}: Sets the
+ title color.
+\item
+ \textbf{headcolor} = \texttt{color}: Sets the section
+ header color.
+\item
+ \textbf{subcolor} = \texttt{color}: Sets the
+ subsection color.
+\item
+ \textbf{subsubcolor} = \texttt{color}: Sets the
+ subsubsection color.
+\item
+ \textbf{headfootcolor} = \texttt{color}: Sets the
+ header and footer color.
+\end{itemize}
+
+\subsubsection{Display Options}
+
+\begin{itemize}
+\item
+ \textbf{noframe}: Removes environment frames.
+\item
+ \textbf{noback}: Removes colored backgrounds.
+\item
+ \textbf{nocodeframe}: Removes code block frames.
+\item
+ \textbf{scale}: Harmonizes font dimensions in
+ \texttt{lualatex}.
+\end{itemize}
+
+\subsection{Abstract Customization}
+
+The \texttt{abstracttitle} option allows customization
+of the \texttt{abstract} environment title:
+
+\begin{code}{latex}
+\documentclass[abstracttitle=Summary]{neoschool}
+
+% In the document
+\begin{abstract}
+ Abstract content...
+\end{abstract}
+\end{code}
+
+\subsection{Typography}
+
+\begin{itemize}
+\item
+ \textbf{sfbody}: Activates sans-serif font for body text.
+\item
+ \textbf{sfall}: Activates sans-serif font for the entire document.
+\item
+ \textbf{mathastext}: Uses text font for mathematics.
+\item
+ \textbf{mainface} = \texttt{font}: Main document
+ font.
+\item
+ \textbf{mainfaceoptions} = \texttt{options}: Main
+ font options.
+\item
+ \textbf{sansface} = \texttt{font}: Sans-serif font.
+\item
+ \textbf{sansfaceoptions} = \texttt{options}:
+ Sans-serif font options.
+\item
+ \textbf{monoface} = \texttt{font}: Monospace font.
+\item
+ \textbf{monofaceoptions} = \texttt{options}:
+ Monospace font options.
+\item
+ \textbf{mathface} = \texttt{font}: Mathematical font.
+\item
+ \textbf{mathfaceoptions} = \texttt{options}:
+ Mathematical font options (only in
+ \texttt{pdflatex}).
+\item
+ \textbf{facefamily} = \texttt{family}: Complete font
+ family.
+\item
+ \textbf{facefamilyoptions} = \texttt{options}: Font
+ family options.
+\end{itemize}
+
+\subsection{Layout}
+
+\subsubsection{Margins and Spacing}
+
+\begin{itemize}
+\item
+ \textbf{margin} = \texttt{length}: Sets horizontal
+ margin width (2.5cm default); vertical margins adjust accordingly.
+\item
+ \textbf{notes} = \texttt{length}: Activates
+ \emph{todonotes} in margins and sets their width.
+\item
+ \textbf{noindent}: Removes paragraph indentation.
+\item
+ \textbf{indent} = \texttt{length}: Sets indentation
+ width (1em default).
+\item
+ \textbf{compact}:
+
+ \begin{itemize}
+ \item
+ Reduces paragraph spacing
+ \item
+ Decreases environment margins
+ \item
+ Compresses line spacing
+ \end{itemize}
+\end{itemize}
+
+\subsubsection{Output Options}
+
+\begin{itemize}
+\item
+ \textbf{2a5toa4}: Displays two copies of A5 page on A4 in landscape.
+\item
+ \textbf{2a4toa3}: Displays two copies of A4 page on A3 in landscape.
+\item
+ \textbf{4a5toa3}: Displays four copies of A5 page on A3.
+\item
+ \textbf{2toa3}: Displays two different A4 pages on A3 in landscape.
+\item
+ \textbf{bookleta5}: Generates A5 booklet (four pages per A4 sheet).
+\item
+ \textbf{bookleta4}: Generates A4 booklet (four pages per A3 sheet).
+\end{itemize}
+
+\subsubsection{Headers and Footers}
+
+\begin{itemize}
+\item
+ \textbf{fullheader}: Activates complete header and footer.
+
+ \begin{itemize}
+ \item
+ Header: document type on left, title in center, class level on
+ right.
+ \item
+ Footer: date on left, institution in center, pagination on right.
+ \end{itemize}
+\item
+ \textbf{headrule}: Adds line under header.
+\item
+ \textbf{footrule}: Adds line above footer.
+\item
+ \textbf{headfootrule}: Activates both lines.
+\end{itemize}
+
+\section{Document Styles}
+
+\subsection{Title Styles}
+
+\subsubsection{Exam Styles}
+
+\begin{itemize}
+\item
+ \textbf{exam}: Complete style for exams with detailed header.
+\end{itemize}
+
+\begin{code}{latex}
+\documentclass[exam]{neoschool}
+
+\neoheader{
+ type = Test,
+ school = Poincarré High School,
+ level = Senior Year,
+ duration = 2h,
+ calculator = true % or false or exam
+}
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{shortexam}: Compact style for exams with simplified header.
+\item
+ \textbf{mockexam}: Style for mock exams with standardized cover page.
+\end{itemize}
+
+\subsubsection{Assessment Styles}
+
+\begin{itemize}
+\item
+ \textbf{eval}: Standard style for assessments.
+\end{itemize}
+
+\begin{code}{latex}
+\documentclass[eval]{neoschool}
+
+\neoheader{
+ type = Quiz,
+ school = Alan Turing Middle School,
+ level = 8th Grade
+}
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{evalicons}: Adds icons to \texttt{eval}
+ header.
+\item
+ \textbf{evalgrade}: Adds grading banner.
+\item
+ \textbf{evaliconsgrade}: Complete style with icons and grading.
+\item
+ \textbf{shorteval}: Compact style for assessments.
+\end{itemize}
+
+\subsubsection{Bubble Styles}
+
+\begin{itemize}
+\item
+ \textbf{bubbles}: Style with colored bubble background.
+\item
+ \textbf{shortbubbles}: Compact version of bubble style.
+\end{itemize}
+
+\subsubsection{Other Title Styles}
+
+\begin{itemize}
+\item
+ \textbf{titleornament}: Adds ornaments below title.
+\item
+ \textbf{titlerule}: Adds line under title.
+\item
+ \textbf{titlemidrule}: Adds center line under title.
+\item
+ \textbf{titlefullrule}: Adds full-width line under title.
+\item
+ \textbf{fancybox}: Title with elegant gray box.
+\item
+ \textbf{onlytitleleft}: Displays only title, left-aligned.
+\item
+ \textbf{onlytitle}: Displays only title, centered.
+\item
+ \textbf{onlytitleright}: Displays only title, right-aligned.
+\item
+ \textbf{shorttitle}: Compact title style.
+\item
+ \textbf{shortlesson}: Compact style for lessons.
+\end{itemize}
+
+\subsection{Header Configuration}
+
+The document header can be configured with the
+\texttt{\textbackslash neoheader} command:
+
+\begin{code}{latex}
+\neoheader{
+ type = {Document Type},
+ school = {School Name},
+ academy = {Academy Name},
+ level = {Grade Level},
+ duration = {Duration},
+ calculator = {true/false/exam},
+ leftcontent = {\faIcon{...}},
+ rightcontent = {\faIcon{...}},
+}
+\end{code}
+
+\subsection{Title Formatting Options}
+
+\subsubsection{Global Styles}
+
+\begin{itemize}
+\item
+ \textbf{headstyle} = \texttt{style}: Font style for
+ all headers (\texttt{sffamily} default).
+
+ \begin{itemize}
+ \item
+ Sections, subsections, etc.
+ \item
+ Theorem and exercise headers.
+ \end{itemize}
+\end{itemize}
+
+\begin{code}{latex}
+\documentclass[headstyle=rmfamily]{neoschool}
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{headweight} = \texttt{weight}: Weight for all
+ headers (\texttt{bfseries} default).
+\end{itemize}
+
+\begin{code}{latex}
+\documentclass[
+ headstyle=sffamily,
+ headweight=mdseries
+]{neoschool}
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{headshape} = \texttt{shape}: Shape for all
+ headers (\texttt{scshape} default).
+\end{itemize}
+
+\begin{code}{latex}
+\documentclass[
+ headstyle=sffamily,
+ headshape=upshape
+]{neoschool}
+\end{code}
+
+\subsubsection{Main Title Style}
+
+\begin{itemize}
+\item
+ \textbf{titlestyle} = \texttt{style}: Style for main
+ title (inherits from \texttt{headstyle}).
+\item
+ \textbf{titleweight} = \texttt{weight}: Weight for
+ main title (inherits from \texttt{headweight}).
+\item
+ \textbf{titleshape} = \texttt{shape}: Shape for main
+ title (\texttt{upshape} default).
+\item
+ \textbf{titlealign} = \texttt{alignment}: Title
+ alignment (\texttt{center} default).
+\end{itemize}
+
+\begin{code}{latex}
+\documentclass[
+ titlestyle=sffamily,
+ titleweight=bfseries,
+ titleshape=upshape,
+ titlealign=left
+]{neoschool}
+\end{code}
+
+\subsubsection{Section Style}
+
+\begin{itemize}
+\item
+ \textbf{sectionnumstyle} = \texttt{style}: Numbering
+ style.
+
+ \begin{itemize}
+ \item
+ \texttt{circle}: Circled number.
+ \item
+ \texttt{box}: Boxed number.
+ \item
+ \texttt{dash}: Dash after number.
+ \item
+ \texttt{plain}: Simple number.
+ \end{itemize}
+\item
+ \textbf{sectiontextstyle} = \texttt{style}: Text
+ style.
+
+ \begin{itemize}
+ \item
+ \texttt{sc}: Small caps.
+ \item
+ \texttt{upper}: Uppercase.
+ \item
+ \texttt{lower}: Lowercase.
+ \end{itemize}
+\item
+ \textbf{sectionstyle} = \texttt{style}: Global
+ section style.
+
+ \begin{itemize}
+ \item
+ \texttt{ornaments}: With decorative ornaments.
+ \item
+ \texttt{underline}: Underlined.
+ \item
+ \texttt{normal}: Simple style.
+ \item
+ \texttt{highlighted}: With highlighting.
+ \item
+ \texttt{shadedline}: With shaded line.
+ \end{itemize}
+\item
+ \textbf{sectionalign} = \texttt{alignment}: Section
+ alignment.
+
+ \begin{itemize}
+ \item
+ \texttt{left}: Left-aligned.
+ \item
+ \texttt{center}: Centered.
+ \item
+ \texttt{right}: Right-aligned.
+ \end{itemize}
+\end{itemize}
+
+\begin{code}{latex}
+\documentclass[
+ sectionnumstyle=circle,
+ sectiontextstyle=upper,
+ sectionstyle=highlighted,
+ sectionalign=left
+]{neoschool}
+\end{code}
+
+\subsubsection{Header/Footer Style}
+
+\begin{itemize}
+\item
+ \textbf{headfootstyle} = \texttt{style}:
+ Header/footer style (based on \texttt{headstyle}).
+\end{itemize}
+
+\begin{code}{latex}
+\documentclass[headfootstyle=sffamily]{neoschool}
+\end{code}
+
+\subsubsection{Complete Configuration
+Example}
+
+\begin{code}{latex}
+\documentclass[
+ % Global style
+ headstyle=sffamily,
+ headweight=bfseries,
+ headshape=scshape,
+
+ % Main title
+ titlestyle=sffamily,
+ titleweight=bfseries,
+ titleshape=upshape,
+ titlealign=center,
+
+ % Sections
+ sectionnumstyle=circle,
+ sectiontextstyle=upper,
+ sectionstyle=highlighted,
+ sectionalign=left,
+
+ % Headers/footers
+ headfootstyle=sffamily
+]{neoschool}
+\end{code}
+
+\section{Content Layout}
+
+\subsection{Absolute Object
+Positioning}
+
+The \texttt{\textbackslash positionobject} command allows precise
+placement of elements on the page:
+
+\begin{code}{latex}
+\positionobject{x-shift}{y-shift}{scale}{content}
+
+\begin{itemize}
+\item \texttt{x-shift}: Horizontal offset from top-left corner.
+\item \texttt{y-shift}: Vertical offset from top-left corner.
+\item \texttt{scale}: Scale factor for content.
+\item \texttt{content}: Element to position (image, text, etc.).
+\end{itemize}
+
+% Example: Image in top-right corner
+\positionobject{15cm}{1cm}{0.5}{\includegraphics{logo.png}}
+
+% Example: Special footer text
+\positionobject{2cm}{25cm}{1}{Special footer note}
+\end{code}
+
+\subsection{Two-Column Layout}
+
+The \textbf{\textbackslash splitcontent} command divides content horizontally:
+
+\begin{code}{latex}
+% Example with custom values
+\splitcontent[0.6][0.05]{
+ This part takes up 60%
+ of total width
+}{
+ This part takes up 35%
+ (5% space between)
+}
+
+% Example with default values (50% / 50%)
+\splitcontent{
+ First column
+}{
+ Second column
+}
+\end{code}
+
+\subsection{Side-by-Side
+Environments}
+
+The \texttt{sidebyside} environment creates two-column
+boxes with consistent styling:
+
+\begin{code}{latex}
+\begin{sidebyside}[options]
+ % Left content
+ \tcblower
+ % Right content
+\end{sidebyside}
+\end{code}
+
+Options are those of \texttt{tcolorbox}.
+
+\begin{code}{latex}
+\begin{sidebyside}[
+ title=Comparison,
+ colback=exampleColor!5,
+ colbacklower=exampleColor!10
+]
+ First version
+ \tcblower
+ Improved version
+\end{sidebyside}
+\end{code}
+
+\subsection{Text and Image
+Combination}
+
+The \textbf{\textbackslash textwithimage} command combines text and image:
+
+\begin{code}{latex}
+% Star (*) reverses image position (right by default)
+
+% Image on right (30% width)
+\textwithimage{0.3}{0.95}{
+ This text describes the adjacent image...
+}{images/figure.png}
+
+% Image on left (40% width)
+\textwithimage*{0.4}{0.9}{
+ Description to the right of the image...
+}{images/schema.png}
+\end{code}
+
+\subsection{QR Codes and Content}
+
+The \textbf{\textbackslash withqrcode} command integrates a QR code with associated
+content:
+
+\begin{code}{latex}
+% Star (*) places QR code on right (left by default)
+
+% QR code on left (2cm default)
+\withqrcode{https://example.com}{
+ Scan for more information
+}
+
+% 3cm QR code on right
+\withqrcode*[3cm]{https://exercises.com}{
+ Access online exercises
+}
+\end{code}
+
+\subsection{Grids and Papers}
+
+\subsubsection{Custom Grids}
+
+\begin{itemize}
+\item
+ \textbf{\textbackslash grid}: Small square grid.
+\end{itemize}
+
+\begin{code}{latex}
+\grid[blue]{10cm}{5cm} % Blue grid 10 x 5 cm
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{\textbackslash customgrid}: Grid with custom spacing.
+\end{itemize}
+
+\begin{code}{latex}
+\customgrid[red][4mm][4mm]{12cm}{8cm} % Red grid, 4mm mesh
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{\textbackslash frenchgrid}: Seyes-style grid.
+\end{itemize}
+
+\begin{code}{latex}
+\frenchgrid{15cm}{10cm} % French-style notebook grid
+\end{code}
+
+\subsubsection{Full Pages}
+
+\begin{itemize}
+\item
+ \textbf{\textbackslash notebook}: Notebook-style page with horizontal lines and red
+ margin.
+\end{itemize}
+
+\begin{code}{latex}
+\notebook % Activates lined notebook style
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{\textbackslash nbminorgrid}: Page fully covered with small squares.
+\end{itemize}
+
+\begin{code}{latex}
+\nbminorgrid % Activates fine grid
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{\textbackslash nbmajorgrid}: Page fully covered with large squares.
+\end{itemize}
+
+\begin{code}{latex}
+\nbmajorgrid % Activates Seyes grid
+\end{code}
+
+\subsection{Simple Boxes}
+
+The \texttt{neobox} environment provides a quick way to create simple boxes. It comes in two variants: \texttt{neobox} with frame and \texttt{neobox*} without visible frame:
+
+\begin{code}{latex}
+% Standard box
+\begin{neobox}[colframe=blue,colback=blue!5]
+ Text in a box...
+\end{neobox}
+
+% Frameless box with colored background
+\begin{neobox*}[colback=gray!10]
+ Text on gray background...
+\end{neobox*}
+\end{code}
+
+\section{Exercises}
+
+\subsection{Exercises and
+Assessments}
+
+\subsubsection{Exercise Configuration}
+
+The \texttt{exercise} environment accepts the following
+options:
+
+\begin{itemize}
+\item
+ \textbf{points} = \texttt{number}: Points for the
+ exercise.
+\item
+ \textbf{level} = \texttt{number}: Difficulty level
+ (displayed as stars).
+\item
+ \textbf{subtitle} = \texttt{text}: Exercise subtitle
+ or description.
+\item
+ \textbf{icon} = \texttt{icon}: Custom icon (uses Font
+ Awesome library).
+\item
+ \textbf{topic} = \texttt{theme}: Related theme or
+ chapter.
+\item
+ \textbf{subject} = \texttt{subject}: Related subject.
+\item
+ \textbf{ID} = \texttt{identifier}: Unique identifier
+ for referencing.
+\item
+ \textbf{template} = \texttt{style}: Specific display
+ style for this exercise.
+\end{itemize}
+
+\begin{code}{latex}
+\begin{exercise}[
+ points=4,
+ level=2,
+ subtitle=Derivatives,
+ icon=\faPencil,
+ topic=Analysis,
+ subject=Mathematics,
+ ID=der01,
+ template=elegant-box
+]
+ Calculate the derivative of the function $f$ defined on $]0 ; +\infty[$
+ by $f(x)=x^2\ln(x)$.
+\end{exercise}
+
+The \texttt{solution} environment must immediately follow its corresponding \texttt{exercise} environment. Exercise solutions are not displayed by default.
+
+\begin{solution}
+ We use the product rule...
+\end{solution}
+
+% To reference the exercise elsewhere:
+As seen in exercise~\exercisenumber{der01}.
+\end{code}
+
+\subsubsection{Global Options}
+
+\begin{itemize}
+\item
+ \textbf{exerciseicons}: Activates icons for all exercises.
+\item
+ \textbf{answers}: Automatically displays all exercise solutions.
+\item
+ \textbf{shuffle}: Randomizes answer choices in multiple choice
+ questions.
+\item
+ \textbf{sectionthmcounter}: Numbers exercises by section.
+\item
+ \textbf{sharedexcounter}: Shares counter with theorems.
+\end{itemize}
+
+\subsubsection{Exercise Templates}
+
+The class offers numerous predefined styles for exercises:
+
+\begin{itemize}
+\item
+ \textbf{box}: Standard box with border and title.
+\item
+ \textbf{elegant-box}: Box with colored sidebar.
+\item
+ \textbf{shaded-box}: Box with shading and banner title.
+\item
+ \textbf{slanted-box}: Box with slanted banner title.
+\item
+ \textbf{sober-box}: Minimalist box with colored title.
+\item
+ \textbf{classic-box}: Classic box with banner title.
+\item
+ \textbf{classy-box}: Sophisticated box with decorative title.
+\item
+ \textbf{rect-box}: Simple rectangular box.
+\item
+ \textbf{rect-box-outlined}: Rectangular box with outline.
+\item
+ \textbf{num-box}: Compact numbered box.
+\item
+ \textbf{num-box-outlined}: Numbered box with outline.
+\item
+ \textbf{ex-num-box}: Numbered ``Ex.'' box.
+\item
+ \textbf{ex-num-box-outlined}: Numbered ``Ex.'' box with outline.
+\item
+ \textbf{box-hrule}: Box with horizontal rule.
+\item
+ \textbf{box-hrule-out}: Box with horizontal rule and outline.
+\item
+ \textbf{box-hrule-in}: Box with inner horizontal rule.
+\item
+ \textbf{boxed}: Simple box with title.
+\item
+ \textbf{boxed-out}: Box with outline and title.
+\item
+ \textbf{inline}: Inline text with title.
+\item
+ \textbf{section}: Section-style title.
+\item
+ \textbf{subsection}: Subsection-style title.
+\item
+ \textbf{terminal}: Console style with terminal icon.
+\item
+ \textbf{block}: Minimalist style.
+\item
+ \textbf{hrule}: With horizontal rule.
+\end{itemize}
+
+To set a template for the entire document, use the
+\texttt{\textbackslash xsimsetup} command in the preamble:
+
+\begin{code}{latex}
+\xsimsetup{
+ exercise/template = elegant-box, % exercise template
+ solution/template = sol-box % solution template
+}
+\end{code}
+
+\subsubsection{Multiple Choice Questions}
+
+\begin{itemize}
+\item
+ \textbf{choices}: For single-answer MCQs.
+\end{itemize}
+
+\begin{code}{latex}
+\begin{exercise}[points=2,ID=mcq01]
+ What is the derivative of $e^x$?
+ \begin{choices}
+ \choice $x e^x$
+ \choice[\correct] $e^x$
+ \choice $e^{x-1}$
+ \choice $\ln(x)$
+ \end{choices}
+\end{exercise}
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{checkboxes}: For multiple-answer MCQs.
+\end{itemize}
+
+\begin{code}{latex}
+\begin{exercise}[points=3,ID=mcq02]
+ Which of these numbers are prime?
+ \begin{checkboxes}
+ \checkbox[\correct*] 2
+ \checkbox[\correct*] 3
+ \checkbox 4
+ \checkbox[\correct*] 5
+ \end{checkboxes}
+\end{exercise}
+\end{code}
+
+\section{Math Environments}
+
+\subsection{Theorem Styles}
+
+The following styles are available for all theorem-type environments:
+\textbf{amslikethm} (minimalist style), \textbf{boxedthm},
+\textbf{classicthm}, \textbf{classythm}, \textbf{elegantthm},
+\textbf{shadedthm}, \textbf{slantedthm}, \textbf{soberthm}.
+
+Common options:
+
+\begin{itemize}
+\item
+ \textbf{title} = \texttt{text}: Theorem title.
+\item
+ \textbf{label} = \texttt{name}: Label for
+ referencing.
+\item
+ \textbf{colback} = \texttt{color}: Background color.
+\item
+ \textbf{colframe} = \texttt{color}: Frame color.
+\item
+ \textbf{coltitle} = \texttt{color}: Title color.
+\item
+ \textbf{fonttitle} = \texttt{commands}: Title style.
+\end{itemize}
+
+\subsection{Numbering Options}
+
+\begin{itemize}
+\item
+ \textbf{sectionthmcounter}: Counters relative to each section.
+\item
+ \textbf{sharedthmcounter}: Counter shared between all environments.
+\item
+ \textbf{theoremgroup}: Groups certain theorem environments.
+\item
+ \textbf{thmgroupcounter}: Activates counter for groups.
+\end{itemize}
+
+\subsection{Mathematical
+Environments}
+
+\begin{itemize}
+\item
+ \textbf{theorem}: For theorems.
+\end{itemize}
+
+\begin{code}{latex}
+\begin{theorem}[title=Pythagorean Theorem,label=pyth]
+ In a right triangle, the square of the
+ hypotenuse equals the sum of squares
+ of the other two sides.
+\end{theorem}
+
+% Referencing:
+According to theorem~\ref{thm:pyth}
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{lemma}: For lemmas.
+\end{itemize}
+
+\begin{code}{latex}
+\begin{lemma}[title=Preparatory Lemma,label=prep]
+ Lemma content...
+\end{lemma}
+
+% Referencing:
+According to lemma~\ref{lem:prep}
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{corollary}: For corollaries.
+\end{itemize}
+
+\begin{code}{latex}
+\begin{corollary}[
+ title=Pythagorean Converse,
+ label=pythrecip
+]
+ If $a^2 + b^2 = c^2$, then the triangle is
+ right-angled at $A$.
+\end{corollary}
+
+% Referencing:
+According to corollary~\ref{cor:pythrecip}
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{proposition}: For propositions (\textbf{propo} for
+ referencing).
+\item
+ \textbf{property}: For properties (\textbf{prop} for referencing).
+\item
+ \textbf{definition}: For definitions (\textbf{def} for referencing).
+\item
+ \textbf{method}: For methods (\textbf{meth} for referencing).
+\item
+ \textbf{activity}: For activities (\textbf{act} for referencing).
+\item
+ \textbf{application}: For applications (\textbf{appl} for
+ referencing).
+\item
+ \textbf{remark}: For remarks.
+\item
+ \textbf{remarks}: For a series of remarks.
+\item
+ \textbf{example}: For examples.
+\item
+ \textbf{examples}: For a series of examples.
+\end{itemize}
+
+\section{Listings}
+
+The \texttt{neoschool} class offers two options for
+code handling.
+
+\begin{itemize}
+\item
+ \textbf{listings} (default): Uses the
+ \texttt{listings} package.
+\item
+ \textbf{minted}: Uses the \texttt{minted} package
+ (requires Python and the \texttt{Pygments} library).
+\end{itemize}
+
+\subsection{\texttt{listings} Option}
+
+\subsubsection{Available Code Styles}
+
+\begin{itemize}
+\item
+ \textbf{lststyle} = \texttt{style}: Coloring style.
+
+ \begin{itemize}
+ \item
+ \texttt{colorful}: Complete coloring (default).
+ \item
+ \texttt{minimal}: Minimalist style.
+ \item
+ \texttt{academic}: ``Academic'' style with line
+ numbers.
+ \item
+ \texttt{modern}: ``Modern'' style with colored
+ background.
+ \end{itemize}
+\end{itemize}
+
+\subsubsection{Custom Code Boxes}
+
+The class defines the \texttt{code} environment with
+the following structure:
+
+\begin{lstlisting}[language=TeX]
+\begin{code}[options]{language}[title][box-style]
+ source code...
+\end{code}
+\end{lstlisting}
+
+Box styles: \textbf{box-minimal}, \textbf{box-fancy},
+\textbf{box-classic}, \textbf{box-elegant}, \textbf{box-diagonal},
+\textbf{box-bevel}, \textbf{box-corner}, \textbf{box-rounded},
+\textbf{box-downhill}, \textbf{box-bottomtitle},
+\textbf{box-bottomtitlef}.
+
+\begin{lstlisting}[language=TeX]
+\begin{code}[numbers=left]{python}[Function Example][box-fancy]
+def hello(name):
+ print(f"Hello, {name}!")
+\end{code}
+\end{lstlisting}
+
+\subsubsection{Preconfigured Languages and
+Styles}
+
+\begin{itemize}
+\item
+ Python
+\item
+ Java
+\item
+ C++
+\item
+ JavaScript
+\item
+ SQL
+\item
+ LaTeX
+\item
+ Bash
+\item
+ Assembly
+\item
+ Lisp
+\item
+ JSON
+\item
+ YAML
+\item
+ TOML
+\item
+ CSV
+\item
+ Markdown
+\end{itemize}
+
+\subsubsection{Additional Commands}
+
+\begin{itemize}
+\item
+ \textbf{\textbackslash codeinline}: Inline code.
+\end{itemize}
+
+\begin{code}{latex}
+\codeinline[python]{print("Hello")}
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{\textbackslash codeinput}: Code loaded from file.
+\end{itemize}
+
+\begin{code}{latex}
+\codeinput[options]{language}{file.py}[title][box-style]
+\end{code}
+
+\subsection{\texttt{minted} Option}
+
+When the \textbf{minted} option is activated, code environments use
+\texttt{Pygments} for syntax highlighting. The
+\texttt{code} environment is also available with the
+\texttt{minted} option, using the same syntax:
+
+\begin{code}{latex}
+\usemintedstyle{tango}
+\begin{code}[linenos,highlightlines={2,3}]{python}[Function][box-fancy]
+def greet(name):
+ message = f"Hello, {name}!"
+ print(message)
+ return message
+\end{code}
+\end{code}
+
+\section{Notes and Annotations}
+
+\subsection{Margin Notes}
+
+Notes can be placed in the margin with different options:
+
+\begin{itemize}
+\item
+ \textbf{\textbackslash tdnote}: Colored and framed notes in the margin, alternating
+ between left and right.
+\end{itemize}
+
+\begin{code}{latex}
+\tdnote{Important point to remember}
+\tdnote[backgroundcolor=blue!5]{Note with light blue background}
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{\textbackslash boxnote}/\textbf{\textbackslash tdmark}: Since the \texttt{todonote}
+ package doesn't allow direct note placement in environments, use an
+ anchor point (\textbf{\textbackslash tdmark}) with the same label as the note content
+ (\textbf{\textbackslash boxnote}).
+\end{itemize}
+
+\begin{code}{latex}
+\boxnote[thm1]{This theorem is important}
+\begin{theorem}
+ \tdmark[thm1] % Reference point for note (same label)
+ Theorem content...
+\end{theorem}
+\end{code}
+
+Available note options:
+
+\begin{itemize}
+\item
+ \textbf{backgroundcolor} = \texttt{color}: Background
+ color.
+\item
+ \textbf{color} = \texttt{color}: Text color.
+\item
+ \textbf{bordercolor} = \texttt{color}: Border color.
+\item
+ \textbf{width} = \texttt{length}: Note width.
+\item
+ \textbf{linecolor} = \texttt{color}: Reference line
+ color.
+\end{itemize}
+
+\subsection{Admonitions}
+
+Admonition environments highlight important information. Each type has
+its default color and icon.
+
+\begin{itemize}
+\item
+ \textbf{note}: General remarks.
+\end{itemize}
+
+\begin{code}{latex}
+\begin{note}[Important Note][\faInfo]
+ Points to remember...
+\end{note}
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{info}: Additional information.
+\end{itemize}
+
+\begin{code}{latex}
+\begin{info}[Further Reading]
+ Additional information...
+\end{info}
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{warning}: Warnings.
+\end{itemize}
+
+\begin{code}{latex}
+\begin{warning}[Caution!][\faExclamationTriangle]
+ Critical points to remember...
+\end{warning}
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{important}: Essential points.
+\end{itemize}
+
+\begin{code}{latex}
+\begin{important}[Key Point]
+ Fundamental concept...
+\end{important}
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{tip}: Tips and tricks.
+\end{itemize}
+
+\begin{code}{latex}
+\begin{tip}[Calculation Tip][\faLightbulb]
+ A faster method...
+\end{tip}
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{reminder}: Points to remember.
+\end{itemize}
+
+\begin{code}{latex}
+\begin{reminder}[Memorize]
+ Essential formulas...
+\end{reminder}
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{summary}: Summaries.
+\end{itemize}
+
+\begin{code}{latex}
+\begin{summary}[In Brief]
+ Main chapter points...
+\end{summary}
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{toolbox}: Toolbox.
+\end{itemize}
+
+\begin{code}{latex}
+\begin{toolbox}[Required Tools]
+ \begin{itemize}
+ \item Calculator
+ \item Ruler
+ \item Compass
+ \end{itemize}
+\end{toolbox}
+\end{code}
+
+All admonitions accept three optional parameters: - An optional title -
+A custom icon - Customization options (colors, borders)
+
+\section{Grading and Correction}
+
+\subsection{Grading Tools}
+
+\begin{itemize}
+\item
+ \textbf{\textbackslash gradingstrip}: Grading banner (grade and comments).
+\end{itemize}
+
+\begin{code}{latex}
+\gradingstrip
+
+% Banner with specified total
+\gradingstrip[20]
+\end{code}
+
+The \textbf{totalpoints} option sets the default total points.
+
+\begin{code}{latex}
+\documentclass[totalpoints=20]{neoschool}
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{\textbackslash mrk}, \textbf{\textbackslash mrks}: Points in margin.
+\end{itemize}
+
+\begin{code}{latex}
+\mrk[Well done!]{1} % Right margin with comment
+\mrk*{1} # Left margin
+
+% Multiple points
+\mrks{3} % 3 points right margin
+\mrks*[Scale]{3} % 3 points left margin with text
+\end{code}
+
+\subsection{Answer Areas}
+
+\begin{itemize}
+\item
+ \textbf{\textbackslash answerfield}: Answer area with colored background.
+\end{itemize}
+
+\begin{code}{latex}
+\answerfield{3}
+
+% Area 80% width, 5 lines
+\answerfield[0.8\linewidth]{5}
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{\textbackslash answerframe}: Framed answer area.
+\end{itemize}
+
+\begin{code}{latex}
+\answerframe{3}
+
+% Frame 80% width, 5 lines
+\answerframe[0.8\linewidth]{5}
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{\textbackslash vardots}: Variable-length dotted line.
+\end{itemize}
+
+\begin{code}{latex}
+\vardots
+
+% 5cm dotted line
+\vardots[5cm]
+\end{code}
+
+\subsection{Markers and Symbols}
+
+\begin{itemize}
+\item
+ \textbf{\textbackslash cmark}: Check mark symbol (✓)
+\item
+ \textbf{\textbackslash xmark}: Error symbol (✗)
+\item
+ \textbf{\textbackslash unchecked}: Empty checkbox
+\item
+ \textbf{\textbackslash done}: Checked box with ✓
+\item
+ \textbf{\textbackslash wontfix}: Checked box with ✗
+\end{itemize}
+
+\begin{code}{latex}
+\begin{itemize}
+ \unchecked Goal 1 to complete
+ \done Goal 2 completed
+ \wontfix Goal 3 abandoned
+\end{itemize}
+\end{code}
+
+\subsection{Skills and Assessment}
+
+\begin{itemize}
+\item
+ \textbf{\textbackslash competencies}: Skills assessment table.
+\end{itemize}
+
+\begin{code}{latex}
+\competencies{
+ Calculate derivatives\\
+ Study variations\\
+ Solve equations
+}
+\end{code}
+
+The table automatically displays: - 4 mastery levels with emojis -
+Checkboxes for assessment
+
+\section{Math Commands and Special
+Tools}
+
+\subsection{Math Commands}
+
+\subsubsection{Highlighting and Coloring}
+
+\begin{itemize}
+\item
+ \textbf{\textbackslash mhl}: Highlighting math expressions.
+\end{itemize}
+
+\begin{code}{latex}
+$\mhl{x^2}$
+
+% Custom highlighting
+$\mhl[blue!20]{f'(x)}$
+
+% In multi-line equations
+\begin{align*}
+ f(x) &= x^2 + \mhl{2x} + 1 \\
+ f'(x) &= 2x + \mhl{2}
+\end{align*}
+\end{code}
+
+\begin{itemize}
+\item
+ \textbf{\textbackslash mc}: Coloring math expressions.
+\end{itemize}
+
+\begin{code}{latex}
+$\mc{f(x)}$
+
+% Custom color
+$\mc[red]{g(x)}$
+
+% In equation
+\[ \mc{f'(x)} = \lim_{h \to 0} \mc[blue]{\frac{f(x+h)-f(x)}{h}} \]
+\end{code}
+
+\subsubsection{APMEP Support}
+
+When the \textbf{apmep} option is activated, the following commands
+become available:
+
+\begin{itemize}
+\item
+ Vector commands:
+\end{itemize}
+
+\begin{code}{latex}
+\vect{u} % Vector u with arrow
+\vectt{AB} % Vector AB with spacing
+\end{code}
+
+\begin{itemize}
+\item
+ Reference frames and coordinates:
+\end{itemize}
+
+\begin{code}{latex}
+\Oij % Frame (O; i,j)
+\Oijk % Frame (O; i,j,k)
+\Ouv % Frame (O; u,v)
+\end{code}
+
+\begin{itemize}
+\item
+ Special commands:
+\end{itemize}
+
+\begin{code}{latex}
+\euro % Euro symbol
+\cg % Left bracket
+\cd % Right bracket
+\pg % Greater than or equal
+\pp % Less than or equal
+\barre{x} % Overlined x
+\ds % \displaystyle
+\end{code}
+
+\subsection{Special Tools}
+
+\subsubsection{Trees and Graphs}
+
+\begin{itemize}
+\item
+ Trees with \texttt{forest} package:
+\end{itemize}
+
+\begin{code}{latex}
+\begin{neotree}
+A
+ [B
+ [D]
+ [E]
+ ]
+ [C
+ [F]
+ [G]
+ ]
+\end{neotree}
+
+% With edge weights
+\begin{neotree}
+A
+ [B, w=\frac{1}{3}
+ [D]
+ [E]
+ ]
+ [C, w=\frac{2}{3}]
+\end{neotree}
+\end{code}
+
+\begin{itemize}
+\item
+ Graphs (only with \texttt{lualatex} compilation):
+\end{itemize}
+
+\begin{code}{latex}
+\neograph{
+ A -- {B, C, D, F},
+ B -- {C, D, F},
+ C -> ["3"] D,
+ D -- [bend left=10] {E},
+ E -- [bend left=10] {D},
+ E -- [bend left=10] {F},
+ F -- [bend left=10] {E},
+ A -- [loop] A
+}
+\end{code}
+
+\subsubsection{Math Grid}
+
+The \texttt{mathgrid} environment allows arranging
+equations in a grid:
+
+\begin{code}{latex}
+\begin{mathgrid}{3}
+ \neoline
+ \neocol{
+ T &= 7xx+9x\\
+ &= (7+9)x \\
+ &= 16x
+ }
+ \neocol{
+ U &= 8x^{2}-5x^{2}+x^{2}\\
+ &= (8-5+1)x^{2} \\
+ &= 4x^{2}
+ }
+ \neocol{
+ V &= 5a^{2}-6a\\
+ &= a(5a-6)
+ }
+ \neoline
+ \neocol[2]{
+ W &= 5a^{2}-6a+3+7a^{2}+a-6\\
+ &= (5+7)a^{2}+(-6+1)a+(3-6)\\
+ &= 12a^{2}-5a-3
+ }
+ \neocol{
+ A &= 2x + 3x\\
+ &= 5x
+ }
+\end{mathgrid}
+\end{code}
+
+
+\end{document}
Property changes on: trunk/Master/texmf-dist/doc/latex/neoschool/neoschool.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/neoschool/neoschool.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/neoschool/neoschool.cls (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/neoschool/neoschool.cls 2025-01-08 21:13:05 UTC (rev 73374)
@@ -0,0 +1,7311 @@
+% neoschool.cls
+%
+% copyright (C) 2025 Razik Ikhlef
+% razik.ikhlef at csilyon.fr
+%
+% The newest version of this documentclass should always be available
+% from the following web page: https://apps.edulatex.xyz/neoschool/
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{neoschool}[2025/01/03 v1.0.0]
+
+\RequirePackage[table,svgnames,dvipsnames,x11names]{xcolor}
+
+\RequirePackage{kvoptions}
+\RequirePackage{siunitx}
+\RequirePackage{pgffor}
+
+\SetupKeyvalOptions{
+ family=neoschool,
+ prefix=neoschool@
+}
+
+\DeclareStringOption[cyprus]{theme}
+\def\neo at cyprus{cyprus}
+\def\neo at kassio{kassio}
+\def\neo at frost{frost}
+\def\neo at spring{spring}
+\def\neo at arbutus{arbutus}
+\def\neo at duo{duo}
+\def\neo at navy{navy}
+\def\neo at royal{royal}
+
+\ProcessKeyvalOptions*\relax
+
+% Main Colors
+\ifx\neoschool at theme\neo at cyprus
+ \definecolor{titleColor}{HTML}{a7601f}
+ \definecolor{theoremColor}{HTML}{557400}
+ \definecolor{definitionColor}{HTML}{bf4400}
+ \definecolor{methodColor}{HTML}{3f6faf}
+ \definecolor{remarkColor}{HTML}{7f475a}
+ \definecolor{alternateColor}{HTML}{59786f}
+ \definecolor{applicationColor}{HTML}{00824f}
+ \definecolor{codeColor}{HTML}{9a456f}
+ \colorlet{sectionColor}{theoremColor}
+ \colorlet{subsectionColor}{definitionColor}
+ \colorlet{subsubsectionColor}{methodColor}
+\else\ifx\neoschool at theme\neo at kassio
+ \definecolor{titleColor}{HTML}{3c3bbe}
+ \definecolor{theoremColor}{HTML}{a01f64}
+ \definecolor{definitionColor}{HTML}{2f5f9f}
+ \definecolor{methodColor}{HTML}{a04646}
+ \definecolor{remarkColor}{HTML}{af4988}
+ \definecolor{alternateColor}{HTML}{776f79}
+ \definecolor{applicationColor}{HTML}{7022bf}
+ \definecolor{codeColor}{HTML}{9f248a}
+ \colorlet{sectionColor}{theoremColor}
+ \colorlet{subsectionColor}{definitionColor}
+ \colorlet{subsubsectionColor}{methodColor}
+ \else\ifx\neoschool at theme\neo at frost
+ \definecolor{titleColor}{HTML}{007a85}
+ \definecolor{theoremColor}{HTML}{004fc0}
+ \definecolor{definitionColor}{HTML}{00845f}
+ \definecolor{methodColor}{HTML}{7f5ae0}
+ \definecolor{remarkColor}{HTML}{204f9a}
+ \definecolor{alternateColor}{HTML}{66657f}
+ \definecolor{applicationColor}{HTML}{1f6fbf}
+ \definecolor{codeColor}{HTML}{004fc0}
+ \colorlet{sectionColor}{theoremColor}
+ \colorlet{subsectionColor}{definitionColor}
+ \colorlet{subsubsectionColor}{methodColor}
+ \else\ifx\neoschool at theme\neo at spring
+ \definecolor{titleColor}{HTML}{cf2f4f}
+ \definecolor{theoremColor}{HTML}{007f68}
+ \definecolor{definitionColor}{HTML}{cb26a0}
+ \definecolor{methodColor}{HTML}{5f5fdf}
+ \definecolor{remarkColor}{HTML}{9d5e7a}
+ \definecolor{alternateColor}{HTML}{777294}
+ \definecolor{applicationColor}{HTML}{b6540f}
+ \definecolor{codeColor}{HTML}{1f6fbf}
+ \colorlet{sectionColor}{theoremColor}
+ \colorlet{subsectionColor}{definitionColor}
+ \colorlet{subsubsectionColor}{methodColor}
+ \else\ifx\neoschool at theme\neo at arbutus
+ \definecolor{titleColor}{HTML}{007000}
+ \definecolor{theoremColor}{HTML}{8f2f30}
+ \definecolor{definitionColor}{HTML}{00704f}
+ \definecolor{methodColor}{HTML}{906200}
+ \definecolor{remarkColor}{HTML}{8a5f4a}
+ \definecolor{alternateColor}{HTML}{6e678f}
+ \definecolor{applicationColor}{HTML}{557000}
+ \definecolor{codeColor}{HTML}{0f7688}
+ \colorlet{sectionColor}{theoremColor}
+ \colorlet{subsectionColor}{definitionColor}
+ \colorlet{subsubsectionColor}{methodColor}
+ \else\ifx\neoschool at theme\neo at duo
+ \definecolor{titleColor}{HTML}{375cd8}
+ \definecolor{theoremColor}{HTML}{9f4a00}
+ \definecolor{definitionColor}{HTML}{4250ef}
+ \definecolor{methodColor}{HTML}{8f5a3a}
+ \definecolor{remarkColor}{HTML}{856f4a}
+ \definecolor{alternateColor}{HTML}{63728f}
+ \definecolor{applicationColor}{HTML}{6052cf}
+ \definecolor{codeColor}{HTML}{4a7d00}
+ \colorlet{sectionColor}{theoremColor}
+ \colorlet{subsectionColor}{definitionColor}
+ \colorlet{subsubsectionColor}{methodColor}
+ \else\ifx\neoschool at theme\neo at navy
+ \definecolor{titleColor}{RGB}{25,75,125}
+ \definecolor{theoremColor}{RGB}{145,45,45}
+ \definecolor{definitionColor}{RGB}{35,105,85}
+ \definecolor{methodColor}{RGB}{125,75,25}
+ \definecolor{remarkColor}{RGB}{125,75,95}
+ \definecolor{alternateColor}{RGB}{85,95,105}
+ \definecolor{applicationColor}{RGB}{75,55,125}
+ \definecolor{codeColor}{RGB}{45,95,115}
+ \colorlet{sectionColor}{theoremColor}
+ \colorlet{subsectionColor}{definitionColor}
+ \colorlet{subsubsectionColor}{methodColor}
+ \else\ifx\neoschool at theme\neo at royal
+ \definecolor{titleColor}{RGB}{5,80,174}
+ \definecolor{theoremColor}{RGB}{161,40,40}
+ \definecolor{definitionColor}{RGB}{0,115,85}
+ \definecolor{methodColor}{RGB}{180,95,45}
+ \definecolor{remarkColor}{RGB}{130,75,95}
+ \definecolor{alternateColor}{RGB}{90,100,110}
+ \definecolor{applicationColor}{RGB}{180,145,35}
+ \definecolor{codeColor}{RGB}{60,89,90}
+ \colorlet{sectionColor}{theoremColor}
+ \colorlet{subsectionColor}{definitionColor}
+ \colorlet{subsubsectionColor}{methodColor}
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+\fi
+
+% Colors for code environments
+\colorlet{codeBackground}{codeColor!5}
+\colorlet{codeEmph}{methodColor}
+\colorlet{codeKeyword}{titleColor}
+\colorlet{codeString}{theoremColor}
+\colorlet{codeComment}{alternateColor}
+\colorlet{codeNumber}{alternateColor}
+
+% Initial setup
+\def\neo at palette{unicolor}
+
+% Basic boolean declarations
+\newif\ifneo at normal
+\newif\ifneo at unicolor
+\newif\ifneo at english
+\newif\ifneo at french
+\newif\ifneo at german
+
+% Style booleans
+\newif\ifneo at classythm
+\newif\ifneo at soberthm
+\newif\ifneo at elegantthm
+\newif\ifneo at classicthm
+\newif\ifneo at slantedthm
+\newif\ifneo at shadedthm
+\newif\ifneo at boxedthm
+\newif\ifneo at amslikethm
+
+% Title booleans
+\newif\ifneo at eval
+\newif\ifneo at evalicons
+\newif\ifneo at evalgrade
+\newif\ifneo at evaliconsgrade
+\newif\ifneo at exam
+\newif\ifneo at fancybox
+\newif\ifneo at onlytitleleft
+\newif\ifneo at onlytitle
+\newif\ifneo at onlytitleright
+\newif\ifneo at bubbles
+\newif\ifneo at shortbubbles
+\newif\ifneo at mockexam
+\newif\ifneo at shortexam
+\newif\ifneo at shorteval
+\newif\ifneo at shorttitle
+\newif\ifneo at shortlesson
+
+% Layout booleans
+\newif\ifneo at noframe
+\newif\ifneo at nocodeframe
+\newif\ifneo at noback
+
+% Font booleans
+\newif\ifneo at sfbody
+\newif\ifneo at sfall
+\newif\ifneo at mathastext
+
+% Other booleans
+\newif\ifneo at print
+\newif\ifneo at fullheader
+\newif\ifneo at headrule
+\newif\ifneo at footrule
+\newif\ifneo at headfootrule
+\newif\ifneo at shuffle
+\newif\ifneo at titlerule
+\newif\ifneo at titlemidrule
+\newif\ifneo at titlefullrule
+\newif\ifneo at titleornament
+
+%% Package specific options
+\newif\ifneo at apmep
+\newif\ifneo at mathics
+\newif\ifneo at listings
+\newif\ifneo at minted
+\newif\ifneo at frenchmath
+
+%% ==============================================================================
+%% Basic Options and Setup Commands
+%% ==============================================================================
+
+% String options declarations
+\DeclareStringOption[black]{globalcolor}
+\DeclareStringOption[sectionColor]{headcolor}
+\DeclareStringOption[subsectionColor]{subcolor}
+\DeclareStringOption[subsubsectionColor]{subsubcolor}
+\DeclareStringOption[titleColor]{titlecolor}
+\DeclareStringOption[]{titlehexcolor}
+\DeclareStringOption[alternateColor]{headfootcolor}
+
+\ProcessKeyvalOptions*\relax
+
+\ifx\neoschool at titlehexcolor\@empty
+\else
+ \definecolor{titleColor}{HTML}{\neoschool at titlehexcolor}
+ \colorlet{subjectColor}{titleColor!80}
+ \colorlet{subtitleColor}{titleColor!60}
+\fi
+
+\DeclareOption{normal}{%
+ \neo at normaltrue\neo at unicolorfalse
+ \colorlet{lemmaColor}{theoremColor}
+ \colorlet{corollaryColor}{theoremColor}
+ \colorlet{propertyColor}{theoremColor}
+ \colorlet{propositionColor}{theoremColor}
+ \colorlet{solutionColor}{theoremColor}
+ \colorlet{activityColor}{applicationColor}
+ \colorlet{codebackColor}{codeColor!5}
+ \colorlet{exerciseColor}{\neoschool at titlecolor}
+ \colorlet{exampleColor}{titleColor}
+ \colorlet{subjectColor}{sectionColor!80!white}
+ \colorlet{subtitleColor}{sectionColor!60!white}
+}
+
+% Unicolor option setup
+\DeclareOption{unicolor}{%
+ \def\neo at palette{unicolor}
+ \neo at normalfalse\neo at unicolortrue
+ \colorlet{definitionColor}{\neoschool at titlecolor}
+ \colorlet{theoremColor}{\neoschool at titlecolor}
+ \colorlet{lemmaColor}{\neoschool at titlecolor}
+ \colorlet{corollaryColor}{\neoschool at titlecolor}
+ \colorlet{propositionColor}{\neoschool at titlecolor}
+ \colorlet{propertyColor}{\neoschool at titlecolor}
+ \colorlet{activityColor}{\neoschool at titlecolor}
+ \colorlet{methodColor}{\neoschool at titlecolor}
+ \colorlet{applicationColor}{\neoschool at titlecolor}
+ \colorlet{codeColor}{\neoschool at titlecolor}
+ \colorlet{exerciseColor}{\neoschool at titlecolor}
+ \colorlet{remarkColor}{\neoschool at titlecolor}
+ \colorlet{exampleColor}{\neoschool at titlecolor}
+ \colorlet{solutionColor}{\neoschool at titlecolor}
+ \colorlet{codebackColor}{\neoschool at titlecolor!5!white}
+ \colorlet{subjectColor}{\neoschool at titlecolor!80}
+ \colorlet{subtitleColor}{\neoschool at titlecolor!60}
+ \renewcommand{\neoschool at headcolor}{\neoschool at titlecolor}
+ \renewcommand{\neoschool at subcolor}{\neoschool at titlecolor}
+ \renewcommand{\neoschool at subsubcolor}{\neoschool at titlecolor}
+}
+
+% Palette of headings color
+\DeclareOption{gradientheadpalette}{%
+ \renewcommand{\neoschool at headcolor}{\neoschool at titlecolor!80!white}
+ \renewcommand{\neoschool at subcolor}{\neoschool at titlecolor!70!white}
+ \renewcommand{\neoschool at subsubcolor}{\neoschool at titlecolor!60!white}
+ \colorlet{subjectColor}{\neoschool at titlecolor!80}
+ \colorlet{subtitleColor}{\neoschool at titlecolor!60}
+}
+
+%% ==============================================================================
+%% Font Options
+%% ==============================================================================
+
+% Fonts
+\DeclareStringOption{mainface}
+\DeclareStringOption{mainfaceoptions}
+\DeclareStringOption{sansface}
+\DeclareStringOption{sansfaceoptions}
+\DeclareStringOption{monoface}
+\DeclareStringOption{monofaceoptions}
+\DeclareStringOption{mathface}
+\DeclareStringOption{mathfaceoptions}
+\DeclareStringOption{facefamily}
+\DeclareStringOption{facefamilyoptions}
+
+%% ==============================================================================
+%% Heading Style Options
+%% ==============================================================================
+
+% Global heading styles
+\DeclareStringOption[sffamily]{headstyle}
+\DeclareStringOption[bfseries]{headweight}
+\DeclareStringOption[scshape]{headshape}
+
+% Title-specific styles
+\DeclareStringOption[\neoschool at headstyle]{titlestyle}
+\DeclareStringOption[\neoschool at headweight]{titleweight}
+\DeclareStringOption[upshape]{titleshape}
+\DeclareStringOption[center]{titlealign}
+
+% Header and Footer styles
+\DeclareStringOption[\neoschool at titlestyle]{headfootstyle}
+
+% Section-specific styles
+\DeclareStringOption[circle]{sectionnumstyle} % circle, box, dash, plain
+\DeclareStringOption[sc]{sectiontextstyle} % sc, upper, lower
+\DeclareStringOption[normal]{sectionstyle} % ornaments, underline, normal, highlighted, shadedline
+\DeclareStringOption[center]{sectionalign}
+
+%% ==============================================================================
+%% Language Support and Setup
+%% ==============================================================================
+
+% Language setup command
+\newcommand{\neo at setupLanguage}[1]{%
+ \neo at englishfalse
+ \neo at frenchfalse
+ \neo at germanfalse
+ \@nameuse{neo@#1true}
+ \renewcommand{\neo at lang}{#1}
+}
+
+% Names definition commands
+\newcommand{\neo at definenames@one}[9]{%
+ \expandafter\def\csname neo at theoremname\endcsname{#1}
+ \expandafter\def\csname neo at propositionname\endcsname{#2}
+ \expandafter\def\csname neo at propertyname\endcsname{#3}
+ \expandafter\def\csname neo at lemmaname\endcsname{#4}
+ \expandafter\def\csname neo at corollaryname\endcsname{#5}
+ \expandafter\def\csname neo at definitionname\endcsname{#6}
+ \expandafter\def\csname neo at examplename\endcsname{#7}
+ \expandafter\def\csname neo at exercisename\endcsname{#8}
+ \expandafter\def\csname neo at remarkname\endcsname{#9}
+}
+
+\newcommand{\neo at definenames@two}[9]{%
+ \expandafter\def\csname neo at problemname\endcsname{#1}
+ \expandafter\def\csname neo at conjecturename\endcsname{#2}
+ \expandafter\def\csname neo at activityname\endcsname{#3}
+ \expandafter\def\csname neo at methodname\endcsname{#4}
+ \expandafter\def\csname neo at applicationname\endcsname{#5}
+ \expandafter\def\csname neo at competencies\endcsname{#6}
+ \expandafter\def\csname neo at codename\endcsname{#7}
+ \expandafter\def\csname neo at algorithmname\endcsname{#8}
+ \expandafter\def\csname neo at pagename\endcsname{#9}
+}
+
+\newcommand{\neo at definenames@three}[1]{%
+ \expandafter\def\csname neo at solutionname\endcsname{#1}
+}
+
+\newcommand{\neo at definepath}[1]{%
+ \expandafter\def\csname neo at pathname\endcsname{#1}
+}
+
+\newcommand{\neo at defineextra}[2]{%
+ \expandafter\def\csname neo at examplesname\endcsname{#1}
+ \expandafter\def\csname neo at solutiongaptext\endcsname{#2}
+}
+
+% Language options
+\DeclareOption{english}{%
+ \neo at setupLanguage{english}
+ \AtEndOfClass{\sisetup{locale = US,detect-all}}
+ \neo at definenames@one{Theorem}{Proposition}{Property}{Lemma}{Corollary}{Definition}{Example}{Exercise}{Remark}
+ \neo at definenames@two{Problem}{Conjecture}{Activity}{Method}{Application}{Competencies}{Listing}{Algorithm}{Page}
+ \neo at definenames@three{Solution}
+ \neo at defineextra{Examples}{of exercise }
+ \neo at definepath{Path}
+}
+
+\DeclareOption{french}{%
+ \neo at setupLanguage{french}
+ \AtEndOfClass{%
+ \sisetup{locale = FR,detect-all}%
+ \renewcommand*{\today}{\number\day\space\ifcase\month\or
+ janvier\or février\or mars\or avril\or mai\or juin\or
+ juillet\or août\or septembre\or octobre\or novembre\or
+ décembre\fi\space\number\year}%
+ }
+ \neo at definenames@one{Théorème}{Proposition}{Propriété}{Lemme}{Corollaire}{Définition}{Exemple}{Exercice}{Remarque}
+ \neo at definenames@two{Problème}{Conjecture}{Activité}{Méthode}{Application}{Compétences}{Programme}{Algorithme}{Page}
+ \neo at definenames@three{Corrigé}
+ \neo at defineextra{Exemples}{de l'exercice }
+ \neo at definepath{Parcours}
+}
+
+\DeclareOption{german}{%
+ \neo at setupLanguage{german}
+ \AtEndOfClass{\sisetup{locale = DE,detect-all}}
+ \neo at definenames@one{Theorem}{Proposition}{Eigenschaft}{Lemma}{Korollar}{Definition}{Beispiel}{Übung}{Bemerkung}
+ \neo at definenames@two{Problem}{Vermutung}{Aktivität}{Methode}{Anwendung}{Fähigkeiten}{Auflistung}{Algorithmus}{Seite}
+ \neo at definenames@three{Lösung}
+ \neo at defineextra{Beispiele}{von Übung }
+ \neo at definepath{Stufe}
+}
+
+\DeclareOption{nofrenchlist}{\AtEndOfClass{\frenchsetup{StandardItemLabels=true}}}
+\DeclareOption{frenchlistaspar}{\AtEndOfClass{\frenchsetup{ListItemsAsPar=true}}}
+
+%% ==============================================================================
+%% Style Setup
+%% ==============================================================================
+
+% Style setup command
+\newcommand{\neo at setupstyle}[1]{%
+ \neo at classythmfalse
+ \neo at soberthmfalse
+ \neo at elegantthmfalse
+ \neo at classicthmfalse
+ \neo at slantedthmfalse
+ \neo at shadedthmfalse
+ \neo at boxedthmfalse
+ \neo at amslikethmfalse
+ \@nameuse{neo@#1true}
+ \def\neo at style{#1}
+}
+
+% Style options
+\DeclareOption{classythm}{\neo at setupstyle{classythm}}
+\DeclareOption{soberthm}{\neo at setupstyle{soberthm}}
+\DeclareOption{classicthm}{\neo at setupstyle{classicthm}}
+\DeclareOption{slantedthm}{\neo at setupstyle{slantedthm}}
+\DeclareOption{shadedthm}{\neo at setupstyle{shadedthm}}
+\DeclareOption{boxedthm}{\neo at setupstyle{boxedthm}}
+\DeclareOption{amslikethm}{\neo at setupstyle{amslikethm}}
+\DeclareOption{elegantthm}{\neo at setupstyle{elegantthm}}
+
+\DeclareStringOption[colorful]{lststyle}
+
+%% ==============================================================================
+%% Layout Settings
+%% ==============================================================================
+
+% Layout setup command
+\newcommand{\neo at setuplayout}[1]{%
+ \@nameuse{neo@#1true}
+}
+
+% Frame and background options
+\DeclareOption{noback}{\neo at setuplayout{noback}}
+\DeclareOption{noframe}{\neo at setuplayout{noframe}}
+\DeclareOption{nocodeframe}{\neo at setuplayout{nocodeframe}}
+
+\DeclareStringOption[1em]{indent}
+\DeclareBoolOption{noindent}
+
+\AtEndOfPackage{%
+ \ifneoschool at noindent
+ \AtBeginDocument{\setlength{\parindent}{0pt}}%
+ \else
+ \AtBeginDocument{\setlength{\parindent}{\neoschool at indent}}%
+ \fi
+}
+
+%% ==============================================================================
+%% Font Settings
+%% ==============================================================================
+
+% Font setup command
+\newcommand{\neo at setupfont}[1]{%
+ \@nameuse{neo@#1true}
+ \ifx#1sfall
+ \neo at sfbodytrue
+ \fi
+}
+
+% Font options
+\DeclareOption{sfbody}{\neo at setupfont{sfbody}}
+\DeclareOption{sfall}{\neo at setupfont{sfall}}
+\DeclareOption{mathastext}{\neo at setupfont{mathastext}}
+
+%% ==============================================================================
+%% Title Settings
+%% ==============================================================================
+
+% Title setup command
+\newcommand{\neo at setuptitle}[1]{%
+ \neo at evalfalse
+ \neo at evaliconsfalse
+ \neo at evalgradefalse
+ \neo at evaliconsgradefalse
+ \neo at examfalse
+ \neo at fancyboxfalse
+ \neo at onlytitleleftfalse
+ \neo at onlytitlefalse
+ \neo at onlytitlerightfalse
+ \neo at bubblesfalse
+ \neo at shortbubblesfalse
+ \neo at mockexamfalse
+ \neo at shortexamfalse
+ \@nameuse{neo@#1true}
+}
+
+% Title options
+\DeclareOption{exam}{\neo at setuptitle{exam}}
+\DeclareOption{eval}{\neo at setuptitle{eval}}
+\DeclareOption{evalicons}{\neo at setuptitle{evalicons}}
+\DeclareOption{evalgrade}{\neo at setuptitle{evalgrade}}
+\DeclareOption{evaliconsgrade}{\neo at setuptitle{evaliconsgrade}}
+\DeclareOption{fancybox}{\neo at setuptitle{fancybox}}
+\DeclareOption{onlytitleleft}{\neo at setuptitle{onlytitleleft}}
+\DeclareOption{onlytitle}{\neo at setuptitle{onlytitle}}
+\DeclareOption{onlytitleright}{\neo at setuptitle{onlytitleright}}
+\DeclareOption{bubbles}{\neo at setuptitle{bubbles}}
+\DeclareOption{shortbubbles}{\neo at setuptitle{shortbubbles}}
+\DeclareOption{mockexam}{\neo at setuptitle{mockexam}}
+\DeclareOption{shortexam}{\neo at setuptitle{shortexam}}
+\DeclareOption{shorteval}{\neo at setuptitle{shorteval}}
+\DeclareOption{shorttitle}{\neo at setuptitle{shorttitle}}
+\DeclareOption{shortlesson}{\neo at setuptitle{shortlesson}}
+
+%% ==============================================================================
+%% Print and Color Settings
+%% ==============================================================================
+
+% Print setup command
+\newcommand{\neo at setupprint}{%
+ \neo at printtrue%
+ \neo at normaltrue\neo at unicolortrue% Force unicolor mode
+ % Set all colors to black
+ \renewcommand{\neoschool at globalcolor}{black}%
+ \renewcommand{\neoschool at headcolor}{black}%
+ \renewcommand{\neoschool at subcolor}{black}%
+ \renewcommand{\neoschool at subsubcolor}{black}%
+ \renewcommand{\neoschool at titlecolor}{black}%
+ \renewcommand{\neoschool at headfootcolor}{black}%
+ \colorlet{subjectColor}{black!80}%
+ \colorlet{subtitleColor}{black!60}%
+ \AtEndOfClass{%
+ \colorlet{verbColor}{\neoschool at titlecolor}%
+ }
+ % Override all theme colors to black
+ \colorlet{definitionColor}{black}%
+ \colorlet{theoremColor}{black}%
+ \colorlet{lemmaColor}{black}%
+ \colorlet{corollaryColor}{black}%
+ \colorlet{propertyColor}{black}%
+ \colorlet{propositionColor}{black}%
+ \colorlet{activityColor}{black}%
+ \colorlet{methodColor}{black}%
+ \colorlet{applicationColor}{black}%
+ \colorlet{codeColor}{black}%
+ \colorlet{codebackColor}{black!5}%
+ \colorlet{exerciseColor}{black}%
+ \colorlet{exampleColor}{black}%
+ \colorlet{solutionColor}{black}%
+ \colorlet{alternateColor}{black}%
+ % Override admonition colors
+ \colorlet{noteColor}{black}%
+ \colorlet{infoColor}{black}%
+ \colorlet{warningColor}{black}%
+ \colorlet{importantColor}{black}%
+ \colorlet{tipColor}{black}%
+ \colorlet{reminderColor}{black}%
+ \colorlet{summaryColor}{black}%
+ \colorlet{toolboxColor}{black}%
+ % Override hyperref colors
+ \def\Hy at linkcolor{black}
+ \def\Hy at anchorcolor{black}
+ \def\Hy at citecolor{black}
+ \def\Hy at filecolor{black}
+ \def\Hy at menucolor{black}
+ \def\Hy at runcolor{black}
+ \def\Hy at urlcolor{black}
+ % Code syntax colors
+ \def\neo at keywordstyle{\color{black}\bfseries}%
+ \def\neo at commentstyle{\color{black!75}}%
+ \def\neo at stringstyle{\color{black}}%
+ \def\neo at emphstyle{\color{black}\bfseries}%
+ % Set minted style to bw if minted is used
+ \ifneo at minted
+ \usemintedstyle{bw}%
+ \fi
+}
+
+% Print option
+\DeclareOption{print}{\neo at setupprint}
+
+%% ==============================================================================
+%% Header and Footer Settings
+%% ==============================================================================
+
+% Header/footer setup command
+\newcommand{\neo at setupheadfoot}[1]{%
+ \@nameuse{neo@#1true}
+}
+
+% Header/footer options
+\DeclareOption{fullheader}{\neo at setupheadfoot{fullheader}}
+\DeclareOption{headrule}{\neo at setupheadfoot{headrule}}
+\DeclareOption{footrule}{\neo at setupheadfoot{footrule}}
+\DeclareOption{headfootrule}{\neo at setupheadfoot{headfootrule}}
+
+%% ==============================================================================
+%% Title Formatting Settings
+%% ==============================================================================
+
+% Title formatting setup command
+\newcommand{\neo at setuptitleformat}[1]{%
+ \@nameuse{neo@#1true}
+}
+
+% Title formatting options
+\DeclareOption{titlerule}{\neo at setuptitleformat{titlerule}}
+\DeclareOption{titlemidrule}{\neo at setuptitleformat{titlemidrule}}
+\DeclareOption{titlefullrule}{\neo at setuptitleformat{titlefullrule}}
+\DeclareOption{titleornament}{\neo at setuptitleformat{titleornament}}
+
+%% ==============================================================================
+%% Package Specific Options
+%% ==============================================================================
+
+% Package setup command
+\newcommand{\neo at setuppackage}[1]{%
+ \@nameuse{neo@#1true}
+}
+
+% Package options
+\DeclareOption{math}{\neo at setuppackage{math}}
+\DeclareOption{apmep}{\neo at setuppackage{apmep}}
+\DeclareOption{mathics}{\neo at setuppackage{mathics}}
+\DeclareOption{listings}{\neo at setuppackage{listings}}
+\DeclareOption{minted}{\neo at setuppackage{minted}}
+\DeclareOption{frenchmath}{\neo at setuppackage{frenchmath}}
+
+%% ==============================================================================
+%% Abstract Name
+%% ==============================================================================
+
+\DeclareStringOption[abstractname]{abstracttitle}
+
+%% ==============================================================================
+%% Margin Options
+%% ==============================================================================
+
+\DeclareStringOption{margin}
+\DeclareStringOption{notes}
+
+%% ==============================================================================
+%% Solution Settings
+%% ==============================================================================
+
+% Solution options
+\DeclareBoolOption{answers}
+\DeclareOption{shuffle}{\neo at shuffletrue}
+
+%% ==============================================================================
+%% Grading Total
+%% ==============================================================================
+
+\DeclareStringOption[20]{totalpoints}
+
+%% ==============================================================================
+%% Box Settings
+%% ==============================================================================
+
+% Box options
+\DeclareStringOption{boxtitle}
+\DeclareStringOption[2mm]{boxarc}
+\DeclareStringOption[2pt]{pseudoboxarc}
+
+% Box setup command
+\newcommand{\neo at setupbox}[2]{%
+ \expandafter\def\csname neo at box@#1\endcsname{#2}
+}
+
+%% ==============================================================================
+%% Theorem Settings
+%% ==============================================================================
+
+\DeclareBoolOption{sectionthmcounter}
+\DeclareBoolOption{sharedthmcounter}
+\DeclareBoolOption{thmgroupcounter}
+
+\newif\ifneoschool at sharedexcounter
+\DeclareOption{sharedexcounter}{%
+ \neoschool at sharedexcountertrue
+ \neoschool at sharedthmcountertrue
+}
+
+%% ==============================================================================
+%% Exercices With Icons
+%% ==============================================================================
+
+\newif\ifneo at exerciseicons
+\DeclareOption{exerciseicons}{\neo at exerciseiconstrue}
+
+%% ==============================================================================
+%% Font Scaling Options
+%% ==============================================================================
+
+\newif\ifneo at scale
+\DeclareBoolOption{scale}
+
+%% ==============================================================================
+%% Graphics Mode
+%% ==============================================================================
+
+\DeclareBoolOption{graphics}
+
+%% ==============================================================================
+%% Extended Math Mode
+%% ==============================================================================
+
+\DeclareBoolOption{math}
+
+%% ==============================================================================
+%% Draft Mode
+%% ==============================================================================
+
+\DeclareBoolOption{faketext}
+
+%% ==============================================================================
+%% Compact Option
+%% ==============================================================================
+
+\newif\ifneo at compact
+\DeclareOption{compact}{\neo at compacttrue}
+
+%% ==============================================================================
+%% Output Options
+%% ==============================================================================
+
+\newif\ifneo at twoupafourmode
+\newif\ifneo at twoupathreemode
+\newif\ifneo at fourupathreemode
+\newif\ifneo at simpletwoupmode
+\newif\ifneo at bookletafourmode
+\newif\ifneo at bookletathreemode
+
+\DeclareOption{2a5toa4}{\neo at twoupafourmodetrue}
+\DeclareOption{2a4toa3}{\neo at twoupathreemodetrue}
+\DeclareOption{4a5toa3}{\neo at fourupathreemodetrue}
+\DeclareOption{2toa3}{\neo at simpletwoupmodetrue}
+\DeclareOption{bookleta5}{\neo at bookletafourmodetrue}
+\DeclareOption{bookleta4}{\neo at bookletathreemodetrue}
+
+\ifneo at twoupafourmode
+ \PassOptionsToClass{a5paper}{scrartcl}
+ \AtEndPreamble{
+ \KOMAoptions{paper=a5}
+ \neo at setupmargins{last}
+ \areaset{12cm}{19cm}
+ }
+\fi
+
+\ifneo at twoupathreemode
+ \PassOptionsToClass{a4paper}{scrartcl}
+\fi
+
+\ifneo at fourupathreemode
+ \PassOptionsToClass{a5paper}{scrartcl}
+ \AtEndPreamble{
+ \KOMAoptions{paper=a5}
+ \neo at setupmargins{last}
+ \areaset{12cm}{19cm}
+ }
+\fi
+
+\ifneo at simpletwoupmode
+ \PassOptionsToClass{a4paper}{scrartcl}
+ \AtEndPreamble{
+ \KOMAoptions{paper=a4}
+ \neo at setupmargins{30}
+ \areaset{19cm}{29cm}
+ }
+\fi
+
+\ifneo at bookletafourmode
+ \PassOptionsToClass{a5paper}{scrartcl}
+ \AtEndPreamble{
+ \KOMAoptions{paper=a5}
+ \neo at setupmargins{last}
+ \areaset{12cm}{19cm}
+ }
+\fi
+
+\ifneo at bookletathreemode
+ \PassOptionsToClass{a4paper}{scrartcl}
+\fi
+
+%% ==============================================================================
+%% Final Class Setup
+%% ==============================================================================
+
+% Define default language and style
+\def\neo at lang{english}
+\def\neo at style{classic}
+
+% Pass unknown options to scrartcl
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{scrartcl}}
+
+% Process keyval options
+\ProcessKeyvalOptions*\relax
+
+% Default options
+\ExecuteOptions{%
+ english, % Default language
+ amslikethm, % Default theorem style
+ normal, % Default color palette
+ listings, % Default packages for Listings
+}
+
+% Process remaining options
+\ProcessOptions\relax
+
+% Load base class
+\LoadClass{scrartcl}
+
+\KOMAoptions{%
+ DIV=last,
+ parskip=half
+}
+
+\let\@unusedoptionlist\@empty
+
+%% ==============================================================================
+%% Page Layout Configuration
+%% ==============================================================================
+
+\newcommand{\neo at setupmargins}[1]{%
+ \KOMAoptions{%
+ DIV=calc,
+ DIV=#1,
+ BCOR=0pt,
+ headinclude=true,
+ footinclude=true
+ }%
+}
+
+% Intentionally small margins for teaching materials - ignore typearea warning
+\neo at setupmargins{last}
+\areaset{19cm}{29.25cm}
+\setlength{\headheight}{27pt}
+\setlength{\footskip}{27pt}
+
+\widowpenalty=10000
+\clubpenalty=10000
+
+\displaywidowpenalty=10000
+\predisplaypenalty=10000
+\postdisplaypenalty=10000
+\interlinepenalty=10000
+
+\raggedbottom
+
+%% ==============================================================================
+%% Output Options
+%% ==============================================================================
+
+\AtEndPreamble{
+ \ifneo at twoupafourmode
+ \usepackage{pgfmorepages}
+ \pgfmorepagesloadextralayouts
+ \pgfpagesuselayout{repeated 2-up}[a4paper,landscape]
+ \pgfpagesphysicalpage{2}{}
+ \pgfpageslogicalpageoptions{1}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.25\pgfphysicalwidth}{.5\pgfphysicalheight}
+ }
+ \pgfpageslogicalpageoptions{2}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.75\pgfphysicalwidth}{.5\pgfphysicalheight}
+ }
+ \fi
+
+ \ifneo at twoupathreemode
+ \usepackage{pgfmorepages}
+ \pgfmorepagesloadextralayouts
+ \pgfpagesuselayout{repeated 2-up}[a3paper,landscape]
+ \areaset{19cm}{29cm}
+ \pgfpagesphysicalpage{2}{}
+ \pgfpageslogicalpageoptions{1}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.25\pgfphysicalwidth}{.5\pgfphysicalheight}
+ }
+ \pgfpageslogicalpageoptions{1}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.75\pgfphysicalwidth}{.5\pgfphysicalheight}
+ }
+ \fi
+
+ \ifneo at fourupathreemode
+ \usepackage{pgfmorepages}
+ \pgfmorepagesloadextralayouts
+ \pgfpagesuselayout{repeated 4-up}[a3paper]
+ \pgfpagesphysicalpage{4}{}
+ \pgfpageslogicalpageoptions{1}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.25\pgfphysicalwidth}{.25\pgfphysicalheight}
+ }
+ \pgfpageslogicalpageoptions{1}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.25\pgfphysicalwidth}{.75\pgfphysicalheight}
+ }
+ \pgfpageslogicalpageoptions{1}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.75\pgfphysicalwidth}{.25\pgfphysicalheight}
+ }
+ \pgfpageslogicalpageoptions{1}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.75\pgfphysicalwidth}{.75\pgfphysicalheight}
+ }
+ \fi
+
+ \ifneo at simpletwoupmode
+ \usepackage{pgfmorepages}
+ \pgfmorepagesloadextralayouts
+ \pgfpagesuselayout{2 on 1}[a3paper,landscape]
+ \pgfpagesphysicalpage{2}{}
+ \pgfpageslogicalpageoptions{1}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.25\pgfphysicalwidth}{.5\pgfphysicalheight}
+ }
+ \pgfpageslogicalpageoptions{2}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.75\pgfphysicalwidth}{.5\pgfphysicalheight}
+ }
+ \fi
+
+ \ifneo at bookletafourmode
+ \usepackage{pgfmorepages}
+ \pgfmorepagesloadextralayouts
+ \pgfpagesuselayout{4 on 2, book format}[a4paper,landscape]
+ \pgfpagesphysicalpage{4}{}
+ \pgfpageslogicalpageoptions{4}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.25\pgfphysicalwidth}{.25\pgfphysicalheight}
+ }
+ \pgfpageslogicalpageoptions{1}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.25\pgfphysicalwidth}{.75\pgfphysicalheight}
+ }
+ \pgfpageslogicalpageoptions{2}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.75\pgfphysicalwidth}{.25\pgfphysicalheight}
+ }
+ \pgfpageslogicalpageoptions{3}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.75\pgfphysicalwidth}{.75\pgfphysicalheight}
+ } \fi
+
+ \ifneo at bookletathreemode
+ \usepackage{pgfmorepages}
+ \pgfmorepagesloadextralayouts
+ \pgfpagesuselayout{4 on 2, book format}[a3paper,landscape]
+ \areaset{19cm}{29.25cm}
+ \setlength{\headheight}{27pt}
+ \setlength{\footskip}{27pt}
+ \pgfpagesphysicalpage{4}{}
+ \pgfpageslogicalpageoptions{4}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.25\pgfphysicalwidth}{.25\pgfphysicalheight}
+ }
+ \pgfpageslogicalpageoptions{1}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.25\pgfphysicalwidth}{.75\pgfphysicalheight}
+ }
+ \pgfpageslogicalpageoptions{2}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.75\pgfphysicalwidth}{.25\pgfphysicalheight}
+ }
+ \pgfpageslogicalpageoptions{3}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.75\pgfphysicalwidth}{.75\pgfphysicalheight}
+ }
+ \fi
+}
+
+%% ==============================================================================
+%% Box and Frame Conditions Setup
+%% ==============================================================================
+
+% Basic color definitions for tcolorbox
+\newcommand{\neo at tcbcolback}{tcbcolframe!5}
+\newcommand{\neo at tcbcolbacklower}{white}
+\newcommand{\neo at tcbcolupper}{black}
+\newcommand{\neo at tcbcoltitle}{white}
+
+% Frame options definitions
+\newcommand{\neo at framehidden}{}
+\newcommand{\neo at thmborder}{1pt}
+\newcommand{\neo at leftpadding}{1ex}
+\newcommand{\neo at rightpadding}{1ex}
+\newcommand{\neo at toppadding}{1ex}
+\newcommand{\neo at bottompadding}{1ex}
+\newcommand{\neo at titleleftpadding}{0.5em}
+\newcommand{\neo at titlerightpadding}{0.5em}
+\newcommand{\neo at titletoppadding}{3pt}
+\newcommand{\neo at titlebottompadding}{3pt}
+\newcommand{\neo at beforeskip}{0.5\baselineskip}
+\newcommand{\neo at afterskip}{0.5\baselineskip}
+
+% Handle noback option:
+% Changes background colors to white for main boxes
+\ifneo at noback
+ \renewcommand{\neo at tcbcolback}{white}
+ \colorlet{codebackColor}{white}
+ \renewcommand{\neo at tcbcolbacklower}{tcbcolframe!5}
+\fi
+
+% Handle noframe option:
+% Hides frames and adjusts title color
+\ifneo at noframe
+ \renewcommand{\neo at framehidden}{frame hidden}
+ \renewcommand{\neo at thmborder}{0pt}
+ \renewcommand{\neo at tcbcoltitle}{tcbcolframe}
+ \ifneo at noback
+ \renewcommand{\neo at leftpadding}{-2pt}
+ \renewcommand{\neo at rightpadding}{-2pt}
+ \renewcommand{\neo at toppadding}{-1pt}
+ \renewcommand{\neo at bottompadding}{-1pt}
+ \renewcommand{\neo at titleleftpadding}{-2.5pt}
+ \renewcommand{\neo at titlerightpadding}{-2.5pt}
+ \renewcommand{\neo at titletoppadding}{-2pt}
+ \renewcommand{\neo at titlebottompadding}{-2pt}
+ \renewcommand{\neo at beforeskip}{0.25\baselineskip}
+ \renewcommand{\neo at afterskip}{0.25\baselineskip}
+ \fi
+\fi
+
+% Handle nocodeframe option:
+% Hides code block frames and adjusts colors
+\ifneo at nocodeframe
+ \colorlet{codeColor}{codebackColor}
+\fi
+
+% Adjust spacing for two-column mode
+\if at twocolumn
+ \setlength{\columnsep}{1em}
+\fi
+
+%% ==============================================================================
+%% Required Packages Setup
+%% ==============================================================================
+
+%% Core packages
+\RequirePackage{iftex} % Engine detection
+\RequirePackage{xkeyval} % Extended key-value support
+\RequirePackage{xstring} % String manipulation
+\RequirePackage{calc} % Length calculations
+\RequirePackage{ifthen} % Boolean expression
+\RequirePackage{pdftexcmds} % Conditionals
+\RequirePackage{environ} % New Environments
+
+% Hide Some Warnings
+\RequirePackage{silence}
+\WarningFilter{latexfont}{Font shape}
+\renewcommand{\@font at warning}[1]{}
+\WarningFilter{mismath}{}
+\WarningFilter{multicol}{}
+
+%% Language support
+\ifluatex
+ \RequirePackage{fontspec}
+\fi
+
+\ifneo at french
+ \RequirePackage[main=french,shorthands=off]{babel}
+\else\ifneo at german
+ \RequirePackage[main=german]{babel}
+ \else
+ \RequirePackage[main=english]{babel}
+ \fi\fi
+
+\RequirePackage{scrlayer-scrpage} % Headers and footers
+
+\RequirePackage{multicol} % Multiple columns
+\RequirePackage{changepage} % Dynamic page dimensions
+\RequirePackage{needspace} % Control page breaks
+
+%% Graphics and colors
+\RequirePackage[most]{tcolorbox} % Colored boxes and frames
+\RequirePackage{tikz} % Drawing tools
+\RequirePackage{pgfplots} % Plotting tools
+\pgfplotsset{compat=1.8} % Set pgfplots version
+
+%% TikZ libraries
+\usetikzlibrary{%
+ backgrounds,
+ calc,
+ decorations.shapes,
+ positioning,
+ shadows,
+ shapes.arrows,
+ shapes.geometric,
+ shapes.misc
+}
+
+\ifneoschool at faketext
+ \RequirePackage{blindtext} % Fake Text in English and German
+ \RequirePackage{lipsum} % Fake Text in Latin
+\fi
+
+\ifneoschool at graphics
+ \RequirePackage{wrapfig} % Wrapped figures
+ \RequirePackage{graphicx} % Images
+\fi
+
+%% Additional TikZ-related packages
+\RequirePackage{tikzsymbols} % Additional symbols
+\RequirePackage{tikzpagenodes} % Page coordinate system
+\RequirePackage{forest} % Tree diagrams
+\useforestlibrary{linguistics}
+
+%% LuaTeX specific packages
+\ifluatex
+ \usetikzlibrary{graphs,graphdrawing,quotes}
+ \usegdlibrary{circular,force,layered,routing,trees}
+ \RequirePackage{luacolor} % Color support for LuaTeX
+ \RequirePackage{lua-ul} % Underlining for LuaTeX
+ \RequirePackage{luacas} % Computer algebra for LuaTeX
+\fi
+
+%% Tables and arrays
+\RequirePackage{tabularray} % Advanced tables
+\UseTblrLibrary{%
+ amsmath,
+ booktab,
+ diagbox,
+ functional,
+ varwidth,
+ siunitx
+}
+
+\RequirePackage{adjustbox} % Adjusting box dimensions
+
+%% Extended Math packages
+\ifneoschool at math
+ \RequirePackage[suite,taupe]{tdsfrmath} % French Math macros
+\fi
+
+\RequirePackage{mismath} % Miscellaneous math macros (includes mathtools)
+
+\ifneoschool at math
+ \RequirePackage{amssymb} % Mathematical symbols
+ \RequirePackage{ncccomma} % Math Comma
+\fi
+
+%% APMEP Compatibility Mode - Option 'apmep'
+
+\ifneo at apmep
+ %% APMEP required packages
+ \RequirePackage{textcomp} % Text companion fonts
+ \RequirePackage{esvect} % Vector arrows
+ \RequirePackage{fourier-orns} % Ornaments
+ \RequirePackage{tabularx} % Extended tables
+ \RequirePackage[np]{numprint} % Number printing
+
+ %% PSTricks suite for APMEP
+ \RequirePackage{pstricks} % Base PSTricks
+ \RequirePackage{pst-plot} % Plotting
+ \RequirePackage{pst-tree} % Trees
+ \RequirePackage{pst-node} % Nodes
+ \RequirePackage{pst-text} % Text effects
+ \RequirePackage{pst-eucl} % Euclidean geometry
+ \RequirePackage{pst-3dplot} % 3D plotting
+ \undef\pscalculate
+ \RequirePackage{pst-bezier} % Bezier curves
+ \RequirePackage{pst-all} % Loads most PSTricks packages
+ \RequirePackage{pstricks-add} % Additional features
+
+ %% APMEP specific commands
+ \newcommand{\euro}{\eurologo{}}
+ \newcommand{\cg}{\texttt{]}} % Left bracket
+ \newcommand{\cd}{\texttt{[}} % Right bracket
+ \newcommand{\pg}{\geqslant} % Greater than or equal
+ \newcommand{\pp}{\leqslant} % Less than or equal
+ \newcommand{\vectt}[1]{\overrightarrow{\,\mathstrut\text{#1}\,}}
+ \newcommand{\barre}[1]{\overline{\,\mathstrut#1\,}}
+ \renewcommand{\d}{\,\text{d}} % Differential d
+ \renewcommand{\i}{\,\text{i}\,} % Complex i
+
+ %% APMEP enumeration style
+ \renewcommand{\theenumi}{\textbf{\arabic{enumi}}}
+ \renewcommand{\labelenumi}{\textbf{\theenumi.}}
+ \renewcommand{\theenumii}{\textbf{\alph{enumii}}}
+ \renewcommand{\labelenumii}{\textbf{\theenumii.}}
+
+ %% APMEP coordinate systems
+ \def\Oij{$\left(\text{O}~;~\vect{\imath},~\vect{\jmath}\right)$}
+ \def\Oijk{$\left(\text{O}~;~\vect{\imath},~\vect{\jmath},~\vect{k}\right)$}
+ \def\Ouv{$\left(\text{O}~;~\vect{u},~\vect{v}\right)$}
+
+ %% APMEP font declaration
+ \DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\fi
+
+%% Computer algebra system support
+\ifneo at mathics
+ \RequirePackage[mathics]{latexalpha2}
+ \RequirePackage{asymptote}
+\fi
+
+%% Lists and enumerations
+\RequirePackage{tasks} % Horizontal lists
+
+%% Utilities and tools
+\RequirePackage{cuted} % Abstract settings
+\RequirePackage{qrcode} % QR code generation
+\RequirePackage{xhfill} % Extended filling
+\RequirePackage{fontawesome5} % Icons
+\RequirePackage{adforn} % Ornaments
+\ifx\neoschool at notes\@empty\else
+ \RequirePackage[%
+ \neo at lang,
+ textsize=scriptsize
+ ]{todonotes} % Todo notes
+\fi
+\RequirePackage{marginnote} % Margin notes
+\RequirePackage{algpseudocode} % Algorithms
+\RequirePackage{textcase} % Text case changing
+\RequirePackage[use-files,clear-aux]{xsim} % Exercise sheets
+\RequirePackage[normalem]{ulem} % Underlining
+
+%% Microtype
+\AtEndOfClass{\RequirePackage{microtype}}
+
+%% Hyperref setup
+\definecolor{neo at linkcolor}{named}{\neoschool at titlecolor}
+\definecolor{neo at filecolor}{named}{\neoschool at titlecolor}
+\definecolor{neo at urlcolor}{named}{\neoschool at titlecolor}
+
+\RequirePackage{bookmark}
+\RequirePackage{lastpage}
+
+\hypersetup{%
+ colorlinks=true,
+ linkcolor=neo at linkcolor,
+ filecolor=neo at filecolor,
+ urlcolor=neo at urlcolor,
+}%
+
+%% ==============================================================================
+%% Font Settings
+%% ==============================================================================
+
+% Font variable definitions
+\edef\mainface{\expandonce{\neoschool at mainface}}
+\edef\sansface{\expandonce{\neoschool at sansface}}
+\edef\monoface{\expandonce{\neoschool at monoface}}
+\edef\mathface{\expandonce{\neoschool at mathface}}
+\edef\facefamily{\expandonce{\neoschool at facefamily}}
+
+% PdfLaTeX configuration
+\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0
+\RequirePackage[utf8]{inputenc}
+\RequirePackage[T1]{fontenc}
+
+\expandafter\ifblank\expandafter{\facefamily}{%
+ % Load individual fonts if facefamily is not defined
+ \expandafter\ifblank\expandafter{\mathface}{\ifneo at mathastext
+ \RequirePackage[italic,eulergreek]{mathastext}\else\RequirePackage{newpxmath}\fi}{\RequirePackage[\neoschool at mathfaceoptions]{\neoschool at mathface}}
+
+ \expandafter\ifblank\expandafter{\mainface}{\RequirePackage{newpxtext}}{\RequirePackage[\neoschool at mainfaceoptions]{\neoschool at mainface}}
+ \expandafter\ifblank\expandafter{\sansface}{}{\RequirePackage[\neoschool at sansfaceoptions]{\neoschool at sansface}}
+ \expandafter\ifblank\expandafter{\monoface}{}{\RequirePackage[\neoschool at monofaceoptions]{\neoschool at monoface}}
+}{
+ % Load font family if defined
+ \RequirePackage[\neoschool at facefamilyoptions]{\neoschool at facefamily}
+}
+\else
+% % LuaLaTeX configuration
+\RequirePackage{fontspec}
+
+\ifneo at scale
+ \defaultfontfeatures[\rmfamily]{Scale=1}
+ \defaultfontfeatures{Scale=MatchLowercase}
+\fi
+
+\defaultfontfeatures{Ligatures=TeX,Renderer=HarfBuzz}
+
+\expandafter\ifblank\expandafter{\mathface}{%
+ \ifneo at mathastext
+ \RequirePackage[italic,eulergreek]{mathastext}
+ \else
+ \RequirePackage{newpxmath}
+ \fi
+ }{%
+ \RequirePackage{\mathface}
+ }
+\expandafter\ifblank\expandafter{\mainface}{%
+ \setmainfont{TeX Gyre PagellaX}
+ }{%
+ \setmainfont[\neoschool at mainfaceoptions]{\neoschool at mainface}
+ }
+\expandafter\ifblank\expandafter{\sansface}{%
+ \setsansfont{TeX Gyre Heros}
+ }{%
+ \setsansfont[\neoschool at sansfaceoptions]{\neoschool at sansface}
+ }
+\expandafter\ifblank\expandafter{\monoface}{%
+ \setmonofont{Cascadia Code}
+ }{%
+ \setmonofont[\neoschool at monofaceoptions]{\neoschool at monoface}
+ }
+\fi
+
+\RequirePackage{bm} % Bold Math
+
+% Common configuration
+\ifneo at sfbody
+ \renewcommand{\familydefault}{\sfdefault}
+\fi
+
+% Advances Math Packages
+\ifneoschool at math
+ \RequirePackage{mathrsfs} % Mathematical script font
+ \RequirePackage{annotate-equations} % Equation annotations
+ \RequirePackage{witharrows} % Step-by-step solutions
+ \RequirePackage[np]{numprint} % Number printing
+ \RequirePackage{xlop} % Arithmetic operations
+ \RequirePackage{breqn} % Multiline Equations
+ \RequirePackage{tkz-euclide} % Euclidean geometry
+ \RequirePackage{cancel} % Cancel an expression
+\fi
+
+\AtBeginDocument{
+ \mathcode`\;="303B
+}
+
+% Upright Capital and Greek Letters
+\ifneo at frenchmath
+ \DeclareMathSymbol{A}{\mathalpha}{operators}{65}
+ \DeclareMathSymbol{B}{\mathalpha}{operators}{66}
+ \DeclareMathSymbol{C}{\mathalpha}{operators}{67}
+ \DeclareMathSymbol{D}{\mathalpha}{operators}{68}
+ \DeclareMathSymbol{E}{\mathalpha}{operators}{69}
+ \DeclareMathSymbol{F}{\mathalpha}{operators}{70}
+ \DeclareMathSymbol{G}{\mathalpha}{operators}{71}
+ \DeclareMathSymbol{H}{\mathalpha}{operators}{72}
+ \DeclareMathSymbol{I}{\mathalpha}{operators}{73}
+ \DeclareMathSymbol{J}{\mathalpha}{operators}{74}
+ \DeclareMathSymbol{K}{\mathalpha}{operators}{75}
+ \DeclareMathSymbol{L}{\mathalpha}{operators}{76}
+ \DeclareMathSymbol{M}{\mathalpha}{operators}{77}
+ \DeclareMathSymbol{N}{\mathalpha}{operators}{78}
+ \DeclareMathSymbol{O}{\mathalpha}{operators}{79}
+ \DeclareMathSymbol{P}{\mathalpha}{operators}{80}
+ \DeclareMathSymbol{Q}{\mathalpha}{operators}{81}
+ \DeclareMathSymbol{R}{\mathalpha}{operators}{82}
+ \DeclareMathSymbol{S}{\mathalpha}{operators}{83}
+ \DeclareMathSymbol{T}{\mathalpha}{operators}{84}
+ \DeclareMathSymbol{U}{\mathalpha}{operators}{85}
+ \DeclareMathSymbol{V}{\mathalpha}{operators}{86}
+ \DeclareMathSymbol{W}{\mathalpha}{operators}{87}
+ \DeclareMathSymbol{X}{\mathalpha}{operators}{88}
+ \DeclareMathSymbol{Y}{\mathalpha}{operators}{89}
+ \DeclareMathSymbol{Z}{\mathalpha}{operators}{90}
+
+ \let\alpha\alphaup
+ \let\beta\betaup
+ \let\gamma\gammaup
+ \let\delta\deltaup
+ \let\epsilon\epsilonup
+ \let\zeta\zetaup
+ \let\eta\etaup
+ \let\theta\thetaup
+ \let\iota\iotaup
+ \let\kappa\kappaup
+ \let\lambda\lambdaup
+ \let\mu\muup
+ \let\nu\nuup
+ \let\xi\xiup
+ \let\pi\piup
+ \let\rho\rhoup
+ \let\sigma\sigmaup
+ \let\tau\tauup
+ \let\upsilon\upsilonup
+ \let\phi\phiup
+ \let\chi\chiup
+ \let\psi\psiup
+ \let\omega\omegaup
+\fi
+
+%% ==============================================================================
+%% KOMA-Script Typography
+%% ==============================================================================
+
+\newcommand{\LARGEplus}{\fontsize{15.5}{18.6}\selectfont}
+\newcommand{\LARGEhuge}{\fontsize{16.74}{20.09}\selectfont}
+\newcommand{\hugeminus}{\fontsize{18.5}{22.2}\selectfont}
+
+% Monospace font and color configuration
+\AtEndOfClass{%
+ \colorlet{verbColor}{\neoschool at titlecolor}%
+ \let\oldtexttt\texttt
+ \renewrobustcmd{\texttt}[1]{\oldtexttt{\color{verbColor}#1}}
+}
+
+\setkomafont{disposition}{\mdseries}
+
+% Header style configuration
+\setkomafont{title}{\csname\neoschool at titlestyle\endcsname\csname\neoschool at titleweight\endcsname\color{\neoschool at titlecolor}\hugeminus}
+\setkomafont{subtitle}{\csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\csname\neoschool at headshape\endcsname\color{subtitleColor}}
+\setkomafont{subject}{\csname\neoschool at headweight\endcsname\color{subjectColor}\large}
+\setkomafont{author}{\large}
+\setkomafont{date}{\large}
+\setkomafont{subsection}{\csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\color{\neoschool at subcolor}\large}
+\setkomafont{subsubsection}{\csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\color{\neoschool at subsubcolor}}
+% \renewcommand{\subsubsection}{%
+% \@startsection{subsubsection}{3}{\z@}%
+% {1ex plus 1ex minus .2ex}%
+% {-2em}%
+% {\csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\color{\neoschool at subsubcolor}\itshape\secpunct}%
+% }
+% \newcommand{\secpunct}[1]{#1\hspace{-3ex}}
+\setkomafont{pagenumber}{\csname\neoschool at headstyle\endcsname\color{\neoschool at headfootcolor}}
+\setkomafont{descriptionlabel}{\csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\csname\neoschool at headshape\endcsname}
+
+% Page number format
+\renewcommand*\pagemark{%
+ {\usekomafont{pagenumber}
+ \color{\neoschool at headfootcolor}
+ \csname neo at pagename\endcsname\nobreakspace\thepage\nobreakspace/\nobreakspace
+ {\hypersetup{linkcolor=\neoschool at headfootcolor}\pageref{LastPage}}
+ }
+}
+
+\newpairofpagestyles{firstpage}{%
+ \ihead{}\chead{}\ohead{}%
+ \ifoot{\@date}\cfoot{}\ofoot{\pagemark}%
+ \KOMAoptions{headsepline=0pt}
+}{%
+ \ihead{}\chead{}\ohead{}%
+ \ifoot{\@date}\cfoot{}\ofoot{\pagemark}%
+ \KOMAoptions{headsepline=0pt}
+}
+
+\newpairofpagestyles{followingpages}{%
+ \ihead{}\chead{}\ohead{}%
+ \ifoot{\@title}\cfoot{}\ofoot{\pagemark}%
+}{%
+ \ihead{}\chead{}\ohead{}%
+ \ifoot{\@title}\cfoot{}\ofoot{\pagemark}%
+}
+
+\newpairofpagestyles{pagenum}{%
+ \ihead{}\chead{}\ohead{}
+ \ifoot{}\cfoot{\pagemark}\ofoot{}
+ \KOMAoptions{headsepline=0pt,footsepline=0pt}
+}
+
+% Header font configuration
+\renewcommand*{\headfont}{%
+ \small
+ \csname\neoschool at headfootstyle\endcsname
+ \color{\neoschool at headfootcolor}
+}
+
+%% ==============================================================================
+%% Title Styles and Setting
+%% ==============================================================================
+
+% Core definitions and lengths
+\def\neo at left{left}
+\def\neo at right{right}
+\def\neo at center{center}
+\newlength{\varspace}
+\newlength{\titlespacing}
+\setlength{\titlespacing}{1.5\baselineskip}
+\newcommand\myscaleratio{0.5}
+
+% Define tight spacing commands
+\newcommand{\neo at tightspacing}{%
+ \setlength\topsep{0pt}
+ \setlength\parskip{0pt}
+}
+
+% Redefine center, flushright, and flushleft environments with tight spacing
+\let\oldcenter\center
+\let\oldendcenter\endcenter
+\renewenvironment{center}{%
+ \neo at tightspacing
+ \oldcenter
+}{%
+ \oldendcenter
+}
+
+\let\oldflushright\flushright
+\let\oldendflushright\endflushright
+\renewenvironment{flushright}{%
+ \neo at tightspacing
+ \oldflushright
+}{%
+ \oldendflushright
+}
+
+\let\oldflushleft\flushleft
+\let\oldendflushleft\endflushleft
+\renewenvironment{flushleft}{%
+ \neo at tightspacing
+ \oldflushleft
+}{%
+ \oldendflushleft
+}
+
+% Title decoration handler
+\newcommand{\neo at titledecoration}{%
+ \ifneo at titlerule
+ \vspace{1.25\titlespacing}%
+ {\color{\neoschool at titlecolor}\rule{5em}{0.4pt}}
+ \else
+ \ifneo at titlemidrule
+ \vspace{1.25\titlespacing}%
+ {\color{\neoschool at titlecolor}\rule{0.5\linewidth}{0.4pt}}
+ \else
+ \ifneo at titlefullrule
+ \vspace{1.25\titlespacing}%
+ {\color{\neoschool at titlecolor}\rule{\linewidth}{0.4pt}}%
+ \vspace{-0.75\titlespacing}%
+ \else
+ \ifneo at titleornament
+ \vspace{1.25\titlespacing}%
+ {\color{\neoschool at titlecolor}\scalebox{2}[1.5]{\adforn{21}\,\adforn{11}\,\adforn{49}}}
+ \fi
+ \fi
+ \fi
+ \fi
+ \vspace*{.15\baselineskip}
+}
+
+% Full title creation with all elements
+\newcommand{\createfulltitle}{%
+% Subject
+\ifx\@subject\@empty\else
+ {\usekomafont{subject}{\@subject\par}}
+ \vspace{\titlespacing}
+\fi
+
+% Main title
+{\noindent\usekomafont{title}{\@title\par}}
+
+% Subtitle
+\ifx\@subtitle\@empty\else
+ \vspace{\titlespacing}
+ {\noindent\usekomafont{subtitle}{\@subtitle\par}}
+\fi
+
+% Author
+\ifx\@author\@empty\else
+ \vspace{\titlespacing}
+ {\noindent\usekomafont{author}{\@author\par}}
+\fi
+
+% Decorative elements
+\neo at titledecoration
+\if at twocolumn\vspace{2\titlespacing}\else\vspace{\titlespacing}\fi
+}
+
+% Only title creation (no author, subject, etc.)
+\newcommand{\createonlytitle}{%
+ {\noindent\usekomafont{title}{\@title\par}}
+ \neo at titledecoration%
+}
+
+\renewcommand\maketitle{%
+ \thispagestyle{firstpage}
+ \bgroup
+ \setlength{\varspace}{\dimexpr\titlespacing+\myscaleratio\oddsidemargin}
+ \if at twocolumn
+ \twocolumn[{%
+ \ifx\neoschool at titlealign\neo at left
+ \begin{flushleft}
+ \createfulltitle
+ \end{flushleft}
+ \else
+ \ifx\neoschool at titlealign\neo at right
+ \begin{flushright}
+ \createfulltitle
+ \end{flushright}
+ \else
+ \begin{center}
+ \createfulltitle
+ \end{center}
+ \fi
+ \fi
+ }]
+ \else
+ \ifx\neoschool at titlealign\neo at left
+ \begin{flushleft}
+ \createfulltitle
+ \end{flushleft}
+ \else
+ \ifx\neoschool at titlealign\neo at right
+ \begin{flushright}
+ \createfulltitle
+ \end{flushright}
+ \else
+ \begin{center}
+ \createfulltitle
+ \end{center}
+ \fi
+ \fi
+ \fi
+ \egroup
+}
+
+% Enhanced fancy title box with rotation
+\ifneo at fancybox
+ \newcommand{\neo at fancycolor}{exerciseColor!5!white}
+ \AtBeginDocument{%
+ \begin{tikzpicture}[remember picture,overlay]
+ % Rotated background box
+ \fill[\neo at fancycolor,rotate=-15]
+ ($(current page.north west) +(0,-1in)$)
+ rectangle ($(current page.north west) +(2.25in,2.0in)$);
+
+ % Title node with improved positioning
+ \node[anchor=west] (title) at
+ ($([xshift=-1ex,yshift=2ex]current page text area.north west)$)
+ {\LARGE\csname\neoschool at titlestyle\endcsname
+ \csname\neoschool at titleweight\endcsname
+ \csname\neoschool at titleshape\endcsname
+ \color{\neoschool at titlecolor}\@title};
+ \end{tikzpicture}
+ \vspace*{\dimexpr1.25in+\oddsidemargin\relax}\par
+ \let\maketitle\relax
+ \thispagestyle{firstpage}
+ }
+\fi
+
+% Unified handling of single-column and two-column title layouts with only title
+\newcommand{\neo at handleonlytitle}[2]{%
+ \if at twocolumn
+ \AfterEndPreamble{%
+ \twocolumn[{#1\vspace*{.5in}\par}]
+ }
+ \else
+ \AtBeginDocument{%
+ #2\vspace*{0.25in}\par
+ }
+ \fi
+ \let\maketitle\relax
+ \thispagestyle{firstpage}
+}
+
+% Left-aligned title implementation
+\ifneo at onlytitleleft
+ \neo at handleonlytitle
+ {\begin{flushleft}\createonlytitle\end{flushleft}}
+ {\begin{flushleft}\createonlytitle\end{flushleft}}
+\fi
+
+% Centered title implementation
+\ifneo at onlytitle
+ \neo at handleonlytitle
+ {\begin{center}\createonlytitle\end{center}}
+ {\begin{center}\createonlytitle\end{center}}
+\fi
+
+% Right-aligned title implementation
+\ifneo at onlytitleright
+ \neo at handleonlytitle
+ {\begin{flushright}\createonlytitle\end{flushright}}
+ {\begin{flushright}\createonlytitle\end{flushright}}
+\fi
+
+%% ==============================================================================
+%% Table of Contents
+%% ==============================================================================
+
+\addto\captionsfrench{\renewcommand{\contentsname}{Sommaire}}
+
+\DeclareTOCStyleEntry[
+ entryformat={\sffamily\csname\neoschool at headweight\endcsname\color{\neoschool at headcolor}}
+]{tocline}{section}
+
+\DeclareTOCStyleEntry[
+ entryformat={\sffamily}
+]{tocline}{subsection}
+
+\DeclareTOCStyleEntry[
+ entryformat={\sffamily}
+]{tocline}{subsubsection}
+
+%% ==============================================================================
+%% Abstract formatting
+%% ==============================================================================
+
+\if at twocolumn
+ \renewenvironment{abstract}{%
+ \begin{strip}
+ \ifx\neoschool at abstracttitle\@empty
+ \vspace{-4em}
+ \quotation
+ \else
+ \vspace{-5em}
+ \section*{\csname\neoschool at abstracttitle\endcsname}%
+ \quotation
+ \fi}
+ {\endquotation\end{strip}}
+\else
+ \renewenvironment{abstract}{%
+ \ifx\neoschool at abstracttitle\@empty
+ % \vspace{-1em}
+ \quotation
+ \else
+ \vspace{-2em}
+ \section*{\csname\neoschool at abstracttitle\endcsname}%
+ \quotation
+ \fi}
+ {\endquotation}
+\fi
+
+%% ==============================================================================
+%% Section formatting utilities
+%% ==============================================================================
+
+% Style definitions
+\def\neo at align@right{right}
+\def\neo at align@left{left}
+\def\neo at align@center{center}
+
+\def\neo at numstyle@circle{circle}
+\def\neo at numstyle@box{box}
+\def\neo at numstyle@dash{dash}
+\def\neo at numstyle@plain{plain}
+
+\def\neo at textstyle@sc{sc}
+\def\neo at textstyle@upper{upper}
+\def\neo at textstyle@lower{lower}
+
+\def\neo at style@ornaments{ornaments}
+\def\neo at style@underline{underline}
+\def\neo at style@normal{normal}
+\def\neo at style@highlighted{highlighted}
+\def\neo at style@shadedline{shadedline}
+
+% Utility command for circular number style
+\newcommand*\circled[1]{\tikz[baseline=(char.base)]{%
+ \node[shape=circle,draw,inner sep=2pt,line width=1.5pt,baseline=-1.25mm] (char) {#1};}
+ \vspace{-2pt}
+}
+
+% Check for small caps availability
+\newcommand*{\IfSCAvailableTF}{%
+ \ifcsname\f at encoding/\f at family/\f at series/sc\endcsname
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+}
+
+% Apply text style based on options
+\newcommand{\applytextstyle}[1]{%
+ \ifx\neoschool at sectiontextstyle\neo at textstyle@sc
+ \IfSCAvailableTF{\scshape\Large\csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname #1}{\MakeUppercase{\large \csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\csname\neoschool at headshape\endcsname #1}}%
+ \else
+ \ifx\neoschool at sectiontextstyle\neo at textstyle@upper
+ \MakeUppercase{\large \csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname #1}%
+ \else
+ \csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\Large #1%
+ \fi
+ \fi
+}
+
+% Section number formatting based on style option
+\renewcommand{\sectionformat}{%
+ \ifx\neoschool at sectionnumstyle\neo at numstyle@circle
+ \circled{{\large\csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\thesection}}\enskip%
+ \else
+ \ifx\neoschool at sectionnumstyle\neo at numstyle@box
+ \raisebox{0ex}{%
+ \setlength{\fboxrule}{1.5pt}%
+ \fcolorbox{\neoschool at headcolor}{white}{%
+ \color{\neoschool at headcolor}%
+ \csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ % \csname\neoschool at headshape\endcsname
+ \large\thesection%
+ }%
+ }\enskip%
+ \else
+ \ifx\neoschool at sectionnumstyle\neo at numstyle@dash
+ \csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\csname\neoschool at headshape\endcsname\thesection\enskip\textendash\enskip
+ \else
+ \csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\csname\neoschool at headshape\endcsname\thesection\autodot\enskip
+ \fi
+ \fi
+ \fi
+}
+
+% Set section alignment
+\newcommand{\setsectionraggedstyle}{%
+ \ifx\neoschool at sectionalign\neo at align@right
+ \renewcommand*{\raggedsection}{\raggedleft}%
+ \else
+ \ifx\neoschool at sectionalign\neo at align@left
+ \renewcommand*{\raggedsection}{\raggedright}%
+ \else
+ \renewcommand*{\raggedsection}{\centering}%
+ \fi
+ \fi
+}
+
+% Main section format handler
+\renewcommand{\sectionlinesformat}[4]{%
+ \Ifstr{#1}{section}{%
+ % \vspace*{0.5em}%
+ \ifx\neoschool at sectionstyle\neo at style@ornaments
+ \sectionformat at ornaments{#3}{#4}%
+ \else
+ \ifx\neoschool at sectionstyle\neo at style@highlighted
+ \sectionformat at highlighted{#3}{#4}%
+ \else
+ \ifx\neoschool at sectionstyle\neo at style@shadedline
+ \sectionformat at shadedline{#3}{#4}%
+ \else
+ \ifx\neoschool at sectionstyle\neo at style@normal
+ \sectionformat at normal{#2}{#3}{#4}%
+ \else
+ \sectionformat at other{#3}{#4}%
+ \fi
+ \fi
+ \fi
+ \fi
+ % \vspace*{-0.15em}%
+ }{%
+ \@hangfrom{\hskip #2#3}{#4}%
+ }%
+}
+
+% Individual style implementations
+\newcommand{\sectionformat at normal}[3]{%
+ \setsectionraggedstyle
+ \parbox[t]{\linewidth}{%
+ \raggedsection
+ \@hangfrom{\color{\neoschool at headcolor}#2}{%
+ \color{\neoschool at headcolor}%
+ \applytextstyle{#3}%
+ }%
+ }%
+ \par\nobreak
+}
+
+\newcommand{\sectionformat at ornaments}[2]{%
+ \renewcommand*{\raggedsection}{\centering}%
+ \raggedsection
+ \vspace*{0.5em}%
+ \adforn{36}\enskip
+ {\color{\neoschool at headcolor}\applytextstyle{#1#2}}%
+ \enskip\adforn{36}%
+ \par\nobreak
+ \vspace*{0.2em}%
+}
+
+% Helper commands for TikZ styles
+\newcommand{\setsectiontikzalign}{%
+ \ifx\neoschool at sectionalign\neo at align@left
+ left%
+ \else
+ \ifx\neoschool at sectionalign\neo at align@right
+ right%
+ \else
+ center%
+ \fi
+ \fi
+}
+
+\newcommand{\setsectiontikzcolor}[1]{%
+ \ifx\neoschool at sectionalign\neo at align@left
+ \ifnum\pdf at strcmp{#1}{left}=0
+ \neoschool at headcolor!120
+ \else
+ \neoschool at headcolor!20
+ \fi
+ \else
+ \ifx\neoschool at sectionalign\neo at align@right
+ \ifnum\pdf at strcmp{#1}{right}=0
+ \neoschool at headcolor!120
+ \else
+ \neoschool at headcolor!20
+ \fi
+ \else
+ \neoschool at headcolor!25
+ \fi
+ \fi
+}
+
+\newcommand{\setsectiontikzmiddle}{%
+ \ifx\neoschool at sectionalign\neo at align@left
+ \neoschool at headcolor!90
+ \else
+ \ifx\neoschool at sectionalign\neo at align@right
+ \neoschool at headcolor!90
+ \else
+ \neoschool at headcolor!120
+ \fi
+ \fi
+}
+
+\newcommand{\sectionformat at highlighted}[2]{%
+ \noindent\begin{tikzpicture}[baseline]
+ \node[
+ anchor=base,
+ inner sep=3pt,
+ outer sep=0pt,
+ align=\setsectiontikzalign,
+ text width=.985\linewidth,
+ text=white,
+ line width=0.5pt,
+ left color={\setsectiontikzcolor{left}},
+ right color={\setsectiontikzcolor{right}},
+ middle color={\setsectiontikzmiddle},
+ rounded corners=0pt,
+ ] (title) {%
+ \vspace{-1pt}\hspace*{0.25em}\applytextstyle{#1#2}\hspace*{0.25em}%
+ \vspace{3pt}
+ };
+ \end{tikzpicture}%
+ \par\vspace{0.4em}%
+}
+
+\newcommand{\sectionformat at shadedline}[2]{%
+ \noindent
+ \begin{tikzpicture}[baseline]
+ \node[
+ text=\neoschool at headcolor,
+ anchor=base,
+ inner sep=0pt,
+ outer sep=0pt,
+ align=\setsectiontikzalign,
+ text width=\linewidth
+ ] (title) {%
+ \color{\neoschool at headcolor}%
+ \applytextstyle{#1#2}%
+ };
+
+ \ifx\neoschool at sectionalign\neo at align@center
+ \fill[
+ left color=\neoschool at headcolor!20,
+ right color=\neoschool at headcolor
+ ] ([yshift=-0.5em]title.south west) rectangle ++(.33\linewidth,-0.1em);
+ \fill[
+ left color=\neoschool at headcolor,
+ middle color=\neoschool at headcolor!120,
+ right color=\neoschool at headcolor
+ ] ([yshift=-0.5em]title.south west) ++(.33\linewidth,0) rectangle ([yshift=-0.6em]title.south east) ++(-0.33\linewidth,0);
+ \fill[
+ left color=\neoschool at headcolor,
+ right color=\neoschool at headcolor!20
+ ] ([yshift=-0.5em]title.south east) ++(-0.33\linewidth,0) rectangle ([yshift=-0.6em]title.south east);%
+ \else
+ \ifx\neoschool at sectionalign\neo at align@left
+ \fill[%
+ left color=\neoschool at headcolor,
+ right color=\neoschool at headcolor!20
+ ] ([yshift=-0.5em]title.south west) rectangle ([yshift=-0.6em]title.south east);%
+ \else
+ \fill[%
+ left color=\neoschool at headcolor!20,
+ right color=\neoschool at headcolor
+ ] ([yshift=-0.5em]title.south west) rectangle ([yshift=-0.6em]title.south east);%
+ \fi
+ \fi
+ \end{tikzpicture}%
+ \par\vspace{0.7em}%
+}
+
+\newcommand{\sectionformat at other}[2]{%
+ \setsectionraggedstyle
+ \ifx\neoschool at sectionstyle\neo at style@underline
+ \sectionformat at underline{#1}{#2}%
+ \else
+ \sectionformat at default{#1}{#2}%
+ \fi
+}
+
+\newcommand{\sectionformat at underline}[2]{%
+ \parbox[t]{\linewidth}{%
+ \raggedsection
+ {\color{\neoschool at headcolor}\applytextstyle{#1#2}}%
+ \par\nobreak
+ \kern-.75\ht\strutbox\color{\neoschool at headcolor!30}\rule{\linewidth}{1pt}%
+ }%
+}
+
+\newcommand{\sectionformat at default}[2]{%
+ \raggedsection
+ {\color{\neoschool at headcolor}\applytextstyle{#1#2}}%
+ \par\nobreak
+}
+
+%% ==============================================================================
+%% Header and Footer Styles and Setting
+%% ==============================================================================
+
+% Configuration defaults for header fields
+\def\neo at header@type{}
+\def\neo at header@school{}
+\def\neo at header@academy{}
+\def\neo at header@level{}
+\def\neo at header@duration{}
+\def\neo at header@calculator{false}
+\def\neo at header@leftcontent{\faBookOpen}
+\def\neo at header@rightcontent{\faSchool}
+\def\neo at header@leftcontentfill{true}
+\def\neo at header@rightcontentfill{true}
+
+\define at key[neo]{header}{type}{\def\neo at header@type{#1}}
+\define at key[neo]{header}{school}{\def\neo at header@school{#1}}
+\define at key[neo]{header}{academy}{\def\neo at header@academy{#1}}
+\define at key[neo]{header}{level}{\def\neo at header@level{#1}}
+\define at key[neo]{header}{duration}{\def\neo at header@duration{#1}}
+\define at key[neo]{header}{calculator}[false]{%
+ \def\@tempa{#1}%
+ \def\@tempb{true}\def\@tempc{false}\def\@tempd{exam}%
+ \ifx\@tempa\@tempb
+ \def\neo at header@calculator{true}%
+ \else
+ \ifx\@tempa\@tempc
+ \def\neo at header@calculator{false}%
+ \else
+ \ifx\@tempa\@tempd
+ \def\neo at header@calculator{exam}%
+ \else
+ \PackageError{neoschool}{Invalid calculator value: #1}
+ {Use 'true', 'false' or 'exam'}%
+ \fi
+ \fi
+ \fi
+}
+\define at key[neo]{header}{leftcontent}[\faBookOpen]{\def\neo at header@leftcontent{#1}}
+\define at key[neo]{header}{rightcontent}[\faSchool]{\def\neo at header@rightcontent{#1}}
+\define at key[neo]{header}{leftcontentfill}[true]{\def\neo at header@leftcontentfill{#1}}
+\define at key[neo]{header}{rightcontentfill}[true]{\def\neo at header@rightcontentfill{#1}}
+
+\newcommand{\neo at header@setkeys}{\setkeys[neo]{header}}
+
+\newcommand{\neoheader}[1]{%
+ \neo at header@setkeys{#1}%
+}
+
+% Full header configuration
+\ifneo at fullheader
+ \ihead{\neo at header@type}
+ \chead{\@title}
+ \ohead{\neo at header@level}
+ \ifoot{\@date}
+ \cfoot{\neo at header@school}
+ \ofoot{\pagemark}
+ \pagestyle{scrheadings}
+ \thispagestyle{firstpage}
+\else
+ \pagestyle{followingpages}
+ \thispagestyle{firstpage}
+\fi
+
+\ifneo at headrule
+ \KOMAoptions{headsepline=.4pt}
+\fi
+\ifneo at footrule
+ \KOMAoptions{footsepline=.4pt}
+\fi
+\ifneo at headfootrule
+ \KOMAoptions{headsepline=.4pt, footsepline=.4pt}
+\fi
+
+%% ==============================================================================
+%% Evaluation Headers and Special Styles
+%% ==============================================================================
+
+%% Dimensions and Basic Configuration
+%% ----------------------------------
+\newlength{\neo at headerheight}
+\setlength{\neo at headerheight}{35mm}
+
+\newlength{\neo at iconsize}
+\setlength{\neo at iconsize}{1.5cm}
+
+%% Colors Setup
+%% ----------------------------------
+\newcommand{\neo at setupevalcolors}{%
+ \def\neo at evalrulecolor{\neoschool at headfootcolor!25!white}%
+}
+
+%% Basic Title Components
+%% ----------------------------------
+\newcommand{\neo at completetitle}[1][]{%
+ % Main title
+ \node[
+ align=center,
+ anchor=center,
+ text width=0.85\textwidth,
+ #1
+ ] (title) at ([yshift=-24mm]current page.north) {%
+ \baselineskip=30pt
+ \Large
+ \csname\neoschool at titlestyle\endcsname
+ \csname\neoschool at titleweight\endcsname
+ \csname\neoschool at titleshape\endcsname
+ \color{\neoschool at titlecolor}\@title
+ };
+
+ % Subject (if provided)
+ \ifx\@subject\empty\else
+ \node[
+ above=1.5mm of title.north,
+ anchor=south,
+ text width=0.85\textwidth,
+ align=center,
+ font=\normalsize
+ ] {%
+ \usekomafont{subject}{\@subject}
+ };
+ \fi
+
+ % Subtitle (if provided)
+ \ifx\@subtitle\empty\else
+ \node[
+ below=1.5mm of title.south,
+ anchor=north,
+ text width=0.85\textwidth,
+ align=center,
+ font=\normalsize
+ ] {%
+ \usekomafont{subtitle}{\@subtitle}
+ };
+ \fi
+}
+
+\newcommand{\neo at completegradetitle}[1][]{%
+ % Main title
+ \node[
+ align=center,
+ anchor=center,
+ text width=0.85\textwidth,
+ #1
+ ] (title) at ([yshift=-24mm]current page.north) {%
+ \baselineskip=30pt
+ \Large
+ \csname\neoschool at titlestyle\endcsname
+ \csname\neoschool at titleweight\endcsname
+ \csname\neoschool at titleshape\endcsname
+ \color{\neoschool at titlecolor}\@title
+ };
+ % Subject (if provided)
+ \ifx\@subject\empty\else
+ \node[
+ above=1.5mm of title.north,
+ anchor=south,
+ text width=0.85\textwidth,
+ align=center,
+ font=\normalsize
+ ] {%
+ \usekomafont{subject}{\@subject}
+ };
+ \fi
+ % Subtitle (if provided)
+ \ifx\@subtitle\empty\else
+ \node[
+ below=1.5mm of title.south,
+ anchor=north,
+ text width=0.85\textwidth,
+ align=center,
+ font=\normalsize
+ ] {%
+ \usekomafont{subtitle}{\@subtitle}
+ };
+ \fi
+ % Duration
+ \node[
+ below=10mm of title.south,
+ anchor=north,
+ align=center,
+ font=\small\sffamily
+ ] {%
+ Durée : \neo at header@duration\quad\textbullet\quad\neo at calculator
+ };
+ % Name field
+ \node[
+ below=17.5mm of title.south,
+ anchor=north,
+ align=center,
+ font=\small\sffamily
+ ] {%
+ \color{\neoschool at globalcolor}Nom : \vardots[4cm]
+ };
+}
+
+%% ==============================================================================
+%% Enhanced Header without Icons
+%% ==============================================================================
+
+%% Configuration for Simple Header
+%% ----------------------------------
+\newcommand{\neo at setupheaderconfig}{%
+ \def\neo at cornershift{5mm}%
+ \def\neo at topyshift{8mm}%
+ \def\neo at topyshiftgrade{8mm}%
+ \def\neo at bottomyshift{40mm}%
+}
+
+%% Corner Text Nodes
+%% ----------------------------------
+\newcommand{\neo at cornernode}[4]{%
+ \node[
+ anchor=#1,
+ font={\color{\neoschool at headfootcolor}\small\sffamily}
+ ] at ([xshift=#2,yshift=-#3]current page.north #1) {%
+ \begingroup
+ #4%
+ \endgroup
+ };
+}
+
+%% ==============================================================================
+%% Header with Icons
+%% ==============================================================================
+
+%% Icon Node Definition
+%% ----------------------------------
+\newcommand{\neo at iconnode}[5]{%
+ % Icon node with color inversion
+ \node[
+ rectangle,
+ minimum height=\neo at iconsize,
+ minimum width=\neo at iconsize,
+ fill=white,
+ text=\neoschool at titlecolor,
+ draw=\neoschool at titlecolor,
+ line width=0.5pt,
+ anchor=center,
+ font=\normalsize,
+ rounded corners=2pt
+ ] (#1) at #2 {#3};
+
+ % Top text
+ \node[
+ above=2mm of #1,
+ anchor=south,
+ font={\color{\neoschool at headfootcolor}\small\sffamily}
+ ] (#1-top) {%
+ \begingroup
+ #4%
+ \endgroup
+ };
+
+ % Bottom text
+ \node[
+ below=2mm of #1,
+ anchor=north,
+ font={\color{\neoschool at headfootcolor}\small\sffamily}
+ ] (#1-bottom) {%
+ \begingroup
+ #5%
+ \endgroup
+ };
+}
+
+%% ==============================================================================
+%% Header Type Selection and Setup
+%% ==============================================================================
+
+\newcommand{\neo at basetitlecontent}{%
+ \begin{tikzpicture}[remember picture,overlay]
+ \neo at completetitle
+ \end{tikzpicture}%
+}
+
+%% Header without Icons
+\ifneo at eval
+ \newcommand{\neo at evaltitlecontent}{%
+ \neo at setupevalcolors
+ \neo at setupheaderconfig
+ \begin{tikzpicture}[remember picture,overlay]
+ \draw[\neo at evalrulecolor,line width=0.4pt]
+ ([yshift=-1.3\neo at headerheight]current page.north west) --
+ ([yshift=-1.3\neo at headerheight]current page.north east);
+ \neo at completetitle
+ \neo at cornernode{west}{\neo at cornershift}{\neo at topyshift}{\neo at header@type}
+ \neo at cornernode{east}{-\neo at cornershift}{\neo at topyshift}{\neo at header@school}
+ \neo at cornernode{west}{\neo at cornershift}{\neo at bottomyshift}{\neo at header@level}
+ \neo at cornernode{east}{-\neo at cornershift}{\neo at bottomyshift}{\@date}
+ \end{tikzpicture}%
+ \if at twocolumn\vspace{0.95\neo at headerheight}\else\vspace{0.85\neo at headerheight}\fi%
+ }
+
+ \AtBeginDocument{%
+ \let\neo at oldmaketitle\maketitle
+ \renewcommand{\maketitle}{%
+ \if at twocolumn
+ \twocolumn[\neo at evaltitlecontent]%
+ \else
+ \neo at evaltitlecontent
+ \fi
+ \thispagestyle{pagenum}%
+ }%
+ }
+\fi
+
+
+%% Header with Icons
+\ifneo at evalicons
+ \newcommand{\neo at evaliconscontent}{%
+ \neo at setupevalcolors
+ \begin{tikzpicture}[remember picture,overlay]
+ \draw[\neo at evalrulecolor,line width=0.4pt]
+ ([yshift=-1.125\neo at headerheight]current page.north west) --
+ ([yshift=-1.125\neo at headerheight]current page.north east);
+ \neo at completetitle
+ \neo at iconnode{typeicon}
+ {([xshift=30mm,yshift=-0.575\neo at headerheight]current page.north west)}
+ {\neo at header@leftcontent}
+ {\neo at header@type}
+ {\neo at header@level}
+ \neo at iconnode{schoolicon}
+ {([xshift=-30mm,yshift=-0.575\neo at headerheight]current page.north east)}
+ {\neo at header@rightcontent}
+ {\neo at header@school}
+ {\@date}
+ \end{tikzpicture}%
+ \if at twocolumn\vspace{0.85\neo at headerheight}\else\vspace{0.75\neo at headerheight}\fi%
+ }
+
+ \AtBeginDocument{%
+ \let\neo at oldmaketitle\maketitle
+ \renewcommand{\maketitle}{%
+ \if at twocolumn
+ \twocolumn[\neo at evaliconscontent]%
+ \else
+ \neo at evaliconscontent
+ \fi
+ \thispagestyle{pagenum}%
+ }%
+ }
+\fi
+
+%% Header with grading stip without Icons
+\ifneo at evalgrade
+ \newcommand{\neo at evalgradecontent}{%
+ \neo at setupevalcolors
+ \neo at setupheaderconfig
+ \begin{tikzpicture}[remember picture,overlay]
+ \neo at completegradetitle
+ % Top elements
+ \neo at cornernode{west}{\neo at cornershift}{\neo at topyshiftgrade}{\neo at header@type}
+ \neo at cornernode{east}{-\neo at cornershift}{\neo at topyshiftgrade}{\neo at header@level}
+
+ % Bottom elements
+ \node[
+ anchor=west,
+ font={\small\sffamily}
+ ] at ([xshift=5mm,yshift=9mm]current page.south west) {%
+ \color{\neoschool at headfootcolor}\@date%
+ };
+
+ \node[
+ anchor=east,
+ font={\small\sffamily}
+ ] at ([xshift=-5mm,yshift=9mm]current page.south east) {%
+ \color{\neoschool at headfootcolor}\neo at header@school%
+ };
+
+ % Page number in the center bottom
+ \node[
+ font=\small\sffamily,
+ inner sep=3mm
+ ] at ([yshift=9mm]current page.south) {%
+ \color{\neoschool at headfootcolor}\thepage
+ };
+ \end{tikzpicture}%
+
+ \if at twocolumn\vspace{\neo at headerheight}\else\vspace{0.95\neo at headerheight}\fi%
+
+ \ifx\neoschool at totalpoints\@empty\gradingstrip\else\gradingstrip[\neoschool at totalpoints]\fi
+ \vspace{1.5em}%
+ }
+
+ \AtBeginDocument{%
+ \let\neo at oldmaketitle\maketitle
+ \renewcommand{\maketitle}{%
+ \if at twocolumn
+ \twocolumn[\neo at evalgradecontent]%
+ \else
+ \neo at evalgradecontent
+ \fi
+ \thispagestyle{empty}%
+ }%
+ }
+\fi
+
+%% Header with grading strip with Icons
+\ifneo at evaliconsgrade
+ \newcommand{\neo at maketitlecontent}{%
+ \begin{tikzpicture}[remember picture,overlay]
+ \neo at completegradetitle
+ \neo at iconnode{typeicon}
+ {([xshift=30mm,yshift=-0.575\neo at headerheight]current page.north west)}
+ {\neo at header@leftcontent}
+ {\neo at header@type}
+ {\neo at header@level}
+ \neo at iconnode{schoolicon}
+ {([xshift=-30mm,yshift=-0.575\neo at headerheight]current page.north east)}
+ {\neo at header@rightcontent}
+ {\neo at header@school}
+ {\@date}
+ \end{tikzpicture}%
+
+ \if at twocolumn\vspace{\neo at headerheight}\else\vspace{0.95\neo at headerheight}\fi%
+
+ \ifx\neoschool at totalpoints\@empty\gradingstrip\else\gradingstrip[\neoschool at totalpoints]\fi
+ \vspace{1.5em}%
+ }
+
+ \AtBeginDocument{%
+ \let\neo at oldmaketitle\maketitle
+ \renewcommand{\maketitle}{%
+ \if at twocolumn
+ \twocolumn[\neo at maketitlecontent]%
+ \else
+ \neo at maketitlecontent
+ \fi
+ \thispagestyle{pagenum}%
+ }%
+ }
+\fi
+
+%% Calculator Notice
+%% ----------------------------------
+\newcommand{\neo at calculator}{%
+ \small L'usage de la calculatrice%
+ \ifnum\pdf at strcmp{\neo at header@calculator}{true}=0
+ \ est autorisé.%
+ \else\ifnum\pdf at strcmp{\neo at header@calculator}{exam}=0
+ \ est autorisé uniquement en mode examen.%
+ \else
+ \ n'est pas autorisé.%
+ \fi\fi
+ \par
+}
+
+%% Exam Header
+%% ----------------------------------
+%% Exam style helper commands and setup
+\newcommand{\neo at gettext}[1]{%
+ \ifneo at french
+ \ifcase#1\or Établissement\or Nom\or Classe\or Durée\or Date\or Note\or Appréciation\fi
+ \else\ifneo at german
+ \ifcase#1\or Einrichtung\or Name\or Klasse\or Dauer\or Datum\or Note\or Bewertung\fi
+ \else
+ \ifcase#1\or Institution\or Name\or Class\or Duration\or Date\or Mark\or Appreciation\fi
+ \fi\fi
+}
+
+\newcommand{\examfield}[2]{%
+ \textbf{#1}\hspace{0.5em}#2%
+}
+
+%% Exam title style
+\ifneo at exam
+ \newcommand{\neo at examcontent}{%
+ \vspace*{-2cm}%
+ \begin{tcolorbox}[%
+ enhanced,
+ frame hidden,
+ colback=white,
+ top=\baselineskip,
+ bottom=\baselineskip,
+ left=0pt,
+ right=0pt,
+ width=\textwidth,
+ after skip=0pt,
+ ]
+ {\renewcommand\arraystretch{1.25}
+ \begin{tblr}{X[4,l]X[2,c]X[3,r]}
+ \examfield{\neo at gettext{1} :}{\neo at header@school} & &
+ \examfield{\neo at gettext{5} :}{\@date} \\
+ \examfield{\neo at gettext{2} :}{\vardots[4cm]} & &
+ \examfield{\neo at gettext{3} :}{\neo at header@level}
+ \end{tblr}
+ }
+
+ \vspace{\baselineskip}
+ \centering
+
+ \begin{minipage}[c]{\linewidth}
+ \centering
+ \neo at header@type
+ \end{minipage}\vspace{.85\baselineskip}
+
+ \LARGE\csname\neoschool at titlestyle\endcsname
+ \csname\neoschool at titleweight\endcsname
+ \csname\neoschool at titleshape\endcsname
+ \color{\neoschool at titlecolor}
+ \@title\vspace{.75\baselineskip}
+
+ \normalsize\normalfont\color{black}
+ \begin{minipage}[c]{\linewidth}
+ \centering
+ \examfield{\neo at gettext{4} :}{\neo at header@duration}\vspace{\baselineskip}
+
+ \neo at calculator
+ \end{minipage}
+ \end{tcolorbox}
+
+ \ifx\neoschool at totalpoints\@empty\gradingstrip\else\gradingstrip[\neoschool at totalpoints]\fi
+ \vspace{2em}
+ }
+
+ \AtBeginDocument{%
+ \let\neo at oldmaketitle\maketitle
+ \renewcommand{\maketitle}{%
+ \if at twocolumn
+ \twocolumn[\neo at examcontent]%
+ \else
+ \neo at examcontent
+ \fi
+ \thispagestyle{pagenum}%
+ }%
+ }
+\fi
+
+%% French Exam Headers
+%% ----------------------------------
+% Common exam title commands
+\NewDocumentCommand{\neo at examtitle}{m}{%
+ {\color{\neoschool at titlecolor}
+ \csname\neoschool at titlestyle\endcsname
+ \csname\neoschool at titleweight\endcsname
+ \csname\neoschool at titleshape\endcsname
+ \LARGE\MakeUppercase{#1}\par}
+}
+
+\NewDocumentCommand{\neo at examsubtitle}{m}{%
+ {\color{\neoschool at titlecolor!85!black}
+ \csname\neoschool at titlestyle\endcsname
+ \Large #1\par}
+}
+
+\NewDocumentCommand{\neo at examinfo}{m}{%
+ {\color{\neoschool at titlecolor!75!black}
+ \csname\neoschool at titlestyle\endcsname
+ \large #1\par}
+}
+
+%% Mock exam style
+\ifneo at mockexam
+ \newcounter{mockexampages}
+ \AtEndDocument{%
+ \immediate\write\@auxout{%
+ \string\setcounter{mockexampages}{\thepage}%
+ }%
+ }
+ \newcommand{\neo at mockexamcontent}{%
+ \vspace*{1cm}%
+ \begin{center}
+ % Institution info
+ {\textsc{\neo at examinfo{\neo at header@school}}}
+ \vspace*{1cm}%
+ {\textsc{\neo at examinfo{Académie de \neo at header@academy}}}
+ \vspace*{\stretch{2.5}}%
+
+ % Title and session
+ {\LARGE\bfseries\csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ \csname\neoschool at headshape\endcsname
+ \neo at examtitle{\neo at header@type}}
+ \vspace*{0.8cm}%
+ {\color{\neoschool at titlecolor!75!black}\itshape Session \@date}
+ \vspace*{1.5cm}%
+
+ % Subject and level
+ {\Large\csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ \csname\neoschool at headshape\endcsname
+ \neo at examsubtitle{ÉPREUVE DE \MakeUppercase{\@subject}}}
+ \vspace*{1cm}%
+ {\neo at examinfo{\neo at header@level}}
+ \vspace*{\stretch{2}}%
+
+ % Duration
+ {\textit{Durée : \neo at header@duration}}
+ \vspace*{1.2cm}%
+
+ % Instructions
+ \begin{minipage}{0.8\textwidth}
+ \begin{center}
+ \setlength{\baselineskip}{1.6\baselineskip}%
+ \neo at calculator
+ \vspace*{0.8cm}%
+ La qualité de la rédaction et la rigueur des raisonnements
+ seront prises en compte dans l'évaluation des copies.
+ \vspace*{0.8cm}
+
+ Toute tentative, même partielle ou inachevée, sera valorisée.
+ \end{center}
+ \end{minipage}
+ \vspace*{\stretch{1.5}}%
+
+ % Page count
+ {\color{\neoschool at titlecolor!65!black}%
+ Ce document comporte \arabic{mockexampages}~pages numérotées de 1/\arabic{mockexampages} à \arabic{mockexampages}/\arabic{mockexampages}.}
+ \vspace*{1.5cm}%
+ \end{center}
+ \thispagestyle{pagenum}%
+ \clearpage\newpage
+ }
+ \AtBeginDocument{%
+ \let\neo at oldmaketitle\maketitle
+ \renewcommand{\maketitle}{%
+ \if at twocolumn
+ \onecolumn
+ \neo at mockexamcontent
+ \twocolumn
+ \else
+ \neo at mockexamcontent
+ \fi
+ }%
+ }
+\fi
+
+\ifneo at shortexam
+ \newcommand{\neo at shortexamcontent}{%
+ \vspace*{-0.5cm}
+ \begin{center}
+ {\Large \csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ \csname\neoschool at headshape\endcsname
+ \neo at examtitle{\neo at header@type}}
+
+ \vspace{3mm}
+ {\small \textit{Session \@date}}
+
+ \vspace{5mm}
+ {\large \csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ \csname\neoschool at headshape\endcsname
+ \neo at examsubtitle{ÉPREUVE DE \MakeUppercase{\@subject}}}
+
+ \vspace{3mm}
+ {\small \neo at examinfo{\neo at header@level}}
+
+ \vspace{5mm}
+ {\small \textit{Durée : \neo at header@duration}}
+
+ \vspace{5mm}
+ \neo at calculator
+
+ \vspace{15mm}
+ {\color{\neoschool at headfootcolor}%
+ \rule{\linewidth}{0.5pt}}
+ \end{center}
+ \vspace{10mm}%
+ }
+
+ \AtBeginDocument{%
+ \let\neo at oldmaketitle\maketitle
+ \renewcommand{\maketitle}{%
+ \if at twocolumn
+ \twocolumn[\neo at shortexamcontent]%
+ \else
+ \neo at shortexamcontent
+ \fi
+ \thispagestyle{pagenum}%
+ }%
+ }
+\fi
+
+%% Short Eval Header Style
+%% ----------------------------------
+\newlength{\sideWidth}
+\setlength{\sideWidth}{4.5cm}
+
+\ifneo at shorteval
+ \newcommand{\neo at shortevalcontent}{%
+ \begin{tikzpicture}[remember picture,overlay]
+ \draw[line width=0.4pt, \neoschool at headfootcolor!50!white]
+ ([yshift=-21mm]current page.north west) --
+ ([yshift=-21mm]current page.north east);
+ \path let \p1=(current page.east) in node[
+ anchor=west,
+ align=left,
+ text width=\sideWidth,
+ font=\small\sffamily,
+ text=\neoschool at headfootcolor
+ ] at ([xshift=0.75cm,yshift=-11mm]current page.north west)
+ {Nom :\\[1mm]
+ \neo at header@type};
+ \path let \p1=(current page.east) in node[
+ anchor=center,
+ align=center,
+ text width={\dimexpr\paperwidth-2\sideWidth-2cm},
+ font=\Large
+ ] at ([yshift=-11mm]current page.north)
+ {\color{\neoschool at titlecolor}%
+ \csname\neoschool at titlestyle\endcsname%
+ \csname\neoschool at titleweight\endcsname%
+ \csname\neoschool at titleshape\endcsname%
+ \@title};
+ \path let \p1=(current page.east) in node[
+ anchor=east,
+ align=right,
+ text width=\sideWidth,
+ font=\small\sffamily,
+ text=\neoschool at headfootcolor
+ ] at ([xshift=-0.75cm,yshift=-11mm]current page.north east)
+ {\neo at header@school\\[1mm]
+ \neo at header@level};
+ \end{tikzpicture}%
+ \vspace{2em}%
+ }
+
+ \AtBeginDocument{%
+ \let\neo at oldmaketitle\maketitle
+ \renewcommand{\maketitle}{%
+ \if at twocolumn
+ \twocolumn[\neo at shortevalcontent]%
+ \else
+ \neo at shortevalcontent
+ \fi
+ \thispagestyle{pagenum}%
+ }%
+ }
+\fi
+
+
+%% Short Title Header Style
+%% ----------------------------------
+\ifneo at shorttitle
+ \newcommand{\neo at shorttitlecontent}{%
+ \begin{tikzpicture}[remember picture,overlay]
+ \draw[line width=0.4pt, \neoschool at headfootcolor!50!white]
+ ([yshift=-21mm]current page.north west) --
+ ([yshift=-21mm]current page.north east);
+ \path let \p1=(current page.east) in node[
+ anchor=center,
+ align=center,
+ text width={\dimexpr\paperwidth-2cm},
+ font=\LARGE
+ ] at ([yshift=-11mm]current page.north)
+ {\color{\neoschool at titlecolor}%
+ \csname\neoschool at titlestyle\endcsname%
+ \csname\neoschool at titleweight\endcsname%
+ \csname\neoschool at titleshape\endcsname%
+ \@title};
+ \end{tikzpicture}%
+ \if at twocolumn\vspace{2em}\else\vspace{1em}\fi%
+ }
+
+ \AtBeginDocument{%
+ \let\neo at oldmaketitle\maketitle
+ \renewcommand{\maketitle}{%
+ \if at twocolumn
+ \twocolumn[\neo at shorttitlecontent]%
+ \else
+ \neo at shorttitlecontent
+ \fi
+ \thispagestyle{firstpage}%
+ }%
+ }
+\fi
+
+%% Short Lesson Header Style
+%% ----------------------------------
+\ifneo at shortlesson
+ \newcommand{\neo at shortlessoncontent}{%
+ \begin{tikzpicture}[remember picture,overlay]
+ % Line under the header
+ \draw[line width=0.4pt, \neoschool at headfootcolor!50!white]
+ ([yshift=-21mm]current page.north west) --
+ ([yshift=-21mm]current page.north east);
+
+ % Left side - Type
+ \path let \p1=(current page.east) in node[
+ anchor=west,
+ align=left,
+ text width=\sideWidth,
+ font=\small\sffamily,
+ text=\neoschool at headfootcolor
+ ] at ([xshift=0.75cm,yshift=-11mm]current page.north west)
+ {\neo at header@type};
+
+ % Center - Title with dynamic width
+ \path let \p1=(current page.east) in node[
+ anchor=center,
+ align=center,
+ text width={\dimexpr\paperwidth-2\sideWidth-2cm},
+ font=\Large
+ ] at ([yshift=-11mm]current page.north)
+ {\color{\neoschool at titlecolor}%
+ \csname\neoschool at titlestyle\endcsname%
+ \csname\neoschool at titleweight\endcsname%
+ \csname\neoschool at titleshape\endcsname%
+ \@title};
+
+ % Right side - Level
+ \path let \p1=(current page.east) in node[
+ anchor=east,
+ align=right,
+ text width=\sideWidth,
+ font=\small\sffamily,
+ text=\neoschool at headfootcolor
+ ] at ([xshift=-0.75cm,yshift=-11mm]current page.north east)
+ {\neo at header@level};
+ \end{tikzpicture}%
+ \if at twocolumn\vspace{3em}\else\vspace{1.5em}\fi%
+ }
+
+ \AtBeginDocument{%
+ \let\neo at oldmaketitle\maketitle
+ \renewcommand{\maketitle}{%
+ \if at twocolumn
+ \twocolumn[\neo at shortlessoncontent]%
+ \else
+ \neo at shortlessoncontent
+ \fi
+ \thispagestyle{firstpage}%
+ }%
+ }
+\fi
+
+%% Bubbles Header
+%% ----------------------------------
+\ifneo at bubbles
+ \def\neo at bubbles@colbubbles{\neoschool at titlecolor}
+ \define at key[neo]{bubbles}{colbubbles}{\def\neo at bubbles@colbubbles{#1}}
+ \newcommand{\neo at bubbles@setkeys}{\setkeys[neo]{bubbles}}
+
+ \neo at bubbles@setkeys{%
+ colbubbles=\neoschool at titlecolor,
+ }
+
+ \newcommand{\neo at drawbubble}[5]{%
+ \pgfmathsetmacro{\opacityValue}{#1}
+ \ifneo at unicolor
+ \colorlet{currentcolor}{\neo at bubbles@colbubbles}
+ \else
+ \ifcase#2
+ \colorlet{currentcolor}{\neoschool at titlecolor}
+ \or
+ \colorlet{currentcolor}{\neoschool at headcolor}
+ \or
+ \colorlet{currentcolor}{theoremColor}
+ \or
+ \colorlet{currentcolor}{definitionColor}
+ \or
+ \colorlet{currentcolor}{methodColor}
+ \or
+ \colorlet{currentcolor}{applicationColor}
+ \fi
+ \fi
+ \colorlet{drawcolor}{currentcolor!75}
+ \fill[
+ color=currentcolor!#3!white,
+ draw=drawcolor,
+ line width=0.7pt,
+ opacity=#4
+ ] #5;
+ }
+
+ \newcommand{\neo at bubblescontent}{%
+ \begin{tikzpicture}[remember picture,overlay]
+ \def\ellipseWidth{20cm}
+ \def\ellipseHeight{5cm}
+ \def\numBubbles{500}
+ \coordinate (ellipseCenter) at ([yshift=-4cm]current page.north);
+
+ \foreach \i in {1,...,\numBubbles} {%
+ \pgfmathsetmacro{\angle}{random()*360}
+ \pgfmathsetmacro{\rawradius}{rand}
+ \pgfmathsetmacro{\radius}{pow(\rawradius, 2)}
+ \pgfmathsetmacro{\x}{\radius*\ellipseWidth/2.25*cos(\angle)}
+ \pgfmathsetmacro{\y}{\radius*\ellipseHeight/2.25*sin(\angle)}
+
+ \pgfmathrandominteger{\sizeGroup}{1}{3}
+ \ifnum\sizeGroup=1
+ \pgfmathsetmacro{\bubbleRadius}{rand*12 + 5}
+ \else\ifnum\sizeGroup=2
+ \pgfmathsetmacro{\bubbleRadius}{rand*8 + 3}
+ \else
+ \pgfmathsetmacro{\bubbleRadius}{rand*4 + 1}
+ \fi\fi
+
+ \pgfmathsetmacro{\op}{0.4 + 0.2*rand}
+
+ \pgfmathrandominteger{\col}{0}{4}
+ \pgfmathrandominteger{\p}{50}{90}
+ \neo at drawbubble{\op}{\col}{\p}{\op}
+ {([xshift=\x, yshift=\y]ellipseCenter) circle (\bubbleRadius pt)}
+ }
+
+ \node[%
+ anchor=north,
+ align=center,
+ inner sep=3mm,
+ minimum width=0.5\linewidth,
+ text opacity=1,
+ draw opacity=0.85,
+ fill=white,
+ rounded corners=2pt,
+ draw=\neoschool at headfootcolor,
+ line width=0.4pt
+ ] at ([yshift=0.5cm]ellipseCenter)
+ {\csname\neoschool at titlestyle\endcsname\csname\neoschool at titleweight\endcsname\csname\neoschool at titleshape\endcsname
+ \color{\neo at bubbles@colbubbles}\LARGE \@title};
+ \end{tikzpicture}%
+ \if at twocolumn\vspace{6cm}\else\vspace{11em}\fi%
+ }
+
+ \AtBeginDocument{%
+ \let\neo at oldmaketitle\maketitle
+ \renewcommand{\maketitle}{%
+ \if at twocolumn
+ \twocolumn[\neo at bubblescontent]%
+ \else
+ \neo at bubblescontent
+ \fi
+ \thispagestyle{firstpage}%
+ }%
+ }
+\fi
+
+%% Short Bubbles Header
+\ifneo at shortbubbles
+ \def\neo at bubbles@colbubbles{\neoschool at titlecolor}
+ \define at key[neo]{bubbles}{colbubbles}{\def\neo at bubbles@colbubbles{#1}}
+ \newcommand{\neo at bubbles@setkeys}{\setkeys[neo]{bubbles}}
+
+ \neo at bubbles@setkeys{%
+ colbubbles=\neoschool at titlecolor,
+ }
+
+ \newcommand{\neo at drawbubble}[5]{%
+ \pgfmathsetmacro{\opacityValue}{#1}
+ \ifneo at unicolor
+ \colorlet{currentcolor}{\neo at bubbles@colbubbles}
+ \else
+ \ifcase#2
+ \colorlet{currentcolor}{\neoschool at titlecolor}
+ \or
+ \colorlet{currentcolor}{\neoschool at headcolor}
+ \or
+ \colorlet{currentcolor}{theoremColor}
+ \or
+ \colorlet{currentcolor}{definitionColor}
+ \or
+ \colorlet{currentcolor}{methodColor}
+ \or
+ \colorlet{currentcolor}{applicationColor}
+ \fi
+ \fi
+ \colorlet{drawcolor}{currentcolor!75}
+ \fill[
+ color=currentcolor!#3!white,
+ draw=drawcolor,
+ line width=0.7pt,
+ opacity=#4
+ ] #5;
+}
+
+ \newcommand{\neo at shortbubblescontent}{%
+ \ifx\@subtitle\empty
+ \setlength{\neo at headerheight}{7em}
+ \else
+ \setlength{\neo at headerheight}{8em}
+ \fi
+
+ \begin{tikzpicture}[remember picture,overlay]
+ \def\myheight{4em}
+ % Set dimensions of the ellipse
+ \def\ellipseWidth{12cm}
+ \def\ellipseHeight{3cm}
+ \def\numBubbles{300}
+ \coordinate (ellipseCenter) at ([yshift=-.9\neo at headerheight]current page text area.north);
+
+ \foreach \i in {1,...,\numBubbles} {%
+ \pgfmathsetmacro{\angle}{random()*360}
+ \pgfmathsetmacro{\rawradius}{rand}
+ \pgfmathsetmacro{\radius}{pow(\rawradius, 2)} % Non-linear distribution
+ \pgfmathsetmacro{\x}{\radius * \ellipseWidth/2 * cos(\angle)}
+ \pgfmathsetmacro{\y}{\radius * \ellipseHeight/2 * sin(\angle)}
+
+ \pgfmathrandominteger{\sizeGroup}{1}{3}
+ \ifnum\sizeGroup=1
+ \pgfmathsetmacro{\bubbleRadius}{rand*8 + 3}
+ \else\ifnum\sizeGroup=2
+ \pgfmathsetmacro{\bubbleRadius}{rand*5 + 2}
+ \else
+ \pgfmathsetmacro{\bubbleRadius}{rand*3 + 1}
+ \fi\fi
+
+ \pgfmathsetmacro{\op}{0.3 + 0.4*rand}
+
+ \pgfmathrandominteger{\col}{0}{4}
+ \pgfmathrandominteger{\p}{50}{90}
+ \neo at drawbubble{\op}{\col}{\p}{\op}
+ {([xshift=\x, yshift=\y]ellipseCenter) circle (\bubbleRadius pt)}
+ }
+
+ \node[\neoschool at titlecolor] at
+ ([yshift=0.5\myheight]current page text area.north) (title) {%
+ \LARGE\csname\neoschool at titlestyle\endcsname
+ \csname\neoschool at titleweight\endcsname
+ \csname\neoschool at titleshape\endcsname
+ \@title
+ };
+
+ \ifx\@subtitle\empty\else
+ \node[subtitleColor, below=0.3em of title] {%
+ \large\csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\csname\neoschool at headshape\endcsname\@subtitle
+ };
+ \fi
+ \end{tikzpicture}%
+ \if at twocolumn
+ \vspace{1.75\neo at headerheight}%
+ \else
+ \vspace{1.5\neo at headerheight}%
+ \fi
+ }
+
+ \AtBeginDocument{%
+ \let\neo at oldmaketitle\maketitle
+ \renewcommand{\maketitle}{%
+ \if at twocolumn
+ \twocolumn[\neo at shortbubblescontent]%
+ \else
+ \neo at shortbubblescontent
+ \fi
+ \thispagestyle{firstpage}%
+ }%
+ }
+\fi
+
+
+%% ==============================================================================
+%% Box Styles and Environment
+%% ==============================================================================
+
+%% Common Style Parameters
+%% ----------------------------------
+
+%% Mathematical Boxes
+%% ----------------------------------
+% Standard math box with configurable colors%
+\NewDocumentCommand\mathbox{D<>{white}O{definitionColor}}{%
+\tcboxmath[%
+ colback=#1,
+ colframe=#2,
+ size=fbox,
+ arc=3pt,
+ boxrule=0.8pt
+]
+}
+
+% Math highlighting with size adaptation
+\newcommand{\mhl}[2][yellow]{%
+ \mathchoice
+ {\colorbox{#1}{$\displaystyle#2$}}
+ {\colorbox{#1}{$\textstyle#2$}}
+ {\colorbox{#1}{$\scriptstyle#2$}}
+ {\colorbox{#1}{$\scriptscriptstyle#2$}}
+}
+
+%% Answer Fields
+%% ----------------------------------
+% Empty box for answers
+\newcommand{\emptybox}[2]{%
+ \begin{tcolorbox}[%
+ enhanced,
+ boxrule=1pt,
+ arc=5pt,
+ boxsep=0pt,
+ width=#1,
+ height=#2,
+ colback=exerciseColor!5!white,
+ frame hidden,
+ before skip=.5\baselineskip,
+ after skip=.5\baselineskip
+ ]
+ \null
+ \end{tcolorbox}
+}
+
+% Answer field with line spacing
+\newlength{\neo at answerbaselineskip}
+\setlength{\neo at answerbaselineskip}{1.35\baselineskip}
+
+\newcommand{\answerfield}[2][.975\linewidth]{%
+ \vspace{0.25\baselineskip}%
+ \noindent
+ \colorbox{exerciseColor!5!white}{%
+ \parbox{#1}{%
+ \phantom{\rule{1pt}{#2\neo at answerbaselineskip}}
+ }
+ }
+ \vspace{0.1cm}
+}
+
+% Answer field with frame and white background
+\newcommand{\answerframe}[2][\linewidth]{%
+ \noindent\par
+ \begin{tcolorbox}[%
+ enhanced,
+ boxrule=0.8pt,
+ colframe=exerciseColor!50,
+ colback=white,
+ width=#1,
+ height=#2\neo at answerbaselineskip,
+ nobeforeafter,
+ arc=2pt,
+ boxsep=0pt,
+ left=2pt,
+ right=2pt,
+ top=2pt,
+ bottom=2pt,
+ before skip=.5\baselineskip,
+ after skip=.5\baselineskip,
+ ]
+ \phantom{\rule{1pt}{#2\neo at answerbaselineskip}}
+ \end{tcolorbox}
+}
+
+%% Solution and Application Boxes
+%% ----------------------------------
+% Solution box with fixed dimensions
+\newcommand{\solutionbox}[3][\linewidth]{%
+ \begin{tcolorbox}[%
+ enhanced,
+ boxrule=1pt,
+ fontupper=\color{\neoschool at globalcolor},
+ arc=5pt,
+ boxsep=0mm,
+ width=#1,
+ height=#2,
+ colback=solutionColor!5!white,
+ frame hidden,
+ before skip=0.5\baselineskip,
+ after skip=\baselineskip
+ ]
+ #3
+ \end{tcolorbox}
+ \par%
+}
+
+% Colored box for applications
+\newcommand{\neocolorbox}[2][applicationColor]{%
+ \begin{tcolorbox}[%
+ enhanced,
+ fontupper=\color{\neoschool at globalcolor},
+ boxrule=1pt,
+ sharpish corners,
+ width=\linewidth,
+ colback=#1!5!white,
+ frame hidden,
+ before skip=12pt plus 2pt,
+ after skip=18pt plus 2pt
+ ]
+ #2
+ \end{tcolorbox}
+}
+
+%% Inline Boxes
+%% ----------------------------------
+\NewDocumentCommand{\inlinebox}{ O{definitionColor} O{white} O{definitionColor} m }{%
+ \tcbox[%
+ enhanced,
+ nobeforeafter,
+ tcbox raise base,
+ boxrule=0.4pt,
+ top=0mm,
+ bottom=0mm,
+ right=0mm,
+ left=0mm,
+ arc=1pt,
+ boxsep=2pt,
+ colback=#1,
+ colupper=#2,
+ colframe=#3
+ ]{#4}%
+}
+
+%% General Purpose Box Environment
+%% ----------------------------------
+\NewDocumentEnvironment{neobox}{ s O{} }{%
+ \begin{tcolorbox}[%
+ \IfBooleanTF{#1}{frame hidden}{},
+ colframe=\neoschool at headcolor,
+ colback=\neo at tcbcolback,
+ enhanced,
+ breakable,
+ boxrule=1pt,
+ arc=4pt,
+ sharp corners,
+ left=0.65em,
+ right=0.65em,
+ #2
+ ]
+ }{%
+ \end{tcolorbox}
+}
+
+% Define starred version
+\ExplSyntaxOn
+\cs_new:cpn {neobox*} {\neobox*}
+\cs_new_eq:cN {endneobox*} \endneobox
+\ExplSyntaxOff
+
+%% Side-by-Side Box Environment
+%% ----------------------------------
+% Base colors for example boxes
+\colorlet{neo at examplecomp}{-exampleColor}
+\colorlet{neo at exampledark}{neo at examplecomp!50!black}
+
+% Environment definition
+\newtcolorbox{sidebyside}[1][]{%
+ sidebyside,
+ enhanced,
+ bicolor,
+ sharp corners,
+ arc=1pt,
+ colback=exampleColor!5,
+ colbacklower=exampleColor!10,
+ colframe=exampleColor!85!black,
+ left=0pt,
+ right=0pt,
+ boxrule=1pt,
+ fonttitle=\sffamily\bfseries,
+ lefttitle=1.7mm,
+ before skip=\baselineskip,
+ after skip=\baselineskip,
+ #1
+}
+
+%% ==============================================================================
+%% Listings Styles and Setting
+%% ==============================================================================
+
+%% TColorBox Styles
+%% ----------------------------------
+
+%% Base Box Parameters
+%% ----------------------------------
+\tcbset{%
+ neo at commonbox/.style={%
+ enhanced,
+ boxrule=\neo at thmborder,
+ top=0pt,
+ bottom=0pt,
+ left=2mm,
+ right=2mm,
+ fonttitle=\small\csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\csname\neoschool at headshape\endcsname,
+ coltitle=\neo at tcbcolback,
+ before skip=\baselineskip,
+ after skip=\baselineskip
+ }
+}
+
+%% Box Styles
+%% ----------------------------------
+\def\neo at notitle{notitle}
+
+\tcbset{%
+ box-classic/.style={%
+ neo at commonbox,
+ colback=white,
+ colframe=codeColor,
+ frame style={opacity=0.5},
+ boxrule=0.5pt,
+ arc=0pt,
+ toptitle=2pt,
+ bottomtitle=2pt,
+ colbacktitle=white,
+ coltitle=black,
+ fonttitle=\sffamily
+ },
+ box-bottomtitle/.style={%
+ neo at commonbox,
+ enhanced,
+ frame hidden,
+ colback=white,
+ colbacktitle=white,
+ coltitle=black,
+ fonttitle=\small\sffamily,
+ attach boxed title to bottom center,
+ bottom=0pt,
+ boxed title style={%
+ frame hidden,
+ colframe=white,
+ top=0pt,
+ }
+ },
+ box-bottomtitlef/.style={
+ neo at commonbox,
+ enhanced,
+ colframe=codeColor,
+ frame style={opacity=0.5},
+ boxrule=0.5pt,
+ colback=white,
+ colbacktitle=white,
+ coltitle=black,
+ fonttitle=\small\sffamily,
+ sharp corners,
+ attach boxed title to bottom center,
+ top=0pt,
+ bottom=0pt,
+ boxed title style={%
+ frame hidden,
+ colframe=white,
+ top=5pt
+ }
+ },
+ box-fancy/.style={%
+ neo at commonbox,
+ colback=codebackColor,
+ colframe=codeColor,
+ arc=\neoschool at boxarc,
+ toptitle=1pt,
+ bottomtitle=2pt,
+ colbacktitle=codeColor,
+ drop fuzzy shadow
+ },
+ box-minimal/.style={%
+ neo at commonbox,
+ colback=white,
+ colframe=codeColor,
+ frame style={opacity=0.5},
+ toptitle=2pt,
+ bottomtitle=2pt,
+ boxrule=0.3pt,
+ arc=0pt,
+ colbacktitle=white,
+ coltitle=codeColor
+ },
+ box-elegant/.style={%
+ neo at commonbox,
+ colback=codebackColor,
+ colframe=codeColor,
+ toptitle=1pt,
+ bottomtitle=2pt,
+ sharp corners=all,
+ drop fuzzy shadow
+ },
+ box-diagonal/.style={%
+ neo at commonbox,
+ colback=codebackColor,
+ colframe=codeColor,
+ toptitle=1pt,
+ bottomtitle=2pt,
+ arc=\neoschool at boxarc,
+ sharp corners=southwest,
+ sharp corners=northeast
+ },
+ box-bevel/.style={%
+ neo at commonbox,
+ colback=codebackColor,
+ colframe=codeColor,
+ toptitle=1pt,
+ bottomtitle=2pt,
+ arc=\neoschool at boxarc,
+ sharp corners=southeast,
+ sharp corners=northwest
+ },
+ box-corner/.style={%
+ neo at commonbox,
+ colback=codebackColor,
+ colframe=codeColor,
+ toptitle=1pt,
+ bottomtitle=2pt,
+ sharp corners=downhill,
+ rounded corners=northeast,
+ rounded corners=northwest,
+ arc=\neoschool at boxarc
+ },
+ box-rounded/.style={%
+ neo at commonbox,
+ colback=codebackColor,
+ colframe=codeColor,
+ rounded corners,
+ toptitle=1pt,
+ bottomtitle=2pt,
+ arc=\neoschool at boxarc,
+ },
+ box-downhill/.style={%
+ neo at commonbox,
+ colback=codebackColor,
+ colframe=codeColor,
+ sharp corners=downhill,
+ arc=\neoschool at boxarc,
+ top=0mm,
+ bottom=0mm,
+ fontupper=\color{\neoschool at globalcolor},
+ attach boxed title to top right={yshift=-\tcboxedtitleheight},
+ boxed title style={%
+ colback=codeColor,
+ colframe=codeColor,
+ sharp corners=downhill,
+ arc=.2cm,
+ top=1pt,
+ bottom=1pt,
+ left=2pt,
+ right=2pt
+ },
+ }
+}
+
+\ifneo at unicolor
+ \def\neo at keywordstyle{\color{\neoschool at headcolor}\bfseries}
+ \def\neo at commentstyle{\color{alternateColor}}
+ \def\neo at stringstyle{\color{\neoschool at headcolor!85}}
+ \def\neo at emphstyle{\color{\neoschool at headcolor}\bfseries}
+\else
+ \def\neo at keywordstyle{\color{codeKeyword}\bfseries}
+ \def\neo at commentstyle{\color{codeComment}}
+ \def\neo at stringstyle{\color{codeString}}
+ \def\neo at emphstyle{\color{codeEmph}\bfseries}
+\fi
+
+\ifneo at listings
+
+ %% Base Listing Style
+ %% ----------------------------------
+ \lstdefinestyle{neo at lst@base}{%
+ basicstyle=\ttfamily\small,
+ columns=fullflexible,
+ breaklines=true,
+ keepspaces=true,
+ showstringspaces=false,
+ tabsize=4,
+ inputencoding=utf8,
+ extendedchars=true,
+ escapeinside={(*@}{@*)},
+ aboveskip=.25\baselineskip,
+ belowskip=.25\baselineskip,
+ literate={%
+ á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
+ {Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
+ {à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
+ {À}{{\`A}}1 {È}{{\`E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
+ {ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
+ {Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
+ {â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
+ {Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
+ {œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1
+ {ẞ}{{\SS}}1 {ç}{{\c{c}}}1 {Ç}{{\c{C}}}1 {ø}{{\o}}1 {Ø}{{\O}}1
+ {å}{{\aa}}1 {Å}{{\AA}}1 {ã}{{\~a}}1 {õ}{{\~o}}1 {Ã}{{\~A}}1
+ {Õ}{{\~O}}1 {ñ}{{\~n}}1 {Ñ}{{\~N}}1 {¿}{{?`}}1 {¡}{{!`}}1
+ {°}{{\textdegree}}1 {º}{{\textordmasculine}}1 {ª}{{\textordfeminine}}1
+ {€}{{\euro}}1 {£}{{\pounds}}1 {©}{{\copyright}}1 {®}{{\textregistered}}1
+ {«}{{\guillemotleft}}1 {»}{{\guillemotright}}1 {Ð}{{\DH}}1 {ð}{{\dh}}1
+ {Ý}{{\'Y}}1 {ý}{{\'y}}1 {Þ}{{\TH}}1 {þ}{{\th}}1 {Ă}{{\u{A}}}1
+ {ă}{{\u{a}}}1 {Ą}{{\k{A}}}1 {ą}{{\k{a}}}1 {Ć}{{\'C}}1 {ć}{{\'c}}1
+ {Č}{{\v{C}}}1 {č}{{\v{c}}}1 {Ď}{{\v{D}}}1 {ď}{{\v{d}}}1 {Đ}{{\DJ}}1
+ {đ}{{\dj}}1 {Ė}{{\.{E}}}1 {ė}{{\.{e}}}1 {Ę}{{\k{E}}}1 {ę}{{\k{e}}}1
+ {Ě}{{\v{E}}}1 {ě}{{\v{e}}}1 {Ğ}{{\u{G}}}1 {ğ}{{\u{g}}}1 {Ĩ}{{\~I}}1
+ {ĩ}{{\~\i}}1 {Į}{{\k{I}}}1 {į}{{\k{i}}}1 {İ}{{\.{I}}}1 {ı}{{\i}}1
+ {Ĺ}{{\'L}}1 {ĺ}{{\'l}}1 {Ľ}{{\v{L}}}1 {ľ}{{\v{l}}}1 {Ł}{{\L{}}}1
+ {ł}{{\l{}}}1 {Ń}{{\'N}}1 {ń}{{\'n}}1 {Ň}{{\v{N}}}1 {ň}{{\v{n}}}1
+ {Ő}{{\H{O}}}1 {ő}{{\H{o}}}1 {Ŕ}{{\'{R}}}1 {ŕ}{{\'{r}}}1 {Ř}{{\v{R}}}1
+ {ř}{{\v{r}}}1 {Ś}{{\'S}}1 {ś}{{\'s}}1 {Ş}{{\c{S}}}1 {ş}{{\c{s}}}1
+ {Š}{{\v{S}}}1 {š}{{\v{s}}}1 {Ť}{{\v{T}}}1 {ť}{{\v{t}}}1 {Ũ}{{\~U}}1
+ }
+
+ \renewcommand*{\lstlistingname}{\neo at codename}
+
+ %% Common Style Elements
+ %% ----------------------------------
+
+ %% ==============================================================================
+ %% Listings Styles and Settings - Part 2
+ %% Defines specific listing styles and environments
+ %% ==============================================================================
+
+ %% Specific Listing Styles
+ %% ----------------------------------
+ % Style Colorful and variants
+ \lstdefinestyle{neo at lst@colorful}{%
+ style=neo at lst@base,
+ keywordstyle=\neo at keywordstyle,
+ commentstyle=\neo at commentstyle,
+ stringstyle=\neo at stringstyle,
+ emphstyle=\neo at emphstyle,
+ numbers=none,
+ numberstyle=\tiny\color{codeBackground},
+ frame=none
+ }
+
+ % Variants with background color
+ \lstdefinestyle{neo at lst@colorfulb}{%
+ style=neo at lst@colorful,
+ backgroundcolor=\color{codebackColor}
+ }
+
+ % Variants with line numbers
+ \lstdefinestyle{neo at lst@colorfuln}{%
+ style=neo at lst@colorful,
+ numbers=left,
+ numbersep=10pt
+ }
+
+ % Variants with line numbers and background
+ \lstdefinestyle{neo at lst@colorfulbn}{%
+ style=neo at lst@colorfulb,
+ numbers=left,
+ numbersep=10pt
+ }
+
+ % Variants with frame
+ \lstdefinestyle{neo at lst@colorfulf}{%
+ style=neo at lst@colorful,
+ frame=single
+ }
+
+ % Variants with frame and background
+ \lstdefinestyle{neo at lst@colorfulbf}{%
+ style=neo at lst@colorfulb,
+ frame=single
+ }
+
+ % Variants with frame and numbers
+ \lstdefinestyle{neo at lst@colorfulfn}{%
+ style=neo at lst@colorfuln,
+ frame=single
+ }
+
+ % Variants with all options
+ \lstdefinestyle{neo at lst@colorfulbfn}{%
+ style=neo at lst@colorfulbn,
+ frame=single
+ }
+
+ %% Minimal Style and Variants
+ %% ----------------------------------
+ \lstdefinestyle{neo at lst@minimal}{%
+ style=neo at lst@base,
+ keywordstyle=\ifneo at unicolor\color{\neoschool at headcolor}\fi\bfseries,
+ commentstyle=\ifneo at unicolor\color{\neoschool at headcolor}\fi,
+ stringstyle=\ifneo at unicolor\color{\neoschool at headcolor}\else\ttfamily\fi,
+ emphstyle=\ifneo at unicolor\color{\neoschool at headcolor}\else\bfseries\fi,
+ numbers=none,
+ frame=none,
+ }
+
+ % Define all variants using the same pattern as colorful styles
+ \lstdefinestyle{neo at lst@minimalb}{style=neo at lst@minimal,backgroundcolor=\color{codebackColor}}
+ \lstdefinestyle{neo at lst@minimaln}{style=neo at lst@minimal,numbers=left,numbersep=10pt}
+ \lstdefinestyle{neo at lst@minimalbn}{style=neo at lst@minimalb,numbers=left,numbersep=10pt}
+ \lstdefinestyle{neo at lst@minimalf}{style=neo at lst@minimal,frame=single}
+ \lstdefinestyle{neo at lst@minimalbf}{style=neo at lst@minimalb,frame=single}
+ \lstdefinestyle{neo at lst@minimalfn}{style=neo at lst@minimaln,frame=single}
+ \lstdefinestyle{neo at lst@minimalbfn}{style=neo at lst@minimalbn,frame=single}
+
+ %% Academic and Modern Styles
+ %% ----------------------------------
+ \lstdefinestyle{neo at lst@academic}{%
+ style=neo at lst@base,
+ keywordstyle=\ifneo at unicolor\color{\neoschool at headcolor}\fi\bfseries,
+ commentstyle=\ifneo at unicolor\color{\neoschool at headcolor}\fi,
+ stringstyle=\ifneo at unicolor\color{\neoschool at headcolor}\else\ttfamily\fi,
+ numbers=left,
+ numberstyle=\tiny,
+ numbersep=12pt,
+ frame=leftline,
+ framesep=3pt,
+ framexleftmargin=3pt,
+ xleftmargin=15pt
+ }
+
+ \lstdefinestyle{neo at lst@modern}{%
+ style=neo at lst@base,
+ keywordstyle=\ifneo at unicolor\color{\neoschool at headcolor}\else\color{codeKeyword}\fi\bfseries,
+ commentstyle=\ifneo at unicolor\color{\neoschool at headcolor}\else\color{codeComment}\fi,
+ stringstyle=\ifneo at unicolor\color{\neoschool at headcolor}\else\color{codeString}\fi,
+ numbers=none,
+ frame=single,
+ framerule=1pt,
+ framesep=3pt,
+ rulecolor=\ifneo at unicolor\color{\neoschool at headcolor}\else\color{codeKeyword}\fi,
+ backgroundcolor=\ifneo at unicolor\color{codebackColor}\else\color{codeKeyword!5}\fi,
+ framesep=7pt,
+ xleftmargin=1em,
+ linewidth={\dimexpr \linewidth-10pt},
+ }
+
+ %% Language-Specific Definitions
+ %% ----------------------------------
+ % JSON
+ \lstdefinelanguage{json}{%
+ keywords={true,false,null},
+ sensitive=false,
+ morestring=[b]",
+ morecomment=[l]{//},
+ morecomment=[s]{/*}{*/},
+ literate=
+ *{0}{{{\color{codeComment}0}}}{1}
+ {1}{{{\color{codeComment}1}}}{1}
+ {2}{{{\color{codeComment}2}}}{1}
+ {3}{{{\color{codeComment}3}}}{1}
+ {4}{{{\color{codeComment}4}}}{1}
+ {5}{{{\color{codeComment}5}}}{1}
+ {6}{{{\color{codeComment}6}}}{1}
+ {7}{{{\color{codeComment}7}}}{1}
+ {8}{{{\color{codeComment}8}}}{1}
+ {9}{{{\color{codeComment}9}}}{1}
+ {:}{{{\color{codeKeyword}{:}}}}{1}
+ {,}{{{\color{codeKeyword}{,}}}}{1}
+ {\{}{{{\color{codeKeyword}{\{}}}}{1}
+ {\}}{{{\color{codeKeyword}{\}}}}}{1}
+ {[}{{{\color{codeKeyword}{[}}}}{1}
+ {]}{{{\color{codeKeyword}{]}}}}{1},
+ }
+
+ % YAML
+ \lstdefinelanguage{yaml}{%
+ keywords={true,false,null,yes,no,on,off},
+ sensitive=false,
+ morestring=[b]",
+ morestring=[b]',
+ morecomment=[l]{\#},
+ literate=
+ *{:}{{{\color{codeKeyword}{:}}}}{1}
+ {-}{{{\color{codeKeyword}{-}}}}{1}
+ {>}{{{\color{codeKeyword}{>}}}}{1}
+ {|}{{{\color{codeKeyword}{|}}}}{1},
+ }
+
+ % TOML
+ \lstdefinelanguage{toml}{%
+ keywords={true,false},
+ sensitive=false,
+ morestring=[b]",
+ morestring=[b]',
+ morecomment=[l]{\#},
+ literate=
+ *{=}{{{\color{codeKeyword}{=}}}}{1}
+ {[}{{{\color{codeKeyword}{[}}}}{1}
+ {]}{{{\color{codeKeyword}{]}}}}{1}
+ {.}{{{\color{codeKeyword}{.}}}}{1},
+ }
+
+ % CSV
+ \lstdefinelanguage{csv}{%
+ sensitive=false,
+ morestring=[b]",
+ morecomment=[l]{\#},
+ literate=
+ *{,}{{{\color{codeKeyword}{,}}}}{1}
+ {;}{{{\color{codeKeyword}{;}}}}{1},
+ }
+
+ % Markdown
+ \lstdefinelanguage{markdown}{%
+ sensitive=false,
+ morecomment=[l]{\%},
+ literate=
+ *{\#}{{{\color{codeKeyword}{\#}}}}{1}
+ {-}{{{\color{codeKeyword}{-}}}}{1}
+ {*}{{{\color{codeKeyword}{*}}}}{1}
+ {>}{{{\color{codeKeyword}{>}}}}{1}
+ {`}{{{\color{codeKeyword}{`}}}}{1}
+ {|}{{{\color{codeKeyword}{|}}}}{1}
+ {[}{{{\color{codeKeyword}{[}}}}{1}
+ {]}{{{\color{codeKeyword}{]}}}}{1}
+ {(}{{{\color{codeKeyword}{(}}}}{1}
+ {)}{{{\color{codeKeyword}{)}}}}{1},
+ }
+
+ %% Language-Specific Styles
+ %% ----------------------------------
+ \lstdefinestyle{python}{%
+ language=Python,
+ style=neo at lst@\neoschool at lststyle,
+ morekeywords={%
+ @property, at classmethod, at staticmethod,
+ },
+ emph={%
+ range,int,str,list,dict,set,bool,float,
+ tuple,super,type,print,len,sum,min,max,
+ enumerate,zip,map,filter,any,all,as,assert,
+ nonlocal,with,yield,self,True,False,None,
+ lambda,raise,await,async,
+ },
+ morestring=[b]""",
+ }
+
+ \lstdefinestyle{java}{%
+ language=Java,
+ style=neo at lst@\neoschool at lststyle,
+ morekeywords={%
+ @Override, at Deprecated, at SuppressWarnings,
+ @FunctionalInterface, at SafeVarargs,
+ var,record,sealed,permits,
+ public,private,protected,static,final,
+ abstract,interface,extends,implements
+ },
+ morecomment=[s]{/*}{*/},
+ morecomment=[l]//,
+ morestring=[b]",
+ }
+
+ \lstdefinestyle{cpp}{%
+ language=C++,
+ style=neo at lst@\neoschool at lststyle,
+ morekeywords={%
+ nullptr,constexpr,override,final,
+ template,typename,concept,requires,
+ auto,decltype,noexcept,static_assert,
+ thread_local,alignas,alignof
+ },
+ morecomment=[s]{/*}{*/},
+ morecomment=[l]//,
+ morestring=[b]",
+ }
+
+ \lstdefinestyle{javascript}{%
+ language=JavaScript,
+ style=neo at lst@\neoschool at lststyle,
+ morekeywords={%
+ let,const,var,function,class,extends,
+ static,get,set,new,this,super,
+ import,export,default,from,as,
+ async,await,yield,return,
+ undefined,null,true,false
+ },
+ morecomment=[s]{/*}{*/},
+ morecomment=[l]//,
+ morestring=[b]",
+ morestring=[b]',
+ morestring=[b]`,
+ }
+
+ \lstdefinestyle{sql}{%
+ language=SQL,
+ style=neo at lst@\neoschool at lststyle,
+ morekeywords={%
+ CREATE,TABLE,INSERT,INTO,VALUES,
+ SELECT,FROM,WHERE,GROUP,BY,HAVING,
+ ORDER,LIMIT,JOIN,LEFT,RIGHT,INNER,
+ UPDATE,SET,DELETE,ALTER,DROP,
+ CONSTRAINT,PRIMARY,KEY,FOREIGN,
+ REFERENCES,CASCADE,INDEX
+ },
+ sensitive=false,
+ }
+
+ \lstdefinestyle{latex}{%
+ language=[latex]TeX,
+ style=neo at lst@\neoschool at lststyle,
+ texcsstyle=*\bfseries\color{codeKeyword},
+ moretexcs = {tableofcontents,index,footnote,sout,part,chapter,subsection,subsubsection,paragraph,maketitle,leqslant,geqslant,varnothing,includegraphics,draw,node,theoremstyle,newtcolorbox,tcbuselibrary,newtcbtheorem,SI,ang,ce,chemfig,norm,abs,deriv,R,N,Z,ProvidesPackage,color,ps,montitre,lstset,lstinline,lstinputlisting,definecolor,textcolor,colorlet,setlength,colorbox,fcolorbox,addplot,pgfplotsset,opadd,opsub,opmul,opdiv,opgcd,metre,second,squared,kelvin,coulomb,volt,per,opprint,legend,tkzDefPoint,tkzInterLL,tkzGetPoint,tkzDrawPolygon,tkzDrawSegments,tkzMarkRightAngles,tkzMarkSegments,tkzLabelPoints,boxed,boldsymbol,boldmath,multirow,addbibresource,printbibliography,bm,dfrac,meter,thead,makecell,euro,cellcolor,rowcolor,columncolor,base,repere,rog,ron,rond,derpart,drv,integrer,nuplet,anuplet,ensemble,E,V,suite,suitar,suitgeo,vect,norme,tr,rank,adj,sgn,im,di,intabfx,integrale,e,moinsinf,plusinf,sisetup,restoregeometry,newgeometry,lefttitle,righttitle,colbacklower,neoheader,neograph,textwithimage,withqrcode,positionobject,splitcontent,grid,customgrid,frenchgrid,notebook,nbminorgrid,nbmajorgrid},
+ emph={width,axis~lines,xlabel,ylabel,xmin,ymin,grid,domain,samples,displayshiftintermediary,colback,colframe,colbacktitle,coltitle,enhanced,,fonttitle,margin,leftmargin,publisher,year,carrysub,lastcarry,locale,xmax,ymax,coordinates,mark,style,hmargin,vmargin,top,bottom,left,right,showframe,includeheadfoot,opacity,fill,above,},
+ morecomment=[l]{\%},
+ morestring=[b]",
+ sensitive=true
+ }
+
+ \lstdefinestyle{bash}{%
+ language=bash,
+ style=neo at lst@\neoschool at lststyle,
+ morekeywords={%
+ source, alias, bg, bind, break, builtin, cd, command, compgen,
+ complete, continue, declare, dirs, disown, echo, enable, eval,
+ exec, exit, export, fc, fg, getopts, hash, help, history, jobs,
+ kill, let, local, logout, mapfile, popd, printf, pushd, pwd,
+ read, readarray, readonly, return, set, shift, shopt, suspend,
+ test, times, trap, type, typeset, ulimit, umask, unalias,
+ unset, wait
+ },
+ morestring=[b]",
+ morestring=[b]',
+ morestring=[b]\`,
+ morecomment=[l]{\#},
+ literate=
+ *{\$}{{{\color{codeKeyword}{\$}}}}{1}
+ {|}{{{\color{codeKeyword}{|}}}}{1}
+ {>}{{{\color{codeKeyword}{>}}}}{1}
+ {<}{{{\color{codeKeyword}{<}}}}{1}
+ {&}{{{\color{codeKeyword}{\&}}}}{1},
+ }
+
+ \lstdefinestyle{assembly}{%
+ language=[x86]Assembler,
+ style=neo at lst@\neoschool at lststyle,
+ morekeywords={%
+ section, global, extern
+ },
+ morecomment=[l]{;},
+ morecomment=[l]{\#},
+ literate=
+ *{,}{{{\color{codeKeyword}{,}}}}{1}
+ {:}{{{\color{codeKeyword}{:}}}}{1}
+ {[}{{{\color{codeKeyword}{[}}}}{1}
+ {]}{{{\color{codeKeyword}{]}}}}{1}
+ {\$}{{{\color{codeKeyword}{\$}}}}{1}
+ {\%}{{{\color{codeKeyword}{\%}}}}{1},
+ }
+
+ \lstdefinestyle{lisp}{%
+ language=Lisp,
+ style=neo at lst@\neoschool at lststyle,
+ morekeywords={%
+ setq, setf, loop, do, progn, when, unless
+ },
+ literate=
+ *{(}{{{\color{codeKeyword}{(}}}}{1}
+ {)}{{{\color{codeKeyword}{)}}}}{1}
+ {'}{{{\color{codeKeyword}{'}}}}{1}
+ {`}{{{\color{codeKeyword}{`}}}}{1}
+ {,}{{{\color{codeKeyword}{,}}}}{1},
+ }
+
+ \lstdefinestyle{json}{%
+ style=neo at lst@\neoschool at lststyle,
+ language=json,
+ }
+
+ \lstdefinestyle{yaml}{%
+ style=neo at lst@\neoschool at lststyle,
+ language=yaml,
+ }
+
+ \lstdefinestyle{toml}{%
+ style=neo at lst@\neoschool at lststyle,
+ language=toml,
+ }
+
+ \lstdefinestyle{csv}{%
+ style=neo at lst@\neoschool at lststyle,
+ language=csv,
+ }
+
+ \lstdefinestyle{markdown}{%
+ style=neo at lst@\neoschool at lststyle,
+ language=markdown,
+ }
+
+ %% Environment Definitions
+ %% ----------------------------------
+ % Counter for code listings
+ \newcounter{lstcode}
+
+ % Code listing environment
+ \NewTCBListing[use counter=lstcode]{code}{ O{} m !O{} !O{} }{%
+ listing only,
+ enhanced,
+ breakable,
+ listing options={%
+ style=#2,
+ #1
+ },
+ code={%
+ \IfEqCase{#4}{%
+ {}{\tcbset{%
+ standard jigsaw,
+ opacityback=0,
+ opacityframe=0,
+ frame hidden,
+ boxrule=0pt,
+ left=0pt,
+ right=0pt,
+ top=0pt,
+ bottom=0pt,
+ title={},
+ notitle
+ }}
+ {box-minimal}{\tcbset{box-minimal}}
+ {box-fancy}{\tcbset{box-fancy}}
+ {box-classic}{\tcbset{box-classic}}
+ {box-elegant}{\tcbset{box-elegant}}
+ {box-diagonal}{\tcbset{box-diagonal}}
+ {box-bevel}{\tcbset{box-bevel}}
+ {box-corner}{\tcbset{box-corner}}
+ {box-rounded}{\tcbset{box-rounded}}
+ {box-downhill}{\tcbset{box-downhill}}
+ {box-bottomtitle}{\tcbset{box-bottomtitle}}
+ {box-bottomtitlef}{\tcbset{box-bottomtitlef}}
+ }[\PackageError{code}{Style not found: #4}{}]
+ \ifx\relax#3\relax\else
+ \tcbset{title={\lstlistingname~\thelstcode~~\textemdash{}~~#3},\neoschool at boxtitle}
+ \fi
+ }
+ }
+
+ % Style selector command
+ \newcommand{\setcodestyle}[1]{%
+ \renewcommand{\neoschool at lststyle}{#1}
+ }
+
+ % Default style
+ \AtBeginDocument{%
+ \ifneo at listings
+ \lstset{style=neo at lst@\neoschool at lststyle}
+ \else
+ \PackageWarning{neoschool}{The 'listings' package is not enabled, lststyle option will be ignored.}
+ \fi
+ }
+
+ % Inline code
+ \newcommand{\codeinline}[2][]{%
+ \lstinline[style=#1]{#2}
+ }
+
+ % Language detection
+ \newcommand{\DetectLanguage}[1]{%
+ \filename at parse{#1}
+ \ifthenelse{\equal{\filename at ext}{py}}{python}{%
+ \ifthenelse{\equal{\filename at ext}{java}}{java}{%
+ \ifthenelse{\equal{\filename at ext}{tex}}{latex}{text}
+ }
+ }
+ }
+
+ % Code input
+ \NewTCBInputListing{\codeinput}{ O{} m m !O{} !O{} }{%
+ listing file={#3},
+ listing only,
+ boxrule=0pt,
+ enhanced,
+ breakable,
+ listing file={#3},
+ listing options={%
+ style={#2},
+ #1
+ },
+ frame hidden,
+ colback=codebackColor,
+ boxrule=0pt,
+ left=0pt,
+ right=0pt,
+ top=0pt,
+ bottom=0pt,
+ code={%
+ \IfEqCase{#5}{%
+ {}{\tcbset{%
+ standard jigsaw,
+ opacityback=0,
+ opacityframe=0,
+ frame hidden,
+ boxrule=0pt,
+ left=0pt,
+ right=0pt,
+ top=0pt,
+ bottom=0pt,
+ title={},
+ notitle
+ }}
+ {box-minimal}{\tcbset{box-minimal}}
+ {box-fancy}{\tcbset{box-fancy}}
+ {box-classic}{\tcbset{box-classic}}
+ {box-elegant}{\tcbset{box-elegant}}
+ {box-diagonal}{\tcbset{box-diagonal}}
+ {box-bevel}{\tcbset{box-bevel}}
+ {box-corner}{\tcbset{box-corner}}
+ {box-rounded}{\tcbset{box-rounded}}
+ {box-downhill}{\tcbset{box-downhill}}
+ {box-bottomtitle}{\tcbset{box-bottomtitle}}
+ {box-bottomtitlef}{\tcbset{box-bottomtitlef}}
+ }[\PackageError{code}{Style not found: #5}{}]
+ \ifx\relax#4\relax\else
+ \tcbset{title={\neo at codename~\thelstcode~~\textemdash{}~~#4},\neoschool at boxtitle}
+ \fi
+ }
+ }
+
+ %% Side-by-Side Code Environment
+ %% ----------------------------------
+ \newtcblisting{codeside}[2][]{%
+ standard jigsaw,
+ enhanced,
+ breakable,
+ opacityback=0,
+ opacityframe=0,
+ fonttitle=\sffamily\bfseries,
+ listing only,
+ arc=1pt,
+ colback=codebackColor,
+ colframe=codeColor,
+ left=0pt,
+ right=0pt,
+ lefttitle=1.7mm,
+ width=\linewidth,
+ listing options={%
+ style=#2,
+ #1
+ }
+ }
+
+\else\ifneo at minted
+
+ %% Environment Definitions
+ %% ----------------------------------
+ \newcounter{mintcode}
+
+ % Define the minted style
+ \setminted{
+ style=vs,
+ fontsize=\small,
+ breaklines=true,
+ autogobble,
+ frame=none,
+ linenos=false,
+ tabsize=4,
+ }
+
+ % Code listing environment
+ \NewTCBListing[use counter=mintcode]{code}{ O{} m !O{} !O{} }{%
+ listing engine=minted,
+ minted language=#2,
+ listing only,
+ enhanced,
+ breakable,
+ minted options={#1},
+ code={%
+ \IfEqCase{#4}{%
+ {}{\tcbset{%
+ standard jigsaw,
+ opacityback=0,
+ opacityframe=0,
+ frame hidden,
+ boxrule=0pt,
+ left=0pt,
+ right=0pt,
+ top=0pt,
+ bottom=0pt,
+ title={},
+ notitle
+ }}
+ {box-minimal}{\tcbset{box-minimal}}
+ {box-fancy}{\tcbset{box-fancy}}
+ {box-classic}{\tcbset{box-classic}}
+ {box-elegant}{\tcbset{box-elegant}}
+ {box-diagonal}{\tcbset{box-diagonal}}
+ {box-bevel}{\tcbset{box-bevel}}
+ {box-corner}{\tcbset{box-corner}}
+ {box-rounded}{\tcbset{box-rounded}}
+ {box-downhill}{\tcbset{box-downhill}}
+ {box-bottomtitle}{\tcbset{box-bottomtitle}}
+ {box-bottomtitlef}{\tcbset{box-bottomtitlef}}
+ }[\PackageError{code}{Style not found: #4}{}]
+ \ifx\relax#3\relax\else
+ \tcbset{title={\neo at codename~\themintcode~~\textemdash{}~~#3},\neoschool at boxtitle}
+ \fi
+ }
+ }
+
+ % Inline code command
+ \newcommand{\codeinline}[2][text]{%
+ \mintinline[style=vs,fontsize=\small,breaklines,autogobble]{#1}{#2}
+ }
+
+ % Code input from file
+ \NewTCBInputListing{\codeinput}{ O{} m m !O{} !O{} }{%
+ listing engine=minted,
+ minted language={#2},
+ enhanced,
+ breakable,
+ listing file={#3},
+ listing only,
+ minted options={#1},
+ frame hidden,
+ colback=codebackColor,
+ boxrule=0pt,
+ code={%
+ \IfEqCase{#5}{%
+ {}{\tcbset{%
+ standard jigsaw,
+ opacityback=0,
+ opacityframe=0,
+ frame hidden,
+ boxrule=0pt,
+ left=0pt,
+ right=0pt,
+ top=0pt,
+ bottom=0pt,
+ title={},
+ notitle
+ }}
+ {box-minimal}{\tcbset{box-minimal}}
+ {box-fancy}{\tcbset{box-fancy}}
+ {box-classic}{\tcbset{box-classic}}
+ {box-elegant}{\tcbset{box-elegant}}
+ {box-diagonal}{\tcbset{box-diagonal}}
+ {box-bevel}{\tcbset{box-bevel}}
+ {box-corner}{\tcbset{box-corner}}
+ {box-rounded}{\tcbset{box-rounded}}
+ {box-downhill}{\tcbset{box-downhill}}
+ {box-bottomtitle}{\tcbset{box-bottomtitle}}
+ {box-bottomtitlef}{\tcbset{box-bottomtitlef}}
+ }[\PackageError{code}{Style not found: #5}{}]
+ \ifx\relax#4\relax\else
+ \tcbset{title={\neo at codename~\themintcode~~\textemdash{}~~#4},\neoschool at boxtitle}
+ \fi
+ }
+ }
+
+ % Side-by-Side Code Environment
+ \newtcblisting{codeside}[2][]{%
+ standard jigsaw,
+ listing engine=minted,
+ enhanced,
+ breakable,
+ opacityback=0,
+ opacityframe=0,
+ fonttitle=\sffamily\bfseries,
+ minted language=#2,
+ arc=1pt,
+ colback=codebackColor,
+ colframe=codeColor,
+ left=0pt,
+ right=0pt,
+ lefttitle=1.7mm,
+ width=\linewidth,
+ minted options={#1}
+ }
+
+ \fi
+\fi
+
+%% ==============================================================================
+%% Algorithm and Pseudocode Environments
+%% ==============================================================================
+
+%% Algorithm Keywords Translation
+%% ----------------------------------
+\algrenewcommand\algorithmicwhile{\textbf{tant que}}
+\algrenewcommand\algorithmicdo{\textbf{faire}}
+\algrenewcommand\algorithmicfor{\textbf{pour}}
+\algrenewcommand\algorithmicif{\textbf{si}}
+\algrenewcommand\algorithmicthen{\textbf{alors}}
+\algrenewcommand\algorithmicelse{\textbf{sinon}}
+\algrenewcommand\algorithmicend{\textbf{fin}}
+\algrenewcommand\algorithmicreturn{\textbf{retourner}}
+\algrenewcommand\algorithmicfunction{\textbf{fonction}}
+\algrenewcommand\algorithmicrequire{\textbf{entrée}}
+\algrenewcommand\algorithmicensure{\textbf{sortie}}
+\algrenewcommand\algorithmicprocedure{\textbf{procédure}}
+
+%% Additional Algorithm Commands
+%% ----------------------------------
+\newcommand{\To}{\textbf{ à }}
+\newcommand{\Gets}{\ensuremath{\leftarrow}}
+
+%% Pseudocode Box Style
+%% ----------------------------------
+\tcbset{%
+ pseudocode/.style={%
+ enhanced,
+ breakable,
+ colback=white,
+ colframe=\ifneo at unicolor\neoschool at headcolor\else\neoschool at headcolor!50\fi,
+ boxrule=0.5pt,
+ arc=0pt,
+ top=3mm,
+ bottom=3mm,
+ left=3mm,
+ right=3mm,
+ colbacktitle=white,
+ coltitle=black,
+ fonttitle=\sffamily\bfseries,
+ before upper={\begin{algorithmic}},
+ after upper={\end{algorithmic}},
+ breakable
+ }
+}
+
+%% Pseudocode Environment
+%% ----------------------------------
+\newtcolorbox[use counter=lstcode]{pseudocode}[2][]{%
+ pseudocode,
+ title={\csname neo at algorithmname\endcsname~\thelstcode~~\textemdash{}~~#2},
+ #1
+}
+
+%% ==============================================================================
+%% Base Definitions and Styles for Theorems and Exercises
+%% ==============================================================================
+
+% Common Styles
+\tcbset{
+ common at base/.style={
+ enhanced,
+ breakable,
+ separator sign={},
+ before skip=\baselineskip,
+ after skip=\baselineskip,
+ colupper=\neo at tcbcolupper,
+ colframe=\neoschool at headcolor,
+ colbacklower=\neo at tcbcolbacklower
+ },
+ common at title@base/.style={
+ fonttitle={\normalshape\csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\csname\neoschool at headshape\endcsname},
+ },
+}
+
+%% ==============================================================================
+%% Shared Box Styles for Theorems and Exercises
+%% ==============================================================================
+\ExplSyntaxOn
+\tl_new:N \l__custom_tcb_title_tl
+\tl_new:N \l__custom_tcb_label_tl
+\tl_new:N \l__custom_tcb_options_tl
+
+\newcommand{\getCustomSlantedTitle}{%
+ \tl_if_empty:NTF \l__custom_tcb_title_tl
+ {\,}
+ {\tl_use:N \enskip(\l__custom_tcb_title_tl)\;}
+}
+
+\newcommand{\getCustomBoxedTitle}{%
+ \tl_if_empty:NTF \l__custom_tcb_title_tl
+ {}
+ {\tl_use:N \,(\l__custom_tcb_title_tl)\,}
+}
+\ExplSyntaxOff
+
+\def\neo at getbackcolor{%
+ \ifneo at noback
+ white%
+ \else
+ \neo at tcbcolback%
+ \fi
+}
+
+\def\neo at getframestyle{%
+ \ifneo at noframe
+ frame hidden%
+ \else\fi
+}
+
+\tcbset{
+ neo at shared@base/.style args={#1}{%
+ common at base,
+ colframe=#1,
+ colback=\neo at getbackcolor,
+ boxrule=\neo at thmborder,
+ \neo at getframestyle
+ },
+ neo at shared@elegant/.style args={#1}{%
+ neo at shared@base={#1},
+ common at title@base,
+ skin=bicolor,
+ sharp corners,
+ detach title,
+ left=1em,
+ right=1em,
+ top=\neo at toppadding,
+ bottom=\neo at bottompadding,
+ borderline west={4pt}{0pt}{#1},
+ before upper={\tcbtitle\enskip}
+ },
+ neo at shared@shaded/.style 2 args={%
+ neo at shared@base={#1},
+ common at title@base,
+ left=\neo at leftpadding,
+ right=\neo at rightpadding,
+ after skip=\neo at afterskip,
+ before skip=\neo at beforeskip,
+ attach boxed title to top left,
+ boxed title style={
+ empty,
+ top=\neo at titletoppadding,
+ left=\neo at titleleftpadding,
+ right=\neo at titlerightpadding,
+ bottom=\neo at titlebottompadding,
+ },
+ detach title,
+ underlay boxed title={%
+ \path[draw=\csname neo at titledrawcolor@#2\endcsname,line width=1pt,
+ rounded corners, fill=\neo at tcbcolback]
+ ([xshift=.17mm]frame.west) |- ([xshift=-2.5mm]title.north east)
+ to[out=0, in=180] ([xshift=7.5mm, yshift=-.18mm]title.south east);
+ }
+ },
+ neo at shared@slanted/.style args={#1}{%
+ neo at shared@base={#1},
+ common at title@base,
+ skin=bicolor,
+ separator sign={},
+ coltitle=white,
+ left=\neo at leftpadding,
+ right=\neo at rightpadding,
+ after skip=\neo at afterskip,
+ before skip=\neo at beforeskip,
+ detach title
+ },
+ neo at shared@sober/.style args={#1}{%
+ neo at shared@base={#1},
+ common at title@base,
+ skin=bicolor,
+ detach title,
+ left=1ex,
+ right=1ex,
+ separator sign={},
+ terminator sign=,
+ },
+ neo at shared@classic/.style args={#1}{%
+ neo at shared@base={#1},
+ common at title@base,
+ skin=bicolor,
+ coltitle=white,
+ colbacktitle=tcbcolframe,
+ boxrule=1pt,
+ toptitle=1mm,
+ bottomtitle=1mm,
+ left=1ex,
+ right=1ex,
+ },
+ neo at shared@classy/.style args={#1}{%
+ neo at shared@base={#1},
+ common at title@base,
+ skin=bicolor,
+ left=1ex,
+ right=1ex,
+ attach boxed title to top left={
+ yshift*=-\tcboxedtitleheight
+ },
+ boxed title style={
+ sharp corners,
+ rounded corners=northwest,
+ colback=tcbcolframe,
+ boxrule=0pt
+ },
+ underlay boxed title={
+ \path[fill=tcbcolframe]
+ (title.south west)--(title.south east)
+ to[out=0, in=180] ([xshift=5mm]title.east)--
+ (title.center-|frame.east)
+ [rounded corners=\kvtcb at arc] |-
+ (frame.north) -| cycle;
+ }
+ },
+ neo at shared@boxed/.style 2 args={%
+ neo at box@base,
+ sharp corners,
+ \neo at framehidden,
+ coltitle=white,
+ colframe=#1,
+ colback=\neo at tcbcolback,
+ left=\neo at leftpadding,
+ right=\neo at rightpadding,
+ after skip=\neo at afterskip,
+ before skip=\neo at beforeskip,
+ detach title,
+ before upper*={%
+ \tcbox[enhanced,
+ colupper=white,
+ colback=#1, fontupper=\normalshape\csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\csname\neoschool at headshape\endcsname,
+ size=small,
+ baseline=3pt,
+ top=0pt,
+ bottom=0pt,
+ left=0pt,
+ right=0pt,
+ nobeforeafter,
+ frame code={%
+ \path[fill=tcbcolback]
+ (frame.north west) --
+ (frame.north east) {[rounded corners=5pt]--
+ (frame.south east)} --
+ (frame.south west) --
+ cycle;
+ }]%
+ {#2~\thetcbcounter}%
+ }
+ {\normalshape\csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\csname\neoschool at headshape\endcsname\color{#1}\getCustomBoxedTitle}
+ }
+}
+
+%% ==============================================================================
+%% Custom Newtcbtheorem Implementation
+%% ==============================================================================
+
+\ExplSyntaxOn
+\NewDocumentCommand{\mynewtcbtheorem}{O{}mmmm}{%
+ \newtcbtheorem[#1]{#2inner}{#3}{#4}{#5}
+ \NewDocumentEnvironment{#2}{O{}}{%
+ \keys_set:nn { custom/tcb } { ##1 }
+ \tl_if_empty:NTF \l__custom_tcb_options_tl {%
+ \use:x {
+ \exp_not:N \begin{#2inner}
+ {\tl_if_empty:NTF \l__custom_tcb_title_tl
+ { }
+ { (\exp_not:V \l__custom_tcb_title_tl) }
+ }
+ {\exp_not:V \l__custom_tcb_label_tl}
+ }
+ }{%
+ \use:x {
+ \exp_not:N \begin{#2inner}
+ [\exp_not:V \l__custom_tcb_options_tl]
+ {\tl_if_empty:NTF \l__custom_tcb_title_tl
+ { }
+ { (\exp_not:V \l__custom_tcb_title_tl) }
+ }
+ {\exp_not:V \l__custom_tcb_label_tl}
+ }
+ }
+ }{%
+ \end{#2inner}
+ }
+
+ \NewDocumentEnvironment{#2*}{O{}}{%
+ \keys_set:nn { custom/tcb } { ##1 }
+ \tl_if_empty:NTF \l__custom_tcb_options_tl {%
+ \use:x {
+ \exp_not:N \begin{#2inner*}
+ {\tl_if_empty:NTF \l__custom_tcb_title_tl
+ { }
+ { (\exp_not:V \l__custom_tcb_title_tl) }
+ }
+ {}
+ }
+ }{%
+ \use:x {
+ \exp_not:N \begin{#2inner*}
+ [\exp_not:V \l__custom_tcb_options_tl]
+ {\tl_if_empty:NTF \l__custom_tcb_title_tl
+ { }
+ { (\exp_not:V \l__custom_tcb_title_tl) }
+ }
+ {}
+ }
+ }
+ }{%
+ \end{#2inner*}
+ }
+ \cs_if_exist:cF { c@#5} { \newcounter{#5} }
+}
+
+\keys_define:nn { custom/tcb } {
+ title .tl_set:N = \l__custom_tcb_title_tl,
+ label .tl_set:N = \l__custom_tcb_label_tl,
+ colback .code:n = \tl_put_right:Nx \l__custom_tcb_options_tl { colback=#1, },
+ colframe .code:n = \tl_put_right:Nx \l__custom_tcb_options_tl { colframe=#1, },
+ coltitle .code:n = \tl_put_right:Nx \l__custom_tcb_options_tl { coltitle=#1, },
+ fonttitle .code:n = \tl_put_right:Nx \l__custom_tcb_options_tl { fonttitle=#1, },
+ line~width .code:n = \tl_put_right:Nx \l__custom_tcb_options_tl { line~width=#1, },
+ frame~style .code:n = \tl_put_right:Nx \l__custom_tcb_options_tl { frame~style=#1, },
+ arc .code:n = \tl_put_right:Nx \l__custom_tcb_options_tl { arc=#1, },
+ frame~hidden .code:n = \tl_put_right:Nn \l__custom_tcb_options_tl { frame~hidden, },
+ sharp~corners .code:n = \tl_put_right:Nn \l__custom_tcb_options_tl { sharp~corners, },
+ rounded~corners .code:n = \tl_put_right:Nn \l__custom_tcb_options_tl { rounded~corners, },
+ unknown .code:n = \tl_put_right:Nx \l__custom_tcb_options_tl { #1, },
+}
+\ExplSyntaxOff
+
+% Title Content Formatters
+\NewDocumentCommand{\neo at theorem@title}{mm}{%
+ \csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ \color{#1}#2~\thetcbcounter
+}
+
+\NewDocumentCommand{\neo at exercise@title}{}{%
+ \sffamily\GetExerciseName~\GetExerciseProperty{counter}%
+ \IfExercisePropertySetT{level}{%
+ \enskip[\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]%
+ }%
+ \IfExercisePropertySetT{subtitle}{\enskip\GetExerciseProperty{subtitle}}%
+ \IfExercisePropertySetT{points}{%
+ \enskip(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{\XSIMtranslate{point}}{\XSIMtranslate{points}})%
+ }%
+}
+
+\AtBeginDocument{%
+ \ifneo at french
+ \DeclareExerciseTranslation{french}{point}{point}
+ \DeclareExerciseTranslation{french}{points}{points}
+ \DeclareExerciseTranslation{french}{point-short}{pt}
+ \DeclareExerciseTranslation{french}{points-short}{pts}
+ \else\ifneo at german
+ \DeclareExerciseTranslation{german}{point}{Punkt}
+ \DeclareExerciseTranslation{german}{points}{Punkte}
+ \DeclareExerciseTranslation{german}{point-short}{Pkt}
+ \DeclareExerciseTranslation{german}{points-short}{Pkt}
+ \else
+ \DeclareExerciseTranslation{english}{point}{point}
+ \DeclareExerciseTranslation{english}{points}{points}
+ \DeclareExerciseTranslation{english}{point-short}{pt}
+ \DeclareExerciseTranslation{english}{points-short}{pts}
+ \fi\fi
+}
+
+%% ==============================================================================
+%% Theorem Types Implementation
+%% ==============================================================================
+
+\NewDocumentCommand{\neweleganttheorem}{O{}mmmmmmO{}}{%
+\mynewtcbtheorem[#1]{#2}{#3}{%
+ neo at shared@elegant={#4},
+ coltitle=#4,
+ fontupper={#7},
+ before lower={#6},
+ #8
+}{#5}
+}
+
+\NewDocumentCommand{\newslantedtheorem}{O{}mmmmmmO{}}{%
+\mynewtcbtheorem[#1]{#2}{#3}{%
+ neo at shared@slanted={#4},
+ before upper*={%
+ \hspace*{-1.5mm}
+ \tcbox[enhanced,
+ colupper=white,
+ colback=#4,
+ fontupper=\normalshape\csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\csname\neoschool at headshape\endcsname,
+ size=small,
+ baseline=3pt,
+ left=0pt,
+ right=0pt,
+ bottom=0pt,
+ nobeforeafter,
+ frame code={%
+ \path[fill=tcbcolback] (frame.north west)
+ -- ([xshift=2mm]frame.north east)
+ -- (frame.south east)
+ -- (frame.south west)
+ -- (frame.north west)
+ [sharp corners]-- cycle;
+ }]
+ {#3~\thetcbcounter}
+ {\normalshape\csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\csname\neoschool at headshape\endcsname\color{#4}\getCustomSlantedTitle}
+ },
+ fontupper={#7},
+ before lower={#6},
+ #8,
+}{#5}
+}
+
+\NewDocumentCommand{\newshadedtheorem}{O{}mmmmmmO{}}{%
+\expandafter\def\csname neo at titledrawcolor@#2\endcsname{#4}
+\ifneo at noframe\expandafter\def\csname neo at titledrawcolor@#2\endcsname{white}\fi
+\mynewtcbtheorem[#1]{#2}{\vspace*{0.35em}#3}{%
+ neo at shared@shaded={#4}{#2},
+ coltitle=#4,
+ fontupper={#7},
+ before lower={#6},
+ #8
+}{#5}
+}
+
+\NewDocumentCommand{\newsobertheorem}{O{}mmmmmmO{}}{%
+\mynewtcbtheorem[#1]{#2}{#3}{%
+ neo at shared@sober={#4},
+ before upper={\tcbtitle\enskip},
+ coltitle=#4,
+ fontupper={#7},
+ before lower={#6},
+ #8
+}{#5}
+}
+
+\NewDocumentCommand{\newclassictheorem}{O{}mmmmmmO{}}{%
+\mynewtcbtheorem[#1]{#2}{#3}{%
+ neo at shared@classic={#4},
+ title={#3},
+ fontupper={#7},
+ before lower={#6},
+ #8
+}{#5}
+}
+
+\NewDocumentCommand{\newclassytheorem}{O{}mmmmmmO{}}{%
+\mynewtcbtheorem[#1]{#2}{#3}{%
+ neo at shared@classy={#4},
+ title={#3},
+ fontupper={#7},
+ before lower={#6},
+ #8
+}{#5}
+}
+
+\NewDocumentCommand{\newboxedtheorem}{O{}mmmmmmO{}}{%
+\mynewtcbtheorem[#1]{#2}{#3}{%
+ neo at shared@boxed={#4}{#3},
+ fontupper={#7},
+ before lower={#6},
+ #8
+}{#5}
+}
+
+\NewDocumentCommand{\newamstheorem}{O{}mmmmmmO{}}{%
+\mynewtcbtheorem[#1]{#2}{#3}{%
+ enhanced,
+ breakable,
+ frame hidden,
+ colback=white,
+ coltitle={#4},
+ left=0pt, right=0pt,
+ top=0pt, bottom=0pt,
+ boxsep=0pt,
+ detach title,
+ separator sign={},
+ before upper={\tcbtitle\enskip},
+ before skip=\baselineskip,
+ after skip=\baselineskip,
+ fontupper={#7},
+ fonttitle={\normalshape\csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\csname\neoschool at headshape\endcsname},
+ before lower={#6},
+ #8
+}{#5}
+}
+
+\NewDocumentCommand{\newamsremarktheorem}{O{}mmmmmmO{}}{%
+\mynewtcbtheorem[#1]{#2}{#3}{%
+ enhanced,
+ breakable,
+ frame hidden,
+ colback=white,
+ coltitle={#4},
+ left=0pt, right=0pt,
+ top=0pt, bottom=0pt,
+ boxsep=0pt,
+ detach title,
+ before upper={{\color{remarkColor}\csname\neoschool at headweight\endcsname\itshape\csname\neoschool at headstyle\endcsname\csname\neoschool at headshape\endcsname #3\enskip\textemdash}\enskip},
+ before skip=.5\baselineskip,
+ after skip=.5\baselineskip,
+ fontupper={#7},
+ #8
+}{#5}
+}
+
+\NewDocumentCommand{\newamsremarkstheorem}{O{}mmmmmmO{}}{%
+\mynewtcbtheorem[#1]{#2}{#3}{%
+ enhanced,
+ breakable,
+ frame hidden,
+ colback=white,
+ coltitle={#4},
+ left=0pt, right=0pt,
+ top=0pt, bottom=0pt,
+ boxsep=0pt,
+ detach title,
+ before upper={{\color{remarkColor}\csname\neoschool at headweight\endcsname\itshape\csname\neoschool at headstyle\endcsname\csname\neoschool at headshape\endcsname #3}\enskip},
+ before skip=.5\baselineskip,
+ after skip=.5\baselineskip,
+ fontupper={#7},
+ #8
+}{#5}
+}
+
+\NewDocumentCommand{\newamsexampletheorem}{O{}mmmmmmO{}}{%
+\mynewtcbtheorem[#1]{#2}{#3}{%
+ enhanced,
+ breakable,
+ frame hidden,
+ colback=white,
+ coltitle={#4},
+ left=0pt, right=0pt,
+ top=0pt, bottom=0pt,
+ boxsep=0pt,
+ detach title,
+ separator sign={},
+ before upper={\tcbtitle\enskip},
+ before skip=.5\baselineskip,
+ after skip=.5\baselineskip,
+ fontupper={#7},
+ fonttitle={\normalshape\csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\csname\neoschool at headshape\endcsname},
+ before lower={#6},
+ #8
+}{#5}
+}
+
+\NewDocumentCommand{\newamsexamplestheorem}{O{}mmmmmmO{}}{%
+\mynewtcbtheorem[#1]{#2}{#3}{%
+ enhanced,
+ breakable,
+ frame hidden,
+ colback=white,
+ coltitle={#4},
+ left=0pt, right=0pt,
+ top=0pt, bottom=0pt,
+ boxsep=0pt,
+ detach title,
+ before upper={{\color{exampleColor}\csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\csname\neoschool at headshape\endcsname #3}\enskip},
+ before skip=.5\baselineskip,
+ after skip=.5\baselineskip,
+ fontupper={#7},
+ #8
+}{#5}
+}
+
+\NewDocumentCommand{\neo at declarespecialtheorem}{m m}{%
+ \ifstrequal{#1}{remark}{%
+ \newamsremarktheorem{#1}{\csname neo@#1name\endcsname}{#2}{#1}{}{\normalfont}
+ }{%
+ \ifstrequal{#1}{remarks}{%
+ \newamsremarkstheorem{#1}{\csname neo@#1name\endcsname}{#2}{#1}{}{\normalfont}
+ }{%
+ \ifstrequal{#1}{examples}{%
+ \newamsexamplestheorem{#1}{\csname neo@#1name\endcsname}{#2}{#1}{}{\normalfont}
+ }{%
+ \ifneoschool at sectionthmcounter
+ \ifneoschool at sharedthmcounter
+ \newamsexampletheorem[number within=section, use counter = thmcounter]{#1}{\csname neo@#1name\endcsname}{#2}{#1}{}{\normalfont}
+ \else
+ \newamsexampletheorem[number within=section]{#1}{\csname neo@#1name\endcsname}{#2}{#1}{}{\normalfont}
+ \fi
+ \else
+ \ifneoschool at sharedthmcounter
+ \newamsexampletheorem[use counter = thmcounter]{#1}{\csname neo@#1name\endcsname}{#2}{#1}{}{\normalfont}
+ \else
+ \newamsexampletheorem{#1}{\csname neo@#1name\endcsname}{#2}{#1}{}{\normalfont}
+ \fi
+ \fi
+ }%
+ }%
+ }%
+}
+
+\neo at declarespecialtheorem{remark}{remarkColor}
+\neo at declarespecialtheorem{remarks}{remarkColor}
+\neo at declarespecialtheorem{example}{exampleColor}
+\neo at declarespecialtheorem{examples}{exampleColor}
+
+%% ==============================================================================
+%% Theorem Declaration Command
+%% ==============================================================================
+
+\NewDocumentCommand{\neo at declaretheorem}{O{}mmmmmmO{}}{%
+% #1 = additional options
+% #2 = environment name (theorem, definition, etc.)
+% #3 = title (\neo at theoremname, etc.)
+% #4 = color
+% #5 = reference name (thm, def, etc.)
+% #6 = text before proof
+% #7 = text style (\itshape or not)
+% #8 = additional options
+
+% Handle options
+\def\neo at thmoptions{#1}
+
+% Section numbering
+\ifneoschool at sectionthmcounter
+ \edef\neo at thmoptions{number within=section,\neo at thmoptions}
+\fi
+
+% Counter handling
+\ifneoschool at sharedthmcounter
+ \edef\neo at thmoptions{use counter=thmcounter,\neo at thmoptions}
+\else
+ \ifneoschool at thmgroupcounter
+ \ifboolexpr{
+ test {\ifstrequal{#2}{theorem}} or
+ test {\ifstrequal{#2}{lemma}} or
+ test {\ifstrequal{#2}{proposition}} or
+ test {\ifstrequal{#2}{corollary}} or
+ test {\ifstrequal{#2}{property}}
+ }{%
+ \edef\neo at thmoptions{use counter=thmcounter,\neo at thmoptions}
+ }{%
+ \edef\neo at thmoptions{\neo at thmoptions}
+ }
+ \else
+ \edef\neo at thmoptions{\neo at thmoptions}
+ \fi
+\fi
+
+% Style selection based on class options
+\ifneo at slantedthm
+ \expandafter\newslantedtheorem\expandafter[\neo at thmoptions]{#2}{#3}{#4}{#5}{#6}{#7}[#8]%
+\else
+ \ifneo at soberthm
+ \expandafter\newsobertheorem\expandafter[\neo at thmoptions]{#2}{#3}{#4}{#5}{#6}{#7}[#8]%
+ \else
+ \ifneo at elegantthm
+ \expandafter\neweleganttheorem\expandafter[\neo at thmoptions]{#2}{#3}{#4}{#5}{#6}{#7}[#8]%
+ \else
+ \ifneo at shadedthm
+ \expandafter\newshadedtheorem\expandafter[\neo at thmoptions]{#2}{#3}{#4}{#5}{#6}{#7}[#8]%
+ \else
+ \ifneo at classicthm
+ \expandafter\newclassictheorem\expandafter[\neo at thmoptions]{#2}{#3}{#4}{#5}{#6}{#7}[#8]%
+ \else
+ \ifneo at classythm
+ \expandafter\newclassytheorem\expandafter[\neo at thmoptions]{#2}{#3}{#4}{#5}{#6}{#7}[#8]%
+ \else
+ \ifneo at boxedthm
+ \expandafter\newboxedtheorem\expandafter[\neo at thmoptions]{#2}{#3}{#4}{#5}{#6}{#7}[#8]%
+ \else
+ \ifneo at amslikethm
+ \expandafter\newamstheorem\expandafter[\neo at thmoptions]{#2}{#3}{#4}{#5}{#6}{#7}[#8]%
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+\fi
+}
+
+%% ==============================================================================
+%% Theorem Environment Declarations
+%% ==============================================================================
+
+\newcounter{thmcounter}
+
+% Standard theorems
+\neo at declaretheorem{theorem}{\neo at theoremname}{theoremColor}{thm}{}{\itshape\color{\neoschool at globalcolor}}
+\neo at declaretheorem{definition}{\neo at definitionname}{definitionColor}{def}{}{\color{\neoschool at globalcolor}}
+\neo at declaretheorem{lemma}{\neo at lemmaname}{lemmaColor}{lem}{}{\itshape\color{\neoschool at globalcolor}}
+\neo at declaretheorem{proposition}{\neo at propositionname}{propositionColor}{propo}{}{\itshape\color{\neoschool at globalcolor}}
+\neo at declaretheorem{corollary}{\neo at corollaryname}{corollaryColor}{cor}{}{\itshape\color{\neoschool at globalcolor}}
+\neo at declaretheorem{conjecture}{\neo at conjecturename}{\neo at conjecturecolor}{conj}{}{\itshape\color{\neoschool at globalcolor}}
+\neo at declaretheorem{property}{\neo at propertyname}{propertyColor}{prop}{}{\itshape\color{\neoschool at globalcolor}}
+
+% Activity-related theorems
+\neo at declaretheorem{activity}{\neo at activityname}{activityColor}{act}{}{\color{\neoschool at globalcolor}}
+\neo at declaretheorem{method}{\neo at methodname}{methodColor}{meth}{}{\color{\neoschool at globalcolor}}
+\neo at declaretheorem{application}{\neo at applicationname}{applicationColor}{appl}{}{\color{\neoschool at globalcolor}}
+
+%% ==============================================================================
+%% Exercise Common Elements
+%% ==============================================================================
+
+% QCM Environment Setup
+\DeclareExerciseEnvironmentTemplate{item}
+{\description\item[\GetExerciseProperty{counter}]}
+{\enddescription}
+
+% Multiple Choice Elements
+\DeclareRobustCommand{\neocolorcirc}[2]{%
+ \begin{tikzpicture}[baseline=-1.25mm]
+ \draw[#1,fill=#2] (0.5,0) circle (.75ex);
+ \end{tikzpicture}
+}
+
+\newcommand{\neocheckbox}{$\square$}
+\newcommand{\neochecksol}{$\blacksquare$}
+\newcommand{\neocheckcirc}{\neocolorcirc{black}{white}}
+
+% Task Environments
+\NewTasksEnvironment[%
+ label = \neocheckcirc,
+ label-width = 12pt,
+ item-indent = 3.5em,
+]{choices}[\choice]
+
+\NewTasksEnvironment[%
+ label = \neocheckbox,
+ label-width = 12pt,
+ item-indent = 3.5em,
+]{checkboxes}[\checkbox]
+
+% Shuffle Implementation for Tasks
+\ifneo at shuffle
+ \ExplSyntaxOn
+ \cs_set_protected:Npn \tasks_environment:nnnn #1#2#3#4
+ {
+ \bool_if:NT \l__tasks_debug_bool { \dim_set:Nn \fboxsep {0pt} }
+ \seq_set_split:Nnn \l__tasks_seq {#3} {#4}
+ \seq_pop_left:NN \l__tasks_seq \l__tasks_tmpa_tl
+ \seq_shuffle:N \l__tasks_seq
+ \tl_if_blank:VF \l__tasks_tmpa_tl
+ { \msg_warning:nnVn {tasks}{no-item} \l__tasks_tmpa_tl {#3} }
+ \int_gset:Nn \g__tasks_total_items_int
+ { \seq_count:N \l__tasks_seq }
+ \UseInstance {tasks} {#1}
+ { \g__tasks_total_items_int }
+ {#2}
+ { }
+ \seq_clear:N \l__tasks_seq
+ }
+ \ExplSyntaxOff
+\fi
+
+% Correct Answer Command
+\NewDocumentCommand{\correct}{s}{%
+ \IfBooleanTF#1
+ {\ifneoschool at answers\neochecksol\else\neocheckbox\fi}
+ {\ifneoschool at answers\neocolorcirc{black}{black}\else\neocheckcirc\fi}%
+}
+
+%% ==============================================================================
+%% Exercise Base Box Styles
+%% ==============================================================================
+
+% Base box style
+\tcbset{%
+ neo at base/.style={%
+ enhanced,
+ breakable,
+ fontupper=\color{\neoschool at globalcolor},
+ before skip=\baselineskip,
+ after skip=\baselineskip,
+ colupper=\neo at tcbcolupper,
+ colframe=\neoschool at headcolor,
+ colbacklower=\neo at tcbcolbacklower
+ },
+ % Title base style
+ neo at title@base/.style={%
+ title={\sffamily\GetExerciseName~\GetExerciseProperty{counter}
+ \IfExercisePropertySetT{level}
+ {\enskip[\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]}
+ \IfExercisePropertySetT{subtitle}{ \GetExerciseProperty{subtitle}}
+ \IfExercisePropertySetT{points}{%
+ \enskip(%
+ \GetExerciseProperty{points}
+ \IfExerciseGoalSingularTF{points}
+ {~\XSIMtranslate{point}}
+ {~\XSIMtranslate{points}}
+ )
+ }
+ }
+ }
+}
+
+%% Box Appearance Styles
+\tcbset{%
+ % Basic box style
+ neo at box@base/.style={%
+ enhanced,
+ breakable,
+ fontupper=\color{\neoschool at globalcolor},
+ colupper=\neo at tcbcolupper,
+ colframe=\neoschool at headcolor,
+ colbacklower=\neo at tcbcolbacklower,
+ before skip=\baselineskip,
+ after skip=\baselineskip,
+ left=1mm,
+ right=1mm
+ },
+ % Basic title style
+ neo at title@basic/.style={%
+ title={\neo at boxtitle@content},
+ fonttitle=\bfseries\sffamily
+ },
+ % Colored title style
+ neo at title@colored/.style={%
+ neo at title@basic,
+ coltitle=white,
+ colbacktitle=tcbcolframe
+ },
+ % Basic frame style
+ neo at frame@basic/.style={%
+ colframe=exerciseColor,
+ colback=\neo at tcbcolback
+ },
+ % Hidden frame style
+ neo at frame@hidden/.style={%
+ frame hidden,
+ colframe=exerciseColor!12,
+ colback=white
+ }
+}
+
+%% Corner Styles
+\tcbset{%
+ % Sharp corners
+ neo at corners@sharp/.style={%
+ sharp corners
+ },
+ % Rounded corners
+ neo at corners@rounded/.style={%
+ rounded corners,
+ arc=\neoschool at boxarc
+ }
+}
+
+%% Background Styles
+\tcbset{%
+ % Light background
+ neo at bg@light/.style={%
+ colback=white,
+ colbacktitle=exerciseColor!12
+ },
+ % Shaded background
+ neo at bg@shaded/.style={%
+ colback=exerciseColor!5!white,
+ colbacktitle=exerciseColor!12
+ },
+ % Gradient background
+ neo at bg@gradient/.style={%
+ interior style={%
+ top color=white,
+ bottom color=exerciseColor!5!white
+ }
+ }
+}
+
+%% Title Position Styles
+\tcbset{%
+ % Attached title
+ neo at title@attached/.style={%
+ attach boxed title to top left={
+ yshift*=-\tcboxedtitleheight
+ },
+ boxed title style={%
+ sharp corners,
+ rounded corners=northwest,
+ colback=tcbcolframe,
+ boxrule=0pt
+ }
+ },
+ % Detached title
+ neo at title@detached/.style={%
+ detach title,
+ before upper={\tcbtitle\enskip}
+ }
+}
+
+%% Special Elements
+\tcbset{%
+ % Left rule
+ neo at rule@left/.style={%
+ leftrule=3mm
+ },
+ % Basic border
+ neo at border@basic/.style={%
+ boxrule=0.5pt
+ },
+ % Colored border
+ neo at border@colored/.style 2 args={%
+ borderline west={#1}{#2}{tcbcolframe}
+ },
+ % Shadow effect
+ neo at effect@shadow/.style={%
+ drop fuzzy shadow
+ }
+}
+
+%% Color Schemes
+\tcbset{%
+ % Standard color scheme
+ neo at colors@standard/.style={%
+ colframe=exerciseColor,
+ colback=white,
+ colbacktitle=exerciseColor
+ }
+}
+
+%% Solution Style Setup
+\NewDocumentCommand\neo at box@solution{}{%
+ {\csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ \color{tcbcolframe}\neo at solutionname~\neo at solutiongaptext}\enskip
+}
+
+\tcbset{%
+ neo at solution@basic/.style={%
+ before lower={\neo at box@solution}
+ }
+}
+
+%% Box Title Content
+\newcommand{\neo at boxtitle@content}{%
+ \sffamily\GetExerciseName~\GetExerciseProperty{counter}
+ \IfExercisePropertySetT{level}{%
+ \enskip[\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]
+ }
+ \IfExercisePropertySetT{subtitle}{ \GetExerciseProperty{subtitle}}\enskip
+ \IfExercisePropertySetT{points}{%
+ (\GetExerciseProperty{points}
+ \IfExerciseGoalSingularTF{points}
+ {~\XSIMtranslate{point}}
+ {~\XSIMtranslate{points}})
+ }
+}
+
+%% Exercise Properties and Tagging
+\ExplSyntaxOn
+\newcommand*\neo at replicate{\prg_replicate:nn}
+\ExplSyntaxOff
+
+\DeclareExerciseTagging{level}
+\DeclareExerciseTagging{grade}
+\DeclareExerciseTagging{topic}
+\DeclareExerciseTagging{subject}
+
+%% ==============================================================================
+%% Basic Exercise Box Templates
+%% ==============================================================================
+
+\DeclareExerciseProperty{icon}
+
+\newcommand{\neo at exerciseicon}{%
+ \ifneo at exerciseicons
+ \IfExercisePropertySetTF{icon}{%
+ \faIcon{\GetExerciseProperty{icon}}\hspace{5pt}%
+ }{%
+ \faIcon{book}\hspace{5pt}%
+ }%
+ \fi
+}
+
+% Standard Box Template
+\DeclareExerciseEnvironmentTemplate{box}{%
+ \begin{tcolorbox}[%
+ neo at box@base,
+ skin=bicolor,
+ neo at frame@basic,
+ neo at corners@sharp,
+ neo at rule@left,
+ neo at title@basic
+ ]
+ {%
+ \csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\csname\neoschool at headshape\endcsname\color{exerciseColor}
+ {\small\neo at exerciseicon}\enskip
+ \MakeUppercase{%
+ \XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}
+ \IfExercisePropertySetT{level}{%
+ \enskip[\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]
+ }
+ }
+ \GetExercisePropertyT{subtitle}{\;(\textit{#1})}
+ {\color{exerciseColor}
+ \IfExercisePropertySetT{points}{\enskip%
+ \GetExerciseProperty{points}
+ \GetExercisePropertyT{bonus-points}{[+\printgoal{\PropertyValue}]\;}
+ \IfExerciseGoalSingularTF{points}
+ {~\XSIMtranslate{point}}
+ {~\XSIMtranslate{points}}
+ \enskip\enskip\textemdash{}
+ }
+ }
+ }
+ \enskip
+ }{\end{tcolorbox}}
+
+% No Frame Box Template
+\DeclareExerciseEnvironmentTemplate{noframe-box}{%
+ \begin{tcolorbox}[%
+ neo at box@base,
+ neo at frame@hidden,
+ neo at title@basic
+ ]
+ }{\end{tcolorbox}}
+
+%% ==============================================================================
+%% Advanced Box Templates
+%% ==============================================================================
+
+% Elegant Box Template
+\DeclareExerciseEnvironmentTemplate{elegant-box}{%
+ \begin{tcolorbox}[
+ neo at shared@elegant={exerciseColor},
+ title={%
+ \csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ \color{exerciseColor}
+ {\small\neo at exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}%
+ \IfExercisePropertySetT{level}{%
+ \enskip[\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]%
+ }%
+ \IfExercisePropertySetT{subtitle}{{\itshape\enskip\GetExerciseProperty{subtitle}}}%
+ \IfExercisePropertySetT{points}{%
+ \enskip(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{~\XSIMtranslate{point}}{~\XSIMtranslate{points}})%
+ }%
+ }
+ ]
+ }{\end{tcolorbox}}
+
+% Shaded Box Template
+\DeclareExerciseEnvironmentTemplate{shaded-box}{%
+ \expandafter\def\csname neo at titledrawcolor@exercise\endcsname{exerciseColor}
+ \ifneo at noframe
+ \expandafter\def\csname neo at titledrawcolor@exercise\endcsname{white}
+ \fi
+ \begin{tcolorbox}[
+ neo at shared@shaded={exerciseColor}{exercise},
+ left=0.65em,
+ right=0.65em,
+ coltitle=exerciseColor,
+ title={%
+ \vspace*{0.35em}%
+ \csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\csname\neoschool at headshape\endcsname\color{exerciseColor}%
+ {\small\neo at exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}%
+ \IfExercisePropertySetT{level}{%
+ \enskip[\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]%
+ }%
+ \IfExercisePropertySetT{subtitle}{{\itshape\enskip\GetExerciseProperty{subtitle}}}%
+ \IfExercisePropertySetT{points}{%
+ \enskip(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{~\XSIMtranslate{point}}{~\XSIMtranslate{points}})%
+ }%
+ }
+ ]
+ }{\end{tcolorbox}}
+
+% Slanted Box Template
+\DeclareExerciseEnvironmentTemplate{slanted-box}{%
+ \begin{tcolorbox}[
+ neo at shared@slanted={exerciseColor},
+ before upper*={%
+ \hspace*{-1.5mm}
+ \tcbox[enhanced,
+ colupper=white,
+ colback=exerciseColor,
+ fontupper=\upshape\bfseries,
+ size=small,
+ baseline=3pt,
+ after skip=1em,
+ top=0pt,
+ left=0pt,
+ right=0pt,
+ bottom=0pt,
+ nobeforeafter,
+ frame code={%
+ \path[fill=tcbcolback] (frame.north west)
+ -- ([xshift=2mm]frame.north east)
+ -- (frame.south east)
+ -- (frame.south west)
+ -- (frame.north west)
+ [sharp corners]-- cycle;
+ }
+ ]{\csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ \csname\neoschool at headshape\endcsname
+ {\small\neo at exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}%
+ }
+ }
+ ]
+ {\csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ \csname\neoschool at headshape\endcsname
+ \color{exerciseColor}
+ \IfExercisePropertySetT{level}{%
+ \;[\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]%
+ }%
+ \IfExercisePropertySetT{subtitle}{{\enskip\GetExerciseProperty{subtitle}}}%
+ \IfExercisePropertySetT{points}{%
+ \enskip(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{~\XSIMtranslate{point}}{~\XSIMtranslate{points}})%
+ }%
+ }\;%
+ }{\end{tcolorbox}}
+
+% Sober Box Template
+\DeclareExerciseEnvironmentTemplate{sober-box}{%
+ \begin{tcolorbox}[
+ neo at shared@sober={exerciseColor},
+ before upper={\tcbtitle\enskip},
+ coltitle=exerciseColor,
+ title={%
+ \csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ {\small\neo at exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}%
+ \IfExercisePropertySetT{level}{%
+ \enskip[\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]%
+ }%
+ \IfExercisePropertySetT{subtitle}{{\itshape\enskip\GetExerciseProperty{subtitle}}}%
+ \IfExercisePropertySetT{points}{%
+ \enskip(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{~\XSIMtranslate{point}}{~\XSIMtranslate{points}})%
+ }%
+ }
+ ]
+ }{\end{tcolorbox}}
+
+% Classic Box Template
+\DeclareExerciseEnvironmentTemplate{classic-box}{%
+ \begin{tcolorbox}[
+ neo at shared@classic={exerciseColor},
+ title={%
+ \csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ \color{white}
+ {\small\neo at exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}%
+ \IfExercisePropertySetT{level}{%
+ \enskip[\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]%
+ }%
+ \IfExercisePropertySetT{subtitle}{{\itshape\enskip\GetExerciseProperty{subtitle}}}%
+ \IfExercisePropertySetT{points}{%
+ \enskip(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{~\XSIMtranslate{point}}{~\XSIMtranslate{points}})%
+ }%
+ }
+ ]
+ }{\end{tcolorbox}}
+
+% Classy Box Template
+\DeclareExerciseEnvironmentTemplate{classy-box}{%
+ \begin{tcolorbox}[
+ neo at shared@classy={exerciseColor},
+ title={%
+ \csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ \color{white}
+ {\small\neo at exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}%
+ \IfExercisePropertySetT{level}{%
+ \enskip[\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]%
+ }%
+ \IfExercisePropertySetT{subtitle}{{\itshape\enskip\GetExerciseProperty{subtitle}}}%
+ \IfExercisePropertySetT{points}{%
+ \enskip(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{~\XSIMtranslate{point}}{~\XSIMtranslate{points}})%
+ }%
+ }
+ ]
+ }{\end{tcolorbox}}
+
+% Rect and Num box Templates
+\DeclareExerciseEnvironmentTemplate{rect-box}{%
+ \begin{tcolorbox}[
+ enhanced,
+ skin=bicolor,
+ sharp corners,
+ \neo at framehidden,
+ coltitle=white,
+ colframe=exerciseColor,
+ colback=\neo at tcbcolback,
+ colupper=\neoschool at globalcolor,
+ fonttitle=\csname\neoschool at headweight\endcsname,
+ fontupper=\color{\neoschool at globalcolor},
+ left=\neo at leftpadding,
+ right=\neo at rightpadding,
+ after skip=\neo at afterskip,
+ before skip=\neo at beforeskip,
+ before upper*={%
+ \tcbox[enhanced,
+ colupper=white,
+ colback=exerciseColor,
+ fontupper=\csname\neoschool at headweight\endcsname,
+ size=small,
+ baseline=3pt,
+ top=0pt,
+ bottom=0pt,
+ left=0pt,
+ right=0pt,
+ nobeforeafter,
+ frame code={%
+ \path[fill=tcbcolback]
+ (frame.north west) --
+ (frame.north east) {[rounded corners=5pt]--
+ (frame.south east)} --
+ (frame.south west) --
+ cycle;
+ }]%
+ {%
+ \csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ \csname\neoschool at headshape\endcsname
+ {\small\neo at exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}\nobreakspace\GetExerciseProperty{counter}%
+ }%
+ }
+ ]%
+ {
+ \csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ \csname\neoschool at headshape\endcsname
+ \color{exerciseColor}
+ \IfExercisePropertySetT{level}
+ {\;[\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]}%
+ \IfExercisePropertySetT{subtitle}{{\enskip\GetExerciseProperty{subtitle}}}%
+ \IfExercisePropertySetT{points}{%
+ \enskip(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{\,point}{\,points})\;%
+ }%
+ }
+ \!%
+ }{\end{tcolorbox}}
+
+\DeclareExerciseEnvironmentTemplate{rect-box-outlined}{%
+ \begin{tcolorbox}[
+ enhanced,
+ skin=bicolor,
+ sharp corners,
+ \neo at framehidden,
+ coltitle=exerciseColor,
+ colframe=exerciseColor,
+ colback=white,
+ colupper=\neoschool at globalcolor,
+ fonttitle=\csname\neoschool at headweight\endcsname,
+ fontupper=\color{\neoschool at globalcolor},
+ left=\neo at leftpadding,
+ right=\neo at rightpadding,
+ after skip=\neo at afterskip,
+ before skip=\neo at beforeskip,
+ before upper*={%
+ \tcbox[enhanced,
+ colupper=exerciseColor,
+ colback=white,
+ colframe=exerciseColor,
+ fontupper=\csname\neoschool at headweight\endcsname,
+ size=small,
+ baseline=3pt,
+ top=0pt,
+ bottom=0pt,
+ left=1pt,
+ right=1pt,
+ nobeforeafter,
+ ]%
+ {%
+ \csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ \csname\neoschool at headshape\endcsname
+ {\small\neo at exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}\nobreakspace\GetExerciseProperty{counter}%
+ }%
+ }
+ ]%
+ { \csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ \csname\neoschool at headshape\endcsname
+ \color{exerciseColor}
+ \IfExercisePropertySetT{level}
+ {\enskip[\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]}%
+ \IfExercisePropertySetT{subtitle}{{\enskip\GetExerciseProperty{subtitle}}}%
+ \IfExercisePropertySetT{points}{%
+ \enskip(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{\,point-short}{\,points-short})%
+ }%
+ }\enskip
+ }{\end{tcolorbox}}
+
+\DeclareExerciseEnvironmentTemplate{num-box}{%
+ \begin{tcolorbox}[
+ enhanced,
+ skin=bicolor,
+ sharp corners,
+ before skip=-.25\baselineskip,
+ after skip=-.25\baselineskip,
+ frame hidden,
+ colframe=\neoschool at headcolor,
+ colback=white,
+ colupper=\neoschool at globalcolor,
+ fontupper=\color{\neoschool at globalcolor},
+ enlarge left by=-.5\leftmargin,
+ enlarge right by=-.5\rightmargin,
+ width=\textwidth+\leftmargin+\rightmargin,
+ before upper*={%
+ \tcbox[enhanced,
+ colupper=white,
+ colback=\neoschool at headcolor,
+ fontupper=\csname\neoschool at headweight\endcsname,
+ size=small,
+ baseline=4pt,
+ top=1pt,
+ bottom=1pt,
+ left=1pt,
+ right=1pt,
+ nobeforeafter,
+ frame code={%
+ \path[fill=tcbcolback] (frame.north west) -- (frame.north east)
+ -- (frame.south east) -- (frame.south west) -- cycle;
+ }]%
+ {%
+ \csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ {\small\neo at exerciseicon}%
+ \GetExerciseProperty{counter}%
+ }%
+ }
+ ]%
+ {\csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ \color{exerciseColor}
+ \IfExercisePropertySetT{level}
+ {\enskip[\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]}%
+ \IfExercisePropertySetT{subtitle}{{\itshape\enskip\GetExerciseProperty{subtitle}}}%
+ \IfExercisePropertySetT{points}{%
+ \;(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{\,point-short}{\,points-short})%
+ }%
+ }%
+ \enskip
+ }{\end{tcolorbox}}
+
+\DeclareExerciseEnvironmentTemplate{num-box-outlined}{%
+ \begin{tcolorbox}[
+ enhanced,
+ skin=bicolor,
+ sharp corners,
+ before skip=-.25\baselineskip,
+ after skip=-.25\baselineskip,
+ colframe=exerciseColor,
+ colback=white,
+ colupper=\neoschool at globalcolor,
+ fontupper=\color{\neoschool at globalcolor},
+ enlarge left by=-.5\leftmargin,
+ enlarge right by=-.5\rightmargin,
+ width=\textwidth+\leftmargin+\rightmargin,
+ before upper*={%
+ \tcbox[enhanced,
+ colupper=exerciseColor,
+ colback=white,
+ colframe=exerciseColor,
+ fontupper=\csname\neoschool at headweight\endcsname,
+ size=small,
+ baseline=4pt,
+ top=1pt,
+ bottom=1pt,
+ left=1pt,
+ right=1pt,
+ nobeforeafter,
+ ]%
+ {%
+ \csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ {\small\neo at exerciseicon}%
+ \GetExerciseProperty{counter}%
+ }%
+ }
+ ]%
+ {\csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ \color{exerciseColor}
+ \IfExercisePropertySetT{level}
+ {\enskip[\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]}%
+ \IfExercisePropertySetT{subtitle}{{\itshape\enskip\GetExerciseProperty{subtitle}}}%
+ \IfExercisePropertySetT{points}{%
+ \;(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{\,point-short}{\,points-short})%
+ }%
+ }%
+ \enskip
+ }{\end{tcolorbox}}
+
+\DeclareExerciseEnvironmentTemplate{ex-num-box}{%
+ \begin{tcolorbox}[
+ enhanced,
+ skin=bicolor,
+ sharp corners,
+ before skip=-.25\baselineskip,
+ after skip=-.25\baselineskip,
+ frame hidden,
+ colframe=\neoschool at headcolor,
+ colback=white,
+ colupper=\neoschool at globalcolor,
+ fontupper=\color{\neoschool at globalcolor},
+ enlarge left by=-.5\leftmargin,
+ enlarge right by=-.5\rightmargin,
+ width=\textwidth+\leftmargin+\rightmargin,
+ before upper*={%
+ \tcbox[enhanced,
+ colupper=white,
+ colback=\neoschool at headcolor,
+ fontupper=\csname\neoschool at headweight\endcsname,
+ size=small,
+ baseline=4pt,
+ top=1pt,
+ bottom=1pt,
+ left=1pt,
+ right=1pt,
+ nobeforeafter,
+ frame code={%
+ \path[fill=tcbcolback] (frame.north west) -- (frame.north east)
+ -- (frame.south east) -- (frame.south west) -- cycle;
+ }]%
+ {%
+ \csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ {\small\neo at exerciseicon}%
+ Ex.~\GetExerciseProperty{counter}%
+ }%
+ }
+ ]%
+ {\csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ \color{exerciseColor}
+ \IfExercisePropertySetT{level}
+ {\enskip[\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]}%
+ \IfExercisePropertySetT{subtitle}{{\itshape\enskip\GetExerciseProperty{subtitle}}}%
+ \IfExercisePropertySetT{points}{%
+ \;(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{\,point-short}{\,points-short})%
+ }%
+ }%
+ \enskip
+ }{\end{tcolorbox}}
+
+\DeclareExerciseEnvironmentTemplate{ex-num-box-outlined}{%
+ \begin{tcolorbox}[
+ enhanced,
+ skin=bicolor,
+ sharp corners,
+ before skip=-.25\baselineskip,
+ after skip=-.25\baselineskip,
+ colframe=exerciseColor,
+ colback=white,
+ colupper=\neoschool at globalcolor,
+ fontupper=\color{\neoschool at globalcolor},
+ enlarge left by=-.5\leftmargin,
+ enlarge right by=-.5\rightmargin,
+ width=\textwidth+\leftmargin+\rightmargin,
+ before upper*={%
+ \tcbox[enhanced,
+ colupper=exerciseColor,
+ colback=white,
+ colframe=exerciseColor,
+ fontupper=\csname\neoschool at headweight\endcsname,
+ size=small,
+ baseline=4pt,
+ top=1pt,
+ bottom=1pt,
+ left=1pt,
+ right=1pt,
+ nobeforeafter,
+ ]%
+ {%
+ \csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ {\small\neo at exerciseicon}%
+ Ex.~\GetExerciseProperty{counter}%
+ }%
+ }
+ ]%
+ {\csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ \color{exerciseColor}
+ \IfExercisePropertySetT{level}
+ {\enskip[\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]}%
+ \IfExercisePropertySetT{subtitle}{{\itshape\enskip\GetExerciseProperty{subtitle}}}%
+ \IfExercisePropertySetT{points}{%
+ \;(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{\,point-short}{\,points-short})%
+ }%
+ }%
+ \enskip
+ }{\end{tcolorbox}}
+
+%%% Chevrons for Rules
+
+\newcommand{\lchevrons}{%
+ \begin{tikzpicture}[scale=0.1, baseline=0.2mm, line width=1.2pt]
+ \draw (0,0) -- (-1,1.25) -- (0,2.5);
+ \draw (2,0) -- (1,1.25) -- (2,2.5);
+ \draw (4,0) -- (3,1.25) -- (4,2.5);
+ \end{tikzpicture}%
+}
+
+\newcommand{\lcircle}{%
+ \begin{tikzpicture}[scale=1, baseline=-1mm, line width=1.2pt]
+ \draw (0,0) circle (3pt);
+ \end{tikzpicture}%
+}
+
+%%% Horizontal Rule with Boxed Title
+
+\DeclareExerciseEnvironmentTemplate{box-hrule}{%
+ \par\vspace{3.25ex plus 1ex minus .2ex}
+ \Needspace*{3\baselineskip}%
+ \noindent
+ {\csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\csname\neoschool at headshape\endcsname
+ \tcbox[on line,boxsep=-2pt,boxrule=0.4pt,left=7pt,right=7pt,colframe=exerciseColor,colback=exerciseColor,sharp corners, rounded corners = southeast]{\color{white}{\small\neo at exerciseicon}\XSIMmixedcase{\GetExerciseName}\nobreakspace\GetExerciseProperty{counter}}%
+ \color{exerciseColor}
+ \IfExercisePropertySetT{level}
+ {\enskip[\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]}%
+ \IfInsideSolutionF{%
+ \GetExercisePropertyT{subtitle}{{\itshape\enskip{\PropertyValue}\enskip}}%
+ }%
+ \hspace{-1pt}\xrfill[.085cm]{1.2pt}[exerciseColor]\hspace{-1pt}%
+ {\color{exerciseColor}\footnotesize\lchevrons}%
+ {%
+ \IfExercisePropertySetT{points}{\bfseries\color{exerciseColor}\enskip%
+ \GetExerciseProperty{points}
+ \GetExercisePropertyT{bonus-points}{[+\printgoal{\PropertyValue}]\;}%
+ \IfExerciseGoalSingularTF{points}
+ {\XSIMtranslate{point}}
+ {\XSIMtranslate{points}}%
+ }%
+ }%
+ }%
+ \par\vspace{1.5ex plus .2ex}
+ \@afterindentfalse\@afterheading
+}{}
+
+%%% Horizontal Rule with Boxed Title - Outlined
+
+\DeclareExerciseEnvironmentTemplate{box-hrule-out}{%
+ \par\vspace{3.25ex plus 1ex minus .2ex}
+ \Needspace*{3\baselineskip}%
+ {\csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\csname\neoschool at headshape\endcsname\tcbox[on line,boxsep=-2pt,boxrule=1.2pt,left=7pt,right=7pt,colframe=exerciseColor,colback=white,sharp corners,
+ rounded corners = east,arc=5pt
+ ]{\color{exerciseColor}{\small\neo at exerciseicon}\XSIMmixedcase{\GetExerciseName}\nobreakspace\GetExerciseProperty{counter}}%
+ \color{exerciseColor}%
+ \IfExercisePropertySetT{level}
+ {\enskip[\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]}%
+ \IfInsideSolutionF{%
+ \GetExercisePropertyT{subtitle}{{\itshape\enskip{\PropertyValue}}}%
+ }%
+ \hspace{-1pt}\xrfill[.085cm]{1.2pt}[exerciseColor]\hspace{-1pt}%
+ % \!\!{\color{exerciseColor}\small\lcircle}%
+ {\color{exerciseColor}\footnotesize\lchevrons}%
+ {\bfseries\color{exerciseColor}%
+ \IfExercisePropertySetT{points}{\enskip%
+ \GetExerciseProperty{points}
+ \GetExercisePropertyT{bonus-points}{[+\printgoal{\PropertyValue}]\;}%
+ \IfExerciseGoalSingularTF{points}
+ {\XSIMtranslate{point}}
+ {\XSIMtranslate{points}}%
+ }%
+ }%
+ }%
+ \par\vspace{1.5ex plus .2ex}
+ \@afterindentfalse\@afterheading
+}{}
+
+\DeclareExerciseEnvironmentTemplate{box-hrule-in}{%
+ \par\vspace{3.25ex plus 1ex minus .2ex}
+ \Needspace*{3\baselineskip}%
+ \noindent
+ {\csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\csname\neoschool at headshape\endcsname\color{exerciseColor}%
+ \tcbox[on line,boxsep=-2pt,boxrule=1.2pt,left=7pt,right=7pt,colframe=exerciseColor,colback=white,sharp corners,
+ rounded corners = west,arc=5pt
+ ]{\color{exerciseColor}{\small\neo at exerciseicon}\XSIMmixedcase{\GetExerciseName}\nobreakspace\GetExerciseProperty{counter}}%
+ \color{exerciseColor}
+ \IfExercisePropertySetT{level}
+ {\enskip[\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]}%
+ \IfInsideSolutionF{%
+ \GetExercisePropertyT{subtitle}{{\itshape\enskip{\PropertyValue}}}%
+ }%
+ \hspace{-1pt}\xrfill[.085cm]{1.2pt}[exerciseColor]\hspace{-1pt}%
+ {\color{exerciseColor}\small\lcircle}%
+ {\bfseries\color{exerciseColor}%
+ \IfExercisePropertySetT{points}{\enskip%
+ \GetExerciseProperty{points}
+ \GetExercisePropertyT{bonus-points}{[+\printgoal{\PropertyValue}]\;}%
+ \IfExerciseGoalSingularTF{points}
+ {\XSIMtranslate{point}}
+ {\XSIMtranslate{points}}%
+ }}}%
+ \par\vspace{1.5ex plus .2ex}
+ \@afterindentfalse\@afterheading
+}{}
+
+%%% Boxed Title
+
+\DeclareExerciseEnvironmentTemplate{boxed}{%
+ \par\vspace{2ex plus .5ex minus .1ex}%
+ \noindent
+ {\csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ \csname\neoschool at headshape\endcsname
+ \tcbox[
+ on line,
+ boxsep=-3pt,
+ left=7pt,
+ right=7pt,
+ colframe=exerciseColor,
+ colback=exerciseColor,
+ sharp corners,
+ rounded corners = southeast,
+ ]{%
+ \color{white}{\small\neo at exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}\nobreakspace\GetExerciseProperty{counter}%
+ }%
+ }%
+ {%
+ \csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ \csname\neoschool at headshape\endcsname
+ \color{exerciseColor}
+ \IfExercisePropertySetT{level}
+ {\hspace{5pt}[\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]}%
+ \IfExercisePropertySetT{subtitle}{{\enskip\GetExerciseProperty{subtitle}}}%
+ \IfExercisePropertySetT{points}{%
+ \enskip(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{\,point}{\,points})%
+ }%
+ }%
+ \hspace{2pt}
+}{}
+
+%%% Boxed Title - Outlined
+
+\DeclareExerciseEnvironmentTemplate{boxed-out}{%
+ \par\vspace{2ex plus .5ex minus .1ex}%
+ \noindent
+ {\csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ \csname\neoschool at headshape\endcsname
+ \tcbox[
+ on line,
+ boxrule=0.8pt,
+ boxsep=-3pt,
+ left=7pt,
+ right=7pt,
+ colframe=exerciseColor,
+ colback=white,
+ sharp corners,
+ rounded corners = southeast,
+ ]{%
+ \color{exerciseColor}{\small\neo at exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}\nobreakspace\GetExerciseProperty{counter}%
+ }%
+ }%
+ {%
+ \csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ \csname\neoschool at headshape\endcsname
+ \color{exerciseColor}
+ \IfExercisePropertySetT{level}
+ {\hspace{5pt}[\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]}%
+ \IfExercisePropertySetT{subtitle}{{\enskip\GetExerciseProperty{subtitle}}}%
+ \IfExercisePropertySetT{points}{%
+ \enskip(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{\,point}{\,points})%
+ }%
+ }%
+ \hspace{2pt}
+}{}
+
+
+%% ==============================================================================
+%% Simple Style Templates
+%% ==============================================================================
+
+%% Common Style Settings
+\newcommand{\neo at startsection}[1]{%
+ \@startsection{paragraph}{4}{\z@}{0.25\baselineskip}{-1em}
+ {\csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\csname\neoschool at headshape\endcsname\color{#1}}
+}
+
+%% Inline Style
+%% ----------------------------------
+\DeclareExerciseEnvironmentTemplate{inline}{%
+ \neo at startsection{exerciseColor}
+ {%
+ {\small\neo at exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}\nobreakspace\GetExerciseProperty{counter}%
+ \IfExercisePropertySetT{level}{\enskip%
+ [\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]
+ }%
+ \GetExercisePropertyT{subtitle}{{\enskip\normalfont\rmfamily\itshape\csname\neoschool at headweight\endcsname\PropertyValue}}%
+ \IfExercisePropertySetT{points}{\enskip(%
+ \GetExerciseProperty{points}%
+ \GetExercisePropertyT{bonus-points}{[+\printgoal{\PropertyValue}]}%
+ \IfExerciseGoalSingularTF{points}
+ {\;\XSIMtranslate{point})\!}
+ {\;\XSIMtranslate{points})\!}
+ }
+}
+\color{\neoschool at globalcolor}\hspace{-1em}
+}{\par\vspace{0.5\baselineskip}}
+
+
+%% Section Style
+%% ----------------------------------
+\DeclareExerciseEnvironmentTemplate{section}{%
+ \section*{%
+ {\small\neo at exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}\nobreakspace\GetExerciseProperty{counter}%
+ \IfExercisePropertySetT{level}{\enskip%
+ [\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]
+ }%
+ \GetExercisePropertyT{subtitle}{{\:\itshape\PropertyValue}}%
+ \IfExercisePropertySetT{points}{\enskip(%
+ \GetExerciseProperty{points}%
+ \GetExercisePropertyT{bonus-points}{[+\printgoal{\PropertyValue}]}%
+ \IfExerciseGoalSingularTF{points}
+ {\;\XSIMtranslate{point})\!}
+ {\;\XSIMtranslate{points})\!}
+ }%
+ }%
+ \color{\neoschool at globalcolor}%
+}{\par\vspace{0.5\baselineskip}}
+
+% %% Terminal Style
+\DeclareExerciseEnvironmentTemplate{terminal}{%
+ \neo at startsection{exerciseColor}
+ {%
+ {\small\neo at exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}\nobreakspace\GetExerciseProperty{counter}
+ \enskip{\small\faTerminal}
+ \IfExercisePropertySetT{level}{%
+ \enskip[\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]
+ }
+ \GetExercisePropertyT{subtitle}{{\enskip\PropertyValue}}
+ \IfExercisePropertySetT{points}{\enskip(%
+ \GetExerciseProperty{points}
+ \GetExercisePropertyT{bonus-points}{[+\printgoal{\PropertyValue}]\;}
+ \IfExerciseGoalSingularTF{points}
+ {~\XSIMtranslate{point})\!}
+ {~\XSIMtranslate{points})\!}
+ }
+}
+\color{\neoschool at globalcolor}\hspace{-2em}
+}{\par}
+
+%% Subsection Style
+\DeclareExerciseEnvironmentTemplate{subsection}{%
+ \subsection*{%
+ {\small\neo at exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}\nobreakspace
+ \GetExerciseProperty{counter}
+ \IfExercisePropertySetT{level}{%
+ ~[\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]
+ }
+ \IfInsideSolutionF{%
+ \GetExercisePropertyT{subtitle}
+ {{~\normalfont\csname\neoschool at headweight\endcsname\itshape\PropertyValue}}
+ }{%
+ \IfExercisePropertySetT{points}{%
+ \GetExerciseProperty{points}
+ \GetExercisePropertyT{bonus-points}{[+\printgoal{\PropertyValue}]\;}
+ \IfExerciseGoalSingularTF{points}
+ {\hfill\XSIMtranslate{point}}
+ {\hfill\XSIMtranslate{points}}
+ }
+ }
+ }%
+}{\par}
+
+%% Block Style
+\DeclareExerciseEnvironmentTemplate{block}{%
+ \subsection*{%
+ {\small\neo at exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}\nobreakspace
+ \GetExerciseProperty{counter}
+ \IfExercisePropertySetT{level}{%
+ ~[\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]
+ }
+ \IfInsideSolutionF{%
+ \GetExercisePropertyT{subtitle}
+ {{~\normalfont\csname\neoschool at headweight\endcsname\itshape\PropertyValue}}
+ }{%
+ \IfExercisePropertySetT{points}{%
+ \GetExerciseProperty{points}
+ \GetExercisePropertyT{bonus-points}{[+\printgoal{\PropertyValue}]\;}
+ \IfExerciseGoalSingularTF{points}
+ {\hfill\XSIMtranslate{point}}
+ {\hfill\XSIMtranslate{points}}
+ }
+ }
+ }%
+ \vspace{-0.5em}
+}{%
+ \vspace{-1em}
+}
+
+%% ==============================================================================
+%% Horizontal Rule Style
+%% ==============================================================================
+
+\ifneo at amslikethm
+ \DeclareExerciseEnvironmentTemplate{hrule}{%
+ \par\vspace{2ex plus 0.5ex minus .1ex}
+ \Needspace*{3\baselineskip}
+ \noindent
+ \csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\csname\neoschool at headshape\endcsname
+ {\small\neo at exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}\nobreakspace\GetExerciseProperty{counter}\enskip
+ \IfExercisePropertySetT{level}{%
+ [\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]\enskip
+ }
+ \IfInsideSolutionF{%
+ \GetExercisePropertyT{subtitle}{{{\normalfont\PropertyValue}\enskip}}
+ }
+ \xrfill[.075cm]{0.4pt}[exerciseColor]
+ {\color{exerciseColor}
+ \IfExercisePropertySetT{points}{\enskip
+ \GetExerciseProperty{points}
+ \GetExercisePropertyT{bonus-points}{[+\printgoal{\PropertyValue}]\;}
+ \IfExerciseGoalSingularTF{points}
+ {~\XSIMtranslate{point}}
+ {~\XSIMtranslate{points}}
+ }
+ }
+ \par\vspace{1ex plus .1ex}
+ \@afterindentfalse\@afterheading
+ }{\par}
+\else
+ \DeclareExerciseEnvironmentTemplate{hrule}{%
+ \par\vspace{2ex plus 0.5ex minus .1ex}
+ \Needspace*{3\baselineskip}
+ \noindent
+ \csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\csname\neoschool at headshape\endcsname
+ {\small\neo at exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}\nobreakspace\GetExerciseProperty{counter}\enskip
+ \IfExercisePropertySetT{level}{%
+ [\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]\enskip
+ }
+ \IfInsideSolutionF{%
+ \GetExercisePropertyT{subtitle}{{({\PropertyValue})\enskip}}
+ }
+ \xrfill[.075cm]{1.2pt}[exerciseColor]
+ {\color{exerciseColor}
+ \IfExercisePropertySetT{points}{\enskip
+ \GetExerciseProperty{points}
+ \GetExercisePropertyT{bonus-points}{[+\printgoal{\PropertyValue}]\;}
+ \IfExerciseGoalSingularTF{points}
+ {~\XSIMtranslate{point}}
+ {~\XSIMtranslate{points}}
+ }
+ }
+ \par\vspace{1ex plus .1ex}
+ \@afterindentfalse\@afterheading
+ }{\par}
+\fi
+
+%% ==============================================================================
+%% Solution Box Configuration
+%% ==============================================================================
+
+% Solution box template
+\DeclareExerciseEnvironmentTemplate{sol-box}{%
+ \begin{tcolorbox}[%
+ enhanced,
+ breakable,
+ frame hidden,
+ before skip=0.5\baselineskip,
+ after skip=0.5\baselineskip,
+ left=0.75em,
+ right=0.5em,
+ boxsep=1ex,
+ colframe=solutionColor,
+ colback=solutionColor!5,
+ ]
+ {\color{solutionColor}
+ \csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\csname\neoschool at headshape\endcsname
+ \XSIMmixedcase{\GetExerciseName}
+ \csname neo at solutiongaptext\endcsname
+ \GetExerciseProperty{counter}
+ }
+ }{\end{tcolorbox}}
+
+%% ==============================================================================
+%% Smart Boxes
+%% ==============================================================================
+\DeclareExerciseProperty{answer-type}
+
+\DeclareExerciseEnvironmentTemplate{smart-box}{%
+ \begin{tcolorbox}[%
+ neo at box@base,
+ neo at frame@basic,
+ neo at title@colored,
+ title={%
+ \raisebox{0pt}{\textcolor{white}{\small\neo at exerciseicon}}%
+ \csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\csname\neoschool at headshape\endcsname
+ \XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}%
+ \IfExercisePropertySetT{level}{%
+ \enskip[\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]%
+ }%
+ \IfExercisePropertySetT{subtitle}{\enskip\GetExerciseProperty{subtitle}}%
+ \IfExercisePropertySetT{points}{%
+ \enskip(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{~point}{~points})%
+ }%
+ }%
+ ]%
+ }{\end{tcolorbox}}
+
+\DeclareExerciseEnvironmentTemplate{minimal-ams}{%
+ \par\vspace{2ex plus 0.5ex minus .1ex}
+ \Needspace*{3\baselineskip}
+ \noindent
+ {%
+ {\small\neo at exerciseicon}
+ \csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\csname\neoschool at headshape\endcsname
+ \XSIMmixedcase{\GetExerciseName}\nobreakspace\GetExerciseProperty{counter}%
+ \IfExercisePropertySetT{level}{%
+ \enskip[\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]%
+ }%
+ \IfExercisePropertySetT{subtitle}{%
+ \enskip{\itshape\GetExerciseProperty{subtitle}}%
+ }%
+ \IfExercisePropertySetT{points}{%
+ \enskip(%
+ \GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}%
+ {~point}%
+ {~points}%
+ )%
+ }%
+ \enskip
+ }%
+}{\par\vspace{1ex plus .5ex}}
+
+\DeclareExerciseEnvironmentTemplate{rule-ams}{%
+ \par\vspace{2ex plus 0.5ex minus .1ex}
+ \Needspace*{3\baselineskip}
+ \noindent
+ {%
+ {\small\neo at exerciseicon}
+ \csname\neoschool at headstyle\endcsname\csname\neoschool at headweight\endcsname\csname\neoschool at headshape\endcsname
+ \XSIMmixedcase{\GetExerciseName}\nobreakspace\GetExerciseProperty{counter}%
+ \IfExercisePropertySetT{level}{%
+ \enskip[\raisebox{0.5pt}{$\neo at replicate{\GetExerciseProperty{level}}{{\star}}$}]%
+ }%
+ \IfExercisePropertySetT{subtitle}{%
+ \enskip{\itshape\GetExerciseProperty{subtitle}}%
+ }%
+ \IfExercisePropertySetT{points}{%
+ \enskip(%
+ \GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}%
+ {~point}%
+ {~points}%
+ )%
+ }%
+ \enskip
+ }%
+ \par\nobreak\vspace{.4ex}%
+ \noindent\hspace*{2em}%
+ \tikz[baseline]{\draw[line width=0.4pt, exerciseColor!20] (0,0) -- (\linewidth-4em,0);}%
+ \par\vspace{.8ex}%
+ \@afterindentfalse\@afterheading
+}{\par\vspace{1ex plus .5ex}}
+
+%% ==============================================================================
+%% Exercise Configuration
+%% ==============================================================================
+
+% Enable solutions if answers option is active
+\ifneoschool at answers
+ \xsimsetup{%
+ solution/print=true
+ }
+\fi
+
+% Base exercise setup
+\ifneoschool at sectionthmcounter
+ \ifneoschool at sharedexcounter
+ \xsimsetup{%
+ exercise/within = section,
+ exercise/name = {\neo at exercisename},
+ solution/name = {\neo at solutionname},
+ solution/template = sol-box
+ }
+ \renewcommand*{\theexercise}{\thesection.\arabic{thmcounter}}
+ \AtBeginEnvironment{exercise}{\stepcounter{thmcounter}\addtocounter{exercise}{-1}}
+ \else
+ \xsimsetup{%
+ exercise/within = section,
+ exercise/name = {\neo at exercisename},
+ solution/name = {\neo at solutionname},
+ solution/template = sol-box
+ }
+ \fi
+\else
+ \ifneoschool at sharedexcounter
+ \xsimsetup{%
+ exercise/name = {\neo at exercisename},
+ solution/name = {\neo at solutionname},
+ solution/template = sol-box
+ }
+ \renewcommand*{\theexercise}{\arabic{thmcounter}}
+ \AtBeginEnvironment{exercise}{\stepcounter{thmcounter}\addtocounter{exercise}{-1}}
+ \else
+ \xsimsetup{%
+ exercise/name = {\neo at exercisename},
+ solution/name = {\neo at solutionname},
+ solution/template = sol-box
+ }
+ \fi
+\fi
+
+%% Style selection based on class options
+\ifneo at amslikethm
+ \xsimsetup{exercise/template=inline}
+\fi
+
+\ifneo at classythm
+ \xsimsetup{exercise/template=classy-box}
+\fi
+
+\ifneo at classicthm
+ \xsimsetup{exercise/template=classic-box}
+\fi
+
+\ifneo at soberthm
+ \xsimsetup{exercise/template=sober-box}
+\fi
+
+\ifneo at elegantthm
+ \xsimsetup{exercise/template=elegant-box}
+\fi
+
+\ifneo at shadedthm
+ \xsimsetup{exercise/template=shaded-box}
+\fi
+
+\ifneo at slantedthm
+ \xsimsetup{exercise/template=slanted-box}
+\fi
+
+\ifneo at boxedthm
+ \xsimsetup{exercise/template=rect-box}
+\fi
+
+%% ==============================================================================
+%% Referencing an exercise
+%% ==============================================================================
+
+\ExplSyntaxOn
+\NewDocumentCommand \exercisenumber {m}
+ {
+ \xsim_get_property:nxn
+ {exercise}
+ { \xsim_get_id_for_property:nn {ID} {#1} }
+ {counter}
+ }
+\cs_generate_variant:Nn \xsim_get_property:nnn {nx}
+\ExplSyntaxOff
+
+%% ==============================================================================
+%% Utility Commands for Exercises
+%% ==============================================================================
+
+% Print exercises by level
+\NewDocumentCommand\printlevelexid{m}{%
+ \noindent {\bfseries \csname neo at pathname\endcsname\space#1 :}
+ \ForEachUsedExerciseByType{%
+ \def\ExerciseType{##1}
+ \def\ExerciseID{##2}
+ \IfExercisePropertySetT{level}{%
+ \ifnum\GetExerciseProperty{level}=#1
+ \fbox{\GetExerciseProperty{id}}\hspace*{2mm}
+ \else
+ \hspace*{5mm}
+ \fi
+ }
+ }
+}
+
+%% ==============================================================================
+%% Final Configuration Commands
+%% ==============================================================================
+
+% Dynamic grid fill command
+\newlength{\neo at gridwidth}
+\NewDocumentCommand\gridfill{ s O{\neoschool at titlecolor} O{5mm} O{5mm} }{%
+ \pgfmathsetmacro{\neo at gridwidth}{floor(\linewidth/1cm)}
+ \edef\neo at gridwidth{\neo at gridwidth cm}
+ \vspace*{\fill}
+ \IfBooleanTF#1
+ {{\noindent\centering
+ \frenchgrid[#2]{\neo at gridwidth}{\dimexpr\textheight-\pagetotal-2\baselineskip\relax}}
+ }
+ {{\noindent\centering
+ \customgrid[#2][#3][#4]{\neo at gridwidth}{\dimexpr\textheight-\pagetotal-2\baselineskip\relax}}
+ }
+}
+
+% Solution text formatting
+\NewDocumentCommand\neo at solution@text{}{%
+ {\csname\neoschool at headstyle\endcsname
+ \csname\neoschool at headweight\endcsname
+ \color{tcbcolframe}
+ \ifx\neo at solutiongaptext\empty
+ \neo at solutionname
+ \else
+ \neo at solutionname~\neo at solutiongaptext
+ \fi
+ }
+}
+
+%% ==============================================================================
+%% Utilities
+%% ==============================================================================
+
+%% Core Document Settings
+%% ----------------------------------
+% Table styling
+\setlength{\arrayrulewidth}{0.5pt}
+% \arrayrulecolor{\neoschool at titlecolor}
+\renewcommand{\arraystretch}{1.15}
+
+% Document color management
+\newcommand{\documentcolor}[1]{%
+ \color{#1}\global\let\default at color\current at color
+}
+
+% Initialize document settings
+\AtBeginDocument{%
+ \documentcolor{\neoschool at globalcolor}
+ \DeclareGraphicsExtensions{.pdf,.PDF,.eps,.EPS,.png,.PNG,.tif,.TIF,.jpg,.JPG,.jpeg,.JPEG}
+}
+
+%% Font Settings
+%% ----------------------------------
+\ifneo at sfall
+ \renewcommand{\neoschool at headstyle}{sffamily}
+ \renewcommand{\neoschool at titlestyle}{sffamily}
+ \renewcommand{\familydefault}{\sfdefault}
+\fi
+
+\ifneo at sfbody
+ \renewcommand{\familydefault}{\sfdefault}
+\fi
+
+%% Graphics Rules
+%% ----------------------------------
+\ifpdf
+ \DeclareGraphicsRule{*}{mps}{*}{}
+\fi
+
+%% Layout and Drawing Tools
+%% ----------------------------------
+% Absolute positioning on page
+\newcommand{\positionobject}[4]{%
+ \begin{tikzpicture}[remember picture, overlay]
+ \node[inner sep=0pt, outer sep=0pt] at ($([xshift=#1,yshift=-#2]current page.north west)$) {%
+ \adjustbox{scale=#3}{#4}
+ };
+ \end{tikzpicture}
+}
+
+% Advanced customizable grid
+\NewDocumentCommand{\customgrid}{ O{\neoschool at titlecolor} O{5mm} O{5mm} m m }{%
+ \tikzset{%
+ gridlines/.style={%
+ draw=#1,
+ opacity=0.5
+ },
+ majorgrid/.style={%
+ gridlines,
+ line width=0.35pt
+ },
+ minorgrid/.style={%
+ gridlines,
+ line width=0.35pt
+ }
+ }
+ \medskip\noindent\begin{tikzpicture}[inner sep=0, outer sep=0]
+ % Calculate dimensions
+ \pgfmathsetmacro\mywidth{#4}
+ \pgfmathsetmacro\myheight{#5}
+ \pgfmathsetmacro\incx{#2}
+ \pgfmathsetmacro\incy{#3}
+
+ % Vertical grid lines
+ \pgfmathsetmacro\numx{int(\mywidth/\incx)}
+ \foreach \x in {0,...,\numx}{%
+ \pgfmathparse{mod(\x,5)==0 ? "majorgrid" : "minorgrid"}
+ \edef\gridstyle{\pgfmathresult}
+ \draw[\gridstyle]
+ (\x * \incx pt, 0) -- (\x * \incx pt, \myheight pt);
+ }
+
+ % Horizontal grid lines
+ \pgfmathsetmacro\numy{int(\myheight/\incy)}
+ \foreach \y in {0,...,\numy}{%
+ \pgfmathparse{mod(\y,5)==0 ? "majorgrid" : "minorgrid"}
+ \edef\gridstyle{\pgfmathresult}
+ \draw[\gridstyle]
+ (0, \y * \incy pt) -- (\mywidth pt, \y * \incy pt);
+ }
+ \end{tikzpicture}
+ \ignorespaces
+ \par\vspace{7pt}
+}
+
+% Legacy grid command for backwards compatibility
+\NewDocumentCommand{\grid}{ O{\neoschool at titlecolor} m m }{%
+ \customgrid[#1][5mm][5mm]{#2}{#3}
+}
+
+\NewDocumentCommand{\frenchgrid}{ s O{\neoschool at titlecolor!75} O{\neoschool at titlecolor!50} m m }{%
+ \tikzset{%
+ fine lines/.style={draw={#3},very thin},
+ thick lines/.style={draw={#2}},
+ }
+ \IfBooleanTF{#1}{%
+ {\noindent\centering}
+ }{%
+ \noindent
+ }
+ \begin{tikzpicture}[inner sep=0,outer sep=0]
+ \pgfmathsetmacro\mywidth{#4}
+ \pgfmathsetmacro\myheight{#5}
+ \pgfmathsetmacro\incx{8mm}
+ \pgfmathsetmacro\incypetits{2mm}
+ \pgfmathsetmacro\incygrands{8mm}
+
+ % Adjust the width to be an exact multiple of incx
+ \pgfmathsetmacro\numx{floor(\mywidth/\incx)} % Number of full columns
+ \pgfmathsetmacro\adjwidth{\numx * \incx} % Adjusted width
+
+ % Adjust the height to be an exact multiple of incypetits
+ \pgfmathsetmacro\numypetits{floor(\myheight/\incypetits)} % Number of fine lines
+ \pgfmathsetmacro\numygrands{floor(\myheight/\incygrands)} % Number of thick lines
+ \pgfmathsetmacro\adjheight{\numypetits * \incypetits} % Adjusted height
+
+ % Draw vertical lines
+ \foreach \x in {0,...,\numx}{%
+ \draw[fine lines]
+ (\x * \incx pt,0) -- (\x * \incx pt,\adjheight pt);
+ }
+ % Draw thin horizontal lines
+ \foreach \y in {0,...,\numypetits}{%
+ \draw[fine lines]
+ (0,\y * \incypetits pt) -- (\adjwidth pt,\y * \incypetits pt);
+ }
+ % Draw thick horizontal lines
+ \foreach \y in {0,...,\numygrands}{%
+ \draw[thick lines]
+ (0,\y * \incygrands pt) -- (\adjwidth pt,\y * \incygrands pt);
+ }
+ \end{tikzpicture}
+}
+
+%% Notebook-Style Pages
+%% ----------------------------------
+% Simple lined notebook page
+\newcommand{\notebook}{%
+ \begin{tikzpicture}[remember picture,overlay]
+ \foreach \i in {3,...,27}{%
+ \draw[teal] ($(current page.north west)+(0,-\i)$) --
+ ($(current page.north east)+(0,-\i)$);
+ }
+ \draw [thick,red] ($(current page.north west)+(4,0)$) --
+ ($(current page.south west)+(4,0)$);
+ \end{tikzpicture}
+}
+
+% Minor grid notebook page
+\newcommand{\nbminorgrid}{%
+ \begin{tikzpicture}[remember picture,overlay]
+ \foreach \i in {0.5,1,...,30}{%
+ \draw[teal!50] ($(current page.north west)+(0,-\i)$) --
+ ($(current page.north east)+(0,-\i)$);
+ }
+ \foreach \i in {0.5,1,...,21}{%
+ \draw [thick,teal!50] ($(current page.north west)+(\i,0)$) --
+ ($(current page.south west)+(\i,0)$);
+ }
+ \end{tikzpicture}
+}
+
+% Major grid notebook page
+\newcommand{\nbmajorgrid}{%
+ \begin{tikzpicture}[remember picture,overlay]
+ \foreach \i in {2,2.8,...,30}{%
+ \draw[teal!50] ($(current page.north west)+(0,-\i)$) --
+ ($(current page.north east)+(0,-\i)$);
+ }
+ \foreach \i in {2,2.2,...,30}{%
+ \draw[teal!25] ($(current page.north west)+(0,-\i)$) --
+ ($(current page.north east)+(0,-\i)$);
+ }
+ \foreach \i in {4.0,4.8,...,21}{%
+ \draw [thick,teal!50] ($(current page.north west)+(\i,0)$) --
+ ($(current page.south west)+(\i,0)$);
+ }
+ \draw [thick,red] ($(current page.north west)+(4,0)$) --
+ ($(current page.south west)+(4,0)$);
+ \end{tikzpicture}
+}
+
+%% Horizontally Split Content
+%% ----------------------------------
+\NewDocumentCommand{\splitcontent}{ O{0.5} O{0.02} m m }{%
+ % #1 : Width of the first section (default: 50%)
+ % #2 : Horizontal gap between sections (default: 2%)
+ % #3 : Content of the first section
+ % #4 : Content of the second section
+ \noindent
+ \begin{minipage}{#1\linewidth}
+ #3
+ \end{minipage}%
+ \hspace*{#2\linewidth}
+ \begin{minipage}{\dimexpr\linewidth-#1\linewidth-#2\linewidth\relax}
+ #4
+ \end{minipage}%
+}
+
+%% Text With Image Layout
+%% ----------------------------------
+\NewDocumentCommand{\textwithimage}{s m m m m}{%
+ \noindent
+ \IfBooleanTF{#1}{%
+ \par\begin{minipage}{#2\linewidth}
+ \centering\includegraphics[width=#3\linewidth]{#5}
+ \end{minipage}
+ \hfill
+ \begin{minipage}{\dimexpr\linewidth-#2\linewidth-1em\relax}
+ #4
+ \end{minipage}
+ }{%
+ \par\begin{minipage}{\dimexpr\linewidth-#2\linewidth-1em\relax}
+ #4
+ \end{minipage}%
+ \hfill%
+ \begin{minipage}{#2\linewidth}
+ \begin{center}
+ \centering\includegraphics[width=#3\linewidth]{#5}
+ \end{center}
+ \end{minipage}
+ }
+}
+
+%% QR Code Integration
+%% ----------------------------------
+\NewDocumentCommand{\withqrcode}{ s O{2cm} m m }{%
+ \qrset{hyperlink,height=#2}%
+ \noindent%
+ \IfBooleanTF{#1}{%
+ \par\begin{tblr}{%
+ width={.975\linewidth},
+ colspec={X[j,m]Q[c,m]Q[c,m]}
+ }
+ {{{#4}}} & & \centering\qrcode{#3}
+ \end{tblr}%
+ }{%
+ \par\begin{tblr}{%
+ width={.975\linewidth},
+ colspec={Q[c,m]Q[c,m]X[j,m]}
+ }
+ \centering\qrcode{#3} & & {{{#4}}}
+ \end{tblr}%
+ }%
+}
+
+%% Assessment Tools
+%% ----------------------------------
+% Point markers
+\NewDocumentCommand{\mrks}{s O{} m}{%
+ \IfBooleanTF{#1}
+ {\reversemarginpar}
+ {\normalmarginpar}%
+ \marginnote{\small (#3 pts)\ifx\empty#2\empty\else\\\small#2\fi}[0em]\ignorespaces}
+
+\NewDocumentCommand{\mrk}{s O{} m}{%
+ \IfBooleanTF{#1}
+ {\reversemarginpar}
+ {\normalmarginpar}%
+ \marginnote{\small (#3 pt)\ifx\empty#2\empty\else\\\small#2\fi}[0em]\ignorespaces}
+
+% Answer lines
+\NewDocumentCommand{\lines}{ O{.} O{1.65em} m }{%
+ \par
+ \foreach \n in {1,...,#3}{%
+ \noindent\parbox[t][#2][t]{\linewidth}{%
+ \ifstrequal{#1}{.}{%
+ \dotfill
+ }{%
+ \ifstrequal{#1}{-}{%
+ \hrulefill
+ }{%
+ \leaders\hbox{#1}\hfill\kern0pt
+ }
+ }
+ }
+ \par
+ }
+}
+
+% Dotted line with variable length
+\newcommand\vardots[1][\linewidth]{%
+ \noindent\begin{tikzpicture}
+ \draw[densely dotted, semithick, line cap=round] (0,0) -- ({#1},0);
+ \end{tikzpicture}
+}
+
+%% Task Lists
+%% ----------------------------------
+\newcommand{\cmark}{%
+ \ifneo at unicolor
+ {\color{\neoschool at headcolor}\ding{51}}%
+ \else
+ \ifneo at print
+ \ding{51}%
+ \else
+ {\color{definitionColor}\ding{51}}%
+ \fi
+ \fi
+}
+
+\newcommand{\xmark}{%
+ \ifneo at unicolor
+ {\color{\neoschool at headcolor}\ding{55}}%
+ \else
+ \ifneo at print
+ \ding{55}%
+ \else
+ {\color{theoremColor}\ding{55}}%
+ \fi
+ \fi
+}
+
+\newcommand{\unchecked}{%
+ \item[\rlap{$\square$}\hspace{.7em}]%
+}
+
+\newcommand{\done}{%
+ \item[\rlap{$\square$}{%
+ \raisebox{1pt}{\large\hspace{1pt}\cmark}\hspace{-2.5pt}}]%
+}
+
+\newcommand{\wontfix}{%
+ \item[\rlap{$\square$}{\large\hspace{1pt}\xmark}]%
+}
+
+%% Margin
+%% ----------------------------------
+
+\ifx\neoschool at margin\@empty\else
+ \AtEndPreamble{%
+ \newlength{\neo at originalwidth}%
+ \setlength{\neo at originalwidth}{18cm}%
+ \addtolength{\evensidemargin}{\neoschool at margin}%
+ \addtolength{\oddsidemargin}{\neoschool at margin}%
+ \setlength{\marginparwidth}{\dimexpr\neoschool at margin-0.5cm\relax}%
+ \setlength{\marginparsep}{0.5cm}%
+ \areaset{\dimexpr\neo at originalwidth-\neoschool at margin\relax}{\dimexpr29cm-\neoschool at margin}%
+ % \recalctypearea
+ }
+\fi
+
+%% Margin Notes
+%% ----------------------------------
+
+\newtoggle{lmargin}
+
+\newcommand{\alternatingtodo}[2][]{%
+ \iftoggle{lmargin}
+ {\normalmarginpar \todo[#1]{#2} \togglefalse{lmargin}}
+ {\reversemarginpar \todo[#1]{#2} \toggletrue{lmargin}}
+ \ignorespaces
+}
+
+\newif\ifmarginnotesactive
+\ifx\neoschool at notes\@empty
+ \marginnotesactivefalse
+\else
+ \marginnotesactivetrue
+ \AtEndPreamble{%
+ \newlength{\neo at originalwidth}
+ \setlength{\neo at originalwidth}{18cm}
+ \addtolength{\evensidemargin}{\neoschool at notes}
+ \addtolength{\oddsidemargin}{\neoschool at notes}
+ \setlength{\marginparwidth}{\dimexpr\neoschool at notes-0.5cm\relax}
+ \setlength{\marginparsep}{0.5cm} \areaset{\dimexpr\neo at originalwidth-\neoschool at notes\relax}{\dimexpr29cm-\neoschool at notes}
+ }
+ % \recalctypearea
+\fi
+
+\newcommand{\tdnote}[2][]{%
+ \ifmarginnotesactive
+ \alternatingtodo[%
+ bordercolor=\ifneo at unicolor\neoschool at headcolor\else ForestGreen\fi,
+ linecolor=\ifneo at unicolor\neoschool at headcolor\else ForestGreen\fi,
+ backgroundcolor=\ifneo at unicolor\neoschool at headcolor!10\else Gold\fi,
+ #1%
+ ]{#2}%
+ \fi
+}
+
+\newsavebox{\todobox}
+\newcounter{tdnotecounter}
+
+\newcommand{\boxnote}[2][inNote]{%
+ \stepcounter{tdnotecounter}
+ \iftoggle{lmargin}%
+ {%
+ \normalmarginpar
+ \marginpar{%
+ \savebox\todobox{\tdnote[inline]{#2}}%
+ \begin{tikzpicture}[remember picture, overlay]
+ \coordinate (#1-\thetdnotecounter) at (0pt,0.5\ht\todobox);
+ \end{tikzpicture}%
+ \usebox\todobox%
+ }%
+ \togglefalse{lmargin}
+ }%
+ {%
+ \reversemarginpar
+ \marginpar{%
+ \savebox\todobox{\tdnote[inline]{#2}}%
+ \begin{tikzpicture}[remember picture, overlay]
+ \coordinate (#1-\thetdnotecounter) at (\marginparwidth,0.5\ht\todobox);
+ \end{tikzpicture}%
+ \usebox\todobox%
+ }%
+ \toggletrue{lmargin}
+ }%
+}
+
+\newcommand{\tdmark}[1][inNote]{%
+ \ifmarginnotesactive
+ \tikz[remember picture, overlay]{%
+ \iftoggle{lmargin}{%
+ \draw[thick,color=\ifneo at unicolor\neoschool at headcolor\else ForestGreen\fi]
+ (#1-\thetdnotecounter) -- ++(0.25cm,0) |- (0pt,\lineskip-\dp\strutbox)%
+ }{%
+ \draw[thick,color=\ifneo at unicolor\neoschool at headcolor\else ForestGreen\fi]
+ (#1-\thetdnotecounter) -- ++(-0.25cm,0) |- (0pt,\lineskip-\dp\strutbox)%
+ }
+ }%
+ \fi
+}
+
+%% Exam-style grading strip
+%% ----------------------------------
+\newcommand{\neo at mark@text}{%
+ \ifneo at french
+ Note%
+ \else\ifneo at german
+ Note%
+ \else
+ Mark%
+ \fi\fi
+}
+
+\newcommand{\neo at appreciation@text}{%
+ \ifneo at french
+ Appréciation%
+ \else\ifneo at german
+ Bewertung%
+ \else
+ Comments%
+ \fi\fi
+}
+
+\newcommand{\smallstrut}{\rule[-0.5ex]{0pt}{1.8ex}}
+
+\NewDocumentCommand{\gradingstrip}{ O{} }{%
+ \vspace*{1em}
+ \noindent
+ \begin{minipage}[t]{0.2\textwidth}
+ \begin{tcolorbox}[%
+ enhanced,
+ colback=white,
+ colbacktitle=white,
+ colframe=\neoschool at globalcolor,
+ sharp corners,
+ boxrule=0.5pt,
+ height=2.5cm,
+ title={\smallstrut\textmd{\color{\neoschool at globalcolor}\neo at mark@text}},
+ center title,
+ overlay={%
+ \ifblank{#1}{}{%
+ \coordinate (start) at ([xshift=-0.1mm,yshift=-0.575cm]frame.north east);
+ \coordinate (end) at ([xshift=0.1mm,yshift=0.1mm]frame.south west);
+ \draw[line width=0.4pt] (start) -- (end);
+ \node[anchor=south east]
+ at ([xshift=-0.4cm,yshift=0.4cm]end -| start) {#1};
+ }%
+ }
+ ]
+ \ifblank{#1}{%
+ \vspace{2\baselineskip}
+ }{}
+ \end{tcolorbox}
+ \end{minipage}%
+ \hspace{.1cm}%
+ \begin{minipage}[t]{0.79\textwidth}
+ \begin{tcolorbox}[%
+ enhanced,
+ colback=white,
+ colbacktitle=white,
+ colframe=\neoschool at globalcolor,
+ sharp corners,
+ boxrule=0.5pt,
+ height=2.5cm,
+ title={\smallstrut\textmd{\color{\neoschool at globalcolor}\neo at appreciation@text}},
+ center title
+ ]
+ \vspace{2\baselineskip}
+ \end{tcolorbox}
+ \end{minipage}
+ \vspace*{1em}
+}
+
+%% Skill Assessment Table
+%% ----------------------------------
+\newcommand{\competencies}[1]{%
+ \bigskip
+ % \colorlet{tempcolor}{\neoschool at titlecolor}
+ \colorlet{tempcolor}{\neoschool at globalcolor}
+ \ifneo at unicolor
+ \def\iconcolorA{\neoschool at titlecolor!5}%
+ \def\iconcolorB{\neoschool at titlecolor!5}%
+ \def\iconcolorC{\neoschool at titlecolor!5}%
+ \def\iconcolorD{\neoschool at titlecolor!5}%
+ \else
+ \def\iconcolorA{Tomato}%
+ \def\iconcolorB{orange}%
+ \def\iconcolorC{yellow}%
+ \def\iconcolorD{green}%
+ \fi
+ \begin{center}
+ \begin{tblr}{%
+ colspec={|[0.5pt,tempcolor]t{.5\linewidth}|[0.5pt,tempcolor]
+ Q[c,b]|[0.5pt,tempcolor]Q[c,b]|[0.5pt,tempcolor]
+ Q[c,b]|[0.5pt,tempcolor]Q[c,b]|[0.5pt,tempcolor]},
+ hlines = {0.5pt, tempcolor},
+ row{1} = {abovesep=5pt},
+ }
+ \SetCell{cmd=\bfseries} \raisebox{0.25em}{\neo at competencies} &
+ \dSadey[1.5][\iconcolorA] & \dNeutrey[1.5][\iconcolorB] &
+ \dSmiley[1.5][\iconcolorC] & \dChangey[1.5][\iconcolorD]{2} \\
+ #1 \\
+ \end{tblr}
+ \end{center}
+ \medskip
+}
+
+%% Tree and Graph Structure Support
+%% ----------------------------------
+% Forest settings for trees
+\forestset{
+ w/.style = {
+ edge label={
+ node[midway, fill=white, text=black] {$#1$}
+ }
+ }
+}
+
+\environbodyname\neotreebody
+\bracketset{action character=@}
+\NewEnviron{neotree}[1][]{%
+\forest
+for tree={%
+grow'=0,
+l=2.5cm,
+s sep=1.5cm,
+anchor=parent,
+math content,
+#1
+},
+[@\neotreebody]
+\endforest
+}
+
+% Graph settings (LuaTeX only)
+\ifluatex
+ \tikzset{%
+ graphs/simpleer/.style={%
+ nodes={%
+ draw,
+ circle,
+ fill=white,
+ text=black,
+ inner sep=1pt,
+ minimum size=2em
+ },
+ node distance=2.5cm
+ }
+ }
+
+ \newcommand{\neograph}[2][]{%
+ \tikz \graph[%
+ simpleer,
+ simple necklace layout,
+ edge quotes mid,
+ edges={%
+ rounded corners,
+ nodes={%
+ font=\scriptsize,
+ fill=white,
+ #1,
+ inner sep=1pt,
+ align=center
+ }
+ },
+ nodes={circle,draw}
+ ]{#2};
+ }
+\fi
+
+% Math Grid Environment
+\newcounter{neomathline}
+\newcounter{neomathcol}[neomathline]
+
+\newenvironment{mathgrid}[1]
+{%
+ \def\mcols{#1}%
+ \setcounter{neomathline}{0}%
+ \par\noindent%
+}
+{\bigskip}
+
+\newcommand{\neoline}{%
+ \ifnum\value{neomathcol}>0\\\fi%
+ \stepcounter{neomathline}%
+ \setcounter{neomathcol}{0}%
+}
+
+\newcommand{\neocol}[2][1]{%
+ \stepcounter{neomathcol}%
+ \ifnum\value{neomathcol}>1\quad\fi%
+ \begin{minipage}[t]{\dimexpr\linewidth * #1 / \mcols - 2\columnsep}
+ \setlength{\abovedisplayskip}{5pt}%
+ \setlength{\belowdisplayskip}{5pt}%
+ \begin{align*}
+ #2
+ \end{align*}
+ \end{minipage}%
+ \ignorespaces%
+}
+
+% Math color
+
+\ifneo at unicolor
+ \colorlet{mathColor}{\neoschool at headcolor}
+\else
+ \colorlet{mathColor}{Maroon}
+\fi
+
+\newcommand*{\mc}[2][mathColor]{{\color{#1}#2}}
+
+%% ==============================================================================
+%% Admonition Boxes - Multilingual Version
+%% ==============================================================================
+
+%% Color Definitions for Admonition Boxes
+\ifneo at unicolor
+ \colorlet{noteColor}{\neoschool at headcolor}
+ \colorlet{infoColor}{\neoschool at headcolor}
+ \colorlet{warningColor}{\neoschool at headcolor}
+ \colorlet{importantColor}{\neoschool at headcolor}
+ \colorlet{tipColor}{\neoschool at headcolor}
+ \colorlet{reminderColor}{\neoschool at headcolor}
+ \colorlet{summaryColor}{\neoschool at headcolor}
+ \colorlet{toolboxColor}{\neoschool at headcolor}
+\else\ifx\neoschool at theme\neo at cyprus
+ \colorlet{noteColor}{methodColor}
+ \colorlet{infoColor}{theoremColor}
+ \colorlet{warningColor}{titleColor}
+ \colorlet{importantColor}{definitionColor}
+ \colorlet{tipColor}{codeColor}
+ \colorlet{reminderColor}{applicationColor}
+ \colorlet{summaryColor}{remarkColor}
+ \colorlet{toolboxColor}{alternateColor}
+ \else\ifx\neoschool at theme\neo at kassio
+ \colorlet{noteColor}{definitionColor}
+ \colorlet{infoColor}{applicationColor}
+ \colorlet{warningColor}{methodColor}
+ \colorlet{importantColor}{theoremColor}
+ \colorlet{tipColor}{codeColor}
+ \colorlet{reminderColor}{titleColor}
+ \colorlet{summaryColor}{remarkColor}
+ \colorlet{toolboxColor}{alternateColor}
+ \else\ifx\neoschool at theme\neo at frost
+ \colorlet{noteColor}{methodColor}
+ \colorlet{infoColor}{definitionColor}
+ \colorlet{warningColor}{titleColor}
+ \colorlet{importantColor}{theoremColor}
+ \colorlet{tipColor}{applicationColor}
+ \colorlet{reminderColor}{codeColor}
+ \colorlet{summaryColor}{remarkColor}
+ \colorlet{toolboxColor}{alternateColor}
+ \else\ifx\neoschool at theme\neo at spring
+ \colorlet{noteColor}{methodColor}
+ \colorlet{infoColor}{theoremColor}
+ \colorlet{warningColor}{applicationColor}
+ \colorlet{importantColor}{titleColor}
+ \colorlet{tipColor}{definitionColor}
+ \colorlet{reminderColor}{codeColor}
+ \colorlet{summaryColor}{remarkColor}
+ \colorlet{toolboxColor}{alternateColor}
+ \else\ifx\neoschool at theme\neo at arbutus
+ \colorlet{noteColor}{codeColor}
+ \colorlet{infoColor}{titleColor}
+ \colorlet{warningColor}{methodColor}
+ \colorlet{importantColor}{theoremColor}
+ \colorlet{tipColor}{applicationColor}
+ \colorlet{reminderColor}{definitionColor}
+ \colorlet{summaryColor}{remarkColor}
+ \colorlet{toolboxColor}{alternateColor}
+ \else\ifx\neoschool at theme\neo at duo
+ \colorlet{noteColor}{titleColor}
+ \colorlet{infoColor}{applicationColor}
+ \colorlet{warningColor}{theoremColor}
+ \colorlet{importantColor}{methodColor}
+ \colorlet{tipColor}{definitionColor}
+ \colorlet{reminderColor}{codeColor}
+ \colorlet{summaryColor}{remarkColor}
+ \colorlet{toolboxColor}{alternateColor}
+ \else\ifx\neoschool at theme\neo at navy
+ \colorlet{noteColor}{titleColor}
+ \colorlet{infoColor}{definitionColor}
+ \colorlet{warningColor}{methodColor}
+ \colorlet{importantColor}{theoremColor}
+ \colorlet{tipColor}{applicationColor}
+ \colorlet{reminderColor}{codeColor}
+ \colorlet{summaryColor}{remarkColor}
+ \colorlet{toolboxColor}{alternateColor}
+ \else\ifx\neoschool at theme\neo at royal
+ \colorlet{noteColor}{titleColor}
+ \colorlet{infoColor}{definitionColor}
+ \colorlet{warningColor}{methodColor}
+ \colorlet{importantColor}{theoremColor}
+ \colorlet{tipColor}{applicationColor}
+ \colorlet{reminderColor}{codeColor}
+ \colorlet{summaryColor}{remarkColor}
+ \colorlet{toolboxColor}{alternateColor}
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi
+
+%% Multilingual Support
+\newcommand{\neo at admonition@note}{%
+ \ifneo at french
+ Note%
+ \else\ifneo at german
+ Notiz%
+ \else
+ Note%
+ \fi\fi
+}
+
+\newcommand{\neo at admonition@info}{%
+ \ifneo at french
+ Information%
+ \else\ifneo at german
+ Information%
+ \else
+ Information%
+ \fi\fi
+}
+
+\newcommand{\neo at admonition@warning}{%
+ \ifneo at french
+ Attention%
+ \else\ifneo at german
+ Achtung%
+ \else
+ Warning%
+ \fi\fi
+}
+
+\newcommand{\neo at admonition@important}{%
+ \ifneo at french
+ Important%
+ \else\ifneo at german
+ Wichtig%
+ \else
+ Important%
+ \fi\fi
+}
+
+\newcommand{\neo at admonition@tip}{%
+ \ifneo at french
+ Conseil%
+ \else\ifneo at german
+ Tipp%
+ \else
+ Tip%
+ \fi\fi
+}
+
+\newcommand{\neo at admonition@reminder}{%
+ \ifneo at french
+ À retenir%
+ \else\ifneo at german
+ Merken%
+ \else
+ Remember%
+ \fi\fi
+}
+
+\newcommand{\neo at admonition@summary}{%
+ \ifneo at french
+ Résumé%
+ \else\ifneo at german
+ Zusammenfassung%
+ \else
+ Summary%
+ \fi\fi
+}
+
+\newcommand{\neo at admonition@toolbox}{%
+ \ifneo at french
+ Boîte à outils%
+ \else\ifneo at german
+ Werkzeugkasten%
+ \else
+ Toolbox%
+ \fi\fi
+}
+
+%% Base Style Configuration
+\newtcolorbox{admonitionbase}[4][]{%
+ enhanced,
+ before skip=0.5\baselineskip,
+ after skip=.5\baselineskip,
+ colback=#2!5,
+ colframe=#2,
+ boxrule=1pt,
+ frame style={opacity=0.5},
+ \neo at framehidden,
+ arc=2pt,
+ left=10pt,
+ right=5pt,
+ top=3pt,
+ bottom=3pt,
+ breakable,
+ fonttitle=\sffamily\bfseries,
+ title={%
+ \hspace*{-2mm}%
+ \raisebox{-2pt}{\textcolor{#2}{\Large#3}}%
+ \hspace{5pt}%
+ \textcolor{#2}{\textbf{#4}}%
+ },
+ attach title to upper,
+ after title={\par\vspace{0.5em}},
+ #1
+}
+
+% Note Box
+\NewDocumentEnvironment{note}{O{\neo at admonition@note} O{\faEdit} +b}{%
+ \begin{admonitionbase}{noteColor}{#2}{#1}%
+ #3%
+ \end{admonitionbase}%
+}{}
+
+% Info Box
+\NewDocumentEnvironment{info}{O{\neo at admonition@info} O{\faInfoCircle} +b}{%
+ \begin{admonitionbase}{infoColor}{#2}{#1}%
+ #3%
+ \end{admonitionbase}%
+}{}
+
+% Warning Box
+\@ifundefined{warning}{%
+ \NewDocumentEnvironment{warning}{O{\neo at admonition@warning} O{\faExclamationTriangle} +b}{%
+ \begin{admonitionbase}{warningColor}{#2}{#1}%
+ #3%
+ \end{admonitionbase}%
+ }{}
+}{}
+
+% Important Box
+\NewDocumentEnvironment{important}{O{\neo at admonition@important} O{\faExclamationCircle} +b}{%
+ \begin{admonitionbase}{importantColor}{#2}{#1}%
+ #3%
+ \end{admonitionbase}%
+}{}
+
+% Tip Box
+\NewDocumentEnvironment{tip}{O{\neo at admonition@tip} O{\faLightbulb} +b}{%
+ \begin{admonitionbase}{tipColor}{#2}{#1}%
+ #3%
+ \end{admonitionbase}%
+}{}
+
+% Reminder Box
+\NewDocumentEnvironment{reminder}{O{\neo at admonition@reminder} O{\faBookmark} +b}{%
+ \begin{admonitionbase}{reminderColor}{#2}{#1}%
+ #3%
+ \end{admonitionbase}%
+}{}
+
+% Summary Box
+\NewDocumentEnvironment{summary}{O{\neo at admonition@summary} O{\faClipboardList} +b}{%
+ \begin{admonitionbase}{summaryColor}{#2}{#1}%
+ #3%
+ \end{admonitionbase}%
+}{}
+
+% Toolbox Box
+\NewDocumentEnvironment{toolbox}{O{\neo at admonition@toolbox} O{\faTools} +b}{%
+ \begin{admonitionbase}{toolboxColor}{#2}{#1}%
+ #3%
+ \end{admonitionbase}%
+}{}
+
+%% ==============================================================================
+%% Compact Mode Adjustments
+%% ==============================================================================
+
+\ifneo at compact
+
+ \neo at fullheaderfalse
+
+ \PassOptionsToPackage{singlespacing}{setspace}
+
+ \renewcommand{\arraystretch}{1.05}
+
+ \settasks{%
+ item-indent=2em,
+ column-sep=0.5em,
+ label-width=12pt,
+ label-offset=0.3em,
+ before-skip=0pt,
+ after-skip=0pt,
+ after-item-skip=0pt
+ }
+
+ \AtBeginDocument{
+ \setlength{\abovedisplayskip}{3pt}
+ \setlength{\belowdisplayskip}{3pt}
+ \setlength{\abovedisplayshortskip}{0pt}
+ \setlength{\belowdisplayshortskip}{0pt}
+ }
+
+ \setlength{\parindent}{1em}
+ \setlength{\parskip}{0pt plus 0.1pt}
+
+ \tcbset{
+ before skip=0.5\baselineskip,
+ after skip=0.5\baselineskip,
+ }
+
+ \RedeclareSectionCommand[
+ % beforeskip=-0.25\baselineskip,
+ afterskip=0.5\baselineskip
+ ]{section}
+
+ \RedeclareSectionCommand[
+ % beforeskip=-0.25\baselineskip,
+ afterskip=0.5\baselineskip
+ ]{subsection}
+
+ \setlength{\floatsep}{5pt plus 2pt minus 2pt}
+ \setlength{\textfloatsep}{5pt plus 2pt minus 2pt}
+ \setlength{\intextsep}{5pt plus 2pt minus 2pt}
+
+ \tcbset{
+ neo at shared@base/.style args={#1}{
+ common at base,
+ colframe=#1,
+ colback=\neo at getbackcolor,
+ boxrule=\neo at thmborder,
+ \neo at getframestyle,
+ before skip=0.5\baselineskip,
+ after skip=0.5\baselineskip,
+ top=3pt,
+ bottom=3pt,
+ left=5pt,
+ right=5pt
+ }
+ }
+
+ \tcbset{
+ neo at commonbox/.style={
+ enhanced,
+ top=3pt,
+ bottom=3pt,
+ left=2mm,
+ right=2mm,
+ coltitle=white,
+ fonttitle=\small\sffamily,
+ before skip=0.5\baselineskip,
+ after skip=0.5\baselineskip
+ }
+ }
+
+ \setlength{\titlespacing}{0.8\baselineskip}
+
+ \renewcommand{\createfulltitle}{%
+ \ifx\@subject\@empty\else
+ {\usekomafont{subject}{\@subject\par}}
+ \vspace{0.5\titlespacing}
+ \fi
+
+ {\noindent\usekomafont{title}{\@title\par}}
+
+ \ifx\@subtitle\@empty\else
+ \vspace{0.5\titlespacing}
+ {\noindent\usekomafont{subtitle}{\@subtitle\par}}
+ \fi
+
+ \ifx\@author\@empty\else
+ \vspace{0.5\titlespacing}
+ {\noindent\usekomafont{author}{\@author\par}}
+ \fi
+
+ \neo at titledecoration
+ \if at twocolumn\vspace{\titlespacing}\else\vspace{0.5\titlespacing}\fi
+ }
+
+ \renewcommand{\neo at titledecoration}{%
+ \ifneo at titlerule
+ \vspace{0.75\titlespacing}%
+ {\color{\neoschool at titlecolor}\rule{4em}{0.4pt}}
+ \else
+ \ifneo at titlemidrule
+ \vspace{0.75\titlespacing}%
+ {\color{\neoschool at titlecolor}\rule{0.4\linewidth}{0.4pt}}
+ \else
+ \ifneo at titlefullrule
+ \vspace{0.75\titlespacing}%
+ {\color{\neoschool at titlecolor}\rule{\linewidth}{0.4pt}}%
+ \vspace{-0.5\titlespacing}%
+ \else
+ \ifneo at titleornament
+ \vspace{0.75\titlespacing}%
+ {\color{\neoschool at titlecolor}\scalebox{1.5}[1.2]{\adforn{21}\,\adforn{11}\,\adforn{49}}}
+ \fi
+ \fi
+ \fi
+ \fi
+ \vspace*{.1\baselineskip}
+ }
+
+\fi
+
+%% ==============================================================================
+%% End of Class
+%% ==============================================================================
Property changes on: trunk/Master/texmf-dist/tex/latex/neoschool/neoschool.cls
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/bin/tlpkg-ctan-check
===================================================================
--- trunk/Master/tlpkg/bin/tlpkg-ctan-check 2025-01-08 21:11:53 UTC (rev 73373)
+++ trunk/Master/tlpkg/bin/tlpkg-ctan-check 2025-01-08 21:13:05 UTC (rev 73374)
@@ -615,7 +615,7 @@
navigator navydocs
ncclatex ncctools nchairx ncntrsbk
nddiss ndsu-thesis ndsu-thesis-2022
- needspace nestquot neuralnetwork nevelok
+ needspace neoschool nestquot neuralnetwork nevelok
newcastle-bst newcommand newcomputermodern newenviron newfile newfloat
newlfm newpax newpx
newsletr newspaper
Modified: trunk/Master/tlpkg/libexec/ctan2tds
===================================================================
--- trunk/Master/tlpkg/libexec/ctan2tds 2025-01-08 21:11:53 UTC (rev 73373)
+++ trunk/Master/tlpkg/libexec/ctan2tds 2025-01-08 21:13:05 UTC (rev 73374)
@@ -1846,6 +1846,7 @@
'mptopdf' => '&POSTmptopdf',
'musixtex' => '&POSTmusixtex',
'musixtnt' => '&POSTmusixtnt',
+ 'neoschool' => '&POST_onelevel',
'niceframe' => '&POST_rmsymlink',
'nodepthtext' => '&POST_onelevel',
'non-decimal-units' => '&POST_onelevel',
Modified: trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc 2025-01-08 21:11:53 UTC (rev 73373)
+++ trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc 2025-01-08 21:13:05 UTC (rev 73374)
@@ -993,6 +993,7 @@
depend ncclatex
depend ncctools
depend needspace
+depend neoschool
depend nestquot
depend newcommand
depend newenviron
Added: trunk/Master/tlpkg/tlpsrc/neoschool.tlpsrc
===================================================================
More information about the tex-live-commits
mailing list.