\documentclass[
    french,
    compacttoc,
    twocoltoc,
    apmep,
    vspacing=0.85,
    faketext,
    mainface=Zilla Slab,
    sansface=Work Sans,
    sansfaceoptions={BoldFont = {Work Sans SemiBold}},
    monoface=iAWriterDuoV.ttf,
    monofacescale=0.85,
    abstracttitle={},
    monofaceoptions={UprightFont={iAWriterDuoV.ttf}, UprightFeatures = { RawFeature={axis={wght=430}} }, BoldFont={iAWriterDuoV.ttf}, BoldFeatures={RawFeature={+axis={wght=700}}}},
    mathface=Concrete Math,
]{neoschool}

\title{La classe \texttt{neoschool} (v1.3.9)}
\author{Razik Ikhlef \normalfont \textemdash{} \href{https://apps.edulatex.xyz}{https://apps.edulatex.xyz} \textemdash{} \href{mailto:razik.ikhlef@csilyon.fr}{razik.ikhlef@csilyon.fr}}
\date{25 mai 2026}

\begin{document}

\maketitle

\begin{abstract}
  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 cinquante-huit thèmes de couleurs prédéfinis, seize profils préconfigurés,
  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,
  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.
\end{abstract}

\tableofcontents

\section{Profils préconfigurés}

L'option \textbf{profile}=\texttt{nom} configure automatiquement un ensemble cohérent d'options pour différents types de documents.
Chaque profil définit un thème, un style d'accent, des styles de boîtes et des paramètres visuels adaptés à un cas d'usage.

\begin{itemize}
    \item \textbf{academic} : idéal pour les cours magistraux et supports pédagogiques.
    Thème \texttt{royal}, titre \texttt{band}, style théorème \texttt{block}, style exercice \texttt{bar}, style admonition \texttt{modern}, style code \texttt{plain}, boxshape \texttt{soft}.

    \item \textbf{minimalist} : style épuré et minimaliste.
    Thème \texttt{ink}, titre \texttt{stream}, style théorème \texttt{plain}, style exercice \texttt{line-outline}, style admonition \texttt{classic}, style code \texttt{lines}, boxshape \texttt{sharp}.

    \item \textbf{material} : inspiré du Material Design.
    Thème \texttt{azure}, titre \texttt{notion}, style théorème \texttt{tile}, style exercice \texttt{capsule}, style admonition \texttt{material}, style code \texttt{shadow}, boxshape \texttt{rounded}.

    \item \textbf{coder} : pour les documents techniques et informatiques.
    Thème \texttt{marine}, titre \texttt{blocks}, style théorème \texttt{bar}, style exercice \texttt{shell}, style admonition \texttt{professional}, style code \texttt{frame}, boxshape \texttt{chamfer}.

    \item \textbf{memo} : pour les fiches mémo et résumés compacts.
    Thème \texttt{lagoon}, titre \texttt{bristol}, style théorème \texttt{sticker}, style exercice \texttt{badge}, style admonition \texttt{soft}, style code \texttt{plain}, boxshape \texttt{chat}.

    \item \textbf{exam} : pour les évaluations et devoirs surveillés.
    Aucun thème imposé (utilise le thème par défaut ou celui spécifié par l'utilisateur), titre \texttt{eval}, style théorème \texttt{plain}, style exercice \texttt{inline}, style admonition \texttt{classic}, style code \texttt{plain}, boxshape \texttt{sharp}. Active le mode \texttt{print} (noir et blanc).

    \item \textbf{organic} : style naturel aux formes douces.
    Thème \texttt{forest}, titre \texttt{flow}, style théorème \texttt{curve}, style exercice \texttt{capsule}, style admonition \texttt{soft}, style code \texttt{plain}, boxshape \texttt{leaf}.

    \item \textbf{origami} : style géométrique avec plis.
    Thème \texttt{crimson}, titre \texttt{geometric}, style théorème \texttt{fold}, style exercice \texttt{rule}, style admonition \texttt{classic}, style code \texttt{lines}, boxshape \texttt{bevel}.

    \item \textbf{blueprint} : style technique type plan.
    Thème \texttt{frost}, titre \texttt{grid}, style théorème \texttt{frame}, style exercice \texttt{counter-inline}, style admonition \texttt{classic}, style code \texttt{lines}, boxshape \texttt{sharp}.

    \item \textbf{swiss} : style inspiré du design suisse.
    Thème \texttt{crimson}, titre \texttt{brush}, style théorème \texttt{bar}, style exercice \texttt{capsule-outline}, style admonition \texttt{modern}, style code \texttt{lines}, boxshape \texttt{southeast}.

    \item \textbf{creative} : pour les supports ludiques et colorés.
    Thème \texttt{neon}, titre \texttt{memphis}, style théorème \texttt{pastel}, style exercice \texttt{badge}, style admonition \texttt{material}, style code \texttt{shadow}, boxshape \texttt{sharpish}.

    \item \textbf{focus} : style sobre avec accent latéral.
    Thème \texttt{rhodium}, titre \texttt{spine}, style théorème \texttt{tag}, style exercice \texttt{capsule}, style admonition \texttt{classic}, style code \texttt{frame}, boxshape \texttt{west}.

    \item \textbf{elegant} : style raffiné et épuré.
    Thème \texttt{velours}, titre \texttt{minimal}, style théorème \texttt{bar}, style exercice \texttt{line-circle}, style admonition \texttt{classic}, style code \texttt{line}, boxshape \texttt{sharp}.

    \item \textbf{slate} : style sobre avec bandeau latéral.
    Thème \texttt{slate}, titre \texttt{band}, style théorème \texttt{tile}, style exercice \texttt{bar}, style admonition \texttt{professional}, style code \texttt{lines}, boxshape \texttt{sharp}.

    \item \textbf{maker} : style technique pour projets DIY.
    Thème \texttt{terra}, titre \texttt{tech}, style théorème \texttt{sticker}, style exercice \texttt{rule}, style admonition \texttt{classic}, style code \texttt{lines}, boxshape \texttt{sharp}.

    \item \textbf{zen} : style apaisant et harmonieux.
    Thème \texttt{moss}, titre \texttt{wave}, style théorème \texttt{block}, style exercice \texttt{line-outline}, style admonition \texttt{soft}, style code \texttt{shadow}, boxshape \texttt{sharpish}. Active le mode \texttt{unicolor}.
\end{itemize}

\begin{code}{latex}
% Utilisation d'un profil
\documentclass[profile=academic]{neoschool}

% Personnalisation
\documentclass[profile=exam, theme=midnight]{neoschool}
\end{code}

\section{Extensions chargées}

Les extensions suivantes sont automatiquement chargées par la classe \texttt{neoschool}.
\begin{multicols}{4}
  \begin{itemize}[label={}]
    \item \texttt{adforn}
    \item \texttt{adjustbox}
    \item \texttt{algpseudocode}
    \item \texttt{bookmark}
    \item \texttt{calc}
    \item \texttt{changepage}
    \item \texttt{colortbl}
    \item \texttt{cuted}
    \item \texttt{enumitem}
    \item \texttt{environ}
    \item \texttt{etoolbox}
    \item \texttt{fontawesome5}
    \item \texttt{forest}
    \item \texttt{iftex}
    \item \texttt{kvoptions}
    \item \texttt{lastpage}
    \item \texttt{marginnote}
    \item \texttt{mathtools}
    \item \texttt{microtype}
    \item \texttt{multicol}
    \item \texttt{nccmath}
    \item \texttt{needspace}
    \item \texttt{pdftexcmds}
    \item \texttt{pgffor}
    \item \texttt{pgfplots}
    \item \texttt{pifont}
    \item \texttt{qrcode}
    \item \texttt{scrlayer-scrpage}
    \item \texttt{setspace}
    \item \texttt{silence}
    \item \texttt{siunitx}
    \item \texttt{tabularray}
    \item \texttt{tasks}
    \item \texttt{tcolorbox}
    \item \texttt{tikz}
    \item \texttt{tikzpagenodes}
    \item \texttt{tikzsymbols}
    \item \texttt{ulem}
    \item \texttt{wrapfig}
    \item \texttt{xcolor}
    \item \texttt{xhfill}
    \item \texttt{xkeyval}
    \item \texttt{xsim}
    \item \texttt{xstring}
  \end{itemize}
\end{multicols}

La compilation en \texttt{pdflatex} charge les extensions \texttt{fontenc} (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 Pagella} et \texttt{TeX Gyre Heros} en plus de \texttt{newpxmath}.

\subsection{Extensions optionnelles}

\begin{itemize}
    \item \textbf{faketext} : charge \texttt{blindtext} et \texttt{lipsum} pour générer du texte factice.
    \item \textbf{mathastext} : charge \texttt{mathastext} pour utiliser la police du texte en mathématiques.
    \item \textbf{nomath} : désactive l'ensemble des extensions mathématiques chargées par défaut (\texttt{annotate-equations}, \texttt{bm}, \texttt{cancel}, \texttt{esvect}, \texttt{mathrsfs}, \texttt{ncccomma}, \texttt{numprint}, \texttt{tdsfrmath}, \texttt{tkz-euclide}, \texttt{tkz-tab}, \texttt{witharrows} et \texttt{xlop}). Utiliser cette option pour les documents ne nécessitant pas de composition mathématique avancée, afin de réduire le temps de compilation.
    \item \textbf{notes}/\textbf{leftnotes}/\textbf{rightnotes} : chargent \texttt{todonotes}.
    \item \textbf{apmep} : charge un ensemble d'extensions pour compiler les sujets d'annales APMEP, incluant \texttt{esvect}, \texttt{fourier-orns}, \texttt{numprint}, \texttt{pstricks} et son écosystème, \texttt{tabularx}, \texttt{textcomp} et \texttt{variations}.
    \item \textbf{mathics} : charge \texttt{asymptote} et \texttt{latexalpha2} pour le calcul formel via Mathics.
\end{itemize}

\section{Options de configuration}

\subsection{Langue}

\begin{itemize}
    \item \textbf{english}, \textbf{french}, \textbf{german} : active les traductions et conventions liées à chaque langue.
    Ces options affectent les intitulés des environnements, la typographie et les conventions mathématiques. L'option \texttt{french} charge également l'extension \texttt{frenchmath}.
    \item \textbf{nofrenchmath} : avec l'option \texttt{french}, n'enclenche pas le chargement de \texttt{frenchmath}.
    \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.
\end{itemize}

\subsection{Apparence globale}

\subsubsection{Thèmes prédéfinis}

L'option \textbf{theme}=\texttt{nom} définit le thème de couleurs du document.
Les thèmes disponibles sont les suivants (58 thèmes).

\begin{multicols}{4}
  \begin{itemize}[label={}]
    \item \texttt{amethyst}
    \item \texttt{arctic}
    \item \texttt{athenee}
    \item \texttt{aurora}
    \item \texttt{axiom} (défaut)
    \item \texttt{azure}
    \item \texttt{bordeaux}
    \item \texttt{coffee}
    \item \texttt{crimson}
    \item \texttt{cyprus}
    \item \texttt{dusk}
    \item \texttt{eton}
    \item \texttt{excellence}
    \item \texttt{forest}
    \item \texttt{frost}
    \item \texttt{garden}
    \item \texttt{graphite}
    \item \texttt{harvard}
    \item \texttt{hearth}
    \item \texttt{heritage}
    \item \texttt{ink}
    \item \texttt{ivy}
    \item \texttt{jewel}
    \item \texttt{lagoon}
    \item \texttt{library}
    \item \texttt{mahogany}
    \item \texttt{manor}
    \item \texttt{marine}
    \item \texttt{midnight}
    \item \texttt{mineral}
    \item \texttt{mist}
    \item \texttt{moss}
    \item \texttt{mulberry}
    \item \texttt{neon}
    \item \texttt{nocturne}
    \item \texttt{oceanic}
    \item \texttt{opera}
    \item \texttt{orchid}
    \item \texttt{peony}
    \item \texttt{prestige}
    \item \texttt{renaissance}
    \item \texttt{retro}
    \item \texttt{rhodium}
    \item \texttt{royal}
    \item \texttt{saffron}
    \item \texttt{sage}
    \item \texttt{sequoia}
    \item \texttt{slate}
    \item \texttt{studio}
    \item \texttt{study}
    \item \texttt{taiga}
    \item \texttt{terra}
    \item \texttt{trinity}
    \item \texttt{tundra}
    \item \texttt{velours}
    \item \texttt{velvet}
    \item \texttt{vivid}
    \item \texttt{woodland}
  \end{itemize}
\end{multicols}

Chaque thème définit quatre couleurs : une couleur primaire (titres, sections, définitions), une couleur secondaire (théorèmes), une couleur tertiaire (exercices) et une couleur structurelle (éléments neutres comme les remarques et le code en ligne).

\begin{code}{latex}
\documentclass[theme=oceanic]{neoschool}
\end{code}

\subsubsection{Modes de couleur}

\begin{itemize}
    \item \textbf{print} : noir et blanc pour impression.
    \item \textbf{unicolor} : utilise la couleur primaire pour tous les environnements.
    \item \textbf{darktheme} : active un thème sombre avec fond foncé et texte clair.
\end{itemize}

\subsubsection{Personnalisation des couleurs}

\begin{itemize}
    \item \textbf{globalcolor}=\texttt{couleur} : couleur du texte principal (défaut : \texttt{black}).
    \item \textbf{titlecolor}=\texttt{couleur} : couleur du titre principal.
    \item \textbf{titlehexcolor}=\texttt{RRGGBB} : couleur du titre en hexadécimal.
    \item \textbf{headcolor}=\texttt{couleur} : couleur des titres \texttt{\textbackslash section}.
    \item \textbf{subcolor}=\texttt{couleur} : couleur des titres \texttt{\textbackslash subsection}.
    \item \textbf{subsubcolor}=\texttt{couleur} : couleur des titres \texttt{\textbackslash subsubsection}.
    \item \textbf{headfootcolor}=\texttt{couleur} : couleur des en-têtes et pieds de page.
    \item \textbf{secondarymix}=\texttt{0-100} : Pourcentage de mélange pour la couleur secondaire (défaut : 85).
    \item \textbf{tertiarymix}=\texttt{0-100} : Pourcentage de mélange pour la couleur tertiaire (défaut : 85).
\end{itemize}

\subsubsection{Apparence des boîtes}

\paragraph{Cadres et fonds :}
\begin{itemize}
    \item \textbf{thmnoframe} / \textbf{thmframe} : (dés)active les cadres des théorèmes.
    \item \textbf{thmnoback} / \textbf{thmback} : (dés)active les fonds des théorèmes.
    \item \textbf{codenoframe} / \textbf{codeframe} : (dés)active les cadres du code.
    \item \textbf{codenoback} / \textbf{codeback} : (dés)active les fonds du code.
    \item \textbf{codenonum} / \textbf{codenum} : (dés)active la numérotation des lignes.
    \item \textbf{exnoback} / \textbf{exback} : (dés)active les fonds des exercices.
    \item \textbf{noback} / \textbf{back} : (dés)active tous les fonds.
    \item \textbf{noframe} / \textbf{frame} : (dés)active tous les cadres.
    \item \textbf{clean} : désactive tous les cadres et fonds.
    \item \textbf{styled} : active tous les cadres et fonds.
\end{itemize}

\paragraph{Opacité des fonds :}
\begin{itemize}
    \item \textbf{boxopacity}=\texttt{n} : opacité globale des fonds (0--100, défaut : 8).
    \item \textbf{thmboxopacity}=\texttt{n} : opacité des théorèmes (défaut : 8).
    \item \textbf{exboxopacity}=\texttt{n} : opacité des exercices (défaut : 0).
    \item \textbf{codeboxopacity}=\texttt{n} : opacité du code (défaut : 5).
    \item \textbf{adboxopacity}=\texttt{n} : opacité des admonitions (défaut : 10).
    \item \textbf{mathboxopacity}=\texttt{n} : opacité des surlignages mathématiques (défaut : 15).
\end{itemize}

\paragraph{Opacité des cadres :}
\begin{itemize}
    \item \textbf{frameopacity}=\texttt{n} : opacité globale des cadres (0--100).
    \item \textbf{thmframeopacity}=\texttt{n} : opacité des cadres de théorèmes (défaut : 90).
    \item \textbf{exframeopacity}=\texttt{n} : opacité des cadres d'exercices (défaut : 95).
    \item \textbf{codeframeopacity}=\texttt{n} : opacité des cadres de code (défaut : 85).
    \item \textbf{adframeopacity}=\texttt{n} : opacité des cadres d'admonitions (défaut : 90).
    \item \textbf{sideframeopacity}=\texttt{n} : opacité des cadres sidebyside (défaut : 90).
\end{itemize}

\paragraph{Épaisseur des bordures :}
\begin{itemize}
    \item \textbf{border}=\texttt{dim} : épaisseur globale des bordures.
    \item \textbf{thmborder}=\texttt{dim} : épaisseur des bordures de théorèmes (défaut : 0.8pt).
    \item \textbf{exborder}=\texttt{dim} : épaisseur des bordures d'exercices (défaut : 0.8pt).
    \item \textbf{codeborder}=\texttt{dim} : épaisseur des bordures de code (défaut : 0.8pt).
    \item \textbf{adborder}=\texttt{dim} : épaisseur des bordures d'admonitions (défaut : 0.8pt).
\end{itemize}

\paragraph{Espacement interne :}
\begin{itemize}
    \item \textbf{padding}=\texttt{valeur} : Ajuste l'espacement interne des boîtes.
    \textit{Choix :} \texttt{tight} (serré), \texttt{loose} (aéré), \texttt{normal} (défaut).
\end{itemize}

\paragraph{Arrondis des coins :}
\begin{itemize}
    \item \textbf{boxarc}=\texttt{dim} : arrondi pour \texttt{neobox} et \texttt{answerframe} (défaut : \texttt{0pt}).
    \item \textbf{thmboxarc}=\texttt{dim} : arrondi pour les théorèmes (défaut : \texttt{0pt}).
    \item \textbf{exboxarc}=\texttt{dim} : arrondi pour les exercices (défaut : \texttt{0pt}).
    \item \textbf{codeboxarc}=\texttt{dim} : arrondi pour les boîtes de code (défaut : \texttt{0pt}).
    \item \textbf{sideboxarc}=\texttt{dim} : arrondi pour \texttt{sidebyside} (défaut : \texttt{0pt}).
    \item \textbf{pseudoboxarc}=\texttt{dim} : arrondi pour \texttt{pseudocode} (défaut : \texttt{0pt}).
    \item \textbf{sectionarc}=\texttt{dim} : arrondi pour les titres de section (style \texttt{highlighted} ou \texttt{shaded}).
\end{itemize}

\paragraph{Formes des boîtes :}

L'option \textbf{boxshape}=\texttt{forme} définit la forme globale des coins des boîtes.
Des options spécifiques existent : \textbf{thmboxshape}, \textbf{exboxshape}, \textbf{codeboxshape}, \textbf{adboxshape}, \textbf{neoboxshape}, \textbf{sideboxshape}.
Deux options supplémentaires permettent de différencier la forme de l'étiquette du titre des théorèmes de celle de la boîte principale :
\begin{itemize}
    \item \textbf{thmtitleshape}=\texttt{forme} : forme de l'étiquette de titre (hérite de \texttt{thmboxshape} si non spécifié, défaut : \texttt{rounded}).
    \item \textbf{thmtitlearc}=\texttt{dim} : arrondi de l'étiquette de titre (hérite de \texttt{thmboxarc} si non spécifié, défaut : \texttt{3pt}).
\end{itemize}

Valeurs disponibles :
\begin{itemize}
    \item \texttt{rounded} (défaut) : coins arrondis standard.
    \item \texttt{soft} : coins légèrement arrondis.
    \item \texttt{sharp} : coins droits.
    \item \texttt{sharpish} : coins très légèrement arrondis.
    \item \texttt{curve} : coins courbes prononcés.
    \item \texttt{bevel} : coins coupés en biseau.
    \item \texttt{chamfer} : coins biseautés angulaires.
    \item \texttt{chat} : style bulle de conversation.
    \item \texttt{leaf} : coins arrondis en forme de feuille.
    \item \texttt{northeast}, \texttt{northwest}, \texttt{southeast}, \texttt{southwest} : arrondi sur un seul coin.
    \item \texttt{north}, \texttt{south}, \texttt{east}, \texttt{west} : arrondis sur un côté.
    \item \texttt{downhill}, \texttt{uphill} : coins arrondis en diagonale.
\end{itemize}

\paragraph{Terminateurs de titres :}
\begin{itemize}
    \item \textbf{thmterminator}=\texttt{texte} : terminateur après le titre des théorèmes (défaut : \texttt{.\textbackslash !}).
    \item \textbf{thmseparator}=\texttt{texte} : séparateur entre le nom et le titre personnalisé.
    \item \textbf{adterminator}=\texttt{texte} : terminateur pour les admonitions (défaut : \texttt{.\textbackslash !}).
    \item \textbf{exterminator}=\texttt{texte} : terminateur pour les exercices (défaut : \texttt{.}).
    \item \textbf{boxtitle}=\texttt{texte} : titre par défaut pour les boîtes génériques.
\end{itemize}

\subsubsection{Autres options d'affichage}

\begin{itemize}
    \item \textbf{scale} : harmonise la taille des polices en \texttt{lualatex}/\texttt{xelatex}.
    \item \textbf{inlinecodebox} : affiche le code en ligne (\texttt{\textbackslash texttt}) dans une boîte encadrée et colorée.
    \item \textbf{inlineadmonition} (défaut) : titre et contenu des admonitions sur la même ligne.
    \item \textbf{blockadmonition} : force le contenu des admonitions à s'afficher sous le titre.
\end{itemize}

\subsection{Typographie}

\subsubsection{Polices de caractères}

\begin{itemize}
    \item \textbf{mainface}=\texttt{Police} : police principale (avec empattements).
    \item \textbf{mainfaceoptions}=\texttt{options} : options pour la police principale.
    \item \textbf{mainfacescale}=\texttt{facteur} : facteur d'échelle (défaut : 1.0).
    \item \textbf{sansface}=\texttt{Police} : police sans empattements.
    \item \textbf{sansfaceoptions}=\texttt{options} : options pour la police sans empattements.
    \item \textbf{sansfacescale}=\texttt{facteur} : facteur d'échelle (défaut : 1.0).
    \item \textbf{monoface}=\texttt{Police} : police à chasse fixe (code).
    \item \textbf{monofaceoptions}=\texttt{options} : options pour la police mono.
    \item \textbf{monofacescale}=\texttt{facteur} : facteur d'échelle (défaut : 1.0).
    \item \textbf{mathface}=\texttt{Police} : police mathématique.
    \item \textbf{mathfaceoptions}=\texttt{options} : options pour la police mathématique.
    \item \textbf{mathfacescale}=\texttt{facteur} : facteur d'échelle pour les maths.
    \item \textbf{facefamily}=\texttt{Famille} : famille complète de polices.
    \item \textbf{facefamilyoptions}=\texttt{options} : options pour la famille.
    \item \textbf{sfbody} : utilise la police sans empattements pour le corps du texte.
    \item \textbf{sfall} : utilise la police sans empattements pour tout le document.
    \item \textbf{mathastext} : utilise la police du texte pour les mathématiques.
\end{itemize}

\subsubsection{Styles des titres}

\paragraph{Styles globaux :}
\begin{itemize}
    \item \textbf{headstyle}=\texttt{style} : famille de police (défaut : \texttt{sffamily}).
    \item \textbf{headweight}=\texttt{graisse} : graisse (défaut : \texttt{bfseries}).
    \item \textbf{headshape}=\texttt{forme} : forme (défaut : \texttt{upshape}).
\end{itemize}

\paragraph{Titre principal :}
\begin{itemize}
    \item \textbf{titlestyle}=\texttt{style} : hérite de \texttt{headstyle}.
    \item \textbf{titleweight}=\texttt{graisse} : hérite de \texttt{headweight}.
    \item \textbf{titleshape}=\texttt{forme} : défaut \texttt{upshape}.
    \item \textbf{titlesize}=\texttt{taille} : taille du titre (défaut : \texttt{hugeminus}).
    \item \textbf{titlealign}=\texttt{align} : alignement (défaut : \texttt{center}).
    \item \textbf{titledecor}=\texttt{décor} : décoration sous le titre (défaut : \texttt{none}).
    \item[] Valeurs : \texttt{none}, \texttt{ornament}, \texttt{rule}, \texttt{midrule}, \texttt{fullrule}.
\end{itemize}

\paragraph{Sections :}
\begin{itemize}
    \item \textbf{sectionnumstyle}=\texttt{style} : apparence du numéro (défaut : \texttt{circle}).
    \item[] Valeurs : \texttt{circle}, \texttt{box}, \texttt{dash}, \texttt{plain}.
    \item \textbf{sectiontextstyle}=\texttt{style} : casse du texte (défaut : \texttt{sc}).
    \item[] Valeurs : \texttt{sc}, \texttt{upper}, \texttt{lower}.
    \item \textbf{sectionstyle}=\texttt{style} : style visuel (défaut : \texttt{normal}).
    \item[] Valeurs : \texttt{normal}, \texttt{ornaments}, \texttt{underline}, \texttt{highlighted}, \texttt{shadedline}.
    \item \textbf{sectionalign}=\texttt{align} : alignement (défaut : \texttt{center}).
\end{itemize}

\paragraph{En-têtes et pieds de page :}
\begin{itemize}
    \item \textbf{headfootstyle}=\texttt{style} : hérite de \texttt{titlestyle}.
\end{itemize}

\subsection{Mise en page}

\subsubsection{Marges et espacement}

\begin{itemize}
    \item \textbf{margin}=\texttt{dim} : largeur des marges horizontales (défaut : \texttt{1.5cm}).
    \item \textbf{indent}=\texttt{dim} : taille de l'indentation (défaut : \texttt{1em}).
    \item \textbf{noindent} : supprime l'indentation en début de paragraphe.
    \item \textbf{parskip}=\texttt{valeur} : espacement inter-paragraphes (défaut : \texttt{half}).
    Valeurs KOMA-Script : \texttt{false}, \texttt{true}/\texttt{full}, \texttt{half},
    avec suffixes optionnels \texttt{-}, \texttt{+}, \texttt{*} pour contrôler le \og fill \fg{} de fin de ligne.
    Ne pas charger le package \texttt{parskip} en parallèle.
    \item \textbf{listparskip} : propage l'espacement \texttt{parskip} à l'intérieur des listes
    (\texttt{itemize}, \texttt{enumerate}, \texttt{description}) pour un rythme typographique
    cohérent. Activée par défaut. Utiliser \textbf{nolistparskip} pour conserver des listes
    compactes indépendamment de \texttt{parskip}.
    \item \textbf{vspacing}=\texttt{facteur} : facteur de compression/dilatation verticale (défaut : \texttt{1.0}).
    Valeurs entre 0.25 et 2.0.
\end{itemize}

\subsubsection{En-têtes et pieds de page}

\begin{itemize}
    \item \textbf{fullheader} : active l'en-tête/pied de page complets (nécessite \texttt{\textbackslash neoheader}).
    \item \textbf{nofooter} : supprime l'en-tête et le pied de page (style \texttt{empty}).
    \item \textbf{pageonlyfooter} : affiche uniquement le numéro de page centré.
    \item \textbf{headerules}=\texttt{style} : filets (défaut : \texttt{none}).
    Valeurs : \texttt{none}, \texttt{headrule}, \texttt{footrule}, \texttt{headfootrule}.
\end{itemize}

\subsubsection{Table des matières}

\begin{itemize}
    \item \textbf{compacttoc} : réduit les espacements dans la table des matières.
    \item \textbf{monotoc} : table des matières en couleur primaire uniquement.
    \item \textbf{twocoltoc} : affiche la table des matières sur deux colonnes.
\end{itemize}

\subsubsection{Modes de sortie}

Ces options permettent d'imprimer plusieurs pages logiques sur une seule page physique.
\begin{itemize}
    \item \textbf{2a5toa4} : 2 pages A5 identiques sur une feuille A4 paysage.
    \item \textbf{2a4toa3} : 2 pages A4 identiques sur une feuille A3 paysage.
    \item \textbf{4a5toa3} : 4 pages A5 identiques sur une feuille A3.
    \item \textbf{2toa3} : 2 pages A4 différentes sur une feuille A3 paysage.
    \item \textbf{bookleta5} : livret A5 (pages A5 sur feuilles A4 pliées).
    \item \textbf{bookleta4} : livret A4 (pages A4 sur feuilles A3 pliées).
\end{itemize}

\subsection{Options diverses}

\begin{itemize}
    \item \textbf{abstracttitle}=\texttt{Titre} : titre de l'environnement \texttt{abstract} (défaut : \texttt{DEFAULT}).
    \item \textbf{boldlistlabels} : met en gras les labels des listes.
    \item \textbf{totalpoints}=\texttt{n} : total de points pour le barème (défaut : 20).
\end{itemize}

\section{Styles de document}

\subsection{Styles de titre (\texttt{titlelayout})}

L'option \textbf{titlelayout}=\texttt{style} définit l'apparence de la première page et du titre.

\subsubsection{Styles d'examen}

\begin{itemize}
    \item \textbf{exam} : style complet avec tableau pour nom, classe, date, et bandeau de notation.
    \item \textbf{shortexam} : style compact pour examens.
    \item \textbf{mockexam} : style spécifique pour épreuves type Bac/Brevet blanc.
\end{itemize}

\subsubsection{Styles d'évaluation}

\begin{itemize}
    \item \textbf{eval} : style standard, informations dans les coins.
    \item \textbf{evalicons} : style \texttt{eval} avec icônes personnalisables.
    \item \textbf{evalgrade} : style \texttt{eval} avec bandeau de notation.
    \item \textbf{evaliconsgrade} : combine \texttt{evalicons} et \texttt{evalgrade}.
    \item \textbf{shorteval} : style compact sur une ligne.
\end{itemize}

\subsubsection{Styles design}

\begin{multicols}{4}
  \begin{itemize}
    \item \textbf{band}
    \item \textbf{banner}
    \item \textbf{bar}
    \item \textbf{bauhaus}
    \item \textbf{blocks}
    \item \textbf{book}
    \item \textbf{bristol}
    \item \textbf{brush}
    \item \textbf{bubbles}
    \item \textbf{champagne}
    \item \textbf{circles}
    \item \textbf{cloud}
    \item \textbf{confetti}
    \item \textbf{flow}
    \item \textbf{geometric}
    \item \textbf{grid}
    \item \textbf{magazine}
    \item \textbf{memphis}
    \item \textbf{notion}
    \item \textbf{particles}
    \item \textbf{simplenotion}
    \item \textbf{spine}
    \item \textbf{stream}
    \item \textbf{tech}
    \item \textbf{wave}
  \end{itemize}
\end{multicols}

\subsubsection{Styles classiques}

\begin{itemize}
    \item \textbf{default} : titre centré standard.
    \item \textbf{titlebox} : titre dans un bandeau coloré en haut de page.
    \item \textbf{tighttitle} : titre compact sans boîte.
    \item \textbf{onlytitle} : affiche uniquement le titre centré.
    \item \textbf{shorttitle} : titre compact centré sur une ligne.
    \item \textbf{shortlesson} : style compact pour fiches de cours.
    \item \textbf{minimal} : style minimaliste épuré.
    \item \textbf{frame} : titre encadré.
\end{itemize}

\begin{code}{latex}
\documentclass[titlelayout=exam]{neoschool}
\neoheader{
  type = Devoir Surveillé n°1,
  school = Lycée Imaginaire,
  level = Terminale Spé Maths,
  duration = 2h,
  calculator = exam
}
\title{Suites numériques}
\date{21 octobre 2025}
\subject{Mathématiques}
\begin{document}
\maketitle
...
\end{document}
\end{code}

\subsection{Configuration de l'en-tête (\texttt{\textbackslash neoheader})}

Cette commande configure les informations pour les styles \texttt{exam}, \texttt{eval}, \texttt{mockexam}, \texttt{shortlesson} et l'option \texttt{fullheader}.

\begin{code}{latex}
\neoheader{
  type = {Interrogation de cours},
  school = {Collège A. Turing},
  academy = {Lyon},
  level = {Quatrième},
  duration = {20 minutes},
  calculator = {false},       % true / false / exam
  leftcontent = {\faFlask},
  rightcontent = {\faCalculator},
  leftcontentfill = {true},
  rightcontentfill = {true}
}
\end{code}

\section{Environnements mathématiques}

Basés sur \texttt{tcolorbox}.

\subsection{Styles de théorèmes}

L'option \textbf{thmstyle}=\texttt{style} définit l'apparence des environnements de type théorème.
Valeurs : \texttt{bar}, \texttt{block}, \texttt{tile}, \texttt{fold}, \texttt{plain}, \texttt{frame}, \texttt{curve}, \texttt{sticker}, \texttt{pastel}, \texttt{tag} (défaut), \texttt{raw}.

\subsection{Environnements disponibles}

\begin{itemize}
    \item \textbf{theorem} (réf. : \texttt{thm})
    \item \textbf{lemma} (réf. : \texttt{lem})
    \item \textbf{corollary} (réf. : \texttt{cor})
    \item \textbf{conjecture} (réf. : \texttt{conj})
    \item \textbf{proposition} (réf. : \texttt{propo})
    \item \textbf{property} (réf. : \texttt{prop})
    \item \textbf{properties} (réf. : \texttt{prop})
    \item \textbf{definition} (réf. : \texttt{def})
    \item \textbf{definitions} (réf. : \texttt{def})
    \item \textbf{method} (réf. : \texttt{meth})
    \item \textbf{activity} (réf. : \texttt{act})
    \item \textbf{application} (réf. : \texttt{appl})
    \item \textbf{remark}, \textbf{remarks} (non numérotés)
    \item \textbf{example}, \textbf{examples} (réf. : \texttt{ex})
    \item \textbf{proof}
\end{itemize}

\subsection{Options des environnements}

\begin{itemize}
    \item \textbf{title}=\texttt{texte} : titre personnalisé.
    \item \textbf{label}=\texttt{nom} : étiquette pour \texttt{\textbackslash ref}.
    \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} : formatage du titre.
\end{itemize}

\subsection{Options de numérotation}

\begin{itemize}
    \item \textbf{sectionthmcounter} : compteurs relatifs à chaque section.
    \item \textbf{sharedthmcounter} : un seul compteur partagé entre tous les environnements.
    \item \textbf{thmgroupcounter} : compteur partagé entre théorème, lemme, corollaire, proposition, propriété.
    \item \textbf{sharedexcounter} : partage le compteur entre exercices et théorèmes.
\end{itemize}

\subsection{Exemples d'environnements}

\begin{sidebyside}
\begin{codeside}[numbers=none]{latex}
\begin{definition}[
  title=Nombre premier,
  label=premier
]
Un entier naturel est dit premier
s'il admet exactement deux diviseurs
distincts : 1 et lui-même.
\end{definition}

Voir définition~\ref{def:premier}.
\end{codeside}
\tcblower
\begin{definition}[
  title=Nombre premier,
  label=premier
]
Un entier naturel est dit premier
s'il admet exactement deux diviseurs
distincts : 1 et lui-même.
\end{definition}
Voir définition~\ref{def:premier}.
\end{sidebyside}

\begin{sidebyside}
\begin{codeside}[numbers=none]{latex}
\begin{theorem}[title=Théorème de Pythagore]
Dans un triangle rectangle,
le carré de l'hypoténuse est égal
à la somme des carrés des deux
autres côtés :
\[ c^2 = a^2 + b^2 \]
\end{theorem}
\end{codeside}
\tcblower
\begin{theorem}[title=Théorème de Pythagore]
Dans un triangle rectangle,
le carré de l'hypoténuse est égal
à la somme des carrés des deux
autres côtés :
\[ c^2 = a^2 + b^2 \]
\end{theorem}
\end{sidebyside}

\begin{sidebyside}
\begin{codeside}[numbers=none]{latex}
\begin{property}
Toute fonction dérivable
est continue.
\end{property}

\begin{proof}
Cela découle directement de
la définition de la dérivée.
\end{proof}
\end{codeside}
\tcblower
\begin{property}
Toute fonction dérivable est continue.
\end{property}
\begin{minipage}{0.95\linewidth}
  \begin{proof}
    Cela découle directement de la définition de la dérivée.
  \end{proof}
\end{minipage}
\end{sidebyside}

\begin{sidebyside}
\begin{codeside}[numbers=none]{latex}
\begin{example}
Soit $f(x) = x^2$.
Alors $f'(x) = 2x$.
\end{example}

\begin{remark}
La réciproque est fausse :
$|x|$ est continue mais non
dérivable en $0$.
\end{remark}
\end{codeside}
\tcblower
\begin{example}
Soit $f(x) = x^2$. Alors $f'(x) = 2x$.
\end{example}
\begin{remark}
La réciproque est fausse : $|x|$ est continue mais non dérivable en $0$.
\end{remark}
\end{sidebyside}

\section{Exercices}

Basé sur l'extension \texttt{xsim}.

\subsection{Environnements \texttt{exercise} et \texttt{solution}}

\subsubsection{Options d'un exercice}

\begin{itemize}
    \item \textbf{points}=\texttt{n} : nombre de points.
    \item \textbf{bonus-points}=\texttt{n} : points bonus.
    \item \textbf{level}=\texttt{n} : niveau de difficulté (1--5, affiché en étoiles).
    \item \textbf{subtitle}=\texttt{texte} : sous-titre.
    \item \textbf{icon}=\texttt{nom-fa} : icône FontAwesome (nécessite \texttt{exerciseicons}).
    \item \textbf{topic}=\texttt{thème} : thème pour tri/sélection.
    \item \textbf{grade}=\texttt{niveau} : niveau de classe.
    \item \textbf{subject}=\texttt{matière} : matière.
    \item \textbf{ID}=\texttt{id} : identifiant pour \texttt{\textbackslash exercisenumber\{id\}}.
    \item \textbf{template}=\texttt{nom} : style d'affichage.
\end{itemize}

\subsubsection{Styles d'exercices (\texttt{exstyle})}

L'option \textbf{exstyle}=\texttt{style} définit l'apparence des exercices.

\textit{Styles en boîte :} \texttt{block}, \texttt{capsule} (défaut), \texttt{capsule-outline}, \texttt{tile}, \texttt{fold}, \texttt{plain}, \texttt{frame}, \texttt{curve}, \texttt{sticker}, \texttt{pastel}, \texttt{card}, \texttt{bar}.

\textit{Styles avec badge :} \texttt{badge}, \texttt{badge-outline}, \texttt{digit}, \texttt{digit-outline}, \texttt{digit-inline}, \texttt{digit-outline-inline}, \texttt{counter}, \texttt{counter-inline}, \texttt{counter-outline}, \texttt{counter-outline-inline}.

\textit{Styles linéaires :} \texttt{line}, \texttt{line-outline}, \texttt{line-circle}, \texttt{line-circle-outline}.

\textit{Styles spéciaux :} \texttt{inline}, \texttt{shell}, \texttt{section}, \texttt{subsection}, \texttt{item}, \texttt{rule}, \texttt{separator}.

\subsubsection{Options globales}

\begin{itemize}
    \item \textbf{exerciseicons} : active l'affichage des icônes.
    \item \textbf{answers} : affiche les solutions après chaque exercice.
    \item \textbf{answersonly} : affiche uniquement les solutions.
    \item \textbf{shuffle} : mélange aléatoirement les réponses des QCM.
    \item \textbf{solstyle}=\texttt{style} : style des solutions (défaut : \texttt{inline}).
    Valeurs : \texttt{inline}, \texttt{dots}, \texttt{lines}, \texttt{box}.
    \item \textbf{solrotate} : affiche les solutions à l'envers (rotation 180°).
\end{itemize}

\subsubsection{Exercice avec solution}

\begin{sidebyside}
\begin{codeside}[numbers=none]{latex}
\begin{exercise}[
  points=4,
  level=2,
  subtitle={Calcul de dérivée}
]
Calculer la dérivée de
$f(x) = x^3 - 2x + 1$.
\end{exercise}

\begin{solution}
En appliquant les règles de dérivation :
$f'(x) = 3x^2 - 2$.
\end{solution}
\end{codeside}
\tcblower
\begin{exercise}[
  points=4,
  level=2,
  subtitle={Calcul de dérivée}
]
Calculer la dérivée de $f(x) = x^3 - 2x + 1$.
\end{exercise}
\xsimsetup{solution/print=true}
\begin{solution}
En appliquant les règles de dérivation : $f'(x) = 3x^2 - 2$.
\end{solution}
\xsimsetup{solution/print=false}
\end{sidebyside}

\subsubsection{QCM et choix multiples}

\begin{itemize}
    \item \textbf{choices}\texttt{(\textit{n})} : QCM à réponse unique sur \textit{n} colonnes.
    \texttt{\textbackslash choice} pour une réponse, \texttt{\textbackslash choice[\textbackslash correct]} pour la bonne réponse.
    \item \textbf{checkboxes}\texttt{(\textit{n})} : QCM à réponses multiples.
    \texttt{\textbackslash checkbox} pour une réponse, \texttt{\textbackslash checkbox[\textbackslash correct*]} pour une bonne réponse.
\end{itemize}

\begin{sidebyside}
\begin{codeside}[numbers=none]{latex}
\begin{exercise}[points=1]
 Quelle est la dérivée de $f(x)=x^2$ ?
\begin{choices}(2)
  \choice[\correct] $x\mapsto 2x$
  \choice $x\mapsto x$
  \choice $x\mapsto x^2$
  \choice $x\mapsto 2$
 \end{choices}
\end{exercise}
\end{codeside}
\tcblower
\begin{exercise}[points=1]
 Quelle est la dérivée de $f(x)=x^2$ ?
\begin{choices}(2)
  \choice[\correct] $x\mapsto 2x$
  \choice $x\mapsto x$
  \choice $x\mapsto x^2$
  \choice $x\mapsto 2$
 \end{choices}
\end{exercise}
\end{sidebyside}

\begin{sidebyside}
\begin{codeside}[numbers=none]{latex}
\begin{exercise}[points=2]
 Cocher les affirmations vraies.
\begin{checkboxes}(1)
  \checkbox[\correct*] $\pi > 3$
  \checkbox $\sqrt{2}$ est rationnel
  \checkbox[\correct*] $0! = 1$
  \checkbox $\ln(1) = 1$
 \end{checkboxes}
\end{exercise}
\end{codeside}
\tcblower
\begin{exercise}[points=2]
 Cocher les affirmations vraies.
\begin{checkboxes}(1)
  \checkbox[\correct*] $\pi > 3$
  \checkbox $\sqrt{2}$ est rationnel
  \checkbox[\correct*] $0! = 1$
  \checkbox $\ln(1) = 1$
 \end{checkboxes}
\end{exercise}
\end{sidebyside}

\section{Code informatique}

Deux systèmes sont disponibles via les options de classe :
\begin{itemize}
    \item \textbf{listings} (défaut) : coloration syntaxique via l'extension \texttt{listings}.
    \item \textbf{minted} : coloration syntaxique via \texttt{minted} (nécessite Python, Pygments et \texttt{--shell-escape}).
\end{itemize}

\subsection{Environnement \texttt{code}}

\begin{codeside}[numbers=none]{latex}
\begin[options]{code}{langage}[titre][style-boite]
... code ...
\end{code}
\end{codeside}

\begin{itemize}
    \item \texttt{options} : options de \texttt{listings}/\texttt{minted}.
    \item \texttt{langage} : \texttt{python}, \texttt{latex}, \texttt{c++}, etc.
    \item \texttt{titre} : titre optionnel.
    \item \texttt{style-boite} : style de la boîte.
\end{itemize}

\begin{sidebyside}
\begin{codeside}[numbers=none]{latex}
\begin{code}{python}[Fonction factorielle]
def fact(n):
    if n <= 1:
        return 1
    return n * fact(n - 1)
\end{code}
\end{codeside}
\tcblower
\begin{code}[numbers=none]{python}[Fonction factorielle]
def fact(n):
    if n <= 1:
        return 1
    return n * fact(n - 1)
\end{code}
\end{sidebyside}

\subsection{Styles de boîtes de code (\texttt{codestyle})}

L'option \textbf{codestyle}=\texttt{style} définit l'apparence des boîtes de code.
Valeurs : \texttt{plain}, \texttt{line}, \texttt{lines}, \texttt{bar}, \texttt{frame}, \texttt{shadow} (défaut).

\subsection{Options du code}

\begin{itemize}
    \item \textbf{codewidth}=\texttt{facteur} : largeur des blocs (défaut : 1.0).
    \item \textbf{centeredcode} : centre les blocs de code.
\end{itemize}

\subsection{Commandes additionnelles}

\begin{itemize}
    \item \texttt{\textbackslash codeinline[\textit{lang}]\{\textit{code}\}} : code en ligne avec coloration.
    \item \texttt{\textbackslash codeinput[\textit{opt}]\{\textit{lang}\}\{\textit{fichier}\}[\textit{titre}][\textit{style}]} : importe du code depuis un fichier.
\end{itemize}

\begin{sidebyside}[righthand width=.45\linewidth]
\begin{codeside}[numbers=none]{latex}
La fonction \codeinline[python]{range(n)}
génère les entiers de $0$ à $n-1$.
\end{codeside}
\tcblower
La fonction \codeinline[python]{range(n)} génère les entiers de $0$ à $n-1$.
\end{sidebyside}

\subsection{Environnement \texttt{pseudocode}}

Basé sur \texttt{algpseudocode}. En français, les mots-clés sont traduits automatiquement.

Commandes spéciales :
\begin{itemize}
    \item \texttt{\textbackslash Gets} : flèche d'affectation $\leftarrow$.
    \item \texttt{\textbackslash To} : mot-clé « à » pour les boucles.
\end{itemize}

\begin{sidebyside}
\begin{codeside}[numbers=none]{latex}
\begin{pseudocode}{Recherche dichotomique}
\Require Tableau trié $T$, valeur $v$
\Ensure Indice de $v$ ou $-1$
\State $lo \Gets 0$, $hi \Gets |T| - 1$
\While{$lo \leq hi$}
    \State $mid \Gets (lo + hi) / 2$
    \If{$T[mid] = v$}
        \State \Return $mid$
    \ElsIf{$T[mid] < v$}
        \State $lo \Gets mid + 1$
    \Else
        \State $hi \Gets mid - 1$
    \EndIf
\EndWhile
\State \Return $-1$
\end{pseudocode}
\end{codeside}
\tcblower
\begin{pseudocode}{Recherche dichotomique}
\Require Tableau trié $T$, valeur $v$
\Ensure Indice de $v$ ou $-1$
\State $lo \Gets 0$, $hi \Gets |T| - 1$
\While{$lo \leq hi$}
    \State $mid \Gets (lo + hi) / 2$
    \If{$T[mid] = v$}
        \State \Return $mid$
    \ElsIf{$T[mid] < v$}
        \State $lo \Gets mid + 1$
    \Else
        \State $hi \Gets mid - 1$
    \EndIf
\EndWhile
\State \Return $-1$
\end{pseudocode}
\end{sidebyside}

\section{Admonitions}

Boîtes colorées avec icônes pour attirer l'attention.

\subsection{Environnements disponibles}

\begin{itemize}
    \item \textbf{note} : remarques générales (\faEdit).
    \item \textbf{info} : informations complémentaires (\faInfoCircle).
    \item \textbf{warning} : avertissements (\faExclamationTriangle).
    \item \textbf{important} : points essentiels (\faExclamationCircle).
    \item \textbf{tip} : conseils, astuces (\faLightbulb).
    \item \textbf{reminder} : à retenir (\faBookmark).
    \item \textbf{summary} : résumé (\faClipboardList).
    \item \textbf{toolbox} : matériel, prérequis (\faTools).
    \item \textbf{method} : méthode à suivre (\faCogs).
    \item \textbf{activity} : activité pratique (\faPuzzlePiece).
\end{itemize}

\subsection{Styles d'admonitions}

L'option \textbf{adstyle}=\texttt{style} définit l'apparence globale des admonitions.
Valeurs : \texttt{modern}, \texttt{material}, \texttt{soft} (défaut), \texttt{classic}, \texttt{professional}, \texttt{minimal}.

\subsection{Options des admonitions}

Chaque environnement accepte des options clé-valeur :
\begin{itemize}
    \item \textbf{title}=\texttt{texte} : titre personnalisé.
    \item \textbf{subtitle}=\texttt{texte} : sous-titre.
    \item \textbf{icon}=\texttt{\textbackslash faIcone} : icône personnalisée.
    \item \textbf{style}=\texttt{nom} : style local (surcharge le style global).
\end{itemize}

\begin{sidebyside}
\begin{codeside}[numbers=none]{latex}
\begin{warning}[title=Attention, icon=\faSkull]
  Ne pas diviser par zéro !
\end{warning}
\begin{tip}
  Penser à factoriser d'abord.
\end{tip}
\end{codeside}
\tcblower
\begin{warning}[title=Attention, icon=\faSkull]
  Ne pas diviser par zéro !
\end{warning}
\begin{tip}
  Penser à factoriser d'abord.
\end{tip}
\end{sidebyside}

\begin{sidebyside}
\begin{codeside}[numbers=none]{latex}
\begin{method}[title=Résolution d'équation]
  1. Isoler l'inconnue.
  2. Simplifier.
\end{method}
\begin{activity}[subtitle=En groupe]
  Construire un triangle équilatéral.
\end{activity}
\end{codeside}
\tcblower
\begin{method}[title=Résolution d'équation]
  1. Isoler l'inconnue.
  2. Simplifier.
\end{method}
\begin{activity}[subtitle=En groupe]
  Construire un triangle équilatéral.
\end{activity}
\end{sidebyside}

\section{Disposition des contenus}

\subsection{Positionnement absolu}

\texttt{\textbackslash positionobject\{\textit{x}\}\{\textit{y}\}\{\textit{scale}\}\{\textit{contenu}\}} : place du contenu aux coordonnées (\textit{x}, \textit{y}) depuis le coin supérieur gauche.

\subsection{Mise en page à deux colonnes}

\texttt{\textbackslash splitcontent[\textit{w1}][\textit{gap}]\{\textit{col1}\}\{\textit{col2}\}} : divise l'espace horizontal.

\begin{sidebyside}
\begin{codeside}[numbers=none]{latex}
\splitcontent[0.4][0.05]{%
  \textbf{Colonne gauche (40\%)}

  Premier paragraphe...
}{%
  \textbf{Colonne droite (55\%)}

  Second paragraphe...
}
\end{codeside}
\tcblower
\splitcontent[0.4][0.05]{%
  \textbf{Colonne gauche (40\%)}

  Premier paragraphe avec du texte pour illustrer la mise en page.
}{%
  \textbf{Colonne droite (55\%)}

  Second paragraphe avec du contenu additionnel.
}
\end{sidebyside}

\subsection{Environnement \texttt{sidebyside}}

Crée deux boîtes \texttt{tcolorbox} côte à côte. \texttt{\textbackslash tcblower} sépare les colonnes.

\begin{sidebyside}
\begin{codeside}[numbers=none]{latex}
\begin{sidebyside}[
  title=Comparaison,
  righthand width=.45\linewidth
]
  \textbf{Avantages}
  \begin{itemize}
    \item Simple
    \item Rapide
  \end{itemize}
\tcblower
  \textbf{Inconvénients}
  \begin{itemize}
    \item Limité
  \end{itemize}
\end{sidebyside}
\end{codeside}
\tcblower
\begin{sidebyside}[title=Comparaison, righthand width=.45\linewidth]
  \textbf{Avantages}
  \begin{itemize}
    \item Simple
    \item Rapide
  \end{itemize}
\tcblower
  \textbf{Inconvénients}
  \begin{itemize}
    \item Limité
  \end{itemize}
\end{sidebyside}
\end{sidebyside}

\subsection{Association texte et image}

\texttt{\textbackslash textwithimage[*]\{\textit{w\_img}\}\{\textit{s\_img}\}\{\textit{texte}\}\{\textit{chemin}\}} : combine texte et image.
\texttt{*} met l'image à gauche.

\subsection{QR codes}

\texttt{\textbackslash withqrcode[*][\textit{taille}]\{\textit{url}\}\{\textit{contenu}\}} : QR code à côté d'un contenu.
\texttt{*} place le QR code à droite.

\begin{sidebyside}[righthand width=.5\linewidth]
\begin{codeside}[numbers=none]{latex}
\withqrcode{https://example.com}{%
  Scannez ce QR code pour
  accéder au site.
}
\end{codeside}
\tcblower
\withqrcode{https://example.com}{%
  Scannez ce QR code pour accéder au site.
}
\end{sidebyside}

\subsection{Grilles et papiers}

\begin{itemize}
    \item \texttt{\textbackslash grid[\textit{couleur}]\{\textit{largeur}\}\{\textit{hauteur}\}} : grille 5mm × 5mm.
    \item \texttt{\textbackslash customgrid[\textit{couleur}][\textit{dx}][\textit{dy}]\{\textit{largeur}\}\{\textit{hauteur}\}} : grille personnalisée.
    \item \texttt{\textbackslash frenchgrid[\textit{coul\_p}][\textit{coul\_g}]\{\textit{largeur}\}\{\textit{hauteur}\}} : grille Seyès.
    \item \texttt{\textbackslash gridfill} / \texttt{\textbackslash gridfill*} : remplit la page avec une grille.
    \item \texttt{\textbackslash notebook}, \texttt{\textbackslash nbminorgrid}, \texttt{\textbackslash nbmajorgrid} : styles de fond de page.
\end{itemize}

\begin{sidebyside}[righthand width=.5\linewidth]
\begin{codeside}[numbers=none]{latex}
\grid[blue!40]{4cm}{2cm}
\end{codeside}
\tcblower
\centering
\grid[blue!40]{4cm}{2cm}
\end{sidebyside}

\begin{sidebyside}[righthand width=.5\linewidth]
\begin{codeside}[numbers=none]{latex}
\frenchgrid{4cm}{2cm}
\end{codeside}
\tcblower
\centering
\frenchgrid{4cm}{2cm}
\end{sidebyside}

\subsection{Boîtes simples}

\begin{itemize}
    \item \texttt{neobox} : boîte avec cadre.
    \item \texttt{neobox*} : boîte sans cadre visible.
    \item \texttt{\textbackslash neocolorbox[\textit{couleur}]\{\textit{contenu}\}} : boîte colorée simple.
    \item \texttt{\textbackslash inlinebox[\textit{cadre}][\textit{fond}][\textit{texte}]\{\textit{contenu}\}} : boîte en ligne personnalisable.
\end{itemize}

\begin{sidebyside}
\begin{codeside}[numbers=none]{latex}
\begin{neobox}[title=Ma boîte]
  Contenu avec cadre.
\end{neobox}

\begin{neobox*}
  Contenu sans cadre visible.
\end{neobox*}
\end{codeside}
\tcblower
\begin{neobox}[title=Ma boîte]
  Contenu avec cadre.
\end{neobox}
\begin{neobox*}
  Contenu sans cadre visible.
\end{neobox*}
\end{sidebyside}

\subsection{Logos et symboles spéciaux}

\begin{itemize}
    \item \texttt{\textbackslash AILogo[\textit{options}]} : logo IA (puce avec réseau neuronal).
    \item \texttt{\textbackslash NoAILogo[\textit{options}]} : logo « Sans IA » (puce barrée).
    \item \texttt{\textbackslash documentcolor\{\textit{couleur}\}} : change la couleur du texte pour tout le document.
\end{itemize}

\begin{sidebyside}[righthand width=.4\linewidth]
\begin{codeside}[numbers=none]{latex}
\AILogo \quad \NoAILogo
\end{codeside}
\tcblower
\centering
\AILogo \qquad \NoAILogo
\end{sidebyside}

\section{Notation et correction}

\subsection{Outils de notation}

\begin{itemize}
    \item \texttt{\textbackslash gradingstrip[\textit{total}]} : bandeau pour la note et l'appréciation.
    \item \texttt{\textbackslash mrk[*][\textit{comm}]\{\textit{pts}\}} : points dans la marge.
\end{itemize}

\begin{sidebyside}[righthand width=.65\linewidth]
\begin{codeside}[numbers=none]{latex}
\gradingstrip[20]
\end{codeside}
\tcblower
\gradingstrip[20]
\end{sidebyside}

\subsection{Zones de réponse}

\begin{itemize}
    \item \texttt{\textbackslash answerfield[\textit{largeur}]\{\textit{lignes}\}} : zone avec fond coloré.
    \item \texttt{\textbackslash answerframe[\textit{largeur}]\{\textit{lignes}\}} : zone encadrée.
    \item \texttt{\textbackslash vardots[\textit{longueur}]} : ligne pointillée.
    \item \texttt{\textbackslash lines[\textit{car}][\textit{interligne}]\{\textit{n}\}} : dessine \textit{n} lignes horizontales.
    \item \texttt{\textbackslash emptybox\{\textit{largeur}\}\{\textit{hauteur}\}} : boîte vide pour réponse libre.
\end{itemize}

\begin{sidebyside}[righthand width=.5\linewidth]
\begin{codeside}[numbers=none]{latex}
Réponse : \answerfield[5cm]{1}
\end{codeside}
\tcblower
Réponse : \answerfield[5cm]{1}
\end{sidebyside}

\begin{sidebyside}[righthand width=.5\linewidth]
\begin{codeside}[numbers=none]{latex}
Justifier :
\answerframe{3}
\end{codeside}
\tcblower
Justifier :
\answerframe{3}
\end{sidebyside}

\begin{sidebyside}[righthand width=.5\linewidth]
\begin{codeside}[numbers=none]{latex}
Nom : \vardots[4cm]

Date : \vardots[3cm]
\end{codeside}
\tcblower
Nom : \vardots[4cm]

Date : \vardots[3cm]
\end{sidebyside}

\begin{sidebyside}[righthand width=.5\linewidth]
\begin{codeside}[numbers=none]{latex}
\lines{3}
\end{codeside}
\tcblower
\lines{3}
\end{sidebyside}

\subsection{Marqueurs et symboles}

\begin{multicols}{2}
  \begin{itemize}
    \item \texttt{\textbackslash cmark} : \cmark{} (vert).
    \item \texttt{\textbackslash xmark} : \xmark{} (rouge).
    \item \texttt{\textbackslash unchecked} : $\square$.
    \item \texttt{\textbackslash done} : $\rlap{$\square$}{\raisebox{1pt}{\large\hspace{1pt}\cmark}\hspace{-2.5pt}}$.
    \item \texttt{\textbackslash wontfix} : $\rlap{$\square$}{\large\hspace{1pt}\color{red}\boldsymbol{\times}}$.
  \end{itemize}
\end{multicols}

\begin{sidebyside}[righthand width=.4\linewidth]
\begin{codeside}[numbers=none]{latex}
\begin{itemize}
  \unchecked Tâche à faire
  \done Tâche terminée
  \wontfix Tâche annulée
\end{itemize}
\end{codeside}
\tcblower
\begin{itemize}
  \unchecked Tâche à faire
  \done Tâche terminée
  \wontfix Tâche annulée
\end{itemize}
\end{sidebyside}

\subsection{Évaluation par compétences}

\texttt{\textbackslash competencies\{\textit{Comp1}\textbackslash\textbackslash \textit{Comp2}...\}} : tableau d'évaluation à 4 niveaux.

\begin{sidebyside}[righthand width=.55\linewidth]
\begin{codeside}[numbers=none]{latex}
\competencies{
  Calculer des dérivées \\
  Résoudre des équations \\
  Rédiger des preuves
}
\end{codeside}
\tcblower
\competencies{
  Calculer des dérivées \\
  Résoudre des équations \\
  Rédiger des preuves
}
\end{sidebyside}

\section{Commandes mathématiques}

\subsection{Mise en valeur}

\begin{itemize}
    \item \texttt{\textbackslash mhl[\textit{couleur}]\{\textit{expr}\}} : surligne l'expression.
    \item \texttt{\textbackslash mc[\textit{couleur}]\{\textit{expr}\}} : colore l'expression.
    \item \texttt{\textbackslash mathbox<\textit{fond}>[\textit{bordure}]\{\textit{contenu}\}} : encadre du contenu mathématique.
\end{itemize}

\begin{sidebyside}[righthand width=.35\linewidth]
\begin{codeside}[numbers=none]{latex}
$f(x) = \mhl[yellow!30]{x^2} + \mc[blue]{3x} - 1$
\end{codeside}
\tcblower
$f(x) = \mhl[yellow!30]{x^2} + \mc[blue]{3x} - 1$
\end{sidebyside}

\begin{sidebyside}[righthand width=.35\linewidth]
\begin{codeside}[numbers=none]{latex}
La formule $\mathbox{E = mc^2}$ est célèbre.

Avec couleurs :
$\mathbox<yellow!20>[red]{a^2+b^2=c^2}$
\end{codeside}
\tcblower
La formule $\mathbox{E = mc^2}$ est célèbre.

Avec couleurs : $\mathbox<yellow!20>[red]{a^2+b^2=c^2}$
\end{sidebyside}

\subsection{Support APMEP}

Commandes disponibles avec l'option \texttt{apmep} :
\begin{itemize}
    \item Vecteurs : \texttt{\textbackslash vectt\{AB\}}.
    \item Repères : \texttt{\textbackslash Oij}, \texttt{\textbackslash Oijk}, \texttt{\textbackslash Ouv}.
    \item Symboles : \texttt{\textbackslash euro}, \texttt{\textbackslash cg}, \texttt{\textbackslash cd}, \texttt{\textbackslash pg}, \texttt{\textbackslash pp}, \texttt{\textbackslash barre\{x\}}.
\end{itemize}

\begin{sidebyside}[righthand width=.4\linewidth]
\begin{codeside}[numbers=none]{latex}
Le vecteur $\vectt{AB}$ dans le repère \Oij.

On a $x \pg 0$ et $y \pp 5$.

La moyenne est $\barre{x} = 12$.
\end{codeside}
\tcblower
Le vecteur $\vectt{AB}$ dans le repère \Oij.

On a $x \pg 0$ et $y \pp 5$.

La moyenne est $\barre{x} = 12$.
\end{sidebyside}

\section{Outils spéciaux}

\subsection{Arbres et graphes}

\begin{itemize}
    \item \textbf{neotree} : environnement pour arbres (basé sur \texttt{forest}).
    L'option \texttt{w=\textit{val}} ajoute un poids sur une branche.
    \item \texttt{\textbackslash neograph} : commande pour graphes (\texttt{lualatex} requis).
\end{itemize}

\begin{sidebyside}[righthand width=.4\linewidth]
\begin{codeside}[numbers=none]{latex}
\begin{neotree}[l=2cm, s sep=1cm]
  A [B, w=\frac{1}{3} [D] [\overline{D}]]
    [C, w=\frac{2}{3} [D] [\overline{D}]]
\end{neotree}
\end{codeside}
\tcblower
\begin{center}
\begin{neotree}[l=2cm, s sep=1cm]
  A [B, w=\frac{1}{3} [D] [\overline{D}]]
    [C, w=\frac{2}{3} [D] [\overline{D}]]
\end{neotree}
\end{center}
\end{sidebyside}

\subsection{Grille mathématique (\texttt{mathgrid})}

Environnement pour aligner des blocs d'équations en grille.
\begin{itemize}
    \item \texttt{\textbackslash begin\{mathgrid\}\{\textit{n}\}} : grille à \textit{n} colonnes.
    \item \texttt{\textbackslash neoline} : nouvelle ligne.
    \item \texttt{\textbackslash neocol[\textit{span}]\{\textit{contenu}\}} : colonne avec \texttt{align*}.
\end{itemize}

\begin{sidebyside}[righthand width=.5\linewidth]
\begin{codeside}[numbers=none]{latex}
\begin{mathgrid}{2}
  \neoline
  \neocol{
    A &= 2 + 3 \\
    A &= 5
  }
  \neocol{
    B &= 4 \times 2 \\
    B &= 8
  }
\end{mathgrid}
\end{codeside}
\tcblower
\begin{mathgrid}{2}
  \neoline
  \neocol{
    A &= 2 + 3 \\
    A &= 5
  }
  \neocol{
    B &= 4 \times 2 \\
    B &= 8
  }
\end{mathgrid}
\end{sidebyside}

\section{Notes marginales}

Activées par \texttt{notes=\textit{dim}}, \texttt{leftnotes=\textit{dim}} ou \texttt{rightnotes=\textit{dim}}.

\begin{itemize}
    \item \texttt{\textbackslash tdnote[\textit{options}]\{\textit{texte}\}} : note dans la marge.
    \item \texttt{\textbackslash boxnote[\textit{label}]\{\textit{texte}\}} + \texttt{\textbackslash tdmark[\textit{label}]} : note ancrée à un emplacement précis.
\end{itemize}

\begin{code}{latex}
\documentclass[notes=2.5cm]{neoschool}  % Préambule

Ceci est important\tdnote{À retenir !}.  % Dans le document

\boxnote[hyp]{Hypothèse clé}
\begin{theorem}
  \tdmark[hyp] Si $f$ est continue sur $[a,b]$...
\end{theorem}
\end{code}

\end{document}
