texlive[72073] Master/texmf-dist: customenvs (20aug24)

commits+karl at tug.org commits+karl at tug.org
Tue Aug 20 21:32:12 CEST 2024


Revision: 72073
          https://tug.org/svn/texlive?view=revision&revision=72073
Author:   karl
Date:     2024-08-20 21:32:12 +0200 (Tue, 20 Aug 2024)
Log Message:
-----------
customenvs (20aug24)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.pdf
    trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.tex
    trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.pdf
    trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.tex
    trunk/Master/texmf-dist/tex/latex/customenvs/customenvs.sty

Modified: trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.tex	2024-08-20 19:31:39 UTC (rev 72072)
+++ trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.tex	2024-08-20 19:32:12 UTC (rev 72073)
@@ -34,8 +34,8 @@
 \usepackage[margin=1.5cm]{geometry}
 \setlength{\parindent}{0pt}
 
-\def\TPversion{0.1.8}
-\def\TPdate{13/07/2024}
+\def\TPversion{0.1.9}
+\def\TPdate{20/08/2024}
 \usepackage{tcolorbox}
 \sethlcolor{lightgray!25}
 \NewDocumentCommand\MontreCode{ m }{%
@@ -111,7 +111,10 @@
 
 \section{History}
 
+\verb|v0.1.9|~:~~~~Title banner
+
 \verb|v0.1.8|~:~~~~Score banner
+
 \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)
@@ -558,4 +561,77 @@
 \end{ChatSMS}
 \end{demohigh}
 
