From ad142b19e22601544b06b4cc495bc80f62bc1a17 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 19 May 2024 20:35:48 +0000 Subject: customenvs (19may24) git-svn-id: svn://tug.org/texlive/trunk@71303 c570f23f-e606-0410-a88d-b1316a301751 --- .../doc/latex/customenvs/customenvs-doc-en.pdf | Bin 182916 -> 183174 bytes .../doc/latex/customenvs/customenvs-doc-en.tex | 6 +- .../doc/latex/customenvs/customenvs-doc-fr.pdf | Bin 1399073 -> 1446315 bytes .../doc/latex/customenvs/customenvs-doc-fr.tex | 185 +++++++++++++- .../texmf-dist/tex/latex/customenvs/customenvs.sty | 267 +++++++++++++++++++-- 5 files changed, 429 insertions(+), 29 deletions(-) diff --git a/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.pdf b/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.pdf index f1bf30aacca..34320ab7584 100644 Binary files a/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.pdf and b/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.pdf differ diff --git a/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.tex b/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.tex index b8352c628d3..7335cdbb96d 100644 --- a/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.tex +++ b/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.tex @@ -34,8 +34,8 @@ \usepackage[margin=1.5cm]{geometry} \setlength{\parindent}{0pt} -\def\TPversion{0.1.4} -\def\TPdate{04/04/2024} +\def\TPversion{0.1.5} +\def\TPdate{17/05/2024} \usepackage{tcolorbox} \sethlcolor{lightgray!25} \NewDocumentCommand\MontreCode{ m }{% @@ -111,6 +111,8 @@ \section{History} +\verb|v0.1.5|~:~~~~New macros for boxes with \textsf{tcolorbox} (see \texttt{[fr]} documentation) + \verb|v0.1.4|~:~~~~Create a SMS conversation \verb|v0.1.3|~:~~~~Environment for exercise(s) (in french doc) diff --git a/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.pdf b/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.pdf index 87d7507f613..9007eb82b04 100644 Binary files a/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.pdf and b/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.pdf differ diff --git a/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.tex b/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.tex index 9cdaeadf73d..f76efcea01e 100644 --- a/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.tex +++ b/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.tex @@ -39,8 +39,8 @@ \usepackage[margin=1.5cm]{geometry} \setlength{\parindent}{0pt} -\def\TPversion{0.1.4} -\def\TPdate{4 avril 2024} +\def\TPversion{0.1.5} +\def\TPdate{17 mai 2024} \usepackage{tcolorbox} \tcbuselibrary{listingsutf8} \newtcblisting{DemoCode}[1]{% @@ -66,10 +66,10 @@ keywordstyle={\color{violet}},% classoffset=2,% alsoletter={-},% - morekeywords={\ReponsesQCM,MultiCols,\CreerListeItems,\ListeChoixItems,\TableauCompetences,\CrayonDeCompetences,\StyleEnvtExo,\StyleEnvtExoDefaut,\TitreExo,\ipsum,EnvSMS,\SMSrec,\SMSenv},% + morekeywords={\ReponsesQCM,MultiCols,\CreerListeItems,\ListeChoixItems,\TableauCompetences,\CrayonDeCompetences,\StyleEnvtExo,\StyleEnvtExoDefaut,\TitreExo,\ipsum,EnvSMS,\SMSrec,\SMSenv,BoiteSimple,\SujetTitreExo,\CircledNumber,\AffVignette,\BoiteArrondie},% keywordstyle={\color{green!50!black}},% classoffset=3,% - morekeywords={Largeur,Filets,EspacesCL,NbCols,Labels,PoliceLabels,EspaceLabels,Swap,Type,CoeffEspVert,EpTrait,Alea,LargeurNivs,Niveaux,NoticeNiveaux,Titre,PolTitre,PolNotice,PolComp,LigneSep,CouleurNotice,CouleurNiveaux,CouleurFond,Note,Notice,PoliceCateg,PoliceBloc,Couleurs,LargeurBloc,Echelle,NoirBlanc,Libelle,EpTrait,Police,Type,ComplementTitre,Titre,CodeDebut,Couleur,EchelleImage,Decoration,Trait,Avatar,AffAvatar,NoirBlanc,CouleurE,CouleurR,CouleurFond,Hauteur,Largeur,PoliceTxt,CouleurTitre},% + morekeywords={Largeur,Filets,EspacesCL,NbCols,Labels,PoliceLabels,EspaceLabels,Swap,Type,CoeffEspVert,EpTrait,Alea,LargeurNivs,Niveaux,NoticeNiveaux,Titre,PolTitre,PolNotice,PolComp,LigneSep,CouleurNotice,CouleurNiveaux,CouleurFond,Note,Notice,PoliceCateg,PoliceBloc,Couleurs,LargeurBloc,Echelle,NoirBlanc,Libelle,EpTrait,Police,Type,ComplementTitre,Titre,CodeDebut,Couleur,EchelleImage,Decoration,Trait,Avatar,AffAvatar,NoirBlanc,CouleurE,CouleurR,CouleurFond,Hauteur,Largeur,PoliceTxt,CouleurTitre,AlignH,bg,txt,bthick,bcol,raise,Type,EspH,Fond,Texte,Style},% keywordstyle={\color{orange}} },% #1 @@ -149,6 +149,10 @@ \section{Historique} +\verb|v0.1.5|~:~~~~Vignettes + Numéros encerclés + Création de boîtes 'simples' + +\verb|v0.1.4|~:~~~~Commande pour du texte dans une boîte arrondie, de hauteur 'figée' + 'Chat' SMS + \verb|v0.1.3|~:~~~~Environnement/commande pour des exercices, avec personnalisation(s) \verb|v0.1.2|~:~~~~Crayon de compétences @@ -1058,4 +1062,177 @@ Le code proposé utilise l'environnement, mais la commande simple est complètem \includegraphics{envtexo_exemples.pdf} \end{DemoCode} +\pagebreak + +\section{Boîtes divers} + +\subsection{Introduction} + +L'idée est de proposer (modestement) des commandes, basées sur \MontreCode{tcolorbox}, pour, avec un style prédéfini : + +\begin{itemize} + \item créer des boîtes de présentation ; + \item créer des titres de sujets d'examens, par exemple ; + \item créer des titres d'exercices, pour des sujets d'examens par exemple ; + \item créer des numéros encadrés ; + \item créer de vignettes. +\end{itemize} + +\subsection{Boîtes de présentation} + +\begin{DemoCode}{listing only} +\begin{BoiteSimple}[couleur]{titre} + ... +\end{BoiteSimple} +\end{DemoCode} + +\begin{DemoCode}{} +\begin{BoiteSimple}[red]{Propriété} +Si M est la matrice d'adjacence d'un graphe simple orienté de sommets $A_1$, $A_2$, \dots, $A_n$, le nombre de chemins de longueur $p$ d'un sommet $A_i$ à un sommet $A_j$ est le nombre situé ligne $i$ et colonne $j$ dans la matrice $M^p$. +\end{BoiteSimple} +\end{DemoCode} + +\begin{DemoCode}{} +\begin{BoiteSimple}[blue]{Propriété} +Si M est la matrice d'adjacence d'un graphe simple orienté de sommets $A_1$, $A_2$, \dots, $A_n$, le nombre de chemins de longueur $p$ d'un sommet $A_i$ à un sommet $A_j$ est le nombre situé ligne $i$ et colonne $j$ dans la matrice $M^p$. +\end{BoiteSimple} +\end{DemoCode} + +\subsection{Titres de sujets d'examens, titres d'exercices} + +\begin{DemoCode}{listing only} +\begin{TitreSujet}[Couleur=...,AlignH=...]{titre onglet} +... +\end{TitreSujet} +\end{DemoCode} + +\begin{DemoCode}{} +\begin{TitreSujet}[Couleur=red!50!black]{SUJET} +Métropole, SIO, 16 Mai 2024 +\end{TitreSujet} +\end{DemoCode} + +\begin{DemoCode}{} +\begin{TitreSujet}[Couleur=teal,AlignH=center]{CORRIGÉ} +Baccalauréat Centres étrangers Groupe 1\\ +14 mars 2023 +\end{TitreSujet} +\end{DemoCode} + +\begin{DemoCode}{listing only} +\SujetTitreExo[couleur]{titre} +\end{DemoCode} + +\begin{DemoCode}{} +\SujetTitreExo{Exercice 4 (5 points)} + +\SujetTitreExo[olive]{Exercice 1 [Matrices]\dotfill(5 points)} +\end{DemoCode} + +\subsection{Numéros encerclés} + +\begin{DemoCode}{listing only} +\CircledNumber[bg=...,txt=...,bthick=...,bcol=...,raise=true/false]% + {nombre}{noeud tikz} +\end{DemoCode} + +\begin{DemoCode}{} +En ligne \CircledNumber{1} avec texte après. +\end{DemoCode} + +\begin{DemoCode}{} +{\bfseries\sffamily\Huge En ligne (\CircledNumber[bthick=0.25mm,bcol=red,bg=cyan!25,txt=darkgray]{7}) avec texte après} +\end{DemoCode} + +\begin{DemoCode}{} +{\Large En ligne \CircledNumber[raise=false,bthick=0.5mm,bcol=cyan,bg=cyan!25,txt=orange]{4} avec texte après} +\end{DemoCode} + +\begin{DemoCode}{} +\begin{enumerate}[label={\CircledNumber[raise=false]{\arabic*}}] + \item A + \item B + \item C +\end{enumerate} +\end{DemoCode} + +\subsection{Vignettes} + +\begin{DemoCode}{listing only} +\AffVignette(*)[Type=...,Couleur=...,Police=...]{texte} +% la version étoilée active le \NoAutoSpacing +\end{DemoCode} + +\begin{DemoCode}{} +%vignette de base +\AffVignette{test} ou \AffVignette[Couleur=magenta]{test} +\end{DemoCode} + +\begin{DemoCode}{} +%vignette type algo +\AffVignette[Type=algo]{test} ou \AffVignette[Type=algo,Couleur=teal]{Renvoyer} +\end{DemoCode} + +\begin{DemoCode}{} +%vignette type python, classique +\AffVignette[Type=py]{test} ou \AffVignette[Type=py,Couleur=lime]{return} + +%vignette type python, avec piton (et lualatex) +%\AffVignette[Type=pypit]{from math import sqrt} + +%vignette type python, avec piton et pyluatex (et lualatex + shell-escape) +%\AffVignette[Type=pyl,Couleur=blue]{1+4/5} +\end{DemoCode} + +\begin{DemoCode}{} +%vignette type graphique +\AffVignette[Type=grph]{fonction} ou \AffVignette[Couleur=olive,Type=grph]{intersection} +\end{DemoCode} + +\begin{DemoCode}{} +%vignette type MPM +\AffVignette[Type=mpm]{marge} ou \AffVignette[Type=mpm,Couleur=orange]{chemin} +\end{DemoCode} + +\begin{DemoCode}{} +%vignette type xcas +\AffVignette[Type=xcas]{calcul formel} ou \AffVignette[Type=xcas,Couleur=brown]{calcul formel} +\end{DemoCode} + +\begin{DemoCode}{} +%vignette type shell +\AffVignette[Type=shell,Couleur=red!50!orange]{fenêtre cmd} +\end{DemoCode} + +\begin{DemoCode}{} +%vignette type LaTeX +\AffVignette[Type=tex]{code LaTeX} +\end{DemoCode} + +\begin{DemoCode}{} +%vignette type tableur +\AffVignette[Type=sheet,Couleur=green!50!black,Police=\footnotesize\sffamily] + {cellule A3} +\end{DemoCode} + +\begin{DemoCode}{} +%création d'une macro personnelle +\NewDocumentCommand\VignetteTableur{ m }{% + \AffVignette*[Type=sheet,Couleur=green!50!black,Police=\footnotesize\sffamily] + {#1} +} +On se place dans la plage \VignetteTableur{A3:B5} pour... + +\end{DemoCode} + +\subsection{Boîte arrondie} + +\begin{DemoCode}{listing only} +\BoiteArrondie[Fond=...,Texte=...,EspH=...,Style=...]{texte}[noeud tikz] +\end{DemoCode} + +\begin{DemoCode}{} +On lance le logiciel \BoiteArrondie[Fond=cyan!33,Texte=violet,EspH=2mm,Style=rect]{situé sur le bureau} en cliquant \BoiteArrondie[Fond=lightgray!25,Texte=darkgray]{droit}. +\end{DemoCode} + \end{document} \ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/customenvs/customenvs.sty b/Master/texmf-dist/tex/latex/customenvs/customenvs.sty index ee8f4427a27..797a4e65bca 100644 --- a/Master/texmf-dist/tex/latex/customenvs/customenvs.sty +++ b/Master/texmf-dist/tex/latex/customenvs/customenvs.sty @@ -3,9 +3,10 @@ % source pencil...: CC-BY-SA 4.0 https://tex.stackexchange.com/questions/504092/replicating-a-fancy-bordered-text-style-in-latex/504145#504145 \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{customenvs}[2024/04/04 0.1.4 Custom classic environments] +\ProvidesPackage{customenvs}[2024/05/17 0.1.5 Custom classic environments] %====HISTORIQUE +% v 0.1.6 Boxes for exam title + circled numbers + Vignettes + Small simple boxes creation % v 0.1.4 Commande (en/fr) pour du texte dans une boîte arrondie, de hauteur 'figée' + 'Chat' SMS % v 0.1.3 Environnement/Commande pour présentation d'un exercice % v 0.1.2 Crayon de compétences @@ -54,8 +55,9 @@ \RequirePackage{listofitems} \RequirePackage{calc} \RequirePackage{tikz} -\usetikzlibrary{decorations.pathmorphing,positioning,shapes.misc,calc} -\usepackage{tcolorbox} +\usetikzlibrary{decorations.pathmorphing,positioning,shapes.misc,calc,babel} +\RequirePackage{tcolorbox} +\RequirePackage{varwidth} \tcbuselibrary{skins} %%----COMMANDES FR @@ -922,7 +924,7 @@ \setKVdefault[BoiteArrondie]{% Fond=red,% Texte=white,% - EspH=0.25em,% + EspH=0.125em,% Style=rect } \NewDocumentCommand\BoiteArrondie{ O{} m O{char} }{% @@ -1346,25 +1348,23 @@ } %====ROUNDED BOX -\defKV[RoundedBox]{hmargin=\def\RoundedBoxDelta{#1},style=\def\RoundedBoxStyle{#1}} -\setKVdefault[RoundedBox]{% - bg=red,% - txt=white,% - hmargin=0.25em,% - style=rect -} - - - -\NewDocumentCommand\RoundedBox{ O{} m O{char} }{% - \restoreKV[RoundedBox]% - \setKV[RoundedBox]{#1}% - \settototalheight{\tmpheightbox}{\hbox{(EazertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN)#2}}%hauteur globale - \IfStrEqCase{\RoundedBoxStyle}{% - {rect}{\tikz[remember picture,baseline=(#3.base)]{\node[minimum height=\tmpheightbox,shape=rectangle,rounded corners=0.25em,fill={\useKV[RoundedBox]{bg}},inner sep=0.75pt,outer sep=0pt,text={\useKV[RoundedBox]{txt}}] (#3) {\vphantom{(qE)}\kern\RoundedBoxDelta#2\kern\RoundedBoxDelta};}}% - {circle}{\tikz[remember picture,baseline=(#3.base)]{\node[minimum height=\tmpheightbox,shape=circle,fill={\useKV[RoundedBox]{bg}},inner sep=0.75pt,outer sep=0pt,text={\useKV[RoundedBox]{txt}}] (#3) {\vphantom{(qE)}#2};}}% - }\relax -} +% \defKV[RoundedBox]{hmargin=\def\RoundedBoxDelta{#1},style=\def\RoundedBoxStyle{#1}} +% \setKVdefault[RoundedBox]{% + % bg=red,% + % txt=white,% + % hmargin=0.25em,% + % style=rect +% } + +% \NewDocumentCommand\RoundedBox{ O{} m O{char} }{% + % \restoreKV[RoundedBox]% + % \setKV[RoundedBox]{#1}% + % \settototalheight{\tmpheightbox}{\hbox{(EazertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN)#2}}%hauteur globale + % \IfStrEqCase{\RoundedBoxStyle}{% + % {rect}{\tikz[remember picture,baseline=(#3.base)]{\node[minimum height=\tmpheightbox,shape=rectangle,rounded corners=0.25em,fill={\useKV[RoundedBox]{bg}},inner sep=0.75pt,outer sep=0pt,text={\useKV[RoundedBox]{txt}}] (#3) {\vphantom{(qE)}\kern\RoundedBoxDelta#2\kern\RoundedBoxDelta};}}% + % {circle}{\tikz[remember picture,baseline=(#3.base)]{\node[minimum height=\tmpheightbox,shape=circle,fill={\useKV[RoundedBox]{bg}},inner sep=0.75pt,outer sep=0pt,text={\useKV[RoundedBox]{txt}}] (#3) {\vphantom{(qE)}#2};}}% + % }\relax +% } %====Chat SMS %===Keys [EN] @@ -1489,5 +1489,226 @@ title={#2\IfBooleanTF{#1}{}{$\cdot$\scalebox{0.6}[0.6]{\faCheckCircle[regular]\!\faCheckCircle[regular]}~}},left=1mm,right=1mm,boxsep=0mm]{#3}% } +%====SMALL BOXES CREATION +\tikzset{simpleboxrulearrow/.style={line width=0.8pt,|->,>=latex}} + +% \NewTColorBox{SimpleBox}{ O{blue} D<>{} m }{ + % enhanced,nobeforeafter,blanker,size=small,bottom=1mm,before=\par\noindent,%top=0mm,left=1mm,right=1mm, + % title={#3},fonttitle=\sffamily\bfseries\color{#1},lefttitle=1em, + % finish={\draw[#1,simpleboxrulearrow] ([xshift=1em]title.west) --++ (-1em,0) |- (frame.south east) -- ($(frame.south east)!0.5!(frame.north east)$) ;},% + % #2 +% } + +\NewTColorBox{BoiteSimple}{ O{blue} D<>{} m }{ + enhanced,nobeforeafter,blanker,size=small,bottom=1mm,before=\par\noindent,%top=0mm,left=1mm,right=1mm, + title={#3},fonttitle=\sffamily\bfseries\color{#1},lefttitle=1em, + finish={\draw[#1,simpleboxrulearrow] ([xshift=1em]title.west) --++ (-1em,0) |- (frame.south east) -- ($(frame.south east)!0.5!(frame.north east)$) ;},% + #2 +} + +% \NewDocumentCommand\GenSimpleBox{ O{blue} m }{% + % 1 = couleur + % 2 = nom + % \NewTColorBox{#2}{ O{} m }{ + % enhanced,nobeforeafter,blanker,size=small,bottom=1mm,before=\par\noindent,%top=0mm,left=1mm,right=1mm, + % title={##2},fonttitle=\sffamily\bfseries\color{#1},lefttitle=1em, + % finish={\draw[#1,simpleboxrulearrow] ([xshift=1em]title.west) --++ (-1em,0) |- (frame.south east) -- ($(frame.south east)!0.5!(frame.north east)$) ;},% + % ##1 + % } +% } + +\NewDocumentCommand\GenereBoiteSimple{ O{blue} m }{% + %1 = couleur + %2 = nom + \NewTColorBox{#2}{ O{} m }{ + enhanced,nobeforeafter,blanker,size=small,bottom=1mm,before=\par\noindent,%top=0mm,left=1mm,right=1mm, + title={##2},fonttitle=\sffamily\bfseries\color{#1},lefttitle=1em, + finish={\draw[#1,simpleboxrulearrow] ([xshift=1em]title.west) --++ (-1em,0) |- (frame.south east) -- ($(frame.south east)!0.5!(frame.north east)$) ;},% + ##1 + } +} + +%====CIRCLEDNUMBERSSIMPLE +\defKV[CircledBoxNumber]{bg=\def\tmpbordernbcircbox{#1}} +\setKVdefault[CircledBoxNumber]{bg={},txt=black,bthick=0.5pt,bcol=black,raise=true} + +\newlength{\tmpheightnbcircbox} +\newlength{\tmpdepthnbcircbox} +\NewDocumentCommand\CircledNumber{ O{} m O{circnb} }{% + \restoreKV[CircledBoxNumber]% + \setKV[CircledBoxNumber]{#1}% + \settototalheight{\tmpheightnbcircbox}{(1234567890)}%hauteur globale + \settodepth{\tmpdepthnbcircbox}{(1234567890)}% + \ifboolKV[CircledBoxNumber]{raise}% + {% + \IfEq{\tmpbordernbcircbox}{}% + {% + {\tikz[baseline={([yshift=\tmpdepthnbcircbox]current bounding box.south)}]\node[outer sep=0pt,inner sep=0.5pt,minimum height={\tmpheightnbcircbox-\useKV[CircledBoxNumber]{bthick}},draw,{\useKV[CircledBoxNumber]{bcol}},line width={\useKV[CircledBoxNumber]{bthick}},circle,text={\useKV[CircledBoxNumber]{txt}}] (#3) {\ifnum#2<10 #2\else\scalebox{0.5}[1]{#2}\fi} ;}% + }% + {% + {\tikz[baseline={([yshift=\tmpdepthnbcircbox]current bounding box.south)}]\node[outer sep=0pt,inner sep=0.5pt,minimum height={\tmpheightnbcircbox-\useKV[CircledBoxNumber]{bthick}},draw,{\useKV[CircledBoxNumber]{bcol}},line width={\useKV[CircledBoxNumber]{bthick}},circle,fill={\useKV[CircledBoxNumber]{bg}},text={\useKV[CircledBoxNumber]{txt}}] (#3) {\ifnum#2<10 #2\else\scalebox{0.5}[1]{#2}\fi} ;}% + }% + }% + {% + \IfEq{\tmpbordernbcircbox}{}% + {% + {\tikz[baseline=(#3.base)] \node[outer sep=0pt,inner sep=0.5pt,minimum height={\tmpheightnbcircbox-\useKV[CircledBoxNumber]{bthick}},draw,{\useKV[CircledBoxNumber]{bcol}},line width={\useKV[CircledBoxNumber]{bthick}},circle,text={\useKV[CircledBoxNumber]{txt}}] (#3) {\ifnum#2<10 #2\else\scalebox{0.5}[1]{#2}\fi} ;}% + }% + {% + {\tikz[baseline=(#3.base)] \node[outer sep=0pt,inner sep=0.5pt,minimum height={\tmpheightnbcircbox-\useKV[CircledBoxNumber]{bthick}},draw,{\useKV[CircledBoxNumber]{bcol}},line width={\useKV[CircledBoxNumber]{bthick}},circle,fill={\useKV[CircledBoxNumber]{bg}},text={\useKV[CircledBoxNumber]{txt}}] (#3) {\ifnum#2<10 #2\else\scalebox{0.5}[1]{#2}\fi} ;}% + }% + }% +} + +%====EXAM BOX TITLE(s) +\NewDocumentCommand\LetPhantomBox{}{% + \vphantom{(ÉAZERTYUIOPQSDFGHJKLMWXCVBN,éàço)}% +} + +\tcbset{StyleTitreSujet/.style={% + enhanced,size=small, + colback=white!5,boxrule=1.25pt, + attach boxed title to top left={xshift=0.5cm,yshift=1mm-\tcboxedtitleheight}, + varwidth boxed title*=-3cm, + boxed title style={frame code={ + \path[fill=tcbcolframe!50!black] + ([yshift=-1mm,xshift=-1mm]frame.north west) + arc[start angle=0,end angle=180,radius=1mm] + ([yshift=-1mm,xshift=1mm]frame.north east) + arc[start angle=180,end angle=0,radius=1mm]; + \path[fill=tcbcolframe] ([xshift=-2mm]frame.north west) -- ([xshift=2mm]frame.north east) [rounded corners=1mm]-- ([xshift=1mm,yshift=-1mm]frame.north east) -- (frame.south east) -- (frame.south west) -- ([xshift=-1mm,yshift=-1mm]frame.north west) [sharp corners]-- cycle; + },interior engine=empty,size=fbox, + }, + fonttitle=\bfseries\sffamily, + fontupper=\huge\bfseries\sffamily, + } +} + +\defKV[tcbtitresujet]{% + AlignH=\def\tcbtitresujethalign{#1} +} + +\setKVdefault[tcbtitresujet]{% + Couleur=black, + AlignH=center +} + +\NewDocumentEnvironment{TitreSujet}{ O{} D<>{} m }% +{% + \restoreKV[tcbtitresujet]% + \setKV[tcbtitresujet]{#1}% + \IfStrEqCase{\tcbtitresujethalign}{% + {right}{\tcbset{StyleTitreSujetAlign/.style={halign=flush right}}}% + {left}{\tcbset{StyleTitreSujetAlign/.style={halign=flush left}}}% + }[\tcbset{StyleTitreSujetAlign/.style={halign=flush center}}]% + \tcolorbox[colupper={\useKV[tcbtitresujet]{Couleur}},colframe={\useKV[tcbtitresujet]{Couleur}},StyleTitreSujet,StyleTitreSujetAlign,title={\vphantom{QJ}#3},before upper=\LetPhantomBox,after upper=\LetPhantomBox,#2]% +}% +{% + \endtcolorbox% +} + +\tcbset{StyleTitreSujetSousEpreuve/.style={% + center,after skip=1pt,size=small,boxsep=3pt,boxrule=1pt,colback=white,left=2pt,right=2pt,% + sharp corners,rounded corners=downhill,arc=8pt, + fontupper={\sffamily\bfseries\large} + } +} + +\NewDocumentCommand\SousTitreSujetEpreuve{ O{black} m }{% + \tcbset{StyleTitreSujetSousEpreuveCouleur/.style={colframe=#1,colupper=#1}} + \IfStrEqCase{#2}{% + {}{\tcbox[StyleTitreSujetSousEpreuve,StyleTitreSujetSousEpreuveCouleur]{#2}}% + {U21}{\tcbox[StyleTitreSujetSousEpreuve,StyleTitreSujetSousEpreuveCouleur,before upper=\faSortNumericDown\:\:,after upper=\:\:\faProjectDiagram]{Épreuve U2 - Mathématiques pour l'Informatique}}% + {U2}{\tcbox[StyleTitreSujetSousEpreuve,StyleTitreSujetSousEpreuveCouleur,before upper=\faSortNumericDown\:\:,after upper=\:\:\faProjectDiagram]{Épreuve U2 - Mathématiques pour l'Informatique}}% + {U2CG}{\tcbox[StyleTitreSujetSousEpreuve,StyleTitreSujetSousEpreuveCouleur,before upper=\faSortNumericDown\:\:,after upper=\:\:\faProjectDiagram]{Épreuve U2 - Mathématiques appliquées}}% + {UF2}{\tcbox[StyleTitreSujetSousEpreuve,StyleTitreSujetSousEpreuveCouleur,before upper=\faDice\:\:,after upper=\:\:\faChartLine]{Épreuve UF2 - Mathématiques Approfondies}}% + {U41OL}{\tcbox[StyleTitreSujetSousEpreuve,StyleTitreSujetSousEpreuveCouleur,before upper=\faDice\:\:,after upper=\:\:\faBezierCurve]{Épreuve U41 - Mathématiques}} + }% +} + +\NewDocumentCommand\SujetTitreExo{ O{black} m }{% + \tcolorbox[enhanced,width=\linewidth,size=small,colback=white,colframe=#1,boxrule=0.75pt,fontupper=\color{#1}\Large\sffamily\bfseries,sharp corners,rounded corners=south,arc=4pt,before upper=\LetPhantomBox] + #2 + \endtcolorbox% +} + +%====vignettes +\NewDocumentCommand\LetPhantomVignette{}{% + \vphantom{(AZERTYUIOPQSDFGHJKLMWXCVBN,éàço)}% +} + +\tcbset{cevignettes/.style={% + nobeforeafter,box align=base,boxsep=0pt,enhanced,sharp corners=all,rounded corners=southeast,arc=2pt,boxrule=0.65pt,left=1.75pt,right=1.25pt,top=1.25pt,bottom=0.5pt,colback=white,before upper=\LetPhantomVignette + } +} + +\tcbset{cevignettepy/.style={% + cevignettes,left=6pt,coltitle=tcbcolframe, + underlay={\begin{tcbclipinterior}\fill[fill=tcbcolframe!33]($(interior.south west)$) rectangle node[rotate=90,font=\tiny\sffamily,tcbcolframe!75!black]{\scalebox{0.55}[0.75]{\textbf{PY}}} ($(interior.north west)+(5pt,0pt)$);\end{tcbclipinterior}} + } +} + +\tcbset{cevignettealgo/.style={% + cevignettes,left=6pt,coltitle=tcbcolframe, + underlay={\begin{tcbclipinterior}\fill[fill=tcbcolframe!33]($(interior.south west)$) rectangle node[rotate=90,font=\tiny\sffamily,tcbcolframe!75!black]{\scalebox{0.55}[0.75]{\textbf{ALGO}}} ($(interior.north west)+(5pt,0pt)$);\end{tcbclipinterior}} + } +} + +\tcbset{cevignettetableur/.style={% + cevignettes,left=6pt,coltitle=tcbcolframe, + underlay={\begin{tcbclipinterior}\fill[fill=tcbcolframe!33]($(interior.south west)$) rectangle node[rotate=90,font=\tiny\sffamily,tcbcolframe!75!black]{\scalebox{0.5}[0.75]{\textbf{EXCEL}}} ($(interior.north west)+(5pt,0pt)$);\end{tcbclipinterior}} + } +} + +\tcbset{cevignetteMPM/.style={% + cevignettes,left=6pt,coltitle=white, + underlay={\begin{tcbclipinterior}\fill[fill=tcbcolframe!33]($(interior.south west)$) rectangle node[rotate=90,font=\tiny\sffamily,tcbcolframe!75!black]{\scalebox{0.55}[0.75]{\textbf{MPM}}} ($(interior.north west)+(5pt,0pt)$);\end{tcbclipinterior}} + } +} + +\tcbset{cevignettegraph/.style={% + cevignettes,left=6pt,coltitle=white, + underlay={\begin{tcbclipinterior}\fill[fill=tcbcolframe!33]($(interior.south west)$) rectangle node[rotate=90,font=\tiny\sffamily,tcbcolframe!75!black]{\scalebox{0.55}[0.75]{\textbf{GRPH}}} ($(interior.north west)+(5pt,0pt)$);\end{tcbclipinterior}} + } +} + +\tcbset{cevignetteshell/.style={% + cevignettes,left=6pt,coltitle=white, + underlay={\begin{tcbclipinterior}\fill[fill=tcbcolframe!33]($(interior.south west)$) rectangle node[rotate=90,font=\tiny\sffamily,tcbcolframe!75!black] {\scalebox{0.5}[0.75]{\textbf{SHELL}}} ($(interior.north west)+(5pt,0pt)$);\end{tcbclipinterior}} + } +} + +\tcbset{cevignettelatex/.style={% + cevignettes,left=6pt,coltitle=white, + underlay={\begin{tcbclipinterior}\fill[fill=tcbcolframe!33]($(interior.south west)$) rectangle node[rotate=90,font=\tiny\sffamily,tcbcolframe!75!black]{\scalebox{0.55}[0.75]{\textbf{\LaTeX}}} ($(interior.north west)+(5pt,0pt)$);\end{tcbclipinterior}} + } +} + +\tcbset{cevignettexcas/.style={% + cevignettes,left=6pt,coltitle=white,colback=white,% + underlay={\begin{tcbclipinterior}\fill[fill=tcbcolframe!33]($(interior.south west)$) rectangle node[rotate=90,font=\tiny\sffamily,tcbcolframe!75!black]{\scalebox{0.55}[0.75]{\textbf{XCAS}}} ($(interior.north west)+(5pt,0pt)$);\end{tcbclipinterior}} + } +} + +\defKV[cevignette]{Type=\def\cevignettetype{#1},Couleur=\def\cevignettecolor{#1},Police=\def\cevignettefont{#1}} +\setKVdefault[cevignette]{Type={},Couleur={darkgray},Police=\footnotesize} + +\NewDocumentCommand\AffVignette{ s O{} m }{% + \restoreKV[cevignette]% + \setKV[cevignette]{#2}% + \IfStrEqCase{\cevignettetype}{% + {}{\tcbox[colframe=\cevignettecolor,fontupper={\cevignettefont},cevignettes]{\IfBooleanTF{#1}{\NoAutoSpacing}{}#3}}% + {algo}{\tcbox[colframe=\cevignettecolor,fontupper={\cevignettefont\ttfamily},cevignettealgo]{\IfBooleanTF{#1}{\NoAutoSpacing}{}#3}}% + {py}{\tcbox[colframe=\cevignettecolor,fontupper={\cevignettefont\ttfamily},cevignettepy]{\IfBooleanTF{#1}{\NoAutoSpacing}{}#3}}% + {pypit}{\tcbox[colframe=\cevignettecolor,fontupper={\cevignettefont\ttfamily},cevignettepy]{\piton{#3}}}% + {pyl}{\tcbox[colframe=\cevignettecolor,fontupper={\cevignettefont\ttfamily},cevignettepy]{\piton{\py{#3}}}}% + {mpm}{\tcbox[colframe=\cevignettecolor,fontupper={\cevignettefont},cevignetteMPM]{\IfBooleanTF{#1}{\NoAutoSpacing}{}#3}}% + {grph}{\tcbox[colframe=\cevignettecolor,fontupper={\cevignettefont},cevignettegraph]{\IfBooleanTF{#1}{\NoAutoSpacing}{}#3}}% + {xcas}{\tcbox[colframe=\cevignettecolor,fontupper={\cevignettefont},cevignettexcas]{\IfBooleanTF{#1}{\NoAutoSpacing}{}#3}}% + {shell}{\tcbox[colframe=\cevignettecolor,fontupper={\cevignettefont\ttfamily},cevignetteshell]{\IfBooleanTF{#1}{\NoAutoSpacing}{}#3}}% + {tex}{\tcbox[colframe=\cevignettecolor,fontupper={\cevignettefont\ttfamily},cevignettelatex]{\IfBooleanTF{#1}{\NoAutoSpacing}{}#3}}% + {sheet}{\tcbox[colframe=\cevignettecolor,fontupper={\cevignettefont},cevignettetableur]{\IfBooleanTF{#1}{\NoAutoSpacing}{}#3}}% + }\relax% +} \endinput \ No newline at end of file -- cgit v1.2.3