% proflycee-tools-listings.tex % Copyright 2023 Cédric Pierquet % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 % of this license or (at your option) any later version. % The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.3 or later is part of all distributions of LaTeX % version 2005/12/01 or later. %2.5.8 Styles alternatifs + Modification marges \RequirePackage{iftex} %%------STYLE PYTHON LST \ifluatex \tcbuselibrary{listings} \lstdefinelanguage{langnat}{% keywords={}, inputencoding=utf8, comment=[l]{}} \lstdefinestyle{PLpython}{% language = python, inputencoding = utf8, basicstyle = \ttfamily\footnotesize, keywordstyle = \color{ForestGreen}, keywordstyle = [2]\color{magenta}, commentstyle = \color{gray}\itshape, stringstyle = \color{red!75}, numberstyle = \scriptsize\ttfamily\color{darkgray}, aboveskip = 0pt, belowskip = 0pt, tabsize = 4, showstringspaces = false, columns = fullflexible, keepspaces = true, breaklines = true, breakatwhitespace = true } \else \tcbuselibrary{listingsutf8} \lstdefinelanguage{langnat}{% keywords={}, inputencoding=utf8/latin1, comment=[l]{}} \lstdefinestyle{PLpython}{% language = python, inputencoding = utf8/latin1, basicstyle = \ttfamily\footnotesize, keywordstyle = \color{ForestGreen}, keywordstyle = [2]\color{magenta}, commentstyle = \color{gray}\itshape, stringstyle = \color{red!75}, numberstyle = \scriptsize\ttfamily\color{darkgray}, aboveskip = 0pt, belowskip = 0pt, tabsize = 4, showstringspaces = false, columns = fullflexible, keepspaces = true, breaklines = true, breakatwhitespace = true } \fi %%------PYTHONLISTINGS %v1 \tcbset{stylepythonlst/.style={% enhanced,boxrule=1.25pt,% left=0.6em, sharp corners=downhill,arc=12pt, before skip=0.5\baselineskip,after skip=0.5\baselineskip,% top=\baselineskip,bottom=1mm,right=5mm, attach boxed title to top right={yshift=-\tcboxedtitleheight}, boxed title style={ size=small,colback=ForestGreen!25,boxrule=1.25pt, colframe=Green,boxsep=1.25pt, sharp corners=downhill, arc=12pt, top=2pt,bottom=1pt,left=6pt,right=6pt }, colframe=Green,colback=ForestGreen!5,% fonttitle=\color{ForestGreen}\itshape\ttfamily\footnotesize, title={\scriptsize\faPython}\:Code Python\vphantom{p}, watermark text={\faPython},watermark opacity=0.175,watermark zoom=0.50, listing only,listing engine=listings,% } } \tcbset{stylepythonlstnolineos/.style={% stylepythonlst, listing options={style=PLpython,xleftmargin=0pt,numbers=none} } } \tcbset{stylepythonlstlineos/.style={% stylepythonlst, listing options={style=PLpython,xleftmargin=16pt,numbers=left} } } \NewTCBListing{CodePythonLst}{ s O{\linewidth} m }{% * off pour numéros de lignes + {largeur} + \IfBooleanTF{#1}{stylepythonlstnolineos}{stylepythonlstlineos}, width=#2,#3 } \NewTCBInputListing{\CodePythonLstFichier}{ s O{\linewidth} m m }{ \IfBooleanTF{#1}{stylepythonlstnolineos}{stylepythonlstlineos}, width=#2,#3, listing file={#4} } %v2 \tcbset{StylPythonB/.style={% enhanced,boxrule=0.75pt,colframe=DarkGray!50!Black,% sharp corners,top=0mm,bottom=0mm,left=0.2em,right=5mm,% before skip=0.5\baselineskip,after skip=0.5\baselineskip,% colback=white, fontupper=\footnotesize,fontlower=\footnotesize,% listing only,listing engine=listings,% watermark text={\faPython},watermark opacity=0.25,watermark zoom=0.50,% title={{\scriptsize\faCode} Code Python}, lefttitle=0.4em, fonttitle=\bfseries\footnotesize\sffamily,colbacktitle=DarkGray!50!Black } } \tcbset{StylPythonBno/.style={% StylPythonB, listing options={style=PLpython,xleftmargin=0pt,numbers=none} } } \tcbset{StylPythonByes/.style={% StylPythonB, listing options={style=PLpython,xleftmargin=16pt,numbers=left},% underlay={% \begin{tcbclipinterior} \draw[draw=none,fill=lightgray!25] (interior.south west) rectangle ([xshift=1.3em]interior.north west) ; \end{tcbclipinterior}% } } } \NewTCBListing{CodePythonLstAlt}{ s O{\linewidth} m }{% * off pour numéros de lignes + {options keys} + \IfBooleanTF{#1}{StylPythonBno}{StylPythonByes},width=#2,#3 } \NewTCBInputListing{\CodePythonLstFichierAlt}{ s O{\linewidth} m m }{ \IfBooleanTF{#1}{StylPythonBno}{StylPythonByes}, width=#2,#3, listing file={#4} } %%------PSEUDOCODE %language pseudocode listings \lstdefinestyle{pseudocodePL}{% language = langnat, basicstyle = \footnotesize\ttfamily, numberstyle = \scriptsize\ttfamily\color{gray}, keywordstyle = \bfseries, stringstyle = \color{red!75}, keepspaces = true, tabsize = 4, numbersep = 10pt, xleftmargin = 14pt, numbers = left, morestring = [b]", showstringspaces = false, escapeinside = {(*}{*)} } \lstdefinestyle{pseudocodenoPL}{% language = langnat, basicstyle = \footnotesize\ttfamily, numberstyle = \scriptsize\ttfamily\color{gray}, keywordstyle = \bfseries, stringstyle = \color{red!75}, keepspaces = true, tabsize = 4, numbersep = 10pt, numbers = none, showstringspaces = false, morestring = [b]", escapeinside = {(*}{*)} } %style tcbox pseudocode avec bannière hautdroite \tcbset{stylepseudocodePL/.style={% enhanced,boxrule=1.25pt,sharp corners=downhill,arc=12pt, before skip=0.5\baselineskip,after skip=0.5\baselineskip,leftupper=10pt,top=\baselineskip,bottom=1mm,rightupper=5mm,% attach boxed title to top right={yshift=-\tcboxedtitleheight}, boxed title style={ size=small,colback=gray!25,boxrule=1.25pt, colframe=darkgray,boxsep=1.25pt, sharp corners=downhill, arc=12pt, top=2pt,bottom=1pt,left=6pt,right=6pt }, fonttitle=\color{darkgray}\ttfamily\footnotesize, title={\scriptsize\faFileCode}\:\textit{Pseudo-Code}\vphantom{p}, watermark text={\faCode},watermark opacity=0.175,watermark zoom=0.50, } } \ifluatex \newcommand\algomathttPL[1]{\symtt{#1}} \else \newcommand\algomathttPL[1]{\mathtt{#1}} \fi \DeclareTCBListing{PseudoCode}{ s O{12cm} m }{% étoilée sans numéro, puis option... width=#2,#3, stylepseudocodePL, listing only,listing engine=listings, listing options={ style=\IfBooleanTF{#1}{pseudocodenoPL}{pseudocodePL},%version étoilée sans numéro de lignes aboveskip=0pt,belowskip=0pt, columns=fullflexible, literate={é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1% {ú}{{\'u}}1 {Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1% {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1% {À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1% {ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1% {Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1% {â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1% {Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1% {œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1% {ű}{{\H{u}}}1 {Ű}{{\H{U}}}1 {ő}{{\H{o}}}1 {Ő}{{\H{O}}}1% {ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1% {€}{{\texteuro}}1 {£}{{\pounds}}1% {=}{\textleftarrow}1 {==}{=}1% {*}{$\algomathttPL{\times}$}{1}% } } %style tcbox pseudocode v2 \lstdefinestyle{pseudocodePLalt}{% language = langnat, basicstyle = \footnotesize\ttfamily, numberstyle = \scriptsize\ttfamily\color{gray}, keywordstyle = \bfseries, stringstyle = \color{red!75}, keepspaces = true, tabsize = 4, xleftmargin = 1.5em, numbers = left, morestring = [b]", showstringspaces = false, escapeinside = {(*}{*)} } \lstdefinestyle{pseudocodenoPLalt}{% language = langnat, basicstyle = \footnotesize\ttfamily, numberstyle = \scriptsize\ttfamily\color{gray}, keywordstyle = \bfseries, stringstyle = \color{red!75}, keepspaces = true, tabsize = 4, numbers = none, showstringspaces = false, morestring = [b]", escapeinside = {(*}{*)} } \tcbset{stylepseudocodePLalt/.style={% enhanced,boxrule=0.75pt,colframe=DarkGray!50!Black,% sharp corners,top=0mm,bottom=0mm,left=0.4em,right=5mm,% before skip=0.5\baselineskip,after skip=0.5\baselineskip,% colback=white, fontupper=\footnotesize,fontlower=\footnotesize,% listing only,listing engine=listings,% watermark text={\faCode},watermark opacity=0.25,watermark zoom=0.50,% title={{\scriptsize\faCode} PseudoCode}, lefttitle=0.4em, fonttitle=\bfseries\footnotesize\sffamily,colbacktitle=DarkGray!50!Black } } \tcbset{stylepseudocodePLaltlines/.style={% underlay={% \begin{tcbclipinterior} \filldraw[lightgray!25] (interior.south west) rectangle ([xshift=1.3em]interior.north west) ; \end{tcbclipinterior}% } } } \DeclareTCBListing{PseudoCodeAlt}{ s O{12cm} m }{% étoilée sans numéro, puis option... width=#2,#3, stylepseudocodePLalt, listing only,listing engine=listings, \IfBooleanTF{#1}{}{stylepseudocodePLaltlines}, listing options={ style=\IfBooleanTF{#1}{pseudocodenoPLalt}{pseudocodePLalt},%version étoilée sans numéro de lignes aboveskip=2pt,belowskip=2pt, columns=fullflexible, literate={é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1% {ú}{{\'u}}1 {Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1% {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1% {À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1% {ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1% {Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1% {â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1% {Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1% {œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1% {ű}{{\H{u}}}1 {Ű}{{\H{U}}}1 {ő}{{\H{o}}}1 {Ő}{{\H{O}}}1% {ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1% {€}{{\texteuro}}1 {£}{{\pounds}}1% {=}{\textleftarrow}1 {==}{=}1% {*}{$\algomathttPL{\times}$}{1}% } } %%------PRESENTATIONDECODES CLASSIQUES \NewTCBListing{PresentationCode}{ O{ForestGreen} m }{% sharp corners=downhill,enhanced,arc=12pt,skin=bicolor,% colback=#1!5!white,colframe=#1!75!black,colbacklower=White,% attach boxed title to top right={yshift=-\tcboxedtitleheight},title=Code \LaTeX,% boxed title style={% colframe=#1!75!black,colback=#1!15!white,% ,sharp corners=downhill,arc=12pt,% },% fonttitle=\color{#1!90!black}\itshape\ttfamily\footnotesize,% listing options={% style=tcblatex,basicstyle=\footnotesize\ttfamily,% keywordstyle=\bfseries\color{Blue},tabsize=2,% },% #2 } %%------FakeTerm %couleurs (inspirées par termsim !) \definecolor{PLmpurple}{RGB}{48,10,36} \definecolor{PLmgray}{RGB}{70,72,67} \definecolor{PLogray}{RGB}{148,147,141} \definecolor{PLoorange}{RGB}{233,101,56} \definecolor{PLterminal}{RGB}{80,78,70} \definecolor{PLlinux}{RGB}{0,39,51} \definecolor{PLwinblue}{HTML}{1883D7} \definecolor{PLosxgray}{HTML}{D8D6D9} %WINDOWS \tcbset{PLfaketermwin/.style={% enhanced,boxrule=1pt,sharp corners,before skip=12pt,after skip=12pt,% colframe=PLwinblue,colback=black,colbacktitle=white,colupper=white,coltitle=black,% titlerule=0.4pt,left=2pt,top=2pt,bottom=2pt,right=2pt,middle=2pt,% fonttitle=\bfseries\small\sffamily } } \setKVdefault[fakeTERMwin]{Titre={Terminal Windows}} \newcommand\PLcommandeswin{% \begin{tikzpicture}[thick,scale=0.66] \draw (0,0)--(1em,0) ; \draw (2em,0) rectangle (3em,1em) ; \draw (4em,1em)--(5em,0) (4em,0)--(5em,1em) ; \end{tikzpicture}% } \newcommand\termwintitre[1][]{% \restoreKV[fakeTERMwin] \setKV[fakeTERMwin]{#1} \begin{tblr}{colsep=0pt,rowsep=0pt,width=\linewidth,colspec={X[l]r}} {\footnotesize\faTerminal}~~\useKV[fakeTERMwin]{Titre} & \PLcommandeswin \\ % \end{tblr} } \DeclareTCBListing{TerminalWin}{ O{\linewidth} m !O{} }{% puis {Titre=...} puis [option] PLfaketermwin,title={\termwintitre[#2]},% listing only,listing engine=listings,% listing options={style=tcblatex,language={},basicstyle=\footnotesize\ttfamily},% width=#1,#3 } %LINUX \newcommand{\PLUbuntuWhite}{% \begin{tikzpicture}[thick,anchor=base,baseline] \filldraw[PLmgray] (0,0.25em) circle[radius=0.5em] ; \end{tikzpicture}% } \newcommand{\PLUbuntuMin}{% \begin{tikzpicture}[thick,anchor=base,baseline] \filldraw[color=PLogray!50!white] (0,0.25em) circle[radius=0.5em]; \draw[PLterminal](-0.35em,0.25em)--(0.35em,0.25em); \end{tikzpicture}% } \newcommand{\PLUbuntuClose}{% \begin{tikzpicture}[thick,anchor=base,baseline] \filldraw[color=PLoorange!70!white] (0,0.25em) circle[radius=0.5em]; \draw[PLterminal] (-0.32em,-0.07em)--(0.32em,0.57em); \draw[PLterminal] (-0.32em,0.57em)--(0.32em,-0.07em); \end{tikzpicture}% } \newcommand{\PLUbuntuMax}{% \begin{tikzpicture}[thick,anchor=base,baseline] \filldraw[color=PLogray!50!white] (0,0.25em) circle[radius=0.5em]; \draw[PLterminal] (-0.32em,0.5em) rectangle (0.32em,0); \end{tikzpicture}% } \tcbset{PLtermlinux/.style={% enhanced,boxrule=1pt,arc=4pt,before skip=12pt,after skip=12pt,% colframe=PLmgray,colback=PLmpurple,colbacktitle=PLmgray,colupper=white,coltitle=white,% titlerule=0.4pt,left=2pt,top=2pt,bottom=2pt,right=2pt,middle=2pt,% fonttitle=\bfseries\small\sffamily } } \setKVdefault[fakeTERMnux]{Titre={Terminal UNiX}} \newcommand\termnuxtitre[1][]{% \restoreKV[fakeTERMnux] \setKV[fakeTERMnux]{#1} \begin{tblr}{colsep=0pt,rowsep=0pt,width=\linewidth,colspec={lX[c]r}} \PLUbuntuWhite~~\PLUbuntuWhite~~\PLUbuntuWhite & \vphantom{p}\useKV[fakeTERMnux]{Titre} & \PLUbuntuMin~~\PLUbuntuMax~~\PLUbuntuClose \\ \end{tblr} } \DeclareTCBListing{TerminalUnix}{ O{\linewidth} m !O{} }{% puis {Titre=...} puis [option] PLtermlinux,title={\termnuxtitre[#2]},% listing only,listing engine=listings,% listing options={style=tcblatex,language={},basicstyle=\footnotesize\ttfamily},% width=#1,#3 } %OSX \tcbset{PLfaketermosx/.style={% enhanced,boxrule=1pt,arc=6pt,before skip=12pt,after skip=12pt,% colframe=PLosxgray,colback=lightgray!15,colbacktitle=PLosxgray,colupper=black,coltitle=black,% titlerule=0.4pt,left=2pt,top=2pt,bottom=2pt,right=2pt,middle=2pt,% fonttitle=\bfseries\small\sffamily } } \newcommand{\PLOSXRed}{% \begin{tikzpicture}[thick,anchor=base,baseline] \filldraw[red] (0,0.25em) circle[radius=0.45em] ; \end{tikzpicture}% } \newcommand{\PLOSXOrange}{% \begin{tikzpicture}[thick,anchor=base,baseline] \filldraw[orange] (0,0.25em) circle[radius=0.45em] ; \end{tikzpicture}% } \newcommand{\PLOSXGreen}{% \begin{tikzpicture}[thick,anchor=base,baseline] \filldraw[ForestGreen] (0,0.25em) circle[radius=0.45em] ; \end{tikzpicture}% } \newcommand{\PLOSXLG}{% \begin{tikzpicture}[thick,anchor=base,baseline] \filldraw[PLosxgray] (0,0.25em) circle[radius=0.45em] ; \end{tikzpicture}% } \setKVdefault[fakeTERMosx]{titre={Terminal OSX}} \newcommand\termosxtitre[1][]{% \restoreKV[fakeTERMosx] \setKV[fakeTERMosx]{#1} \begin{tblr}{colsep=0pt,rowsep=0pt,width=\linewidth,colspec={lX[c]r}} \PLOSXRed~\PLOSXOrange~\PLOSXGreen & \vphantom{p}\useKV[fakeTERMosx]{Titre} & \PLOSXLG~\PLOSXLG~\PLOSXLG \\ \end{tblr} } \DeclareTCBListing{TerminalOSX}{ O{\linewidth} m !O{} }{% puis {Titre=...} puis [option] PLfaketermosx,title={\termosxtitre[#2]},% listing only,listing engine=listings,% listing options={style=tcblatex,language={},basicstyle=\footnotesize\ttfamily},% width=#1,#3 } \endinput