+\pagebreak
+
+\section{Title banner}
+
+\subsection{Global usage}
+
+The idea is to propose a banner, made with \TikZ, to present for example a title.
+
+The global style is fixed, but few customizations are possible.
+
+\begin{codehigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+\tkzBannerTri[keys]{number}{title}
+\end{codehigh}
+
+\begin{demohigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+\tkzBannerTri{01}{Titre du document}
+\end{demohigh}
+
+Available \MontreCode{keys} are :
+
+\begin{itemize}
+	\item \MontreCode{height} (\MontreCode{2.5em} by default)
+	\item \MontreCode{width} (\MontreCode{\textbackslash linewidth} by default)
+	\item \MontreCode{blockwidth} (\MontreCode{2.75em} by default, but can be set to \MontreCode{auto})
+	\item \MontreCode{coltxt} (\MontreCode{white} by default)
+	\item \MontreCode{fonttxt}
+	\item \MontreCode{swap} (\MontreCode{false} by default, for an other style )
+	\item \MontreCode{maincolor} (\MontreCode{darkgray} by default)
+	\item \MontreCode{collight} (\MontreCode{darkgray!25} by default)
+	\item \MontreCode{colmedium} (\MontreCode{darkgray!50} by default)
+	\item \MontreCode{coldark} (\MontreCode{darkgray} by default)
+	\item \MontreCode{logo}
+	\item \MontreCode{type}
+	\item \MontreCode{dispblock} (\MontreCode{true} by default)
+	\item \MontreCode{num} (\MontreCode{true}  by default)
+	\item \MontreCode{customtype}
+\end{itemize}
+
+\subsection{Examples}
+
+\begin{demohigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+\tkzBannerTri
+  [maincolor=red,type=EXERCISES,blockwidth=auto,logo=\faAddressBook]
+  {7}{My doc}
+\end{demohigh}
+
+\begin{demohigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+\tkzBannerTri
+  [maincolor=red,type=EXERCISES,blockwidth=5em,logo=\faAddressBook]
+  {7}{My doc}
+\end{demohigh}
+
+\begin{demohigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+\tkzBannerTri
+  [maincolor=red,type=EXERCISES,blockwidth=auto,logo=\faAddressBook,swap]
+  {07}{My doc}
+\end{demohigh}
+
+\begin{demohigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+\tkzBannerTri
+  [dispblock=false,maincolor=teal,logo=\faSchool]
+  {}{My doc}
+\end{demohigh}
+
+\begin{demohigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+\tkzBannerTri
+  [maincolor=olive,customtype=TP,blockwidth=4em,logo=\faAddressBook,height=4em]
+  {7}{My doc}
+\end{demohigh}
+
+It's possible to redefine \MontreCode{\textbackslash part} (for example).
+
+
 \end{document}
\ No newline at end of file

Modified: trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.tex	2024-08-20 19:31:39 UTC (rev 72072)
+++ trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.tex	2024-08-20 19:32:12 UTC (rev 72073)
@@ -39,8 +39,8 @@
 \usepackage[margin=1.5cm]{geometry}
 \setlength{\parindent}{0pt}
 
-\def\TPversion{0.1.8}
-\def\TPdate{13 juillet 2024}
+\def\TPversion{0.1.9}
+\def\TPdate{20 août 2024}
 \usepackage{tcolorbox}
 \tcbuselibrary{listingsutf8}
 \newtcblisting{DemoCode}[1]{%
@@ -62,14 +62,14 @@
 		keywordstyle={\color{blue}},%
 		classoffset=1,%
 		alsoletter={-},%
-		morekeywords={center,justify,\LstDeuxNiv,\LstTroisNiv,\LstQuatreNiv,\NoticeDeuxNiv,\NoticeTroisNiv,\NoticeQuatreNiv,\DeuxNivBatterie,\TroisNivBatterie,\QuatreNivBatterie,\DeuxNivSmiley,\TroisNivSmiley,\QuatreNivSmiley,\vcenterfa,\faIcon},%
+		morekeywords={center,justify,\LstDeuxNiv,\LstTroisNiv,\LstQuatreNiv,\NoticeDeuxNiv,\NoticeTroisNiv,\NoticeQuatreNiv,\DeuxNivBatterie,\TroisNivBatterie,\QuatreNivBatterie,\DeuxNivSmiley,\TroisNivSmiley,\QuatreNivSmiley,\vcenterfa,\faIcon,part,RenewDocumentCommand,IfBooleanTF},%
 		keywordstyle={\color{violet}},%
 		classoffset=2,%
 		alsoletter={-},%
-		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,\BandeauScore},%
+		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,\BandeauScore,\InsererImage,\tkzBannerTri},%
 		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,AlignH,bg,txt,bthick,bcol,raise,Type,EspH,Fond,Texte,Style,Dense,Avant,AvantS,Apres,ApresS,Global,align,width,Legende,CouleurFond,Hauteur,Ratio,AffLegende,Couleurs,EchelleSymboles,Symboles},%
+		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,Legende,CouleurFond,Hauteur,Ratio,AffLegende,Couleurs,EchelleSymboles,Symboles,vRemplir,vOffset,vCentrer,height,width,blockwidth,collight,colmedium,coldar,coltxt,fonttxt,swap,maincolor,logo,type,num,dispblock,customtype},%
 		keywordstyle={\color{orange}}
 	},%
 	#1
@@ -149,6 +149,10 @@
 
 \section{Historique}
 
+\verb|v0.1.9|~:~~~Bannière de titre + Insertion d'images en remplissage vertical
+
+\verb|v0.1.8|~:~~~Nutriscore
+
 \verb|v0.1.7|~:~~~~Possibilité de créer des vignettes \textsf{perso}
 
 \verb|v0.1.6|~:~~~~Patch \textsf{displayskip} + Patches \textsf{pas-tableur}
@@ -1306,6 +1310,93 @@
 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}
 
+\subsection{Bannière de titre}
+
+L'idée est de proposer une bannière, réalisée en \TikZ, pour présenter par exemple un titre.
+
+Il sera ensuite possible de redéfinir un sectionnement du document (\MontreCode{part/section/subsection/...}).
+
+Le style global est fixé, mais des éléments de personnalisations sont possibles (des calculs en interne sont effectués pour adapter la taille des textes).
+
+\begin{DemoCode}{listing only}
+\tkzBannerTri[clés]{numéro}{titre}
+\end{DemoCode}
+
+\begin{DemoCode}{}
+\tkzBannerTri{01}{Titre du document}
+\end{DemoCode}
+
+Les principales \MontreCode{clés} (anglicisées) sont :
+
+\begin{itemize}
+	\item \MontreCode{height} : hauteur de la bannière (\MontreCode{2.5em} par défaut)
+	\item \MontreCode{width} : largeur de la bannière (\MontreCode{\textbackslash linewidth} par défaut)
+	\item \MontreCode{blockwidth} : largeur du bloc gauche (\MontreCode{2.75em} par défaut, mais si \MontreCode{auto}, la largeur s'adaptera à son contenu)
+	\item \MontreCode{coltxt} : couleur des textes (\MontreCode{white} par défaut)
+	\item \MontreCode{fonttxt} : police globale des textes (\MontreCode{white} par défaut)
+	\item \MontreCode{swap} : booléen pour changer le style de la partie droite (\MontreCode{false} par défaut)
+	\item \MontreCode{maincolor} : couleur principale, les dégradés étant calculés automatiquement (\MontreCode{darkgray} par défaut)
+	\item \MontreCode{collight} : couleur la plus claire (\MontreCode{darkgray!25} par défaut)
+	\item \MontreCode{colmedium} : couleur du milieu (\MontreCode{darkgray!50} par défaut)
+	\item \MontreCode{coldark} : couleur la plus foncée (\MontreCode{darkgray} par défaut)
+	\item \MontreCode{logo} : logo éventuel, placé tout à droite
+	\item \MontreCode{type} : type éventuel du document, qui est dans le bloc gauche
+	\item \MontreCode{dispblock} : booléen pour afficher le bloc de gauche (actif par défaut)
+	\item \MontreCode{num} : booléen pour afficher le numéro (actif par défaut)
+	\item \MontreCode{customtype} : texte personnalisé éventuel du bloc gauche
+\end{itemize}
+
+\begin{DemoCode}{}
+\tkzBannerTri
+	[maincolor=red,type=EXERCICES,blockwidth=auto,logo=\faAddressBook]
+	{7}{Mon document}
+\end{DemoCode}
+
+\begin{DemoCode}{}
+\tkzBannerTri
+	[maincolor=red,type=EXERCICES,blockwidth=5em,logo=\faAddressBook]
+	{7}{Mon document}
+\end{DemoCode}
+
+\begin{DemoCode}{}
+\tkzBannerTri[%
+	maincolor=red,type=EXERCICES,blockwidth=auto,logo=\faAddressBook,swap]
+	{07}{Mon document}
+\end{DemoCode}
+
+\begin{DemoCode}{}
+\tkzBannerTri
+	[dispblock=false,maincolor=teal,logo=\faSchool]
+	{}{Mon document}
+\end{DemoCode}
+
+\begin{DemoCode}{}
+\tkzBannerTri
+	[maincolor=olive,customtype=TP,blockwidth=4em,logo=\faAddressBook,height=4em]
+	{7}{Mon document}
+\end{DemoCode}
+
+Il est de ce fait \textit{normalement} possible (à vérifier quand même\ldots) de modifier le comportement de la commande \MontreCode{\textbackslash part}, dans l'optique de l'utilisation avec une table des matières notamment.
+
+\begin{DemoCode}{}
+%redéfinition de \part avec gestion de la version étoilée
+\RenewDocumentCommand\part{ s m D<>{} }{%
+	\addtocounter{part}{1}%
+	\IfBooleanTF{#1}%
+		{%
+			\tkzBannerTri[#3,num=false]{\thepart}{#2}%
+		}%
+		{%
+			\tkzBannerTri[#3]{\thepart}{#2}%
+			%\addcontentsline{toc}{part}{#2}%éventuellement
+		}%
+}
+%modification de la numérotation, avec forçage du 0
+\renewcommand\thepart{\ifnum\value{part}<10\relax0\fi\arabic{part}}
+
+\part{Éléments de logique}<type=TP,logo=\faAirbnb>
+\end{DemoCode}
+
 \pagebreak
 
 \section{Patchs divers}
@@ -1395,4 +1486,24 @@
 \end{tikzpicture}
 \end{DemoCode}
 
+\subsection{Insertion d'images avec remplissage de l'espace vertical}
+
+L'idée est de proposer une commande pour adapter la hauteur d'une image à la hauteur restante en base de page.
+
+Cela repose en fait simplement sur l'utilisation de \MontreCode{[height=\textbackslash dimexpr\textbackslash pagegoal-\textbackslash pagetotal\textbackslash relax]}.
+
+\begin{DemoCode}{listing only}
+\InsererImage<vRemplir=true/false,vOffset=...,vCentrer=...>[clés includegraphics]<image>
+\end{DemoCode}
+
+La clé \MontreCode{vOffset} permet de spécifier une longueur à retirer au calcul automatique (par défaut elle est fixée à \MontreCode{0pt})..
+
+La clé \MontreCode{vCentrer} (parmi \MontreCode{m/h/b/n} permet de spécifier un type de centrage vertical, si besoin, parmi \MontreCode{milieu/haut/bas/non} (\MontreCode{n} par défaut).
+
+\begin{DemoCode}{listing only}
+\InsererImage<vRemplir,vOffset=5mm,vCentrer=m>{example-image}
+\end{DemoCode}
+
+\InsererImage<vRemplir,vOffset=5mm,vCentrer=m>{example-image}
+
 \end{document}
\ No newline at end of file

Modified: trunk/Master/texmf-dist/tex/latex/customenvs/customenvs.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/customenvs/customenvs.sty	2024-08-20 19:31:39 UTC (rev 72072)
+++ trunk/Master/texmf-dist/tex/latex/customenvs/customenvs.sty	2024-08-20 19:32:12 UTC (rev 72073)
@@ -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/07/13 0.1.8 Custom classic environments]
+\ProvidesPackage{customenvs}[2024/08/20 0.1.9 Custom classic environments]
 
 %====HISTORIQUE
+% v 0.1.9	tkzBanner + tkzBannerTri + includegraphicsfill
 % v 0.1.8	Nutriscore
 % v 0.1.7	Style perso pour les vignettes
 % v 0.1.6	DisplaySkip patch + Patchs pas-tableur
@@ -2107,4 +2108,264 @@
 	\end{tikzpicture}%
 }
 
+%====vincludegraphics [fr]
+\newlength{\tmp at includegraphics@vfill at offset}
+
+\defKV[vfillincludegphcs]{vOffset=\setlength\tmp at includegraphics@vfill at offset{#1},vCentrer=\def\tmpincludegpvcenter{#1}}
+\setKVdefault[vfillincludegphcs]{vRemplir=false,vOffset=0pt,vCentrer=n}
+
+\NewDocumentCommand\InsererImage{ D<>{} O{} m }{%
+	\restoreKV[vfillincludegphcs]%
+	\setKV[vfillincludegphcs]{#1}%
+	\ifboolKV[vfillincludegphcs]{vRemplir}%
+		{%
+			\IfStrEqCase{\tmpincludegpvcenter}{%
+				{m}{\vfill\includegraphics[height=\dimexpr\pagegoal-\pagetotal-\tmp at includegraphics@vfill at offset\relax,#2]{#3}\vfill}%
+				{h}{\includegraphics[height=\dimexpr\pagegoal-\pagetotal-\tmp at includegraphics@vfill at offset\relax,#2]{#3}\vfill}%
+				{b}{\vfill\includegraphics[height=\dimexpr\pagegoal-\pagetotal-\tmp at includegraphics@vfill at offset\relax,#2]{#3}}%
+				{n}{\includegraphics[height=\dimexpr\pagegoal-\pagetotal-\tmp at includegraphics@vfill at offset\relax,#2]{#3}}%
+			}[{\includegraphics[height=\dimexpr\pagegoal-\pagetotal-\tmp at includegraphics@vfill at offset\relax,#2]{#3}}]%
+		}%
+		{%
+			\includegraphics[#2]{#3}%
+		}%
+}
+
+%===tkzBanner mixte
+\defKV[tkzBannerKeys]{%
+	maincolor=\def\tkzBannermaincol{#1}
+}
+
+\setKVdefault[tkzBannerKeys]{%
+	height=2.1cm,%
+	width=\linewidth,%
+	collight=teal!25,%
+	colmedium=teal!75,%
+	coldark=teal,%
+	coltxt=white,%
+	fonttxt=\sffamily\bfseries,%
+	swap=false,%
+	maincolor={},%
+	num=true
+}
+
+\NewDocumentCommand\tkzBanner{ O{} m m }{%
+	\noindent%
+	\restoreKV[tkzBannerKeys]%
+	\setKV[tkzBannerKeys]{#1}%
+	\pgfmathsetmacro{\tkzBannerscale}{\useKV[tkzBannerKeys]{width}/\linewidth}%
+	\begin{tikzpicture}
+		\IfEq{\tkzBannermaincol}{}%
+			{%
+				\tikzset{tkzbannerdark/.style={\useKV[tkzBannerKeys]{coldark}}}
+				\tikzset{tkzbannermedium/.style={\useKV[tkzBannerKeys]{colmedium}}}
+				\tikzset{tkzbannerlight/.style={\useKV[tkzBannerKeys]{collight}}}
+			}%
+			{%
+				\tikzset{tkzbannerdark/.style={\tkzBannermaincol}}
+				\tikzset{tkzbannermedium/.style={\tkzBannermaincol!75}}
+				\tikzset{tkzbannerlight/.style={\tkzBannermaincol!25}}
+			}%
+		%coordinates
+		\coordinate (tkzBanner-NW) at (0,{\useKV[tkzBannerKeys]{height}}) ;
+		\coordinate (tkzBanner-SW) at (0,0) ;
+		\coordinate (tkzBanner-NE) at ({\useKV[tkzBannerKeys]{width}},{\useKV[tkzBannerKeys]{height}}) ;
+		\coordinate (tkzBanner-SE) at ({\useKV[tkzBannerKeys]{width}},0) ;%
+		%swap or note
+		\ifboolKV[tkzBannerKeys]{swap}%
+			{%
+				\coordinate (tkzBanner-A) at ($(tkzBanner-SE)!0.57!(tkzBanner-SW)$) ;
+				\coordinate (tkzBanner-B) at ($(tkzBanner-NE)!0.91!(tkzBanner-NW)$) ;
+				\coordinate (tkzBanner-C) at ($(tkzBanner-NE)!0.92!(tkzBanner-NW)$) ;
+				\coordinate (tkzBanner-D) at ($(tkzBanner-SE)!0.63!(tkzBanner-SW)$) ;
+			}%
+			{%
+				\coordinate (tkzBanner-A) at ($(tkzBanner-SW)!0.57!(tkzBanner-SE)$) ;
+				\coordinate (tkzBanner-B) at ($(tkzBanner-NW)!0.91!(tkzBanner-NE)$) ;
+				\coordinate (tkzBanner-C) at ($(tkzBanner-NW)!0.92!(tkzBanner-NE)$) ;
+				\coordinate (tkzBanner-D) at ($(tkzBanner-SW)!0.63!(tkzBanner-SE)$) ;
+			}%
+		%drawing
+		\fill[tkzbannerdark] (0,0) rectangle ({\useKV[tkzBannerKeys]{width}},{\useKV[tkzBannerKeys]{height}});
+		\ifboolKV[tkzBannerKeys]{swap}%
+			{%
+				\fill[tkzbannerlight] (tkzBanner-A) to[bend left=8] (tkzBanner-B) -- (tkzBanner-C) to[bend right=7] (tkzBanner-D) -- cycle ;
+				\fill[tkzbannermedium] (tkzBanner-C) to[bend right=7] (tkzBanner-D) -- (tkzBanner-SW) |- cycle ;
+			}%
+			{%
+				\fill[tkzbannerlight] (tkzBanner-A) to[bend right=8] (tkzBanner-B) -- (tkzBanner-C) to[bend left=7] (tkzBanner-D) -- cycle ;
+				\fill[tkzbannermedium] (tkzBanner-C) to[bend left=7] (tkzBanner-D) -- (tkzBanner-SE) |- cycle ;
+			}%
+		%nodes
+		\ifboolKV[tkzBannerKeys]{swap}%
+			{%
+				\node[inner sep=2pt,text={\useKV[tkzBannerKeys]{coltxt}},below left,font={\useKV[tkzBannerKeys]{fonttxt}},scale={2*\tkzBannerscale}] at (tkzBanner-NE) {\vphantom{qÉ}#2};
+				\ifboolKV[tkzBannerKeys]{num}%
+					{%
+						\node[inner sep=2pt,text={\useKV[tkzBannerKeys]{coltxt}},above right,font={\useKV[tkzBannerKeys]{fonttxt}},scale={1.25*\tkzBannerscale}] at (tkzBanner-SW) {\vphantom{qÉ}#3};
+					}%
+					{}%
+			}%
+			{%
+				\ifboolKV[tkzBannerKeys]{num}%
+					{%
+						\node[inner sep=2pt,text={\useKV[tkzBannerKeys]{coltxt}},above left,font={\useKV[tkzBannerKeys]{fonttxt}},scale={1.25*\tkzBannerscale}] at (tkzBanner-SE) {\vphantom{qÉ}#3};
+					}%
+					{}%
+				\node[inner sep=2pt,text={\useKV[tkzBannerKeys]{coltxt}},below right,font={\useKV[tkzBannerKeys]{fonttxt}},scale={2*\tkzBannerscale}] at (tkzBanner-NW) {\vphantom{qÉ}#2};
+			}%
+	\end{tikzpicture}%
+}
+
+%====titre stylisé [fr], à voir avec part ??
+\newlength{\tmp at tkzbanner@autowidthtype}
+\setlength\tmp at tkzbanner@autowidthtype{2.5em}
+\newlength{\tmp at tkzbanner@autowidthnum}
+\setlength\tmp at tkzbanner@autowidthnum{2em}
+\newlength{\tmp at tkzbanner@marginoffsetbanner}
+\setlength\tmp at tkzbanner@marginoffsetbanner{2pt}
+\newlength{\tmp at tkzbanner@autowidth}
+\setlength\tmp at tkzbanner@autowidth{2.5em}
+
+\defKV[tkzBannerpartKeys]{%
+	maincolor=\def\tkzBannermaintricol{#1},%
+	logo=\def\tkzBannermaintrilogo{#1},%
+	type=\def\tkzBannermaintritype{#1},%
+	blockwidth=\def\tkzBannermaintriblockwidth{#1},%
+	customtype=\def\tkzBannermaintritypelibre{#1}
+}
+
+\setKVdefault[tkzBannerpartKeys]{%
+	height=2.5em,%
+	width=\linewidth,%
+	blockwidth=2.75em,%
+	collight=darkgray!25,%
+	colmedium=darkgray!50,%
+	coldark=darkgray,%
+	coltxt=white,%
+	fonttxt=\sffamily\bfseries,%
+	swap=false,%
+	maincolor={},%
+	logo={},%
+	type={},%
+	num=true,
+	dispblock=true,%
+	customtype={}
+}
+
+\NewDocumentCommand\tkzBannerTri{ O{} m m }{%
+	%#1 := clés
+	%#2 := numéro
+	%#3 := titre
+	\noindent%
+	\restoreKV[tkzBannerpartKeys]%
+	\setKV[tkzBannerpartKeys]{#1}%
+	\pgfmathsetmacro{\tkzBannertriscale}{0.75*\useKV[tkzBannerpartKeys]{height}/1.25cm}%
+	\pgfmathsetmacro{\scaletypedoctribanner}{1.05*0.75*\useKV[tkzBannerpartKeys]{height}/1.25cm}%
+	\pgfmathsetmacro{\scaletypedoctribannernum}{2.5*0.75*\useKV[tkzBannerpartKeys]{height}/1.25cm}%
+	\pgfmathsetmacro{\tkzBannertriangle}{0.10*\useKV[tkzBannerpartKeys]{height}/\useKV[tkzBannerpartKeys]{width}}%
+	\IfEq{\tkzBannermaintriblockwidth}{auto}%
+		{%
+			\settowidth{\tmp at tkzbanner@autowidthtype}{\scalebox{\scaletypedoctribanner}[\scaletypedoctribanner]{\sffamily\bfseries\vphantom{qÉ}\tkzBannermaintritype}}%
+			\addtolength{\tmp at tkzbanner@autowidthtype}{4pt}%
+			\settowidth{\tmp at tkzbanner@autowidthnum}{\scalebox{\scaletypedoctribannernum}[\scaletypedoctribannernum]{\sffamily\bfseries\vphantom{qÉ}00}}%
+			\addtolength{\tmp at tkzbanner@autowidthnum}{4pt}%
+			\pgfmathsetlength{\tmp at tkzbanner@autowidth}{max(\tmp at tkzbanner@autowidthtype,\tmp at tkzbanner@autowidthnum)}%
+		}%
+		{%
+			\setlength\tmp at tkzbanner@autowidth{\tkzBannermaintriblockwidth}%
+		}%
+	\begin{tikzpicture}
+		\IfEq{\tkzBannermaintricol}{}%
+			{%
+				\tikzset{tkzbannertridark/.style={\useKV[tkzBannerpartKeys]{coldark}}}
+				\tikzset{tkzbannertrimedium/.style={\useKV[tkzBannerpartKeys]{colmedium}}}
+				\tikzset{tkzbannertrilight/.style={\useKV[tkzBannerpartKeys]{collight}}}
+			}%
+			{%
+				\tikzset{tkzbannertridark/.style={\tkzBannermaintricol}}
+				\tikzset{tkzbannertrimedium/.style={\tkzBannermaintricol!50}}
+				\tikzset{tkzbannertrilight/.style={\tkzBannermaintricol!25}}
+			}%
+		%coordinates
+		\coordinate (tkzBannerTri-NW) at (0,{\useKV[tkzBannerpartKeys]{height}}) ;
+		\coordinate (tkzBannerTri-SW) at (0,0) ;
+		\coordinate (tkzBannerTri-NE) at ({\useKV[tkzBannerpartKeys]{width}},{\useKV[tkzBannerpartKeys]{height}}) ;
+		\coordinate (tkzBannerTri-SE) at ({\useKV[tkzBannerpartKeys]{width}},0) ;%
+		\coordinate (tkzBannerTri-SWd) at ($(tkzBannerTri-SW)!0.05!(tkzBannerTri-NW)$) ;%
+		\coordinate (tkzBannerTri-SEd) at ($(tkzBannerTri-SE)!0.15!(tkzBannerTri-NE)$) ;%
+		%drawing & shadow
+		\fill[lightgray!75] ([yshift=-1pt]tkzBannerTri-SWd) -- ([yshift=-1pt]tkzBannerTri-SEd) -- (tkzBannerTri-NE) -| cycle ;
+		\ifboolKV[tkzBannerpartKeys]{swap}%
+			{%
+				\fill[white] (tkzBannerTri-SWd) -- (tkzBannerTri-SEd) -- (tkzBannerTri-NE) -| cycle ;
+				\draw[line width=1pt,tkzbannertridark] ([shift={(0.5pt,-0.5pt)}]tkzBannerTri-NW) -| ([shift={(-0.5pt,0)}]tkzBannerTri-SEd) -- (tkzBannerTri-SWd) ;
+			}%
+			{%
+				\fill[tkzbannertrimedium] (tkzBannerTri-SWd) -- (tkzBannerTri-SEd) -- (tkzBannerTri-NE) -| cycle ;
+			}%
+		\ifboolKV[tkzBannerpartKeys]{dispblock}%
+			{%
+				\begin{scope}
+					\clip ($(tkzBannerTri-SW)!0.0375!(tkzBannerTri-NW)$) -- ($(tkzBannerTri-SE)!0.1375!(tkzBannerTri-NE)$) -- (tkzBannerTri-NE) -| cycle ;
+					%light
+					\fill[tkzbannertrilight] (tkzBannerTri-NW) --++ ({\tmp at tkzbanner@autowidth+2*\tmp at tkzbanner@marginoffsetbanner},0) -- ({\tmp at tkzbanner@autowidth+2*\tmp at tkzbanner@marginoffsetbanner+1em},{0.5*\useKV[tkzBannerpartKeys]{height}}) -- ({\tmp at tkzbanner@autowidth+2*\tmp at tkzbanner@marginoffsetbanner},0) -- (tkzBannerTri-SW) -- cycle ;
+				\end{scope}
+				\begin{scope}
+					\clip ($(tkzBannerTri-SW)!0.025!(tkzBannerTri-NW)$) -- ($(tkzBannerTri-SE)!0.125!(tkzBannerTri-NE)$) -- (tkzBannerTri-NE) -| cycle ;
+					%medium
+					\fill[tkzbannertrimedium] (tkzBannerTri-NW) --++ ({\tmp at tkzbanner@autowidth+\tmp at tkzbanner@marginoffsetbanner},0) -- ({\tmp at tkzbanner@autowidth+\tmp at tkzbanner@marginoffsetbanner+1em},{0.5*\useKV[tkzBannerpartKeys]{height}}) -- ({\tmp at tkzbanner@autowidth+\tmp at tkzbanner@marginoffsetbanner},0) -- (tkzBannerTri-SW) -- cycle ;
+				\end{scope}
+				\begin{scope}
+					\clip ($(tkzBannerTri-SW)!0.0125!(tkzBannerTri-NW)$) -- ($(tkzBannerTri-SE)!0.1125!(tkzBannerTri-NE)$) -- (tkzBannerTri-NE) -| cycle ;
+					%dark
+					\fill[tkzbannertridark] (tkzBannerTri-NW) --++ ({\tmp at tkzbanner@autowidth},0) -- ({\tmp at tkzbanner@autowidth+1em},{0.5*\useKV[tkzBannerpartKeys]{height}}) -- ({\tmp at tkzbanner@autowidth},0) -- (tkzBannerTri-SW) -- cycle ;
+					\IfEq{\tkzBannermaintritypelibre}{}%
+						{%
+							\ifboolKV[tkzBannerpartKeys]{num}%
+								{%
+									\IfEq{\tkzBannermaintritype}{}%
+										{%
+											\node[inner sep=2pt,text={\useKV[tkzBannerpartKeys]{coltxt}},font={\useKV[tkzBannerpartKeys]{fonttxt}},scale={2.5*\tkzBannertriscale},rotate={atan(\tkzBannertriangle)}] at ({0.5*\tmp at tkzbanner@autowidth},{0.5*\useKV[tkzBannerpartKeys]{height}}) {\vphantom{qÉ}#2};
+										}%
+										{%
+											\node[inner sep=2pt,below=1pt,text={\useKV[tkzBannerpartKeys]{coltxt}},font={\useKV[tkzBannerpartKeys]{fonttxt}},scale={1.05*\tkzBannertriscale},rotate={atan(\tkzBannertriangle)}] at ({0.5*\tmp at tkzbanner@autowidth},{\useKV[tkzBannerpartKeys]{height}}) {\vphantom{qÉ}\tkzBannermaintritype};
+											\node[inner sep=2pt,text={\useKV[tkzBannerpartKeys]{coltxt}},font={\useKV[tkzBannerpartKeys]{fonttxt}},scale={2.5*\tkzBannertriscale},rotate={atan(\tkzBannertriangle)}] at ({0.5*\tmp at tkzbanner@autowidth},{0.425*\useKV[tkzBannerpartKeys]{height}}) {\vphantom{qÉ}#2};
+										}%
+								}%
+								{}%
+						}%
+						{%
+							\node[inner sep=2pt,text={\useKV[tkzBannerpartKeys]{coltxt}},font={\useKV[tkzBannerpartKeys]{fonttxt}},scale={2.5*\tkzBannertriscale},rotate={atan(\tkzBannertriangle)}] at ({0.5*\tmp at tkzbanner@autowidth},{0.5*\useKV[tkzBannerpartKeys]{height}}) {\vphantom{qÉ}\tkzBannermaintritypelibre};
+						}%
+				\end{scope}
+			}%
+			{}%
+		%nodes
+		\begin{scope}
+			\clip (tkzBannerTri-SWd) -- (tkzBannerTri-SEd) -- (tkzBannerTri-NE) -| cycle ;
+			\ifboolKV[tkzBannerpartKeys]{swap}%
+				{%
+					\node[inner sep=2pt,right,text=\tkzBannermaintricol,font={\useKV[tkzBannerpartKeys]{fonttxt}},scale={2.75*\tkzBannertriscale},rotate={atan(\tkzBannertriangle)}] at ({\tmp at tkzbanner@autowidth+2*\tmp at tkzbanner@marginoffsetbanner+1.25em},{0.5*\useKV[tkzBannerpartKeys]{height}}) {\vphantom{qÉ}#3};
+					%logo
+					\IfEq{\tkzBannermaintrilogo}{}%
+						{}%
+						{%
+							\node[inner sep=2pt,left,text=\tkzBannermaintricol,font={\useKV[tkzBannerpartKeys]{fonttxt}},scale={2.5*\tkzBannertriscale},rotate={atan(\tkzBannertriangle)}] at ({\useKV[tkzBannerpartKeys]{width}},{0.55*\useKV[tkzBannerpartKeys]{height}}) {\vphantom{qÉ}\tkzBannermaintrilogo};
+						}%
+				}%
+				{%
+					\node[inner sep=2pt,right,text={\useKV[tkzBannerpartKeys]{coltxt}},font={\useKV[tkzBannerpartKeys]{fonttxt}},scale={2.75*\tkzBannertriscale},rotate={atan(\tkzBannertriangle)}] at ({\tmp at tkzbanner@autowidth+2*\tmp at tkzbanner@marginoffsetbanner+1.25em},{0.5*\useKV[tkzBannerpartKeys]{height}}) {\vphantom{qÉ}#3};
+					%logo
+					\IfEq{\tkzBannermaintrilogo}{}%
+						{}%
+						{%
+							\node[inner sep=2pt,left,text={\useKV[tkzBannerpartKeys]{coltxt}},font={\useKV[tkzBannerpartKeys]{fonttxt}},scale={2.5*\tkzBannertriscale},rotate={atan(\tkzBannertriangle)}] at ({\useKV[tkzBannerpartKeys]{width}},{0.55*\useKV[tkzBannerpartKeys]{height}}) {\vphantom{qÉ}\tkzBannermaintrilogo};
+						}%
+				}%
+			\end{scope}
+	\end{tikzpicture}%
+}
+
+
 \endinput
\ No newline at end of file



More information about the tex-live-commits mailing list.