summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2024-05-19 20:35:48 +0000
committerKarl Berry <karl@freefriends.org>2024-05-19 20:35:48 +0000
commitad142b19e22601544b06b4cc495bc80f62bc1a17 (patch)
treebdc38cb3daaf78c5911ec90da923d7549cdde4c5 /Master/texmf-dist/tex
parentf3101cf0ee6a4c8fc58c91017266ad7806ea4b92 (diff)
customenvs (19may24)
git-svn-id: svn://tug.org/texlive/trunk@71303 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r--Master/texmf-dist/tex/latex/customenvs/customenvs.sty267
1 files changed, 244 insertions, 23 deletions
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