From 4f7782c045c8ec12175a97e5b11b8f3e1195d52f Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 16 Feb 2022 21:18:00 +0000 Subject: proflycee (16feb22) git-svn-id: svn://tug.org/texlive/trunk@62045 c570f23f-e606-0410-a88d-b1316a301751 --- .../doc/latex/proflycee/ProfLycee-doc.pdf | Bin 362084 -> 426042 bytes .../doc/latex/proflycee/ProfLycee-doc.tex | 452 ++++++++++++--------- .../texmf-dist/tex/latex/proflycee/ProfLycee.sty | 292 ++++++++++++- 3 files changed, 551 insertions(+), 193 deletions(-) diff --git a/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.pdf b/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.pdf index 28ebf75edbe..e5c9cd11562 100644 Binary files a/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.pdf and b/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.pdf differ diff --git a/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.tex b/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.tex index c328b4035f2..b513bc9a738 100644 --- a/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.tex +++ b/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.tex @@ -1,6 +1,5 @@ -% !TeX TXS-program:compile = txs:///pythonpdfse - \documentclass{article} +\usepackage[french]{babel} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage[upright]{fourier} @@ -8,9 +7,7 @@ \renewcommand\ttdefault{lmtt} \usepackage[scaled=0.875]{cabin} \usepackage{ProfLycee} -\usepackage[most]{tcolorbox} \usetikzlibrary{hobby} -\usepackage[french]{babel} \usepackage{siunitx} \usepackage{graphics} \usepackage{hvlogos} @@ -21,40 +18,6 @@ \usepackage{hyperref} \hypersetup{pdfborder=0 0 0} -\usepackage{listings} - -\lstset{% - classoffset = 0,% - language = [LaTeX]TeX,% - basicstyle = \ttfamily,% - breaklines = true,% - commentstyle =\color{gray},% - columns=fullflexible,% - keepspaces, - frame=tb,% - %texcsstyle=*\color{blue},%pour colorer la contre-oblique - alsoletter={\\},% - keywordstyle=\color{blue},% - emph=[1]{tkz,ProfLycee,ProfCollege},% - emphstyle=[1]{\color{blue}},% - emph=[3]{beamer},% - emphstyle=[3]{\color{red}},% - classoffset=1,% - keywords={Ecran},% - keywordstyle=\color{green},% - classoffset=0,% - literate=*{[}{{\textcolor{orange}{[}}}{1} - {]}{{\textcolor{orange}{]}}}{1} - {\{}{\textcolor{amber}{\{}}{1} - {\}}{\textcolor{amber}{\}}}{1} - {\&}{\textcolor{red}{\&}}{1} - {\\[}{{\textcolor{purple}{\textbackslash[}}}{2} - {\\]}{{\textcolor{purple}{\textbackslash]}}}{2} - {$}{{\textcolor{purple}{\$}}}{1}%$ - {_}{{\textcolor{purple}{\_}}}{1}% - {^}{{\textcolor{purple}{\^{}}}}{1}%, -} - \usepackage{minted} \sisetup{locale=FR} \usepackage{geometry} @@ -172,7 +135,7 @@ {\ttfamily c pierquet -- at -- outlook . fr} \end{tabular} } -\date{Version 1.0.2 -- 13 Février 2022} +\date{Version 1.0.5 -- 16 Février 2022} \newcommand\Cle[1]{{\bfseries\sffamily\textlangle #1\textrangle}} @@ -189,7 +152,7 @@ \noindent Quelques commandes (dans des environnements \TikZ) pour faciliter l'utilisation de \LaTeX{} pour les enseignants de mathématiques en lycée.\\ -\bigskip +\newpage \tableofcontents @@ -205,7 +168,20 @@ On peut le voir comme un (maigre) complément à \ctex{ProfCollege}, et je préc \medskip -L'idée est donc de conserver l'idée de \Cle{Clés} qui sont : +Il se charge, dans le préambule, par \ctex{\textbackslash usepackage\{ProfLycee\}}. + +\begin{minted}[frame=lines,framesep=2mm,bgcolor=LightGray,fontsize=\footnotesize,tabsize=2]{tex} +\documentclass{article} +\usepackage[french]{babel} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{ProfLycee} +... +\end{minted} + +\medskip + +L'idée est de conserver l'idée de \Cle{Clés} qui sont : % \begin{itemize} \item modifiables ; @@ -633,7 +609,7 @@ Ainsi, le code : \paramCF[titre=true,couleurcmd=olive,couleurres=orange] \ligneCF{COMMANDE 1}{RÉSULTAT 1} \ligneCF{\texttt{(x+1)\chap2}}{$\mathtt{x^2+2x+1}$} - \ligneCF[HC=1,HR=1]{\textsf{Dérivée[(x+5)*exp(-0.1*x)]}}{$\mathsf{\rightarrow (0.5-0.1*x)*exp(-0.1*x)}$} + \ligneCF[hc=1,hr=1.25]{\textsf{Dérivée[(x+5)*exp(-0.1*x)]}}{$\mathsf{\rightarrow (0.5-0.1*x)*exp(-0.1*x)}$} \end{tikzpicture} \end{minted} @@ -705,7 +681,13 @@ Le \textsf{package} \ctex{pythontex} permet d'insérer et d'exécuter du code Py \item charger du code python, et éventuellement l'utiliser dans la console. \end{itemize} -\subsection{Présentation de code Python} +\medskip + +\textbf{Attention : }il faut dans ce cas une compilation en plusieurs parties, comme par exemple \textsf{pdflatex puis pythontex puis pdflatex} ! + +Voir par exemple \url{http://lesmathsduyeti.fr/fr/informatique/latex/pythontex/} ! + +\subsection{Présentation de code Python via pythontex} L'environnement \ctex{\textbackslash envcodepythontex} (chargé par \ctex{ProfLycee}, avec l'option \textit{autogobble}) permet de présenter du code python, dans une \ctex{colorbox} avec un style particulier. @@ -763,6 +745,70 @@ produira : \newpage +\subsection{Présentation de code Python via minted} + +Pour celles et ceux qui ne sont pas à l'aise avec le \textsf{package} \ctex{pythontex} et notamment sa spécificité pour compiler, il existe le \textsf{package} \ctex{minted} qui permet de présenter du code, et notamment python (il nécessite quand même une compilation avec l'option \ctex{--shell-escape} ou \ctex{-write18}). + +\medskip + +L'environnement \ctex{\textbackslash envcodepythonminted} permet de présenter du code python, dans une \ctex{colorbox} avec un style (\textit{minted}) particulier. + +\begin{minted}[frame=lines,framesep=2mm,bgcolor=LightGray,fontsize=\footnotesize,tabsize=2]{tex} +\begin{envcodepythonminted}(*)[largeur][options] +... +\end{envcodepythonminted} +\end{minted} + +Plusieurs \Cle{arguments} (optionnels) sont disponibles : + +\begin{itemize} + \item la version \textit{étoilée} qui permet de pas afficher les numéros de lignes ; + \item le premier argument optionnel concerne la \Cle{largeur} de la \ctex{tcbox} ;\hfill{}défaut \Cle{12cm} + \item le second argument optionnel concerne les \Cle{options} de la \ctex{tcbox} en \textit{langage tcolorbox}.\hfill{}défaut \Cle{vide} +\end{itemize} + +\medskip + +Ainsi le code : + +\begin{minted}[frame=lines,framesep=2mm,bgcolor=lightgray!5,fontsize=\footnotesize,tabsize=4]{tex} +\begin{envcodepythonminted}[12cm][center] + #environnement Python(minted) centré avec numéros, de largeur 12cm + def f(x) : + return x**2 +\end{envcodepythonminted} +\end{minted} + +produira : + +\begin{envcodepythonminted}[12cm][center] + #environnement Python(minted) centré avec numéros + def f(x) : + return x**2 +\end{envcodepythonminted} + +\medskip + +Et le code : + +\begin{minted}[frame=lines,framesep=2mm,bgcolor=lightgray!5,fontsize=\footnotesize,tabsize=4]{tex} +\begin{envcodepythonminted}*[0.8\linewidth][] + #environnement Python(minted) sans numéro, de largeur 0.8\linewidth + def f(x) : + return x**2 +\end{envcodepythonminted} +\end{minted} + +produira : + +\begin{envcodepythonminted}*[0.8\linewidth][] + #environnement Python(minted) sans numéro, de largeur 0.8\linewidth + def f(x) : + return x**2 +\end{envcodepythonminted} + +\newpage + \subsection{Console d'exécution Python} \ctex{pythontex} permet également de \textit{simuler} (en exécutant également !) du code python dans une \textit{console}. @@ -833,157 +879,183 @@ Cela peut donner -- en tout cas -- des idées de personnalisation en ayant une b \newpage +\section{Pseudo-Code} + +\subsection{Introduction} + +Le \textsf{package} \ctex{listings} permet d'insérer et de présenter du code, et avec \ctex{tclorobx} on peut obtenir une présentation similaire à celle du code Python. Pour le moment la \textit{philosophie} de la commande est un peu différente de celle du code python, avec son système de \Cle{Clés}, car l'environnement \ctex{tcblisting} est un peu différente\ldots + +\subsection{Présentation de Pseudo-Code} + +L'environnement \ctex{\textbackslash envpseudocode} (chargé par \ctex{ProfLycee} permet de présenter du (pseudo-code) dans une \ctex{tcolorbox}. + +\smallskip + +De plus, le package \ctex{listings} avec \ctex{tcolorbox} ne permet pas de gérer le paramètre \textit{autogobble}, donc il faudra être vigilant quant à la position du code (pas de tabulation en fait\ldots) + + +\begin{minted}[frame=lines,framesep=2mm,bgcolor=LightGray,fontsize=\footnotesize,tabsize=2]{tex} +\begin{envpseudocode}(*)[largeur][options] +%attention à l'indentation, gobble ne fonctionne pas... +... +\end{envpseudocode} +\end{minted} + +Plusieurs \Cle{arguments} (optionnels) sont disponibles : + +\begin{itemize} + \item la version \textit{étoilée} qui permet de pas afficher les numéros de lignes ; + \item le premier argument optionnel concerne la \Cle{largeur} de la \ctex{tcbox} ;\hfill{}défaut \Cle{12cm} + \item le second argument optionnel concerne les \Cle{options} de la \ctex{tcbox} en \textit{langage tcolorbox}.\hfill{}défaut \Cle{vide} +\end{itemize} + +\medskip + +Ainsi le code : + +\begin{minted}[frame=lines,framesep=2mm,bgcolor=lightgray!5,fontsize=\footnotesize,tabsize=4]{tex} +\begin{envpseudocode} +%non centré, de largeur par défaut (12cm) avec lignes +List = [...] # à déclarer au préalable +n = longueur(List) +Pour i allant de 0 à n-1 Faire + Afficher(List[i]) +FinPour +\end{envpseudocode} +\end{minted} + +produira : + +\begin{envpseudocode} +List = [...] # à déclarer au préalable +n = longueur(List) +Pour i allant de 0 à n-1 Faire + Afficher(List[i]) +FinPour +\end{envpseudocode} + +\medskip + +Et le code : + +\begin{minted}[frame=lines,framesep=2mm,bgcolor=lightgray!5,fontsize=\footnotesize,tabsize=4]{tex} +\begin{envpseudocode}*[15cm][center] +%centré, de largeur 15cm sans ligne +List = [...] # à déclarer au préalable +n = longueur(List) +Pour i allant de 0 à n-1 Faire + Afficher(List[i]) +FinPour +\end{envpseudocode} +\end{minted} + +produira : + +\begin{envpseudocode}*[15cm][center] +List = [...] # à déclarer au préalable +n = longueur(List) +Pour i allant de 0 à n-1 Faire + Afficher(List[i]) +FinPour +\end{envpseudocode} + +\newpage + +\section{Terminal Windows/UNiX/OSX} + +\subsection{Introduction} + +L'idée des \textsf{commandes} suivantes est de permettre de simuler des fenêtres de \textsf{Terminal}, que ce soit pour Windows, Ubuntu ou OSX. + +\smallskip + +Le \textsf{contenu} est géré par le package \ctex{listings}, sans langage particulier, et donc sans coloration syntaxique particulière. + +\smallskip + +Comme pour le pseudo-code, pas d'\textsf{autogobble}, donc commandes à aligner à gauche ! + +\subsection{Commandes} + +Les (trois) environnements disponibles sont : + +\begin{minted}[frame=lines,framesep=2mm,bgcolor=lightgray!5,fontsize=\footnotesize,tabsize=4]{tex} +\begin{PLtermwin}[largeur]{titre=...}[options] +... + +\begin{PLtermunix}[largeur]{titre=...}[options] +... + +\begin{PLtermosx}[largeur]{titre=...}[options] +... +\end{minted} + +Peu d'options pour ces commandes : + +\begin{itemize} + \item le premier, optionnel, est la \Cle{largeur} de la \ctex{tcbox} ;\hfill{}défaut \Cle{\textbackslash linewidth} + \item le deuxième, mandataire, permet de spécifier le titre par la clé \Cle{titre}.\hfill{}défaut \Cle{Terminal Windows/UNiX/OSX} + \item le troisième, optionnel, concerne les \Cle{options} de la \ctex{tcbox} en \textit{langage tcolorbox}.\hfill{}défaut \Cle{vide} +\end{itemize} + +\medskip + +Ainsi le code : + +\begin{minted}[frame=lines,framesep=2mm,bgcolor=lightgray!5,fontsize=\footnotesize,tabsize=4]{tex} +\begin{PLtermwin}[15cm]{} %largeur 15cm avec titre par défaut +Microsoft Windows [version 10.0.22000.493] +(c) Microsoft Corporation. Tous droits réservés. + +C:\Users\test>ping -c 2ctan.org +Envoi d'une requête 'ping' sur ctan.org [5.35.249.60] avec 32 octets de données : +\end{PLtermwin} + +\begin{PLtermunix}[12cm]{titre=Terminal Ubuntu}[center] %12cm, avec titre modifié et centré +test@DESKTOP:~$ ping -c 2 ctan.org +PING ctan.org (5.35.249.60) 56(84) bytes of data. +\end{PLtermunix} + +\begin{PLtermosx}[0.5\linewidth]{titre=Terminal MacOSX}[flush right] %1/2-largeur et titre modifié et droite +[test@server]$ ping -c 2 ctan.org +PING ctan.org (5.35.249.60) 56(84) bytes of data. +\end{PLtermosx} +\end{minted} + +produira : + +\begin{PLtermwin}[15cm]{} +Microsoft Windows [version 10.0.22000.493] +(c) Microsoft Corporation. Tous droits réservés. + +C:\Users\test>ping -c 2ctan.org +Envoi d'une requête 'ping' sur ctan.org [5.35.249.60] avec 32 octets de données : +\end{PLtermwin} + +\begin{PLtermunix}[12cm]{titre=Terminal Ubuntu}[center] +test@DESKTOP:~$ ping -c 2 ctan.org +PING ctan.org (5.35.249.60) 56(84) bytes of data. +\end{PLtermunix} + +\begin{PLtermosx}[0.5\linewidth]{titre=Terminal MacOSX}[flush right] +[test@server]$ ping -c 2 ctan.org +PING ctan.org (5.35.249.60) 56(84) bytes of data. +\end{PLtermosx} + +\newpage + \section{Historique} -{\small \bverb|v1.0.2| : Ajout des environnements pour Python +{\small \bverb|v1.0.5| : Ajout d'un environnement pour Python (minted) -{\small \bverb|v1.0.1| : Modification mineure liée au chargement de \ctex{xcolor} +{\small \bverb|v1.0.4| : Ajout des environnements pour Terminal (win, osx, unix) -{\small \bverb|v1.0 | : Version initiale} +{\small \bverb|v1.0.3| : Ajout des environnements pour PseudoCode -%\newpage -% -%\section{Codes du package splinetikz.sty} -% -%\begin{minted}[frame=lines,framesep=2mm,bgcolor=LightGray,fontsize=\footnotesize,tabsize=2]{tex} -%\NeedsTeXFormat{LaTeX2e} -%\ProvidesPackage{splinetikz}[2022/02/10 - v1.0 - Splines cubiques, en TikZ] -% -%%------Packages utiles -%\RequirePackage[dvipsnames,table]{xcolor} -%\RequirePackage{tikz} -%\RequirePackage{pgf,pgffor,pgfplots} -%\pgfplotsset{compat=1.18} -%\RequirePackage{ifthen} -%\RequirePackage{xkeyval} -%\RequirePackage{xfp} -%\RequirePackage{xstring} -%\RequirePackage{simplekv} -%\RequirePackage{listofitems} -%\RequirePackage{xintexpr} -%\usetikzlibrary{decorations.pathreplacing} -%\usetikzlibrary{decorations.markings} -%\usetikzlibrary{arrows.meta} -%\end{minted} -% -%\begin{minted}[frame=lines,framesep=2mm,bgcolor=LightGray,fontsize=\footnotesize,tabsize=2]{tex} -%%------commande utile pour extraire des infos d'une liste -%\newcommand\extractcoeff[2]{% #1=liste & #2=numero -% \setsepchar{§}% -% \readlist\lcoeffs{#1} -% \ifnum \lcoeffslen=1 -% \def\COEFFA{#1} -% \def\COEFFB{#1} -% \else -% \itemtomacro\lcoeffs[#2]\COEFF -% \IfSubStr{\COEFF}{/}% -% {\StrCut{\COEFF}{/}{\COEFFA}{\COEFFB}}% -% {\def\COEFFA{\COEFF}\def\COEFFB{\COEFF}} -% \fi -%} -%\end{minted} -% -%\begin{minted}[frame=lines,framesep=2mm,bgcolor=LightGray,fontsize=\footnotesize,tabsize=2]{tex} -%%------tangente(s) en TikZ, avec point/dérivée ou liste points/dérivées -%\defKV[tgte]{% -% liste=\def\TGTliste{#1},% -% width=\def\TGTepaisseur{#1},% -% couleur=\def\TGTcouleur{#1},% -% xl=\def\TGTXL{#1},% -% xr=\def\TGTXR{#1},% -% style=\def\TGTstyle{#1},% -% point=\def\TGTnumpt{#1} -%} -% -%\setKVdefault[tgte]{ -% liste=,% -% width=1.25pt,% -% couleur=red,% -% xl=0.5,xr=0.5,% -% style=,% -% point=1 -%} -% -%\newcommand\tangentetikz[1][]{% -% \useKVdefault[tgte]% -% \setKV[tgte]{#1}% on paramètres les nouvelles clés et on les simplifie -% \setsepchar[.]{§./}% -% \readlist\TGTlistepoints\TGTliste -% \itemtomacro\TGTlistepoints[\TGTnumpt,1]\xa -% \itemtomacro\TGTlistepoints[\TGTnumpt,2]\ya -% \itemtomacro\TGTlistepoints[\TGTnumpt,3]\fprimea -% \def\TGTDEB{\fpeval{\xa-\TGTXL}}\def\TGTFIN{\fpeval{\xa+\TGTXR}}% -% \draw[line width=\TGTepaisseur,\TGTcouleur,domain=\TGTDEB:\TGTFIN,\TGTstyle] plot (\x,{\fprimea*(\x-\xa)+\ya}) ;% -%} -%\end{minted} -% -%\begin{minted}[frame=lines,framesep=2mm,bgcolor=LightGray,fontsize=\footnotesize,tabsize=2,breaklines]{tex} -%%------splines en tikz avec ..controls -%\defKV[spline]{% -% liste=\def\SPLliste{#1},% -% width=\def\SPLepaisseur{#1},% -% couleur=\def\SPLcouleur{#1},% -% coeffs=\def\SPLcoeffs{#1},% -% couleurpoints=\def\SPLcouleurpoints{#1},% -% taillepoints=\def\SPLtaillepoints{#1},% -% style=\def\SPLstyle{#1} -%} -% -%\setKVdefault[spline]{% -% liste=,% -% width=1.25pt,% -% couleur=red,% -% coeffs=3,% -% couleurpoints=black,% -% taillepoints=2pt,% -% affpoints=false,% -% style= -%} -% -%\newcommand\splinetikz[1][]{% -% \useKVdefault[spline] -% \setKV[spline]{#1}% on paramètres les nouvelles clés et on les simplifie -% %on lit la liste des points/nbderivés et on stocke dans \listepoints -% \setsepchar[.]{§./} -% \readlist\SPLlistepoints\SPLliste -% \def\SPLnbsplines{\inteval{\SPLlistepointslen-1}} -% %si uniquement deux points, pas de boucle... -% \ifnum \SPLlistepointslen=2 -% %extraction des coeffs de compensation -% \extractcoeff{\SPLcoeffs}{1} -% %extraction des coordonnées -% \itemtomacro\SPLlistepoints[1,1]\xa -% \itemtomacro\SPLlistepoints[1,2]\ya -% \itemtomacro\SPLlistepoints[1,3]\fprimea -% \itemtomacro\SPLlistepoints[2,1]\xb -% \itemtomacro\SPLlistepoints[2,2]\yb -% \itemtomacro\SPLlistepoints[2,3]\fprimeb -% \draw[line width=\SPLepaisseur,\SPLcouleur,\SPLstyle] (\xa,\ya) ..controls +({atan \fprimea}:{(\xb-\xa)/\COEFFA}) and +({-180 + atan \fprimeb}:{(\xb-\xa)/\COEFFA}).. (\xb,\yb) ;% -% %sinon on construit bout par bout ! -% \else -% \foreach \i in {1,2,...,\SPLnbsplines}{ -% %extraction des coeffs de compensation -% \extractcoeff{\SPLcoeffs}{\i} -% \def\j{\inteval{\i+1}} -% \itemtomacro\SPLlistepoints[\i,1]\xa -% \itemtomacro\SPLlistepoints[\i,2]\ya -% \itemtomacro\SPLlistepoints[\i,3]\fprimea -% \itemtomacro\SPLlistepoints[\j,1]\xb -% \itemtomacro\SPLlistepoints[\j,2]\yb -% \itemtomacro\SPLlistepoints[\j,3]\fprimeb -% \draw[line width=\SPLepaisseur,\SPLcouleur,\SPLstyle] (\xa,\ya) ..controls +({atan \fprimea}:{(\xb-\xa)/\COEFFA}) and +({-180 + atan \fprimeb}:{(\xb-\xa)/\COEFFB}).. (\xb,\yb) ;% -% } -% \fi -% \ifboolKV[spline]{affpoints}%on affiche les points de contrôle -% {% -% \foreach \i in {1,2,...,\SPLlistepointslen}{% -% \itemtomacro\SPLlistepoints[\i,1]\xa -% \itemtomacro\SPLlistepoints[\i,2]\ya -% \filldraw[\SPLcouleurpoints] (\xa,\ya) circle[radius=\SPLtaillepoints] ;% -% } -% } -% {} -%} -%\end{minted} +{\small \bverb|v1.0.2| : Ajout des environnements pour Python (pythontex) + +{\small \bverb|v1.0.1| : Modification mineure liée au chargement de \ctex{xcolor} + +{\small \bverb|v1.0 | : Version initiale} \end{document} \ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty b/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty index ceaf2ef1911..89388888687 100644 --- a/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty +++ b/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty @@ -3,22 +3,29 @@ % or later, see http://www.latex-project.org/lppl.txtf \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{ProfLycee}[2022/02/13 - v1.0.2 - Aide pour l'utilisation de LaTeX en lycée] +\ProvidesPackage{ProfLycee}[2022/02/16 - v1.0.5 - Aide pour l'utilisation de LaTeX en lycée] +% 1.0.5 Environnement code python avec minted +% 1.0.4 Environnement pour simuler terminal windows & linux +% 1.0.3 Environnement pour présenter du pseudocode % 1.0.2 Environnement pour présenter du code python (avec pythontex) % 1.0.1 Modif mineure du chargement de xcolor (compatibilité avec d'autres packages notamment...) % 1.0 Version initiale %------Packages utiles \RequirePackage[table,svgnames]{xcolor}%Gestion des couleurs +\RequirePackage{amssymb} \RequirePackage{tikz} \RequirePackage{pgf,pgffor} \RequirePackage{ifthen} +\RequirePackage{environ} +\RequirePackage{xparse} \RequirePackage{xkeyval} \RequirePackage{xfp} \RequirePackage{xstring} \RequirePackage{simplekv} \RequirePackage{listofitems} \RequirePackage{xintexpr} +\RequirePackage{tabularray} \RequirePackage{fontawesome5} %librairies tikz \usetikzlibrary{calc} @@ -248,7 +255,6 @@ {} } - %=========CONSOLEPYTHON=========== OK !! \defKV[envpythonconsole]{% largeur=\def\CSPYlargeur{#1},% @@ -309,7 +315,7 @@ top=2pt,bottom=1pt,left=6pt,right=6pt }, fonttitle=\color{ForestGreen}\itshape\ttfamily\footnotesize, - title={\scriptsize\faPython}\:Code Python\vphantom{/}, + title={\scriptsize\faPython}\:Code Python\vphantom{p}, watermark text={\faPython},watermark opacity=0.175,watermark zoom=0.50, } } @@ -358,4 +364,284 @@ \verbcenterpost } +%=========PYTHONMINTED========= OK !! +\tcbuselibrary{minted} + +\tcbset{pytmintedno/.style={% + listing engine=minted,minted style=colorful, + minted language=python,listing only, + minted options={tabsize=4,fontsize=\small,autogobble}, + } +} + +\tcbset{pytminted/.style={% + listing engine=minted,minted style=colorful, + minted language=python,listing only, + minted options={tabsize=4,fontsize=\small,autogobble,xleftmargin=16pt,linenos,numbersep=10pt}, + } +} + +\DeclareTCBListing{envcodepythonminted}{ s O{12cm} O{} }{% étoilée sans numéro, taille puis option... + \IfBooleanTF{#1}{pytmintedno}{pytminted}, + enhanced,width=#2,#3, + colframe=Green,colback=ForestGreen!5,% + boxrule=1.25pt, + sharp corners=downhill,arc=12pt, + before skip=12pt,after skip=12pt,% + leftupper=8pt,top=10pt,bottom=4pt,rightupper=4pt,% + 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 + }, + fonttitle=\color{ForestGreen}\itshape\ttfamily\footnotesize, + title={\scriptsize\faPython}\:Code Python\vphantom{y}, + watermark text={\faPython},watermark opacity=0.175,watermark zoom=0.50, + before upper = \renewcommand{\theFancyVerbLine}{\scriptsize\ttfamily\color{Green}\arabic{FancyVerbLine}} +} + +%=========PSEUDOCODE=========== OK !! +\ifluatex + \tcbuselibrary{listings} + \lstdefinelanguage{langnat}{% + keywords={}, + inputencoding=utf8, + comment=[l]{}} +\else + \tcbuselibrary{listingsutf8} + \lstdefinelanguage{langnat}{% + keywords={}, + inputencoding=utf8/latin1, + comment=[l]{}} +\fi + +%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, + %showtabs=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]", + %showtabs=true, + escapeinside={(*}{*)} +} + +%style tcbox pseudocode avec bannière hautdroite +\tcbset{stylepseudocodePL/.style={% + %fontupper=\small\sffamily,% + enhanced,boxrule=1.25pt,sharp corners=downhill,arc=12pt, + before skip=12pt,after skip=12pt,leftupper=10pt,top=8pt,bottom=2pt,rightupper=4pt,% + 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{envpseudocode}{ s O{12cm} O{} }{% étoilée sans numéro, taille 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=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}% + } +} + +%============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{PLtermwin}{ O{\linewidth} m !O{} }{%[taille] 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{PLtermunix}{ O{\linewidth} m !O{} }{%[taille] 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{PLtermosx}{ O{\linewidth} m !O{} }{%[taille] 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 \ No newline at end of file -- cgit v1.2.3