diff options
Diffstat (limited to 'macros/latex/contrib/customenvs')
-rw-r--r-- | macros/latex/contrib/customenvs/doc/customenvs-doc-en.pdf | bin | 182916 -> 183663 bytes | |||
-rw-r--r-- | macros/latex/contrib/customenvs/doc/customenvs-doc-en.tex | 10 | ||||
-rw-r--r-- | macros/latex/contrib/customenvs/doc/customenvs-doc-fr.pdf | bin | 1399073 -> 1466206 bytes | |||
-rw-r--r-- | macros/latex/contrib/customenvs/doc/customenvs-doc-fr.tex | 291 | ||||
-rw-r--r-- | macros/latex/contrib/customenvs/doc/envtexo_exemples.tex | 158 | ||||
-rw-r--r-- | macros/latex/contrib/customenvs/tex/customenvs.sty | 486 |
6 files changed, 836 insertions, 109 deletions
diff --git a/macros/latex/contrib/customenvs/doc/customenvs-doc-en.pdf b/macros/latex/contrib/customenvs/doc/customenvs-doc-en.pdf Binary files differindex f1bf30aacc..d0d64760c9 100644 --- a/macros/latex/contrib/customenvs/doc/customenvs-doc-en.pdf +++ b/macros/latex/contrib/customenvs/doc/customenvs-doc-en.pdf diff --git a/macros/latex/contrib/customenvs/doc/customenvs-doc-en.tex b/macros/latex/contrib/customenvs/doc/customenvs-doc-en.tex index b8352c628d..3e4ce0aa72 100644 --- a/macros/latex/contrib/customenvs/doc/customenvs-doc-en.tex +++ b/macros/latex/contrib/customenvs/doc/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.7} +\def\TPdate{03/06/2024} \usepackage{tcolorbox} \sethlcolor{lightgray!25} \NewDocumentCommand\MontreCode{ m }{% @@ -111,6 +111,12 @@ \section{History} +\verb|v0.1.7|~:~~~~Small patch for \textsf{Vignette} macro (see \texttt{[fr]} documentation) + +\verb|v0.1.6|~:~~~~Small patchs for \textsf{displayskip} + \textsf{pas-tableur} (see \texttt{[fr]} documentation) + +\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/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.pdf b/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.pdf Binary files differindex 87d7507f61..b128076999 100644 --- a/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.pdf +++ b/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.pdf diff --git a/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.tex b/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.tex index 9cdaeadf73..2f74296c5d 100644 --- a/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.tex +++ b/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.tex @@ -13,7 +13,7 @@ \RequirePackage[scaled=0.925]{cabin} % sf %\usepackage{DejaVuSerif} %\usepackage[scale=1.1]{inconsolata} -\usepackage{customenvs} +\usepackage[pastableur]{customenvs} \usepackage{tabularx} \usepackage{soul} %\usepackage{codehigh} @@ -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.7} +\def\TPdate{03 juin 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,\ChangerDisplaySkip,\celcouleur,\celfusion,\lignetxt,\colonnetxt,\celnumbreak,\celtxt},% 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,Dense,Avant,AvantS,Apres,ApresS,Global,align,width},% keywordstyle={\color{orange}} },% #1 @@ -149,6 +149,16 @@ \section{Historique} +\verb|v0.1.7|~:~~~~Possibilité de créer des vignettes \textsf{perso} + +\verb|v0.1.6|~:~~~~Patch \textsf{displayskip} + Patches \textsf{pas-tableur} + +\verb|v0.1.5|~:~~~~La librairie \texttt{babel} de \TikZ\ n'est plus chargée + +\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 @@ -199,7 +209,8 @@ Les packages chargés sont : \item \MontreCode{multicol} ; \item \MontreCode{tabularray} ; \item \MontreCode{xcolor} ; - \item \MontreCode{fontawesome5}. + \item \MontreCode{fontawesome5} ; + \item \MontreCode{tikz} avec les librairies \MontreCode{decorations.pathmorphing,positioning,shapes.misc,calc}. \end{itemize} À noter que, pour des raisons de compatibilité (ou d'incompatibilité), les packages \MontreCode{enumitem}/\MontreCode{multicol}/\MontreCode{tabularray}/\MontreCode{xcolor}/\MontreCode{fontawesome5} peuvent ne pas être chargés par \MontreCode{customenvs} (auxquels cas l'utilisateur devra les avoir chargés pour faire fonctionner certains environnements) via les options : @@ -1058,4 +1069,272 @@ 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]<options tcbox>{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]<width=0.75\linewidth,flush right>{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=...]<options tcbox>{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}{} +%vignette type tableur +\AffVignette[Type=perso/CRYPT,Couleur=blue!50!teal,Echelle=0.5] + {vignette personnalisée} +\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} + +\pagebreak + +\section{Patchs divers} + +\subsection{Gérer l'espacement vertical du mode hors-ligne} + +L'idée est de proposer une commande, à insérer dans le préambule, pour \textit{patcher} l'espacement vertical proposé par les environnements mathématiques hors-ligne. + +\begin{DemoCode}{listing only} +... +\ChangerDisplaySkip[clés] +... +\begin{document} +\end{DemoCode} + +Les \MontreCode{clés} disponibles, à donner entre \MontreCode{[...]}, sont : + +\begin{itemize} + \item \MontreCode{Avant=...} : modification de l'espacement avant ; + \item \MontreCode{AvantS=...} : modification de l'espacement avant (version \textit{short}) ; + \item \MontreCode{Apres=...} : modification de l'espacement après ; + \item \MontreCode{ApresS=...} : modification de l'espacement après (version \textit{short}) ; + \item \MontreCode{Global=...} : modification globale de \textbf{tous} les espacements ; + \item \MontreCode{Dense} : booléen pour modification globale en \MontreCode{0.33\textbackslash baselineskip}. +\end{itemize} + +\subsection{Quelques ajouts au package pas-tableur} + +L'idée est de proposer quelques commandes complémentaires pour le package \textsf{pas-tableur}, de Stéphane Pasquet (\url{https://ctan.org/pkg/pas-tableur}), en respectant autant que faire se peut la syntaxe du package (voir la documentation pour de plus amples informations). + +\smallskip + +Le package \textsf{pas-tableur} n'est pas chargé par défaut, mais il peut l'être grâce à l'option \MontreCode{[pastableur]}. + +\smallskip + +Les \textit{ajouts} disponibles sont : + +\begin{itemize} + \item colorer/griser une case, via \MontreCode{\textbackslash celcouleur} ; + \item fusionner des celules, via \MontreCode{\textbackslash celfusion} ; + \item \textit{casser la numérotation} avec des pointillés, via \MontreCode{\textbackslash celnumbreak} ; + \item remplir (partiellement ou non) une ligne, via \MontreCode{\textbackslash lignetxt} ; + \item remplir (partiellement ou non) une colonne, via \MontreCode{\textbackslash colonnetxt}. +\end{itemize} + +\begin{DemoCode}{listing only} +%chargement du package +\usepackage[pastableur]{customenvs} + +%griser une cellule +\celcouleur[couleur]{col-lig} + +%fusionner des cellules +\celfusion[options pas-tableur]{col-lig}{col-lig}{label} + +%pointillés dans la numérotation +\celnumbreak{num ligne pointillés}{début numéro suite}{fin numéro suite} + +%remplir ligne +\lignetxt(*)[options pas-tableur]{num ligne}<col début>{liste des cellules} + +%remplir colonne +\colonnetxt(*)[options pas-tableur]{num colonne}<lgn début>{liste des cellules} +\end{DemoCode} + +\pagebreak + +L'exemple suivant illustre les différentes commandes proposées dans ce package. + +\begin{DemoCode}{} +\begin{tikzpicture}{} + \tableur*[10]{A/2.5cm,B/2.5cm,C/2.5cm,D/2.5cm,E/2.5cm,F/2.5cm} + %ligne n°1 + \celtxt*[align=center]{A}{1}{$n$} + \celfusion[align=center]{B-1}{C-1}{$M_n$} + \celfusion[align=center]{D-1}{E-1}{$S_n$} + \celtxt*[align=center]{F}{1}{$d_n$} + % %Ligne2/3/4 + \celcouleur{A-2} + \lignetxt*[align=center]{2}<2>{$x_n$,$y_n$,5,$n$,$n$} %à partir de la colonne n°2 + \lignetxt*[align=center]{3}{0,0,0,5,0,5} + \lignetxt*[align=center]{4}{1,1,0,5,1,4.12310563}% + \celnumbreak{8}{27}{28} + %colonneA + \colonnetxt*[align=center]{A}<5>{2,3,4,\dots,24,25} %à partir de la ligne n°5 +\end{tikzpicture} +\end{DemoCode} + \end{document}
\ No newline at end of file diff --git a/macros/latex/contrib/customenvs/doc/envtexo_exemples.tex b/macros/latex/contrib/customenvs/doc/envtexo_exemples.tex index e782579dec..2daa195179 100644 --- a/macros/latex/contrib/customenvs/doc/envtexo_exemples.tex +++ b/macros/latex/contrib/customenvs/doc/envtexo_exemples.tex @@ -1,80 +1,80 @@ -% !TeX TXS-program:compile = txs:///arara
-% arara: pdflatex: {shell: no, synctex: no, interaction: batchmode}
-% arara: pdflatex: {shell: no, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
-
-\documentclass[a5paper,11pt]{article}
-\usepackage[margin=1cm]{geometry}
-\usepackage{customenvs}
-%facultatif, pour les décorations
-\usepackage{graphicx}
-\usepackage{dashrulex}
-\usepackage{coloredbelts}
-\usepackage{pictochrono}
-%mise en page
-\usepackage{ipsum}
-\setlength{\parindent}{0pt}
-
-\begin{document}
-
-\begin{EnvtExo}%exo1
- \ipsum<Lang=FR,Type=sent>
-\end{EnvtExo}
-
-\begin{EnvtExo}[Trait=pointilles]%exo2
- \ipsum<Lang=FR,Type=sent>
-\end{EnvtExo}
-
-\begin{EnvtExo}[Trait=dashilles]%exo3
- \ipsum<Lang=FR,Type=sent>
-\end{EnvtExo}
-
-\begin{EnvtExo}[Decoration=Icone/\faPython]%exo4
- \ipsum<Lang=FR,Type=sent>
-\end{EnvtExo}
-
-\begin{EnvtExo}[Decoration=Ceinture/rouge]%exo5
- \ipsum<Lang=FR,Type=sent>
-\end{EnvtExo}
-
-\begin{EnvtExo}[Decoration=Chrono/20]%exo6
- \ipsum<Lang=FR,Type=sent>
-\end{EnvtExo}
-
-\begin{EnvtExo}[Decoration=Image/goku_ssj4]%exo7
- \ipsum<Lang=FR,Type=sent>
-\end{EnvtExo}
-
-\begin{EnvtExo}[Decoration=Image/sseiya_shura]%exo8
- \ipsum<Lang=FR,Type=sent>
-\end{EnvtExo}
-
-\begin{EnvtExo}[Decoration=Points/7]%exo9
- \ipsum<Lang=FR,Type=sent>
-\end{EnvtExo}
-
-\begin{EnvtExo}[Type=Perso/{Titre perso }]%exo10
- \ipsum<Lang=FR,Type=sent>
-\end{EnvtExo}
-
-\StyleEnvtExo[Couleur=red,Police=\bfseries\ttfamily,EpTrait=2pt,Libelle={Exercice n°}]
-
-\begin{EnvtExo}[Decoration=Icone/\faAddressBook]%exo11
- \ipsum<Lang=FR,Type=sent>
-\end{EnvtExo}
-
-\begin{EnvtExo}[Type=Perso/{Titre perso },Decoration=Chrono/25,Couleur=red,Trait=dashilles]%exo12
- \ipsum<Lang=FR,Type=sent>
-\end{EnvtExo}
-
-\StyleEnvtExoDefaut
-
-\begin{EnvtExo}%
- [Type=Perso/{Titre perso~},Decoration=Image/goku_ssj4,Trait=non,Compteur=false]%exo13
- \ipsum<Lang=FR,Type=sent>
-\end{EnvtExo}
-
-\TitreExo[Type=Perso/{Annexe Exercice 3},Compteur=false,Decoration=Image/sseiya_aiolos]%exo14
-
-\ipsum<Lang=FR,Type=sent>
-
+% !TeX TXS-program:compile = txs:///arara +% arara: pdflatex: {shell: no, synctex: no, interaction: batchmode} +% arara: pdflatex: {shell: no, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)') + +\documentclass[a5paper,11pt]{article} +\usepackage[margin=1cm]{geometry} +\usepackage{customenvs} +%facultatif, pour les décorations +\usepackage{graphicx} +\usepackage{dashrulex} +\usepackage{coloredbelts} +\usepackage{pictochrono} +%mise en page +\usepackage{ipsum} +\setlength{\parindent}{0pt} + +\begin{document} + +\begin{EnvtExo}%exo1 + \ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Trait=pointilles]%exo2 + \ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Trait=dashilles]%exo3 + \ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Decoration=Icone/\faPython]%exo4 + \ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Decoration=Ceinture/rouge]%exo5 + \ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Decoration=Chrono/20]%exo6 + \ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Decoration=Image/goku_ssj4]%exo7 + \ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Decoration=Image/sseiya_shura]%exo8 + \ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Decoration=Points/7]%exo9 + \ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Type=Perso/{Titre perso }]%exo10 + \ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\StyleEnvtExo[Couleur=red,Police=\bfseries\ttfamily,EpTrait=2pt,Libelle={Exercice n°}] + +\begin{EnvtExo}[Decoration=Icone/\faAddressBook]%exo11 + \ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Type=Perso/{Titre perso },Decoration=Chrono/25,Couleur=red,Trait=dashilles]%exo12 + \ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\StyleEnvtExoDefaut + +\begin{EnvtExo}% + [Type=Perso/{Titre perso~},Decoration=Image/goku_ssj4,Trait=non,Compteur=false]%exo13 + \ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\TitreExo[Type=Perso/{Annexe Exercice 3},Compteur=false,Decoration=Image/sseiya_aiolos]%exo14 + +\ipsum<Lang=FR,Type=sent> + \end{document}
\ No newline at end of file diff --git a/macros/latex/contrib/customenvs/tex/customenvs.sty b/macros/latex/contrib/customenvs/tex/customenvs.sty index ee8f4427a2..e63ea57f84 100644 --- a/macros/latex/contrib/customenvs/tex/customenvs.sty +++ b/macros/latex/contrib/customenvs/tex/customenvs.sty @@ -3,9 +3,12 @@ % 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/06/03 0.1.7 Custom classic environments] %====HISTORIQUE +% v 0.1.7 Style perso pour les vignettes +% v 0.1.6 DisplaySkip patch + Patchs pas-tableur +% v 0.1.5 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 @@ -28,6 +31,8 @@ \newif\if@fa\@fatrue% \DeclareOption{nonfa}{\@fafalse}% \DeclareOption{nofa}{\@fafalse}% +\newif\if@pastableur\@pastableurfalse% +\DeclareOption{pastableur}{\@pastableurtrue}% \DeclareOption*{} \ProcessOptions\relax @@ -55,7 +60,9 @@ \RequirePackage{calc} \RequirePackage{tikz} \usetikzlibrary{decorations.pathmorphing,positioning,shapes.misc,calc} -\usepackage{tcolorbox} +\usetikzlibrary{babel} +\RequirePackage{tcolorbox} +\RequirePackage{varwidth} \tcbuselibrary{skins} %%----COMMANDES FR @@ -922,7 +929,7 @@ \setKVdefault[BoiteArrondie]{% Fond=red,% Texte=white,% - EspH=0.25em,% + EspH=0.125em,% Style=rect } \NewDocumentCommand\BoiteArrondie{ O{} m O{char} }{% @@ -1346,25 +1353,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 +1494,442 @@ 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},Echelle=\def\cevignettescaleperso{#1}} +\setKVdefault[cevignette]{Type={},Couleur={darkgray},Police=\footnotesize,Echelle=0.55} + +\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}}% + }% + \IfSubStr{\cevignettetype}{perso}% + {% + \StrBehind{\cevignettetype}{/}[\cevignettelabelperso]% + \tcbox[colframe=\cevignettecolor,fontupper={\cevignettefont},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{\cevignettescaleperso}[0.75]{\textbf{\cevignettelabelperso}}} ($(interior.north west)+(5pt,0pt)$);\end{tcbclipinterior}}]{\IfBooleanTF{#1}{\NoAutoSpacing}{}#3}% + }% + {}% + \relax% +} + +%====DisplaySkip [en] +\defKV[DisplaySkip]{% + aboveds=\def\ceabovedisplayskip{#1},% + abovedsshort=\def\ceabovedisplayskipshort{#1},% + belowdds=\def\cebelowdisplayskip{#1},% + belowdsshort=\def\cebelowdisplayskipshort{#1},% + global=\def\globaldisplayskip{#1} +} + +\setKVdefault[DisplaySkip]{% + aboveds={12pt plus 3pt minus 9pt},% + abovedsshort={0pt plus 3pt},% + belowdds={12pt plus 3pt minus 9pt},% + belowdsshort={7pt plus 3pt minus 4pt},% + global={},% + shrink=false +} +\NewDocumentCommand\ChangeSpacingDisplaySkip{ O{} }{% + \restoreKV[DisplaySkip]% + \setKV[DisplaySkip]{#1}% + \ifboolKV[DisplaySkip]{shrink}% + {% + \AtBeginDocument{% + \abovedisplayskip=0.33\baselineskip + \abovedisplayshortskip=0.33\baselineskip + \belowdisplayskip=0.33\baselineskip + \belowdisplayshortskip=0.33\baselineskip + } + }% + {% + \IfStrEq{\globaldisplayskip}{}% + {% + \AtBeginDocument{% + \abovedisplayskip=\ceabovedisplayskip + \abovedisplayshortskip=\ceabovedisplayskipshort + \belowdisplayskip=\cebelowdisplayskip + \belowdisplayshortskip=\cebelowdisplayskipshort + } + }% + {% + \AtBeginDocument{% + \abovedisplayskip=\globaldisplayskip + \abovedisplayshortskip=\globaldisplayskip + \belowdisplayskip=\globaldisplayskip + \belowdisplayshortskip=\globaldisplayskip + } + }% + }% +} + +%====DisplaySkip [fr] +\defKV[DisplaySkipFr]{% + Avant=\def\ceabovedisplayskip{#1},% + AvantS=\def\ceabovedisplayskipshort{#1},% + Apres=\def\cebelowdisplayskip{#1},% + ApresS=\def\cebelowdisplayskipshort{#1},% + Global=\def\globaldisplayskip{#1} +} + +\setKVdefault[DisplaySkipFr]{% + Avant={12pt plus 3pt minus 9pt},% + AvantS={0pt plus 3pt},% + Apres={12pt plus 3pt minus 9pt},% + ApresS={7pt plus 3pt minus 4pt},% + Global={},% + Dense=false +} +\NewDocumentCommand\ChangerDisplaySkip{ O{} }{% + \restoreKV[DisplaySkipFr]% + \setKV[DisplaySkipFr]{#1}% + \ifboolKV[DisplaySkipFr]{Dense}% + {% + \AtBeginDocument{% + \abovedisplayskip=0.33\baselineskip + \abovedisplayshortskip=0.33\baselineskip + \belowdisplayskip=0.33\baselineskip + \belowdisplayshortskip=0.33\baselineskip + } + }% + {% + \IfStrEq{\globaldisplayskip}{}% + {% + \AtBeginDocument{% + \abovedisplayskip=\ceabovedisplayskip + \abovedisplayshortskip=\ceabovedisplayskipshort + \belowdisplayskip=\cebelowdisplayskip + \belowdisplayshortskip=\cebelowdisplayskipshort + } + }% + {% + \AtBeginDocument{% + \abovedisplayskip=\globaldisplayskip + \abovedisplayshortskip=\globaldisplayskip + \belowdisplayskip=\globaldisplayskip + \belowdisplayshortskip=\globaldisplayskip + } + }% + }% +} + +%====Patchs pas-tableur +\if@pastableur + +\RequirePackage{pas-tableur} + +\renewcommand{\pastableur@grid}[4] % #1 : width, #2 : name, #3 : numline, #4 : coord. +{% + \node[celempty,below,minimum height=\line@height,minimum width=#1] (cell#2-#3) at (#4) {};% + \draw[graySepCell] ($(cell#2-#3.south west)+(0.2pt,0)$) -- (cell#2-#3.south east) -- ($(cell#2-#3.north east)+(0,-0.2pt)$);% +} + +\renewcommand{\pastab@draw@cell}[5] +% #1 : \first@width, #2 : \first@name, #3 : 0=colonne1 / 1=autres colonnes / +% 2 = ligne 1, #4 : coord., #5 : contenu +{% + \ifnum#3=0% + \tikzstyle{cellstyle} = [celhead,minimum width={#1},minimum height=\line@height]% + \def\pastableur@coord{(0,0)}% + \else% + \ifnum#3=1% + \tikzstyle{cellstyle} = [celhead,right,minimum width={#1},minimum height=\line@height]% + \else + \ifnum#3=2% + \tikzstyle{cellstyle} = [below left,celhead,minimum width={#1},minimum height=\line@height] + \else% + \tikzstyle{cellstryle} = [below,celhead,minimum width={#1},minimum height=\line@height] + \fi% + \fi% + \def\pastableur@coord{(#4)}% + \fi% + \node[cellstyle] (#2) at \pastableur@coord {\helvbx#5};% + \fill[grayBottomCell] (#2.south west) rectangle (#2.north east) ;% + \fill[grayTopCell] (#2.north west) rectangle ($0.5*(#2.south east)+0.5*(#2.north east)$) ;% + \node[minimum width={#1},minimum height=\line@height,cellstyle] at \pastableur@coord {\helvbx#5};% +} + +\NewDocumentCommand\celcouleur{ O{graySepCell!50} m }{%OK + \draw[draw=none,fill=#1] ($(cell#2.south west)+(0.2pt,0.2pt)$) rectangle ($(cell#2.north east) + (-0.2pt,-0.2pt)$) ;% +} + +\defKV[celparam]{align=\def\pastableurfusalign{#1},width=\def\pastableurfuswidth{#1}} +\setKVdefault[celparam]{align=left,width={\col@width}} + +\NewDocumentCommand\celfusion{ O{} m m m }{%OK + \restoreKV[celparam]% + \setKV[celparam]{#1}% + \IfStrEq{#4}{}% + {% + \draw[draw=none,fill=white] ($(cell#2.south west)+(0.2pt,0.2pt)$) rectangle ($(cell#3.north east) + (-0.2pt,-0.2pt)$); + }% + {% + \draw[draw=none,fill=white] ($(cell#2.south west)+(0.2pt,0.2pt)$) rectangle ($(cell#3.north east) + (-0.2pt,-0.2pt)$) node[midway,text width=\dimexpr\pastableurfuswidth-4pt,align=\pastableurfusalign] {#4}; + }% +} + +\NewDocumentCommand\celnumbreak{ m m m }{% + \def\numpointilles{#1} + \xdef\numavant{\inteval{\numpointilles-1}}% + \def\numdebut{#2}\def\numfin{#3} + \foreach \num@line [remember=\num@line as \lastnum (initially \numavant)] in {\numpointilles} + {% + \pastab@draw@cell{\numline@width}{numline\num@line}{3}{numline\lastnum.south east}{\dots}% + }% + \foreach \num@line [remember=\num@line as \lastnum (initially \numpointilles)] in {\numdebut,\numfin} + {% + \pastab@draw@cell{\numline@width}{numline\num@line}{3}{numline\lastnum.south east}{\num@line}% + }% +} + +\NewDocumentCommand\lignetxt{ s O{} m D<>{1} m }{%3=num ligne,%5=liste + \IfBooleanTF{#1}% + { + \foreach \x [count=\i] in {#5} + {% + \xdef\j{\inteval{\i+(#4-1)}}% + \StrChar{ABCDEFGHIJKLMNOPQRSTUVWXYZ}{\j}[\iltr]% + \IfEq{\x}{}{}{\celtxt*[#2]{\iltr}{#3}{\x}}% + }% + }% + {% + \foreach \x [count=\i] in {#5} + {% + \xdef\j{\inteval{\i+(#4-1)}}% + \StrChar{ABCDEFGHIJKLMNOPQRSTUVWXYZ}{\j}[\iltr]% + \IfEq{\x}{}{}{\celtxt[#2]{\iltr}{#3}{\x}}% + }% + }% +} + +\NewDocumentCommand\colonnetxt{ s O{} m D<>{1} m }{%3=lettre colonne,%5=liste + \IfBooleanTF{#1}% + {% + \foreach \x [count=\i] in {#5} + {% + \xdef\j{\inteval{\i+(#4-1)}} + \IfStrEq{\x}{}{}{\celtxt*[#2]{#3}{\j}{\x}}% + }% + }% + {% + \foreach \x [count=\i] in {#5} + {% + \xdef\j{\inteval{\i+(#4-1)}} + \IfStrEq{\x}{}{}{\celtxt[#2]{#3}{\j}{\x}}% + }% + }% +} + +\fi \endinput
\ No newline at end of file |