diff options
author | Karl Berry <karl@freefriends.org> | 2024-05-19 20:35:48 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2024-05-19 20:35:48 +0000 |
commit | ad142b19e22601544b06b4cc495bc80f62bc1a17 (patch) | |
tree | bdc38cb3daaf78c5911ec90da923d7549cdde4c5 /Master/texmf-dist/tex | |
parent | f3101cf0ee6a4c8fc58c91017266ad7806ea4b92 (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.sty | 267 |
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 |