% Author.............: C. Pierquet
% licence............: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
% licence cliparts...: CC0 from openclipart or svgrepo

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{ProfLycee-Light}[2026/03/24 4.00f Aide pour l'utilisation de LaTeX en lycee]
%4.00f  Modification du style des +/- pour les schémas signes (fa)
%4.00e  Correction de bugs mineurs
%4.00d  Gestion des pages de garde
%4.00c  Travail sur les décompositions en facteurs premiers
%4.00b  Meilleures traductions + bugfixes + geom analytique
%4.00a  Refonte du fonctionnement, et reprise de la numérotation pfl

%%=====Option(s)
\newif\if@xcolor \@xcolorfalse
\newif\if@build \@buildfalse
\newif\if@loadamssymb \@loadamssymbtrue
\newif\if@loadsiunitxfr \@loadsiunitxfrtrue
\newif\if@warningsoff \@warningsofffalse
\newif\if@loadtikzbabel \@loadtikzbabeltrue
\newif\if@loadcancel \@loadcanceltrue
\newif\if@compatmax \@compatmaxfalse
\newif\if@fafive \@fafivetrue
\newif\if@fasix \@fasixfalse
\newif\if@faseven \@fasevenfalse
\newif\if@pfllngfr \@pfllngfrtrue
\newif\if@pfllngen \@pfllngenfalse
\newif\if@pfllngde \@pfllngdefalse
\newif\if@pfllnges \@pfllngesfalse

\DeclareOption{xcolor}{\@xcolortrue}%
\DeclareOption{build}{\@buildtrue}%
\DeclareOption{nonsiunitxfr}{\@loadsiunitxfrfalse}%
\DeclareOption{nosiunitxfr}{\@loadsiunitxfrfalse}%
\DeclareOption{nonamssymb}{\@loadamssymbfalse}%
\DeclareOption{noamssymb}{\@loadamssymbfalse}%
\DeclareOption{warningsoff}{\@warningsofftrue}%
\DeclareOption{nonwarnings}{\@warningsofftrue}%
\DeclareOption{nontikzbabel}{\@loadtikzbabelfalse}%
\DeclareOption{notikzbabel}{\@loadtikzbabelfalse}%
\DeclareOption{noncancel}{\@loadcancelfalse}%
\DeclareOption{nocancel}{\@loadcancelfalse}%
\DeclareOption{compat}{\@compatmaxtrue}%
\DeclareOption{nonfa}{\@fafivefalse\@fasixfalse\@fasevenfalse}
\DeclareOption{nofa}{\@fafivefalse\@fasixfalse\@fasevenfalse}
\DeclareOption{fa6}{\@fafivefalse\@fasixtrue\@fasevenfalse}
\DeclareOption{fa7}{\@fafivefalse\@fasixfalse\@faseventrue}
\DeclareOption{french}{\@pfllngfrtrue\@pfllngenfalse\@pfllngdefalse\@pfllngesfalse}
\DeclareOption{spanish}{\@pfllngfrfalse\@pfllngenfalse\@pfllngdefalse\@pfllngestrue}
\DeclareOption{english}{\@pfllngfrfalse\@pfllngentrue\@pfllngdefalse\@pfllngesfalse}
\DeclareOption{german}{\@pfllngfrfalse\@pfllngenfalse\@pfllngdetrue\@pfllngesfalse}

\DeclareOption*{}
\ProcessOptions\relax

\if@compatmax
  \@warningsofftrue
  \@loadamssymbfalse
\fi

%%=====Mathtools (la base)
\RequirePackage{mathtools}

%%=====Packages utiles et indispensables
\if@loadamssymb
  \RequirePackage{amssymb}
\fi
\if@warningsoff
  \PassOptionsToPackage{warnings-off={mathtools-colon,mathtools-overbracket}}{unicode-math}
\fi
\if@xcolor
  \RequirePackage[table,svgnames]{xcolor}%Gestion des couleurs
\fi
\RequirePackage{iftex}
\RequirePackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{decorations,decorations.pathreplacing,decorations.markings,arrows,arrows.meta,shapes.geometric,decorations.pathmorphing}
\if@loadtikzbabel
  \usetikzlibrary{babel}
\fi
\RequirePackage{ifthen}
\RequirePackage{xstring}
\RequirePackage{xintexpr}
\RequirePackage{xintbinhex}
\RequirePackage{xinttools}
\RequirePackage{randomlist}
\RequirePackage{simplekv}
\RequirePackage{listofitems}
\RequirePackage{tkz-tab}
\RequirePackage{tabularray}
\RequirePackage{settobox}
\RequirePackage{hologo}
\RequirePackage{fancyvrb}
\RequirePackage{nicefrac}
\RequirePackage{siunitx}
\if@loadsiunitxfr
  \sisetup{%
    locale=FR,output-decimal-marker={,},%
    mode=match,propagate-math-font=true,%
    reset-math-version=false,reset-text-family=false,%
    reset-text-series=false,reset-text-shape=false,%
    text-family-to-math=true,text-series-to-math=true,%
    group-minimum-digits=4%
  }%
\fi
\RequirePackage{tcolorbox}%
\tcbuselibrary{breakable,fitting,skins,listings,listingsutf8,hooks}

%%=====LABELS MULTILANGUES SI OPTION
\if@pfllngfr
  \def\labelcodepython{Code Python}
  \def\labelpseudocode{Pseudo-Code}
  \def\labelconsolepythondebut{Début de la console Python}
  \def\labelconsolepythonfin{Fin de la console Python}
  \def\labelsepdec{,}
  \def\labelavec{avec}
\fi
\if@pfllngen
  \def\labelcodepython{Python code}
  \def\labelpseudocode{Pseudocode}
  \def\labelconsolepythondebut{Start of Python console}
  \def\labelconsolepythonfin{End of Python console}
  \def\labelsepdec{.}
  \def\labelavec{with}
\fi
\if@pfllngde
  \def\labelcodepython{Python-Code}
  \def\labelpseudocode{Pseudocódigo}
  \def\labelconsolepythondebut{Beginn der Python-Konsole}
  \def\labelconsolepythonfin{Ende der Python-Konsole}
  \def\labelsepdec{,}
  \def\labelavec{mit}
\fi
\if@pfllnges
  \def\labelcodepython{Código Python}
  \def\labelpseudocode{Pseudocode}
  \def\labelconsolepythondebut{Inicio de la consola de Python}
  \def\labelconsolepythonfin{Fin de la consola de Python}
  \def\labelsepdec{,}
  \def\labelavec{con}
\fi

%%=====FONTAWESOME...
\if@fafive
  \RequirePackage{fontawesome5}
\fi
\if@fasix
  \RequirePackage{fontawesome6}
\fi
\if@faseven
  \RequirePackage{fontawesome7}
\fi

\def\pflfacog{}
\def\pflfapseudocode{}
\def\pflfapcode{}
\def\pflfaclone{}
\def\pflfapython{}
\def\pflfacplus{+}
\def\pflfacminus{-}

\@ifpackageloaded{fontawesome5}%
  {%
    \def\pflfacog{\faIcon{cog}}%
    \def\pflfapseudocode{\faFileCode}%
    \def\pflfapcode{\faCode}%
    \def\pflfaclone{\faClone}%
    \def\pflfapython{\faPython}%
    \def\pflfacplus{\faPlusSquare[regular]}%
    \def\pflfacminus{\faMinusSquare[regular]}%
  }%
  {}
\@ifpackageloaded{fontawesome6}
  {%
    \def\pflfacog{\faIcon{gear}}%
    \def\pflfapseudocode{\faFileCode}%
    \def\pflfapcode{\faCode}%
    \def\pflfapython{\faPython}%
    \def\pflfacplus{\faSquarePlus[regular]}%
    \def\pflfacminus{\faSquareMinus[regular]}%
  }%
  {}%
\@ifpackageloaded{fontawesome7}%
  {%
    \def\pflfacog{\faIcon{gear}}%
    \def\pflfapseudocode{\faFileCode}%
    \def\pflfapcode{\faCode}%
    \def\pflfapython{\faPython}%
    \def\pflfacplus{\faSquarePlus[regular]}%
    \def\pflfacminus{\faSquareMinus[regular]}%
  }%
  {}%

%%=====several version of \geqslant\geq + \leqslant\leq (ok)
\def\pflgeq{\geqslant}%
\def\pflleq{\leqslant}%

%%=====COULEURS PERSO
\definecolor{CouleurVertForet}{HTML}{1F8B36} %ForestGreen
\colorlet{MotsClesPseudoCodeA}{blue!75}
\colorlet{MotsClesPseudoCodeB}{green!50!black}
\colorlet{MotsClesPseudoCodeChaine}{red!75}

%%=====MACROS INTERNES
\RequirePackage{ProfLycee-Macros}

%%=====LIBRAIRIES/BIBIOTHÈQUES
\ExplSyntaxOn

\cs_new_protected:Npn \proflycee_use_library:n #1
  {
    % si "most" est présent, charger le pack complet
    \str_if_in:nnTF {,#1,} {,most,}
      {
        \file_input:n { proflycee-tools-analyse.tex }
        \file_input:n { proflycee-tools-graphiques.tex }
        \file_input:n { proflycee-tools-listings.tex }
        \file_input:n { proflycee-tools-trigo.tex }
        \file_input:n { proflycee-tools-probas.tex }
        \file_input:n { proflycee-tools-stats.tex }
        \file_input:n { proflycee-tools-arithm.tex }
        \file_input:n { proflycee-tools-aleatoire.tex }
        \file_input:n { proflycee-tools-suites.tex }
        \file_input:n { proflycee-tools-cliparts.tex }
        \RequirePackage { ProfLycee-Pictosbac }
      }
      {
        % sinon, chargements modulaires
        \str_if_in:nnT {,#1,} {,analyse,}     { \file_input:n { proflycee-tools-analyse.tex } }
        \str_if_in:nnT {,#1,} {,analysis,}    { \file_input:n { proflycee-tools-analyse.tex } }
        \str_if_in:nnT {,#1,} {,graphiques,}  { \file_input:n { proflycee-tools-graphiques.tex } }
        \str_if_in:nnT {,#1,} {,listings,}    { \file_input:n { proflycee-tools-listings.tex } }
        \str_if_in:nnT {,#1,} {,trigo},       { \file_input:n { proflycee-tools-trigo.tex } }
        \str_if_in:nnT {,#1,} {,probas,}      { \file_input:n { proflycee-tools-probas.tex } }
        \str_if_in:nnT {,#1,} {,stats,}       { \file_input:n { proflycee-tools-stats.tex } }
        \str_if_in:nnT {,#1,} {,arithm,}      { \file_input:n { proflycee-tools-arithm.tex } }
        \str_if_in:nnT {,#1,} {,aleatoire,}   { \file_input:n { proflycee-tools-aleatoire.tex } }
        \str_if_in:nnT {,#1,} {,random,}      { \file_input:n { proflycee-tools-aleatoire.tex } }
        \str_if_in:nnT {,#1,} {,suites,}      { \file_input:n { proflycee-tools-suites.tex } }
        \str_if_in:nnT {,#1,} {,seq,}         { \file_input:n { proflycee-tools-suites.tex } }
        \str_if_in:nnT {,#1,} {,geom,}        { \file_input:n { proflycee-tools-geom.tex } }
        \str_if_in:nnT {,#1,} {,cliparts,}    { \file_input:n { proflycee-tools-cliparts.tex } }
        \str_if_in:nnT {,#1,} {,pictosbac,}   { \RequirePackage { ProfLycee-Pictosbac } }
      }

    % Ces modules sont toujours testés même si "most" est présent
    \str_if_in:nnT {,#1,} {,piton,}        { \file_input:n { proflycee-tools-piton.tex } }
    \str_if_in:nnT {,#1,} {,espace,}       { \file_input:n { proflycee-tools-espace.tex } }
    \str_if_in:nnT {,#1,} {,space,}        { \file_input:n { proflycee-tools-espace.tex } }
    \str_if_in:nnT {,#1,} {,ecritures,}    { \file_input:n { proflycee-tools-ecritures.tex } }
    \str_if_in:nnT {,#1,} {,mathwriting,}  { \file_input:n { proflycee-tools-ecritures.tex } }
    \str_if_in:nnT {,#1,} {,complexes,}    { \file_input:n { proflycee-tools-complexes.tex } }
    \str_if_in:nnT {,#1,} {,recreat,}      { \file_input:n { proflycee-tools-recreat.tex } }
    \str_if_in:nnT {,#1,} {,competences,}  { \file_input:n { proflycee-tools-competences.tex } }
    \str_if_in:nnT {,#1,} {,exams,}        { \file_input:n { proflycee-tools-exams.tex } }
    \str_if_in:nnT {,#1,} {,cas,}          { \RequirePackage { FenetreCas } }
    \str_if_in:nnT {,#1,} {,tikz2d,}       { \RequirePackage { tikz2d-fr } }
    \str_if_in:nnT {,#1,} {,tikz3d,}       { \RequirePackage { tikz3d-fr } }
  }

% Interface LaTeX2e : \useproflyclib{...}
\NewDocumentCommand \useproflyclib { m }
  { \proflycee_use_library:n {#1} }

% Macro pour activer une langue (et désactiver les autres)
\NewDocumentCommand\setproflyclng{ m }{%
  % Désactiver tous les booléens de langue
  \@pfllngfrfalse \@pfllngenfalse \@pfllngdefalse \@pfllngesfalse
  % Activer le booléen correspondant à la langue choisie
  \str_case_e:nnF {#1} {
    {fr} {\@pfllngfrtrue}  % Français
    {en} {\@pfllngentrue}  % Anglais
    {de} {\@pfllngdetrue}  % Allemand
    {es} {\@pfllngestrue}  % Espagnol
  }{
    % Cas par défaut (si la langue n'est pas reconnue)
    \PackageError{proflycee}{Langue~'#1'~non~reconnue.~Utilisez~fr,~en,~de~ou~es.}{}
  }%
  \if@pfllngfr
    \def\labelcodepython{Code~Python}
    \def\labelpseudocode{Pseudo-Code}
    \def\labelconsolepythondebut{Début~de~la~console~Python}
    \def\labelconsolepythonfin{Fin~de~la~console~Python}
    \def\labelsepdec{,}
    \def\labelavec{avec}
  \fi
  \if@pfllngen
    \def\labelcodepython{Python~code}
    \def\labelpseudocode{Pseudocode}
    \def\labelconsolepythondebut{Start~of~Python~console}
    \def\labelconsolepythonfin{End~of~Python~console}
    \def\labelsepdec{.}
    \def\labelavec{with}
  \fi
  \if@pfllngde
    \def\labelcodepython{Python-Code}
    \def\labelpseudocode{Pseudocódigo}
    \def\labelconsolepythondebut{Beginn~der~Python-Konsole}
    \def\labelconsolepythonfin{Ende~der~Python-Konsole}
    \def\labelsepdec{,}
    \def\labelavec{mit}
  \fi
  \if@pfllnges
    \def\labelcodepython{Código~Python}
    \def\labelpseudocode{Pseudocode}
    \def\labelconsolepythondebut{Inicio~de~la~consola~de~Python}
    \def\labelconsolepythonfin{Fin~de~la~consola~de~Python}
    \def\labelsepdec{,}
    \def\labelavec{con}
  \fi
}
\ExplSyntaxOff

\endinput