diff options
author | Norbert Preining <norbert@preining.info> | 2024-03-31 03:00:49 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2024-03-31 03:00:49 +0000 |
commit | d1109269e156ddc67b67f942a2e5aad3b37a40a6 (patch) | |
tree | 41f9af43bf0904dcbac73736c58ace6cc5e28f36 /macros/latex/contrib | |
parent | 16a9aadc4ae32ef5d7f20d62a3606b05e20f3405 (diff) |
CTAN sync 202403310300
Diffstat (limited to 'macros/latex/contrib')
29 files changed, 1837 insertions, 549 deletions
diff --git a/macros/latex/contrib/customenvs/doc/customenvs-doc-en.pdf b/macros/latex/contrib/customenvs/doc/customenvs-doc-en.pdf Binary files differindex f8c88d906e..c4a06de15b 100644 --- a/macros/latex/contrib/customenvs/doc/customenvs-doc-en.pdf +++ b/macros/latex/contrib/customenvs/doc/customenvs-doc-en.pdf diff --git a/macros/latex/contrib/customenvs/doc/customenvs-doc-en.tex b/macros/latex/contrib/customenvs/doc/customenvs-doc-en.tex index c4727a7422..4bc63e0c5f 100644 --- a/macros/latex/contrib/customenvs/doc/customenvs-doc-en.tex +++ b/macros/latex/contrib/customenvs/doc/customenvs-doc-en.tex @@ -34,8 +34,8 @@ \usepackage[margin=1.5cm]{geometry} \setlength{\parindent}{0pt} -\def\TPversion{0.1.2} -\def\TPdate{17/03/2024} +\def\TPversion{0.1.3} +\def\TPdate{30/03/2024} \usepackage{tcolorbox} \sethlcolor{lightgray!25} \NewDocumentCommand\MontreCode{ m }{% @@ -111,7 +111,9 @@ \section{History} -\verb|v0.1.1|~:~~~~Pencil of skills +\verb|v0.1.3|~:~~~~Environment for exercise(s) (in french doc) + +\verb|v0.1.2|~:~~~~Pencil of skills \verb|v0.1.1|~:~~~~Skills table (only french for the moment...) diff --git a/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.pdf b/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.pdf Binary files differindex 2d894043ad..c81bd43b7f 100644 --- a/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.pdf +++ b/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.pdf diff --git a/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.tex b/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.tex index 5f05be2485..650bb37932 100644 --- a/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.tex +++ b/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.tex @@ -39,8 +39,8 @@ \usepackage[margin=1.5cm]{geometry} \setlength{\parindent}{0pt} -\def\TPversion{0.1.2} -\def\TPdate{17 mars 2024} +\def\TPversion{0.1.3} +\def\TPdate{30 mars 2024} \usepackage[most]{tcolorbox} \tcbuselibrary{listingsutf8} \newtcblisting{DemoCode}[1]{% @@ -66,10 +66,10 @@ keywordstyle={\color{violet}},% classoffset=2,% alsoletter={-},% - morekeywords={\ReponsesQCM,MultiCols,\CreerListeItems,\ListeChoixItems,\TableauCompetences,\CrayonDeCompetences},% + morekeywords={\ReponsesQCM,MultiCols,\CreerListeItems,\ListeChoixItems,\TableauCompetences,\CrayonDeCompetences,\StyleEnvtExo,\StyleEnvtExoDefaut,\TitreExo,\ipsum},% 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},% + 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},% keywordstyle={\color{orange}} },% #1 @@ -149,6 +149,8 @@ \section{Historique} +\verb|v0.1.3|~:~~~~Environnement/commande pour des exercices, avec personnalisation(s) + \verb|v0.1.2|~:~~~~Crayon de compétences \verb|v0.1.1|~:~~~~Tableaux de compétences @@ -784,4 +786,194 @@ L'argument, obligatoire et entre \MontreCode{\{...\}} est la liste des catégori {Chercher/Compétence 1\\Compétence 2,Modéliser/{Compétence 1\\Compétence 2}} \end{DemoCode} +\pagebreak + +\section{Titre d'exercices} + +\subsection{Principe et définition du style global} + +L'idée est de proposer une commande ou un environnement pour afficher, \textit{facilement}, un \textit{titre} pour les exercices d'une évaluation ou d'une fiche d'exercices. + +\smallskip + +Les éléments personnalisables sont : + +\begin{itemize} + \item le libellé via la clé \MontreCode{[Libelle]}, qui vaut \MontreCode{Exercice~} par défaut ; + \item la couleur via la clé \MontreCode{[Couleur]}, qui vaut \MontreCode{blue!50!black} par défaut ; + \item la police via la clé \MontreCode{[Police]}, qui vaut \MontreCode{\textbackslash bfseries\textbackslash LARGE\textbackslash sffamily} par défaut ; + \item l'épaisseur du trait (éventuel) via la clé \MontreCode{[EpTrait]}, qui vaut \MontreCode{1.1pt} par défaut. +\end{itemize} + +L'utilisateur peut personnaliser \textit{globalement} les éléments précédents, les styles seront dans ce cas propagés à tous les environnements ou à toutes les commandes créant les titres. + +\begin{DemoCode}{listing only} +%personnalisation(s) +\StyleEnvtExo[clés] + +%paramètres par défaut +\StyleEnvtExoDefaut +\end{DemoCode} + +Une fois les styles \textit{choisis}, il suffit d'utiliser la commande d'environnement ou la commande \textit{directe} : + +\begin{DemoCode}{} +%exo1, environnement par défaut +\begin{EnvtExo} +Ceci est un exercice\ldots +\end{EnvtExo} +\end{DemoCode} + +\begin{DemoCode}{} +%exo2, macro par défaut +\TitreExo + +Ceci est un exercice\ldots +\end{DemoCode} + +\subsection{Options de personnalisations} + +Hormis le style global, il est possible de modifier/ajouter certains éléments : + +\begin{itemize} + \item le trait peut être défini : + \begin{itemize} + \item plein (par défaut) ; + \item en pointillés, via \texttt{dotfill} ; + \item en \textit{dashillés}, via le package \texttt{dashrulex} ; + \end{itemize} + \item un complément de titre peut être rajouté ; + \item une décoration peut être rajoutée en fin de ligne : + \begin{itemize} + \item des points, sous la forme \texttt{(xx points)} ; + \item une image, via \texttt{graphicx}, dont la hauteur est adaptée à la hauteur de la ligne en cours ; + \item une icône, via \texttt{fontawesome5}, dont la hauteur est adaptée à la hauteur de la ligne en cours ; + \item un petit chronomètre, via \texttt{pictochrono}, dont la hauteur est adaptée à la hauteur de la ligne en cours ; + \item une ceinture colorée, via \texttt{coloredbelts}, dont la hauteur est adaptée à la hauteur de la ligne en cours ; + \end{itemize} + \item le compteur (nommé \MontreCode{numeroexo}) peut être désactivé et \textit{adpaté} via les commandes classiques de compteurs. +\end{itemize} + +\pagebreak + +Les \MontreCode{clés} disponibles, à donner entre \MontreCode{[...]}, sont : + +\begin{itemize} + \item \MontreCode{Type} : type de libellés, parmi \MontreCode{Classique} (défaut) ou \MontreCode{Perso/titrepersonnalisé} + \item \MontreCode{ComplementTitre} : complément pour la titre, après le numéro (attention aux espaces) ; + \item \MontreCode{CodeDebut} : code \LaTeX\ qui sera \textit{rajouté} entre le titre et l'énoncé ; + \item \MontreCode{EchelleImage} : pour modifier ponctuellement l'image de décoration ; + \item \MontreCode{Compteur} : booléen pour activer/désactiver (\MontreCode{true} par défaut) le compteur (non affiché et non incrémenté) ; + \item \MontreCode{Decoration} : choix de la décoration parmi : + \begin{itemize} + \item \MontreCode{Icone/...} := afficher l'icône \MontreCode{...} à la fin de la ligne ; + \item \MontreCode{Image/...} := afficher l'image \MontreCode{...} à la fin de la ligne ; + \item \MontreCode{Ceinture/...} := afficher la ceinture couleur \MontreCode{...} à la fin de la ligne ; + \item \MontreCode{Chrono/...} := afficher le chrono de durée \MontreCode{...} à la fin de la ligne ; + \item \MontreCode{Points/...} := afficher les points \MontreCode{(... points)} à la fin de la ligne ; + \end{itemize} + \item \MontreCode{Trait} : choix du trait parmi : + \begin{itemize} + \item \MontreCode{plein} := un trait plain (par défaut) ; + \item \MontreCode{non} := aucun trait ; + \item \MontreCode{pointilles} := pointilles (\texttt{\textbackslash dotfill}) ; + \item \MontreCode{dashilles} := pointilles \textit{dash} (\texttt{\textbackslash hdashrule}). + \end{itemize} +\end{itemize} + +\subsection{Exemples} + +Les exemples suivants ont été obtenus via un document externe (fourni avec le package), du fait du chargement de packages spécifiques. + +Le code proposé utilise l'environnement, mais la commande simple est complètement compatible également ! + +\smallskip + +{\footnotesize\faExclamationTriangle} Les petites \textit{images} ne sont pas incluses dans le package, elles sont là pour illustrer l'utilisation d'images personnelles. + +\begin{DemoCode}{listing only} +\documentclass[a5paper,11pt]{article} +\usepackage[margin=1cm]{geometry} +\usepackage{customenvs} +%facultatif, pour les décorations +\usepackage{graphicx} +\usepackage{dashrulex} +\usepackage{coloredbelts} +\usepackage{pictochrono} +%mise en page +\usepackage{ipsum} +\setlength{\parindent}{0pt} +\end{DemoCode} + +\pagebreak + +\begin{DemoCode}{listing only} +\begin{EnvtExo}%exo1 +\ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Trait=pointilles]%exo2 +\ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Trait=dashilles]%exo3 +\ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Decoration=Icone/\faPython]%exo4 +\ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Decoration=Ceinture/rouge]%exo5 +\ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Decoration=Chrono/20]%exo6 +\ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Decoration=Image/goku_ssj4]%exo7 +\ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Decoration=Image/sseiya_shura]%exo8 +\ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Decoration=Points/7]%exo9 +\ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Type=Perso/{Titre perso }]%exo10 +\ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\StyleEnvtExo[Couleur=red,Police=\bfseries\ttfamily,EpTrait=2pt,Libelle={Exercice n°}] + +\begin{EnvtExo}[Decoration=Icone/\faAddressBook]%exo11 +\ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Type=Perso/{Titre perso },Decoration=Chrono/25,Couleur=red,Trait=dashilles]%exo12 +\ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\StyleEnvtExoDefaut + +\begin{EnvtExo}% + [Type=Perso/{Titre perso~},Decoration=Image/goku_ssj4,Trait=non,Compteur=false]%exo13 +\ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\TitreExo[Type=Perso/{Annexe Exercice 3},Compteur=false,Decoration=Image/sseiya_aiolos]%exo14 + +\ipsum<Lang=FR,Type=sent> +\end{DemoCode} + +\pagebreak + +\begin{DemoCode}{} +\includegraphics{envtexo_exemples.pdf} +\end{DemoCode} + \end{document}
\ No newline at end of file diff --git a/macros/latex/contrib/customenvs/doc/envtexo_exemples.pdf b/macros/latex/contrib/customenvs/doc/envtexo_exemples.pdf Binary files differnew file mode 100644 index 0000000000..717f3a12c9 --- /dev/null +++ b/macros/latex/contrib/customenvs/doc/envtexo_exemples.pdf diff --git a/macros/latex/contrib/customenvs/doc/envtexo_exemples.tex b/macros/latex/contrib/customenvs/doc/envtexo_exemples.tex new file mode 100644 index 0000000000..bc9bf990f7 --- /dev/null +++ b/macros/latex/contrib/customenvs/doc/envtexo_exemples.tex @@ -0,0 +1,80 @@ +% !TeX TXS-program:compile = txs:///arara +% arara: pdflatex: {shell: no, synctex: no, interaction: batchmode} +% arara: pdflatex: {shell: no, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)') + +\documentclass[a5paper,11pt]{article} +\usepackage[margin=1cm]{geometry} +\usepackage{customenvs} +%facultatif, pour les décorations +\usepackage{graphicx} +\usepackage{dashrulex} +\usepackage{coloredbelts} +\usepackage{pictochrono} +%mise en page +\usepackage{ipsum} +\setlength{\parindent}{0pt} + +\begin{document} + +\begin{EnvtExo}%exo1 + \ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Trait=pointilles]%exo2 + \ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Trait=dashilles]%exo3 + \ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Decoration=Icone/\faPython]%exo4 + \ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Decoration=Ceinture/rouge]%exo5 + \ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Decoration=Chrono/20]%exo6 + \ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Decoration=Image/goku_ssj4]%exo7 + \ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Decoration=Image/sseiya_shura]%exo8 + \ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Decoration=Points/7]%exo9 + \ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Type=Perso/{Titre perso }]%exo10 + \ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\StyleEnvtExo[Couleur=red,Police=\bfseries\ttfamily,EpTrait=2pt,Libelle={Exercice n°}] + +\begin{EnvtExo}[Decoration=Icone/\faAddressBook]%exo11 + \ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\begin{EnvtExo}[Type=Perso/{Titre perso },Decoration=Chrono/25,Couleur=red,Trait=dashilles]%exo12 + \ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\StyleEnvtExoDefaut + +\begin{EnvtExo}% + [Type=Perso/{Titre perso~},Decoration=Image/goku_ssj4,Trait=non,Compteur=false]%exo13 + \ipsum<Lang=FR,Type=sent> +\end{EnvtExo} + +\TitreExo[Type=Perso/{Annexe Exercice 3},Compteur=false,Decoration=Image/sseiya_aiolos]%exo14 + +\ipsum<Lang=FR,Type=sent> + +\end{document} diff --git a/macros/latex/contrib/customenvs/tex/customenvs.sty b/macros/latex/contrib/customenvs/tex/customenvs.sty index 34b3c30803..08083eb103 100644 --- a/macros/latex/contrib/customenvs/tex/customenvs.sty +++ b/macros/latex/contrib/customenvs/tex/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/03/17 0.1.2 Custom classic environments] +\ProvidesPackage{customenvs}[2024/03/30 0.1.3 Custom classic environments] %====HISTORIQUE +% v 0.1.3 Environnement/Commande pour présentation d'un exercice % v 0.1.2 Crayon de compétences % v 0.1.1 Ajout de tableaux de compétences % v 0.1.0 Version initiale @@ -50,6 +51,7 @@ \RequirePackage{simplekv} \RequirePackage{xstring} \RequirePackage{listofitems} +\RequirePackage{calc} \RequirePackage{tikz} \usetikzlibrary{decorations.pathmorphing,positioning,shapes.misc,calc} @@ -663,6 +665,254 @@ \end{tikzpicture}% } +%====EXERCICE PERSO + +\newcounter{numeroexo} +\setcounter{numeroexo}{0} +\newlength{\eptraitexo} +\setlength{\eptraitexo}{1.1pt} +\newlength{\eptraitexospace} +\setlength{\eptraitexospace}{1.5\eptraitexo} +\newlength{\tmp@image@hauteur@totale} +\newlength{\tmp@image@profondeur} + +\colorlet{macouleurexo}{blue!50!black} + +\newcommand\tmpstyleexo{\bfseries\LARGE\sffamily}% +\newcommand\tmplabelexo{Exercice~}% + +\defKV[globalstyleexo]{% + Libelle=\renewcommand\tmplabelexo{#1},% + Couleur=\colorlet{macouleurexo}{#1},% + Police=\renewcommand\tmpstyleexo{#1},% + EpTrait=\setlength{\eptraitexo}{#1} +} + +\setKVdefault[globalstyleexo]{% + Libelle={Exercice~},% + Couleur={blue!50!black},% + Police={\bfseries\LARGE\sffamily},% + EpTrait={1.1pt} +} + +\NewDocumentCommand\StyleEnvtExo{ O{} }{% + \restoreKV[globalstyleexo]% + \setKV[globalstyleexo]{#1}% +} +\NewDocumentCommand\StyleEnvtExoDefaut{ }{% + \restoreKV[globalstyleexo]% +} + +\defKV[EnvtExercice]{% + Type=\def\EnvtExoType{#1},% + ComplementTitre=\def\EnvtExoCpltTitre{#1},% + CodeDebut=\def\EnvtExoCodeAvant{#1},% + %Couleur=\def\EnvtExoCouleur{#1},% + EchelleImage=\def\EnvtExoScaleImg{#1},% + Decoration=\def\EnvtExoDeco{#1},% + Trait=\def\EnvtExoTrait{#1} +} +\setKVdefault[EnvtExercice]{ + Type=Classique,% + ComplementTitre={},% + CodeDebut={},% + %Couleur=macouleurexo,% + EchelleImage=1.15,% + Compteur=true,% + Decoration={},% + Trait=plein +} + +\NewDocumentEnvironment{EnvtExo}{ !O{} }% +{% + \useKVdefault[EnvtExercice]% + \setKV[EnvtExercice]{#1}% + \addtocounter{numeroexo}{1}% + \ifboolKV[EnvtExercice]{Compteur}{}{\addtocounter{numeroexo}{-1}}% + \def\hrulefill{\leavevmode\leaders\hrule height \eptraitexo\hfill\kern\z@}%épaisseur + \noindent\begingroup\color{macouleurexo}% + \IfStrEq{\EnvtExoType}{Classique}%OK exo°____vide + {% + %label avec numéro et complément + \tmpstyleexo\tmplabelexo\ifboolKV[EnvtExercice]{Compteur}{\thenumeroexo}{}\EnvtExoCpltTitre% + %trait éventuel + \IfStrEqCase{\EnvtExoTrait}{% + {plein}{\,\hrulefill}% + {pointilles}{\,\dotfill}% + {dashilles}{\,\hdashrule{\fill}{\eptraitexo}{\eptraitexospace}}% + {non}{\hfill}% + }% + %décoration éventuelle + \IfSubStr{\EnvtExoDeco}{Icone}% + {% + \StrBehind{\EnvtExoDeco}{/}[\EnvtExoIcon]% + \,\scalebox{0.85}[0.85]{\EnvtExoIcon}% + }{}% + \IfSubStr{\EnvtExoDeco}{Ceinture}% + {% + \StrBehind{\EnvtExoDeco}{/}[\EnvtExoCouleur]% + \,\CeintureCouleur{\EnvtExoCouleur}% + }{}% + \IfSubStr{\EnvtExoDeco}{Chrono}% + {% + \StrBehind{\EnvtExoDeco}{/}[\EnvtExoChrono]% + \,\pictochrono[ColTime=macouleurexo!50]{\EnvtExoChrono}% + }{}% + \IfSubStr{\EnvtExoDeco}{Points}% + {% + \StrBehind{\EnvtExoDeco}{/}[\EnvtExoPts]% + \IfStrEq{\EnvtExoPts}{1}{\def\pts{point}}{\def\pts{points}}% + \,(\EnvtExoPts\ \pts)% + }{}% + \IfSubStr{\EnvtExoDeco}{Image}% + {% + \StrBehind{\EnvtExoDeco}{/}[\EnvtExoImg]% + \settototalheight{\tmp@image@hauteur@totale}{\hbox{\tmpstyleexo qB}}% + \,$\vcenter{\hbox{\includegraphics[height=\EnvtExoScaleImg\tmp@image@hauteur@totale]{\EnvtExoImg}}}$% + }{}% + }{}% + \IfSubStr{\EnvtExoType}{Perso}%OK perso____déco + {% + \StrBehind{\EnvtExoType}{/}[\EnvtExoLabel]% + %label avec numéro et complément + \tmpstyleexo\EnvtExoLabel\ifboolKV[EnvtExercice]{Compteur}{\thenumeroexo}{}\EnvtExoCpltTitre% + %trait éventuel + \IfStrEqCase{\EnvtExoTrait}{% + {plein}{\,\hrulefill}% + {pointilles}{\,\dotfill}% + {dashilles}{\,\hdashrule{\fill}{\eptraitexo}{\eptraitexospace}}% + {non}{\hfill}% + }% + %décoration éventuelle + \IfSubStr{\EnvtExoDeco}{Icone}% + {% + \StrBehind{\EnvtExoDeco}{/}[\EnvtExoIcon]% + \,\scalebox{0.85}[0.85]{\EnvtExoIcon}% + }{}% + \IfSubStr{\EnvtExoDeco}{Ceinture}% + {% + \StrBehind{\EnvtExoDeco}{/}[\EnvtExoCouleur]% + \,\CeintureCouleur{\EnvtExoCouleur}% + }{}% + \IfSubStr{\EnvtExoDeco}{Chrono}% + {% + \StrBehind{\EnvtExoDeco}{/}[\EnvtExoChrono]% + \,\pictochrono[ColTime=macouleurexo!50]{\EnvtExoChrono}% + }{}% + \IfSubStr{\EnvtExoDeco}{Points}% + {% + \StrBehind{\EnvtExoDeco}{/}[\EnvtExoPts]% + \IfStrEq{\EnvtExoPts}{1}{\def\pts{point}}{\def\pts{points}}% + \,(\EnvtExoPts\ \pts)% + }{}% + \IfSubStr{\EnvtExoDeco}{Image}% + {% + \StrBehind{\EnvtExoDeco}{/}[\EnvtExoImg]% + \settototalheight{\tmp@image@hauteur@totale}{\hbox{\tmpstyleexo qB}}% + \,$\vcenter{\hbox{\includegraphics[height=\EnvtExoScaleImg\tmp@image@hauteur@totale]{\EnvtExoImg}}}$% + }{}% + }{}% + \endgroup% + \def\hrulefill{\leavevmode\leaders\hrule height 0.4pt\hfill\kern\z@}% + \par% + \EnvtExoCodeAvant% +}% +{}% + +\NewDocumentCommand\TitreExo{ !O{} }{% + \useKVdefault[EnvtExercice]% + \setKV[EnvtExercice]{#1}% + \addtocounter{numeroexo}{1}% + \ifboolKV[EnvtExercice]{Compteur}{}{\addtocounter{numeroexo}{-1}}% + \def\hrulefill{\leavevmode\leaders\hrule height \eptraitexo\hfill\kern\z@}%épaisseur + \noindent\begingroup\color{macouleurexo}% + \IfStrEq{\EnvtExoType}{Classique}%OK exo°____vide + {% + %label avec numéro et complément + \tmpstyleexo\tmplabelexo\ifboolKV[EnvtExercice]{Compteur}{\thenumeroexo}{}\EnvtExoCpltTitre% + %trait éventuel + \IfStrEqCase{\EnvtExoTrait}{% + {plein}{\,\hrulefill}% + {pointilles}{\,\dotfill}% + {dashilles}{\,\hdashrule{\fill}{\eptraitexo}{\eptraitexospace}}% + {non}{\hfill}% + }% + %décoration éventuelle + \IfSubStr{\EnvtExoDeco}{Icone}% + {% + \StrBehind{\EnvtExoDeco}{/}[\EnvtExoIcon]% + \,\scalebox{0.85}[0.85]{\EnvtExoIcon}% + }{}% + \IfSubStr{\EnvtExoDeco}{Ceinture}% + {% + \StrBehind{\EnvtExoDeco}{/}[\EnvtExoCouleur]% + \,\CeintureCouleur{\EnvtExoCouleur}% + }{}% + \IfSubStr{\EnvtExoDeco}{Chrono}% + {% + \StrBehind{\EnvtExoDeco}{/}[\EnvtExoChrono]% + \,\pictochrono[ColTime=macouleurexo!50]{\EnvtExoChrono}% + }{}% + \IfSubStr{\EnvtExoDeco}{Points}% + {% + \StrBehind{\EnvtExoDeco}{/}[\EnvtExoPts]% + \IfStrEq{\EnvtExoPts}{1}{\def\pts{point}}{\def\pts{points}}% + \,(\EnvtExoPts\ \pts)% + }{}% + \IfSubStr{\EnvtExoDeco}{Image}% + {% + \StrBehind{\EnvtExoDeco}{/}[\EnvtExoImg]% + \settototalheight{\tmp@image@hauteur@totale}{\hbox{\tmpstyleexo qB}}% + \,$\vcenter{\hbox{\includegraphics[height=\EnvtExoScaleImg\tmp@image@hauteur@totale]{\EnvtExoImg}}}$% + }{}% + }{}% + \IfSubStr{\EnvtExoType}{Perso}%OK perso____déco + {% + \StrBehind{\EnvtExoType}{/}[\EnvtExoLabel]% + %label avec numéro et complément + \tmpstyleexo\EnvtExoLabel\ifboolKV[EnvtExercice]{Compteur}{\thenumeroexo}{}\EnvtExoCpltTitre% + %trait éventuel + \IfStrEqCase{\EnvtExoTrait}{% + {plein}{\,\hrulefill}% + {pointilles}{\,\dotfill}% + {dashilles}{\,\hdashrule{\fill}{\eptraitexo}{\eptraitexospace}}% + {non}{\hfill}% + }% + %décoration éventuelle + \IfSubStr{\EnvtExoDeco}{Icone}% + {% + \StrBehind{\EnvtExoDeco}{/}[\EnvtExoIcon]% + \,\scalebox{0.85}[0.85]{\EnvtExoIcon}% + }{}% + \IfSubStr{\EnvtExoDeco}{Ceinture}% + {% + \StrBehind{\EnvtExoDeco}{/}[\EnvtExoCouleur]% + \,\CeintureCouleur{\EnvtExoCouleur}% + }{}% + \IfSubStr{\EnvtExoDeco}{Chrono}% + {% + \StrBehind{\EnvtExoDeco}{/}[\EnvtExoChrono]% + \,\pictochrono[ColTime=macouleurexo!50]{\EnvtExoChrono}% + }{}% + \IfSubStr{\EnvtExoDeco}{Points}% + {% + \StrBehind{\EnvtExoDeco}{/}[\EnvtExoPts]% + \IfStrEq{\EnvtExoPts}{1}{\def\pts{point}}{\def\pts{points}}% + \,(\EnvtExoPts\ \pts)% + }{}% + \IfSubStr{\EnvtExoDeco}{Image}% + {% + \StrBehind{\EnvtExoDeco}{/}[\EnvtExoImg]% + \settototalheight{\tmp@image@hauteur@totale}{\hbox{\tmpstyleexo qB}}% + \,$\vcenter{\hbox{\includegraphics[height=\EnvtExoScaleImg\tmp@image@hauteur@totale]{\EnvtExoImg}}}$% + }{}% + }{}% + \endgroup% + \def\hrulefill{\leavevmode\leaders\hrule height 0.4pt\hfill\kern\z@}% + \par% + \EnvtExoCodeAvant% +} + %%----COMMANDES EN %====QCMs diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf Binary files differindex 67411ded0e..d83649de1a 100644 --- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf +++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex deleted file mode 100644 index d12abe48b8..0000000000 --- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex +++ /dev/null @@ -1,300 +0,0 @@ -% !TeX TXS-program:compile = txs:///arara -% arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} -% arara: pythontex: {rerun: always} -% arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} -% arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)') - -\documentclass[a4paper,french,11pt]{article} -\def\PLversion{3.03b} -\def\PLdate{25 mars 2024} -\usepackage{amsfonts} -\usepackage{ProfLycee} -\useproflyclib{piton,minted,pythontex,ecritures,espace} -\usepackage[math-style=french]{fourier-otf} -\usepackage{mathrsfs}%pour mathscr -\usepackage{awesomebox} -\usepackage[lua]{tkz-euclide} -\usepackage{tkz-tab} -\tikzstyle{every picture}+=[remember picture] -\usetikzlibrary{hobby} -\usepackage[group-minimum-digits=4]{siunitx} -\sisetup{locale=FR} -\usepackage{enumitem} -\usepackage{fancyvrb} -\usepackage{fancyhdr} -\usepackage{tabularray} -\usepackage{multicol} -\DeclareMathSymbol{;}\mathbin{operators}{'73} %espacement avec ; -%fancy -\fancyhf{} -\renewcommand{\headrulewidth}{0pt} -\lfoot{\sffamily \small [ProfLycee]} -\cfoot{\sffamily \small - \thepage{} -} -\rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}} - -\usepackage{graphics} -\usepackage{hologo} -\providecommand\tikzlogo{Ti\textit{k}Z} -\providecommand\TeXLive{\TeX{}Live\xspace} -\providecommand\PSTricks{\textsf{PSTricks}\xspace} -\let\pstricks\PSTricks -\let\TikZ\tikzlogo -\newcommand\TableauDocumentation{% - \begin{tblr}{width=\linewidth,colspec={X[c]X[c]X[c]X[c]X[c]X[c]},cells={font=\huge\sffamily}} - {\LaTeX} & {\hologo{pdfLaTeX}} & {\hologo{LuaLaTeX}} & {\TikZ} & {\TeXLive} & {\hologo{MiKTeX}} \\ - \end{tblr} -} -\usepackage{simplekv} -\usepackage{menukeys} -\let\tab\relax -\usepackage{tabto} -\usepackage{pgf,pgfplots} -\pgfplotsset{compat=newest,xlabel near ticks,ylabel near ticks} -\usepackage{listofitems} -\usepackage{xintexpr} -\usepackage{codehigh} -\usepackage{scontents} -\usepackage{hyperref} -\urlstyle{same} -\hypersetup{pdfborder=0 0 0} -\usepackage{geometry} -\geometry{margin=1.5cm} -\usepackage{babel} -\usepackage{newverbs} - -\input{ProfLycee-doc-macropreamb.tex} - -\input{ProfLycee-doc-pagegarde.tex} - -\newpage - -\phantomsection -\hypertarget{matoc}{} - -\tableofcontents - -\newpage - -\phantom{t}\par\vfill\par -\begin{PART} - \begin{center} - \Huge\MakeUppercase{Introduction} - \end{center} -\end{PART} -\par\vfill\par\phantom{t} - -\newpage - -\input{ProfLycee-doc-introduction.tex} - -\newpage - -\phantom{t}\par\vfill\par -\begin{PART} - \begin{center} - \Huge\MakeUppercase{Liste des commandes} - \end{center} -\end{PART} -\par\vfill\par\phantom{t} - -\newpage - -\input{ProfLycee-doc-listecommandes.tex} - -\newpage - -\phantom{t}\par\vfill\par -\begin{PART} - \begin{center} - \Huge\MakeUppercase{Écritures mathématiques} - \end{center} -\end{PART} -\par\vfill\par\phantom{t} - -\newpage - -\input{ProfLycee-doc-ecritures.tex} - -\newpage - -\phantom{t}\par\vfill\par -\begin{PART} - \begin{center} - \Huge\MakeUppercase{Outils pour l'analyse} - \end{center} -\end{PART} -\par\vfill\par\phantom{t} - -\newpage - -\input{ProfLycee-doc-outilsanalyse.tex} - -\newpage - -\phantom{t}\par\vfill\par -\begin{PART} - \begin{center} - \Huge\MakeUppercase{Outils graphiques} - \end{center} -\end{PART} -\par\vfill\par\phantom{t} - -\newpage - -\input{ProfLycee-doc-outilsgraphiques.tex} - -\newpage - -\phantom{t}\par\vfill\par -\begin{PART} - \begin{center} - \Huge\MakeUppercase{Présentation de codes} - \end{center} -\end{PART} -\par\vfill\par\phantom{t} - -\newpage - -\input{ProfLycee-doc-prescodes.tex} - -\pagebreak - -\phantom{t}\par\vfill\par -\begin{PART} - \begin{center} - \Huge\MakeUppercase{Outils pour la géométrie} - \end{center} -\end{PART} -\par\vfill\par\phantom{t} - -\newpage - -\input{ProfLycee-doc-outilsgeom.tex} - -\pagebreak - -\phantom{t}\par\vfill\par -\begin{PART} - \begin{center} - \Huge\MakeUppercase{Outils pour la géométrie analytique} - \end{center} -\end{PART} -\par\vfill\par\phantom{t} - -\newpage - -\input{ProfLycee-doc-outilsgeomanalyt.tex} - -\newpage - -\phantom{t}\par\vfill\par -\begin{PART} - \begin{center} - \Huge\MakeUppercase{Outils pour les statistiques} - \end{center} -\end{PART} -\par\vfill\par\phantom{t} - -\newpage - -\input{ProfLycee-doc-stats.tex} - -\newpage - -\phantom{t}\par\vfill\par -\begin{PART} - \begin{center} - \Huge\MakeUppercase{Outils pour les probabilités} - \end{center} -\end{PART} -\par\vfill\par\phantom{t} - -\newpage - -\input{ProfLycee-doc-probas.tex} - -\newpage - -\phantom{t}\par\vfill\par -\begin{PART} - \begin{center} - \Huge\MakeUppercase{Outils pour l'arithmétique} - \end{center} -\end{PART} -\par\vfill\par\phantom{t} - -\newpage - -\input{ProfLycee-doc-arithm.tex} - -\newpage - -\phantom{t}\par\vfill\par -\begin{PART} - \begin{center} - \Huge\MakeUppercase{Écritures, simplifications} - \end{center} -\end{PART} -\par\vfill\par\phantom{t} - -\newpage - -\input{ProfLycee-doc-simplif.tex} - -\pagebreak - -\phantom{t}\par\vfill\par -\begin{PART} - \begin{center} - \Huge\MakeUppercase{Jeux et récréations} - \end{center} -\end{PART} -\par\vfill\par\phantom{t} - -\newpage - -\input{ProfLycee-doc-jeuxrecreat.tex} - -\newpage - -\phantom{t}\par\vfill\par -\begin{PART} - \begin{center} - \Huge\MakeUppercase{Compétences en lycée} - \end{center} -\end{PART} -\par\vfill\par\phantom{t} - -\newpage - -\input{ProfLycee-doc-competences.tex} - -\newpage - -\phantom{t}\par\vfill\par -\begin{PART} - \begin{center} - \Huge\MakeUppercase{Projets, en test} - \end{center} -\end{PART} -\par\vfill\par\phantom{t} - -\newpage - -\input{ProfLycee-doc-projets.tex} - -\newpage - -\phantom{t}\par\vfill\par -\begin{PART} - \begin{center} - \Huge\MakeUppercase{Historique} - \end{center} -\end{PART} -\par\vfill\par\phantom{t} - -\newpage - -\input{ProfLycee-doc-historique.tex} - -\end{document}
\ No newline at end of file diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.pdf Binary files differindex 8d441bcc5c..f8e331e0a6 100644 --- a/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.pdf +++ b/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.pdf diff --git a/macros/latex/contrib/proflycee/tex/ProfLycee.sty b/macros/latex/contrib/proflycee/tex/ProfLycee.sty index 02c4a3a8f8..be9319048d 100644 --- a/macros/latex/contrib/proflycee/tex/ProfLycee.sty +++ b/macros/latex/contrib/proflycee/tex/ProfLycee.sty @@ -3,7 +3,8 @@ % or later, see http://www.latex-project.org/lppl.txtf \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{ProfLycee}[2024/03/25 3.03b Aide pour l'utilisation de LaTeX en lycee] +\ProvidesPackage{ProfLycee}[2024/03/30 3.03c Aide pour l'utilisation de LaTeX en lycee] +% 3.03c Correction du fonctionnement gobble avec piton + compatibilité luamplib PfC % 3.03b Compétences Maths Lycées + \pflnum pour num+xint :-) + correction de bugs (div eucl) % 3.03a Forme canonique + fonction homographique % 3.02g Correction de bugs avec les arbres de probas diff --git a/macros/latex/contrib/proflycee/tex/proflycee-tools-espace.tex b/macros/latex/contrib/proflycee/tex/proflycee-tools-espace.tex index a8b48af2f6..229fb03434 100644 --- a/macros/latex/contrib/proflycee/tex/proflycee-tools-espace.tex +++ b/macros/latex/contrib/proflycee/tex/proflycee-tools-espace.tex @@ -7,11 +7,27 @@ \ifluatex \RequirePackage{luamplib}% \mplibtextextlabel{enable}% - \everymplib{input PfLEspace; beginfig(1);}% - \everyendmplib{endfig;}% -\else% - \RequirePackage[shellescape]{gmp}%inclusion de figures metapost "à la volée"% - \gmpoptions{everymp={prologues:=3; input PfLEspace;}}% + \everymplib[PfLAA]{}\everyendmplib[PfLAA]{}% + \everymplib[PfLAB]{}\everyendmplib[PfLAB]{}% + \everymplib[PfLAC]{}\everyendmplib[PfLAC]{}% + \everymplib[PfLAD]{}\everyendmplib[PfLAD]{}% + \everymplib[PfLAE]{}\everyendmplib[PfLAE]{}% + \everymplib[PfLAF]{}\everyendmplib[PfLAF]{}% + \everymplib[PfLAG]{}\everyendmplib[PfLAG]{}% + \everymplib[PfLAH]{}\everyendmplib[PfLAH]{}% + \everymplib[PfLAI]{}\everyendmplib[PfLAI]{}% + \everymplib[PfLAJ]{}\everyendmplib[PfLAJ]{}% + \everymplib[PfLAK]{}\everyendmplib[PfLAK]{}% + \everymplib[PfLAL]{}\everyendmplib[PfLAL]{}% + \everymplib[PfLAM]{}\everyendmplib[PfLAM]{}% + \everymplib[PfLAN]{}\everyendmplib[PfLAN]{}% + \everymplib[PfLAO]{}\everyendmplib[PfLAO]{}% + \everymplib[PfLAP]{}\everyendmplib[PfLAP]{}% + \everymplib[PfLAQ]{}\everyendmplib[PfLAQ]{}% + \everymplib[PfLAR]{}\everyendmplib[PfLAR]{}% +%\else% +% \RequirePackage[shellescape]{gmp}%inclusion de figures metapost "à la volée"% +% \gmpoptions{everymp={prologues:=3;}}% \fi% \defKV[posrelatesp]{Echelle=\def\scaleminischemspace{#1}} @@ -20,265 +36,1025 @@ \NewDocumentCommand\SchemaEspace{ s O{} m }{% \restoreKV[posrelatesp]% \setKV[posrelatesp]{#2}% - \ifluatex + \ifluatex% \IfBooleanTF{#1}% {\def\tmplabelespace##1{\mathscr{##1}}}% {\def\tmplabelespace##1{\mathcal{##1}}}% \mplibforcehmode% \IfStrEqCase{#3}{% {plan}{% - \begin{mplibcode} + \begin{mplibcode}[PfLAA] + beginfig(56); + numeric u,echelle; u=\scaleminischemspace*1cm;echelle=\scaleminischemspace; - repplansimple ; + %plan simple + pair t,r; + transform T,S; + pickup pencircle scaled 0.025u; + t = (4u,0u); + r = (1u,2u); + T = identity shifted t; + S = identity shifted r; + z0 = (0u,0u); + z1 = z0 transformed T; + z2 = z0 transformed S; + z3 = z0 transformed T transformed S; + draw z0--z2 ; + draw z2--z3 ; + draw z0--z1 withpen pencircle scaled 0.05u; + draw z1--z3 withpen pencircle scaled 0.05u; label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0.1u,0.025u)); + endfig; \end{mplibcode} }% {interplans}{% - \begin{mplibcode} + \begin{mplibcode}[PfLAB] + beginfig(57); + numeric u,echelle; u=\scaleminischemspace*1cm;echelle=\scaleminischemspace; - repinterplan ; + %intersection de deux plans + pair t,r; + transform T,S; + path p[],q[]; + pickup pencircle scaled 0.025u; + t=(4u,0u); r=(1u,2u); + T = identity shifted t; + S = identity shifted r; + z0=(0u,0u); + z1 = z0 transformed T; + z2 = z0 transformed S; + z3 = z0 transformed T transformed S; + draw z0--z2; + draw z0--z1 withpen pencircle scaled 0.05u; + draw z1--z3 withpen pencircle scaled 0.05u; + z5 = 0.5[z0,z1]; + z6 = z5 transformed S; + z7 = (2.5u,-1u); + z8 = z7 transformed S; + z5 = 0.5[z9,z7]; + z10= z9 transformed S; + draw z5--z6; + draw z9--z7; + draw z9--z10; + draw z10--z6; + draw z6--z3; + draw z6--z8 dashed evenly; + p1 = z2--z6; + q1= z9--z10; + z11 = p1 intersectionpoint q1; + draw z11--z6 dashed evenly; + draw z2--z11; + p2 = z7--z8; + q2= z5--z1; + z12 = p2 intersectionpoint q2; + draw z12--z8 dashed evenly; + draw z7--z12; + label.rt(btex $d$ etex scaled echelle, 0.5[z5,z6]); label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0.1u,0.025u)); label.rt(btex $\tmplabelespace{Q}$ etex scaled echelle, z9); + endfig; \end{mplibcode} }% {plan3points}{% - \begin{mplibcode} + \begin{mplibcode}[PfLAC] + beginfig(58); + numeric u,echelle; u=\scaleminischemspace*1cm;echelle=\scaleminischemspace; - repplantroispoints ; + % representation d'un plan defini par trois points + pair t,r; + transform T,S; + pickup pencircle scaled 0.025u; + t=(4u,0u); r=(1u,2u); + T = identity shifted t; + S = identity shifted r; + z0=(0u,0u); + z1 = z0 transformed T; + z2 = z0 transformed S; + z3 = z0 transformed T transformed S; + draw z0--z2; + draw z2--z3; + draw z0--z1 withpen pencircle scaled 0.05u; + draw z1--z3 withpen pencircle scaled 0.05u; + dotlabel.top(btex $A$ etex scaled echelle, (2.25u,1.5u)); + dotlabel.top(btex $B$ etex scaled echelle, (1.25u,.5u)); + dotlabel.top(btex $C$ etex scaled echelle, (3.25u,1u)); label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0.1u,0.025u)); + endfig; \end{mplibcode} }% {plandroitessecantes}{% - \begin{mplibcode} + \begin{mplibcode}[PfLAD] + beginfig(59); + numeric u,echelle; u=\scaleminischemspace*1cm;echelle=\scaleminischemspace; - repplandeuxdroites ; + % representation d'un plan defini par deux droites secantes + pair t,r; + transform T,S; + pickup pencircle scaled 0.025u; + t=(4u,0u); r=(1u,2u); + T = identity shifted t; + S = identity shifted r; + z0=(0u,0u); + z1 = z0 transformed T; + z2 = z0 transformed S; + z3 = z0 transformed T transformed S; + draw z0--z2; + draw z2--z3; + draw z0--z1 withpen pencircle scaled 0.05u; + draw z1--z3 withpen pencircle scaled 0.05u; + z4 = (0.8u,1u); + z5 =(4u,1.5u); + draw z4--z5; + z6 = (1u,1.6u); + z7=(3.6u,0.4u); + draw z6--z7; + label.rt(btex $d$ etex scaled echelle, z5); + label.rt(btex $d'$ etex scaled echelle, z7); label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0.1u,0.025u)); + endfig; \end{mplibcode} }% {plandroitepoint}{% - \begin{mplibcode} + \begin{mplibcode}[PfLAE] + beginfig(60); + numeric u,echelle; u=\scaleminischemspace*1cm;echelle=\scaleminischemspace; - repplandroite ; + % representation d'un plan defini par un point et une droite + pair t,r; + transform T,S; + pickup pencircle scaled 0.025u; + t=(4u,0u); r=(1u,2u); + T = identity shifted t; + S = identity shifted r; + z0=(0u,0u); + z1 = z0 transformed T; + z2 = z0 transformed S; + z3 = z0 transformed T transformed S; + draw z0--z2; + draw z2--z3; + draw z0--z1 withpen pencircle scaled 0.05u; + draw z1--z3 withpen pencircle scaled 0.05u; + dotlabel.top(btex $A$ etex scaled echelle, (2.05u,1.35u)); + z4 = (1u,.5u); + z5 = (3.25u,1.05u); + draw z4--z5; + label.top(btex $d$ etex scaled echelle, z5); label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0.1u,0.025u)); + endfig; \end{mplibcode} }% {plandroitespara}{% - \begin{mplibcode} + \begin{mplibcode}[PfLAF] + beginfig(61); + numeric u,echelle; u=\scaleminischemspace*1cm;echelle=\scaleminischemspace; - repplandtespara ; + % representation d'un plan defini par deux droites parallèles + pair t,r; + transform T,S; + pickup pencircle scaled 0.025u; + t=(4u,0u); r=(1u,2u); + T = identity shifted t; + S = identity shifted r; + z0=(0u,0u); + z1 = z0 transformed T; + z2 = z0 transformed S; + z3 = z0 transformed T transformed S; + draw z0--z2; + draw z2--z3; + draw z0--z1 withpen pencircle scaled 0.05u; + draw z1--z3 withpen pencircle scaled 0.05u; + z4 = (1u,1.15u); + z5 =(3u,1.65u); + draw z4--z5; + z6 = (1.5u,0.2u); + z7 = z6 shifted (z5-z4); + draw z6--z7; + label.rt(btex $d$ etex scaled echelle, z5); + label.rt(btex $d'$ etex scaled echelle, z7); label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0.1u,0.025u)); + endfig; \end{mplibcode} }% {droitesnoncopla}{% - \begin{mplibcode} + \begin{mplibcode}[PfLAG] + beginfig(62); + numeric u,echelle; u=\scaleminischemspace*1cm;echelle=\scaleminischemspace; - droitesnoncoplan ; + % representation de deux droites non parallelles et sans point commun + pair t,r; + transform T,S; + pickup pencircle scaled 0.025u; + t=(4u,0u); r=(1u,2u); + T = identity shifted t; + S = identity shifted r; + path p[]; + z0=(0u,0u); + z1 = z0 transformed T; + z2 = z0 transformed S; + z3 = z0 transformed T transformed S; + draw z0--z2; + draw z2--z3; + draw z0--z1 withpen pencircle scaled 0.05u; + draw z1--z3 withpen pencircle scaled 0.05u; + z4 = (0.5u,.5u); + z5 = (4u,1u); + draw z4--z5; + label.top(btex $d$ etex scaled echelle, z5); + z6 = (2u,1.5u); + z7 = (0.2u,1u); + dotlabel.rt(btex $A$ etex scaled echelle, z6); + z9 = z6 shifted z7; + z10 = z6 shifted -2z7; + p1 = z6--z10; + p2 = z0--z1; + z11 = p1 intersectionpoint p2; + draw z6--z11 dashed evenly; + draw z11--z10; + draw z6--z9; + label.rt(btex $d'$ etex scaled echelle, z10); label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0.1u,0.025u)); + endfig; \end{mplibcode} }% {incidence}{% - \begin{mplibcode} + \begin{mplibcode}[PfLAH] + beginfig(63); + numeric u,echelle; u=\scaleminischemspace*1cm;echelle=\scaleminischemspace; - repincidence ; + % representation d'un plan + pair t,r; + transform T,S; + path p[],q[]; + pickup pencircle scaled 0.025u; + t=(4u,0u); r=(1u,2u); + T = identity shifted t; + S = identity shifted r; + z0=(0u,0u); + z1 = z0 transformed T; + z2 = z0 transformed S; + z3 = z0 transformed T transformed S; + draw z0--z2; + draw z0--z1 withpen pencircle scaled 0.05u; + draw z1--z3 withpen pencircle scaled 0.05u; + z4=(0u,-2.2u); + z5 = z4 transformed T; + z6 = z4 transformed S; + z7 = z4 transformed T transformed S; + draw z4--z6; + draw z4--z5 withpen pencircle scaled 0.05u; + draw z5--z7 withpen pencircle scaled 0.05u; + z8=1/5[z0,z1]+1/2[z0,z2]; + z9=3/5[z4,z5]+1/2[z6,z4]; + draw z8--z9; + z10 = z8 transformed S; + draw z8--z10; + z11 = z9 transformed S; + p1 = z10--z11; + q1 = z2--z3; + q2 = z0--z1; + q3 = z6--z7; + z12 = p1 intersectionpoint q1; + z13 = p1 intersectionpoint q2; + z14 = p1 intersectionpoint q3; + draw z10--z12; + draw z12--z13 dashed evenly; + draw z13--z14; + draw z14--z11 + dashed evenly; + p2 = z8--z10; + z15 = p2 intersectionpoint q1; + draw z2--z15; + draw z15--z12 dashed evenly; + draw z12--z3; + p3 = z8--z9; + z16 = p3 intersectionpoint q2; + z17 = p3 intersectionpoint q3; + q4 = z4--z5; + z18 = p3 intersectionpoint q4; + draw z16--z12; + draw z6--z17; + draw z17--z14 dashed evenly; + draw z14--z7; + draw z18--z14; + p4 = z9--z11; + z19 = p4 intersectionpoint q4; + draw z9--z19;draw z19--z11 dashed evenly; + label.rt(btex $d$ etex scaled echelle, 0.5[z12,z16]); + label.rt(btex $d'$ etex scaled echelle, 0.5[z18,z14]); label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0.1u,0.025u)); label.urt(btex $\tmplabelespace{Q}$ etex scaled echelle, z4+(0.1u,0u)); + endfig; \end{mplibcode} }% {droiteparaplans}{% - \begin{mplibcode} + \begin{mplibcode}[PfLAI] + beginfig(64); + numeric u,echelle; u=\scaleminischemspace*1cm;echelle=\scaleminischemspace; - repdroiteparaplans ; + % droite parallele a deux plans secants + pair t,r; + transform T,S; + path p[]; + pickup pencircle scaled 0.025u; + t=(4u,1u); r=(0u,2u); + T = identity shifted t; + S = identity shifted r; + z0=(0u,0u); + z1 = z0 transformed T; + z2 = z0 transformed S; + z3 = z0 transformed T transformed S; + draw z0--z2; + draw z2--z3; + draw z1--z3; + z4=0.5[z0,z1]; + z5 = z4 transformed S; + draw z4--z5; + label.lft(btex $\Delta$ etex scaled echelle,0.5[z4,z5]); + z6 = z4 shifted (1.5u,-1u); + z4=0.5[z6,z7]; + z8 = z6 transformed S; + z9 = z7 transformed S; + draw z0--z4; + draw z4--z6; + draw z6--z8; + draw z8--z9; + draw z4--z7 dashed evenly; + p1= z4--z1; + p2 = z6--z8; + z10 = p1 intersectionpoint p2; + draw z4--z10 dashed evenly;draw z10--z1; + p3 = z2--z3; + p4 = z9--z7; + z11 = p3 intersectionpoint p4; + draw z11--z9; + draw z11--z7 dashed evenly; + draw z7--z4 dashed evenly; + z12 = (-1u,0u); + z13 = z12 shifted (0u,3u); + draw z13--z12; + label.lft(btex $d$ etex scaled echelle, z12); label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0u,0.025u)); label.lft(btex $\tmplabelespace{Q}$ etex scaled echelle, z6+(0u,0.5u)); + endfig; \end{mplibcode} }% {toit}{% - \begin{mplibcode} - u=\scaleminischemspace*1cm;echelle=\scaleminischemspace; - reptoit ; + \begin{mplibcode}[PfLAJ] + beginfig(65); + numeric u,echelle; + u=\scaleminischemspace*1cm; + echelle=\scaleminischemspace; + % theoreme du toit + pair t,r,v; + transform T,S,V; + path p[]; + pickup pencircle scaled 0.025u; + t=(3u,2u); r=(-2u,1.5u);v=(-3u,0u); + T = identity shifted t; + S = identity shifted r; + V = identity shifted v; + z0=(0u,0u); + z1 = z0 transformed T; + z2 = z0 transformed S; + z3 = z0 transformed S transformed T; + z4 = z0 transformed V; + z5 = z0 transformed V transformed T; + draw z0--z1; + draw z2--z3; + z101=0.1[z0,z1]; z10=0.9[z0,z1]; + z23 = z101 transformed S; + z32=z10 transformed S; + z45 = z101 transformed V; + z54=z10 transformed V; + draw z101--z23; + draw z10--z32; + draw z23--z45; + draw z32--z54 dashed evenly; + p1 = z101--z23; + p2 = z4--z5; + z11 = p1 intersectionpoint p2; + draw z4--z11; + draw z11--z5 dashed evenly; + label.lft(btex $d$ etex scaled echelle, z0); + label.lft(btex $d'$ etex scaled echelle, z4); + label.top(btex $\Delta$ etex scaled echelle, z2); + endfig; \end{mplibcode} }% {planspara}{% - \begin{mplibcode} + \begin{mplibcode}[PfLAK] + beginfig(66); + numeric u,echelle; u=\scaleminischemspace*1cm;echelle=\scaleminischemspace; - repplanspara ; + % plans paralleles a l'aide de droites secantes + pair t,r; + transform T,S; + pickup pencircle scaled 0.025u; + t=(4u,0u); r=(1u,2u); + T = identity shifted t; + S = identity shifted r; + z0=(0u,0u); + z1 = z0 transformed T; + z2 = z0 transformed S; + z3 = z0 transformed T transformed S; + draw z0--z2; + draw z2--z3; + draw z0--z1 withpen pencircle scaled 0.05u; + draw z1--z3 withpen pencircle scaled 0.05u; + z4 = (0.8u,1u); + z5 =(4u,1.5u); + draw z4--z5; + z6 = (1u,1.6u); + z7=(3.6u,0.4u); + draw z6--z7; + label.rt(btex $d$ etex scaled echelle, z5); + label.rt(btex $d'$ etex scaled echelle, z7); + z10=(0u,-2.5u); + z11 = z10 transformed T; + z12 = z10 transformed S; + z13 = z10 transformed T transformed S; + draw z10--z12; + draw z12--z13; + draw z10--z11 withpen pencircle scaled 0.05u; + draw z11--z13 withpen pencircle scaled 0.05u; + z14 = (0.8u,-1.5u); z15 =(4u,-1u);draw z14--z15; + z16 = (1u,-0.9u);z17=(3.6u,-2.1u);draw z16--z17; + label.rt(btex $d_{1}$ etex scaled echelle, z15); + label.rt(btex $d'_{1}$ etex scaled echelle, z17); label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0.1u,0.025u)); label.urt(btex $\tmplabelespace{Q}$ etex scaled echelle, z10+(0.1u,0u)); + endfig; \end{mplibcode} }% {droiteplanpara}{% - \begin{mplibcode} + \begin{mplibcode}[PfLAL] + beginfig(67); + numeric u,echelle; u=\scaleminischemspace*1cm;echelle=\scaleminischemspace; - repdteplanpara ; + % parallelisme plan et droite + pair t,r; + transform T,S; + pickup pencircle scaled 0.025u; + t=(4u,0u); r=(1u,2u); + T = identity shifted t; + S = identity shifted r; + z0=(0u,0u); + z1 = z0 transformed T; + z2 = z0 transformed S; + z3 = z0 transformed T transformed S; + draw z0--z2; + draw z2--z3; + draw z0--z1 withpen pencircle scaled 0.05u; + draw z1--z3 withpen pencircle scaled 0.05u; + z4 = (1u,.5u); + z5 = (4u,1u); + draw z4--z5; + label.top(btex $d'$ etex scaled echelle, z4); + z6 = (1u,2.5u); + z7 = z6 shifted z5-z4; + draw z6--z7; + label.top(btex $d$ etex scaled echelle, z6); label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0.1u,0.025u)); + endfig; \end{mplibcode} }% {droitesortho}{% - \begin{mplibcode} + \begin{mplibcode}[PfLAM] + beginfig(68); + numeric u,echelle; u=\scaleminischemspace*1cm;echelle=\scaleminischemspace; - repdtesortho ; + % droites orthogonales + pair t,r; + transform T,S; + pickup pencircle scaled 0.025u; + t=(2u,3u); r=(0u,2u); + T = identity shifted t; + S = identity shifted r; + z0=(0u,0u); + z1 = z0 transformed T; + z2 = z0 transformed S; + draw z0--z1; + draw z0--z2; + label.bot(btex $I$ etex scaled echelle, z0); + z3=0.1[z0,z1]; + z4=0.1[z0,z2]; + z5=z3 shifted z4-z0; + draw z3--z5; + draw z4--z5; + z6=(0u,-1u); + z7 = z6 transformed T; + draw z7--z6; + label.bot(btex $\Delta$ etex scaled echelle, z7); + z8=(-1u,-1u); + z9= z8 transformed S; + label.lft(btex $d$ etex scaled echelle, z9); + draw z9--z8; + endfig; \end{mplibcode} }% {droiteorthoplan}{% - \begin{mplibcode} + \begin{mplibcode}[PfLAN] + beginfig(69); + numeric u,echelle; u=\scaleminischemspace*1cm;echelle=\scaleminischemspace; - repdroiteorthoplan ; + % droite orthogonale a un plan + pair t,r; + transform T,S; + path p[]; + pickup pencircle scaled 0.025u; + t=(4u,0u); r=(1u,2u); + T = identity shifted t; + S = identity shifted r; + z0=(0u,0u); + z1 = z0 transformed T; + z2 = z0 transformed S; + z3 = z0 transformed T transformed S; + draw z0--z2; + draw z2--z3; + draw z0--z1 withpen pencircle scaled 0.05u; + draw z1--z3 withpen pencircle scaled 0.05u; + z4 = (0.8u,1u); + z5 =(4u,1.5u); + draw z4--z5; + z6 = (1u,1.6u); + z7=(3.6u,0.4u); + draw z6--z7; + label.rt(btex $d$ etex scaled echelle, z5); + label.rt(btex $d'$ etex scaled echelle, z7); + p1 = z4--z5;p2 = z6--z7; + z8 = p1 intersectionpoint p2; + z9 = z8 shifted (0u,2u); + label.rt(btex $\Delta$ etex scaled echelle, z9); + draw z8--z9; + z10 = z8 shifted (0u,-2u); + p3 = z9--z10; + p4 = z0--z1; + z11 = p3 intersectionpoint p4; + draw z8--z11 dashed evenly; + draw z11--z10; + z12=0.1[z8,z7]; + z13=0.1[z8,z9]; + z14= z13 shifted z12-z8; + draw z12--z14; + draw z13--z14; + z15=0.2[z8,z4]; + z16=0.1[z8,z9]; + z17= z16 shifted z15-z8; + draw z15--z17; + draw z16--z17; label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0.1u,0.025u)); + endfig; \end{mplibcode} }% {plansparadroiteortho}{% - \begin{mplibcode} + \begin{mplibcode}[PfLAO] + beginfig(7); + numeric u,echelle; u=\scaleminischemspace*1cm;echelle=\scaleminischemspace; - repplansparadroiteortho ; + % plans paralleles et droite orthogonale + pair t,r; + transform T,S; + pickup pencircle scaled 0.025u; + t=(4u,0u); r=(1u,2u); + T = identity shifted t; + S = identity shifted r; + path p[]; + z0=(0u,0u); + z1 = z0 transformed T; + z2 = z0 transformed S; + z3 = z0 transformed T transformed S; + draw z0--z2; + draw z2--z3; + draw z0--z1 withpen pencircle scaled 0.05u; + draw z1--z3 withpen pencircle scaled 0.05u; + z4 = (0.8u,1u); z5 =(4u,1.5u);draw z4--z5; + z6 = (1u,1.6u);z7=(3.6u,0.4u);draw z6--z7; + label.rt(btex $d$ etex scaled echelle, z5); + label.rt(btex $d'$ etex scaled echelle, z7); + z10=(0u,-2.5u); + z11 = z10 transformed T; + z12 = z10 transformed S; + z13 = z10 transformed T transformed S; + draw z10--z12; + draw z12--z13; + draw z10--z11 withpen pencircle scaled 0.05u; + draw z11--z13 withpen pencircle scaled 0.05u; + z14 = (0.8u,-1.5u); + z15 =(4u,-1u); + draw z14--z15; + z16 = (1u,-0.9u); + z17=(3.6u,-2.1u); + draw z16--z17; + label.rt(btex $d_{1}$ etex scaled echelle, z15); + label.rt(btex $d'_{1}$ etex scaled echelle, z17); + p1=z4--z5; + p2=z6--z7; + p3=z14--z15; + p4=z16--z17; + p5=z0--z1; + p6=z10--z11; + z20 = p1 intersectionpoint p2; + z21 = p3 intersectionpoint p4; + p7 = z20--z21; + z22 = p7 intersectionpoint p5; + z24 = z20 shifted (0u,1.5u); + z25 = z21 shifted (0u,-1.5u); + p8 = z21--z25; + z23 = p8 intersectionpoint p6; + draw z24--z20; + draw z20--z22 dashed evenly; + draw z22--z21; + draw z21--z23 + dashed evenly; + draw z23--z25; + label.rt(btex $\Delta$ etex scaled echelle, z24); + z30=0.2[z20,z4]; + z31=0.1[z20,z24]; + z32 = z31 shifted z30-z20; + draw z32--z30; + draw z32--z31; + z40=0.2[z21,z14]; + z41=0.1[z21,z22]; + z42 = z41 shifted z40-z21; + draw z42--z40; + draw z42--z41; + z50=0.1[z20,z7]; + z51=0.1[z20,z24]; + z52 = z51 shifted z50-z20; + draw z52--z50; + draw z52--z51; + z60=0.1[z21,z17]; + z61=0.1[z21,z22]; + z62 = z61 shifted z60-z21; + draw z62--z60; + draw z62--z61; label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0.1u,0.025u)); label.urt(btex $\tmplabelespace{Q}$ etex scaled echelle, z10+(0.1u,0u)); + endfig; \end{mplibcode} }% {plansparadroitesortho}{% - \begin{mplibcode} + \begin{mplibcode}[PfLAP] + beginfig(71); + numeric u,echelle; u=\scaleminischemspace*1cm;echelle=\scaleminischemspace; - repdrtoitesorthoplanspara ; + % droites orthogonales a deux plans paralleles + pair t,r; + transform T,S; + pickup pencircle scaled 0.025u; + t=(4u,0u); r=(1u,2u); + T = identity shifted t; + S = identity shifted r; + path p[]; + z0=(0u,0u); + z1 = z0 transformed T; + z2 = z0 transformed S; + z3 = z0 transformed T transformed S; + draw z0--z2; + draw z2--z3; + draw z0--z1 withpen pencircle scaled 0.05u; + draw z1--z3 withpen pencircle scaled 0.05u; + z10=(0u,-2.5u); + z11 = z10 transformed T; + z12 = z10 transformed S; + z13 = z10 transformed T transformed S; + draw z10--z12; + draw z12--z13; + draw z10--z11 withpen pencircle scaled 0.05u; + draw z11--z13 withpen pencircle scaled 0.05u; + z20 = (2u,1u); + z26 = z20 shifted (0u,-2.5u); + z21 = z20 shifted (0u,2u); + z22 = z20 shifted (0u,-4.5u); + p1 = z21--z22; + p2 = z0--z1; + p3 = z10--z11; + z24 = p1 intersectionpoint p2; + z25 = p1 intersectionpoint p3; + draw z21--z20; + draw z20--z24 dashed evenly; + draw z24--z26; + draw z26--z25 dashed evenly; + draw z25--z22; + z30 = (3u,1.5u); + z36 = z30 shifted (0u,-2.5u); + z31 = z30 shifted (0u,2u); + z32 = z30 shifted (0u,-4.5u); + p11 = z31--z32; + p12 = z0--z1; + p13 = z10--z11; + z34 = p11 intersectionpoint p12; + z35 = p11 intersectionpoint p13; + draw z31--z30; + draw z30--z34 dashed evenly; + draw z34--z36; + draw z36--z35 dashed evenly; + draw z35--z32; + z40=0.1[z20,z30]; + z41=0.1[z20,z21]; + z42 = z41 shifted z40-z20; + draw z42--z40; + draw z42--z41; + z50=0.1[z30,z20]; + z51=0.1[z30,z31]; + z52 = z51 shifted z50-z30; + draw z52--z50; + draw z52--z51; + z60=0.1[z26,z36]; + z61=0.1[z26,z24]; + z62 = z61 shifted z60-z26; + draw z62--z60; + draw z62--z61; + z70=0.1[z36,z26]; + z71=0.2[z36,z34]; + z72 = z71 shifted z70-z36; + draw z72--z70; + draw z72--z71; + draw z20--z30; + draw z26--z36; label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0.1u,0.025u)); label.urt(btex $\tmplabelespace{Q}$ etex scaled echelle, z10+(0.1u,0u)); + endfig; \end{mplibcode} }% {plansperp}{% - \begin{mplibcode} + \begin{mplibcode}[PfLAQ] + beginfig(72); + numeric u,echelle; u=\scaleminischemspace*1cm;echelle=\scaleminischemspace; - repplansperp ; + % intersection de deux plans perpendiculaires + pair t,r; + transform T,S; + path p[],q[]; + pickup pencircle scaled 0.025u; + t=(4u,0u); r=(1u,2u); + T = identity shifted t; + S = identity shifted r; + z0=(0u,0u); + z1 = z0 transformed T; + z2 = z0 transformed S; + z3 = z0 transformed T transformed S; + draw z0--z2; + draw z0--z1 withpen pencircle scaled 0.05u; + draw z1--z3 withpen pencircle scaled 0.05u; + z5 = 0.5[z0,z1]; + z6 = z5 transformed S; + z7 = z5 shifted (0u,-2.5u); + z8 = z7 transformed S; + z5 = 0.5[z9,z7]; + z10= z9 transformed S; + draw z5--z6; + draw z9--z7; + draw z9--z10; + draw z10--z6; + draw z6--z3; + draw z7--z8; + p1 = z2--z6; + q1= z5--z9; + z11 = p1 intersectionpoint q1; + draw z11--z6 dashed evenly; + draw z2--z11; + p2 = z6--z8; + q2= z5--z1; + z12 = p2 intersectionpoint q2; + draw z12--z6 dashed evenly; + draw z8--z12; + label.rt(btex $d$ etex scaled echelle, 0.6[z5,z6]); + z13=0.5[z5,z6]; + z14 = z13 shifted (0u,2u); + z15 = z13 shifted (0u,-2u); + p3 = z0--z1; + q3 = z13--z15; + z16 = p3 intersectionpoint q3; + draw z14--z13; + draw z13--z16 dashed evenly; + draw z16--z15; + z20=0.2[z13,z6]; + z21=0.2[z13,z14]; + z22 = z21 shifted z20-z13; + draw z22--z20; + draw z22--z21; + z17 = z13 shifted 0.8(z1-z5); + z18 = z13 shifted 0.8(z0-z5); + p4 = z13--z18; + z19 = q1 intersectionpoint p4; + draw z18--z19; + draw z19--z13 dashed evenly; + draw z13--z17; + z30=0.1[z13,z18];z31=0.1[z13,z14]; + z32 = z31 shifted z30-z13; + draw z32--z30; + draw z32--z31; label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0.1u,0.025u)); label.rt(btex $\tmplabelespace{Q}$ etex scaled echelle, z9); + endfig; \end{mplibcode} }% {plansperpplan}{% - \begin{mplibcode} + \begin{mplibcode}[PfLAR] + beginfig(73); + numeric u,echelle; u=\scaleminischemspace*1cm;echelle=\scaleminischemspace; - repplansperpplan ; + % plans perpendiculaires a un meme plan + pair t,r; + transform T,S; + path p[],q[]; + pickup pencircle scaled 0.025u; + t=(5u,0u); r=(1u,2.3u); + T = identity shifted t; + S = identity shifted r; + z0=(0u,0u); + z1 = z0 transformed T; + z2 = z0 transformed S; + z3 = z0 transformed T transformed S; + draw z0--z2; + draw z0--z1 withpen pencircle scaled 0.05u; + draw z1--z3 withpen pencircle scaled 0.05u; + z4= 1/4[z0,z1]; + z5= 3/4[z0,z1]; + z6= 1/2[z4,z5]; + z7 = z6 shifted (0u,1u); + draw z4--z7; + draw z5--z7; + z8 = z4 shifted (0u,2u); + z9 = z5 shifted (0u,2u); + z10 = z7 shifted (0u,2u); + z4=0.5[z8,z11]; + z5=0.5[z12,z9]; + z7=0.5[z13,z10]; + draw z8--z11; + draw z8--z10; + draw z12--z9; + draw z9--z10; + draw z7--z10; + draw z7--z6 dashed evenly; + draw z6--z13; + draw z11--z13; + draw z13--z12; + p1 = z2--z3; + q1 = z8--z10; + q2=z9--z10; + z14= p1 intersectionpoint q1; + z15= p1 intersectionpoint q2; + draw z2--z14; + draw z14--z15 dashed evenly; + draw z15--z3; + z20=0.1[z7,z10]; + z21=0.2[z7,z4]; + z22 = z21 shifted z20-z7; + draw z22--z20; + draw z22--z21; + z30=0.1[z7,z10]; + z31=0.2[z7,z5]; + z32 = z31 shifted z30-z7; + draw z32--z30; + draw z32--z31; label.urt(btex $\tmplabelespace{Q}$ etex scaled echelle, z0+(0.1u,0.025u)); label.bot(btex $\tmplabelespace{P}$ etex scaled echelle, z11+(0.2u,0.6u)); label.bot(btex $\tmplabelespace{P}'$ etex scaled echelle, z12+(-0.2u,0.8u)); + endfig; \end{mplibcode} }% }% - \else - \IfStrEqCase{#3}{% - {plan}{% - \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] - repplansimple ; - label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u)); - \end{mpost} - }% - {interplans}{% - \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] - repinterplan ; - label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u)); - label.rt(btex $Q$ etex scaled echelle, z9); - \end{mpost} - }% - {plan3points}{% - \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] - repplantroispoints ; - label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u)); - \end{mpost} - }% - {plandroitessecantes}{% - \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] - repplandeuxdroites ; - label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u)); - \end{mpost} - }% - {plandroitepoint}{% - \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] - repplandroite ; - label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u)); - \end{mpost} - }% - {plandroitespara}{% - \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] - repplandtespara ; - label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u)); - \end{mpost} - }% - {droitesnoncopla}{% - \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] - droitesnoncoplan ; - label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u)); - \end{mpost} - }% - {incidence}{% - \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] - repincidence ; - label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u)); - label.urt(btex $Q$ etex scaled echelle, z4+(0.1u,0u)); - \end{mpost} - }% - {droiteparaplans}{% - \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] - repdroiteparaplans ; - label.urt(btex $P$ etex scaled echelle, z0+(0u,0.025u)); - label.lft(btex $Q$ etex scaled echelle, z6+(0u,0.5u)); - \end{mpost} - }% - {toit}{% - \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] - reptoit ; - \end{mpost} - }% - {planspara}{% - \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] - repplanspara ; - label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u)); - label.urt(btex $Q$ etex scaled echelle, z10+(0.1u,0u)); - \end{mpost} - }% - {droiteplanpara}{% - \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] - repdteplanpara ; - label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u)); - \end{mpost} - }% - {droitesortho}{% - \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] - repdtesortho ; - \end{mpost} - }% - {droiteorthoplan}{% - \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] - repdroiteorthoplan ; - label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u)); - \end{mpost} - }% - {plansparadroiteortho}{% - \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] - repplansparadroiteortho ; - label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u)); - label.urt(btex $Q$ etex scaled echelle, z10+(0.1u,0u)); - \end{mpost} - }% - {plansparadroitesortho}{% - \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] - repdrtoitesorthoplanspara ; - label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u)); - label.urt(btex $Q$ etex scaled echelle, z10+(0.1u,0u)); - \end{mpost} - }% - {plansperp}{% - \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] - repplansperp ; - label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u)); - label.rt(btex $Q$ etex scaled echelle, z9); - \end{mpost} - }% - {plansperpplan}{% - \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] - repplansperpplan ; - label.urt(btex $Q$ etex scaled echelle, z0+(0.1u,0.025u)); - label.bot(btex $P$ etex scaled echelle, z11+(0.2u,0.6u)); - label.bot(btex $P'$ etex scaled echelle, z12+(-0.2u,0.8u)); - \end{mpost} - }% - }% - \fi + \else% + La commande nécessite \hologo{LuaLaTeX} !% + % \else% + % \IfStrEqCase{#3}{% + % {plan}{% + % \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] + % input PfLEspace; + % repplansimple ; + % label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u)); + % \end{mpost} + % }% + % {interplans}{% + % \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] + % input PfLEspace; + % repinterplan ; + % label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u)); + % label.rt(btex $Q$ etex scaled echelle, z9); + % \end{mpost} + % }% + % {plan3points}{% + % \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] + % input PfLEspace; + % repplantroispoints ; + % label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u)); + % \end{mpost} + % }% + % {plandroitessecantes}{% + % \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] + % input PfLEspace; + % repplandeuxdroites ; + % label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u)); + % \end{mpost} + % }% + % {plandroitepoint}{% + % \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] + % input PfLEspace; + % repplandroite ; + % label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u)); + % \end{mpost} + % }% + % {plandroitespara}{% + % \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] + % input PfLEspace; + % repplandtespara ; + % label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u)); + % \end{mpost} + % }% + % {droitesnoncopla}{% + % \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] + % input PfLEspace; + % droitesnoncoplan ; + % label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u)); + % \end{mpost} + % }% + % {incidence}{% + % \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] + % input PfLEspace; + % repincidence ; + % label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u)); + % label.urt(btex $Q$ etex scaled echelle, z4+(0.1u,0u)); + % \end{mpost} + % }% + % {droiteparaplans}{% + % \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] + % input PfLEspace; + % repdroiteparaplans ; + % label.urt(btex $P$ etex scaled echelle, z0+(0u,0.025u)); + % label.lft(btex $Q$ etex scaled echelle, z6+(0u,0.5u)); + % \end{mpost} + % }% + % {toit}{% + % \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] + % input PfLEspace; + % reptoit ; + % \end{mpost} + % }% + % {planspara}{% + % \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] + % input PfLEspace; + % repplanspara ; + % label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u)); + % label.urt(btex $Q$ etex scaled echelle, z10+(0.1u,0u)); + % \end{mpost} + % }% + % {droiteplanpara}{% + % \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] + % input PfLEspace; + % repdteplanpara ; + % label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u)); + % \end{mpost} + % }% + % {droitesortho}{% + % \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] + % input PfLEspace; + % repdtesortho ; + % \end{mpost} + % }% + % {droiteorthoplan}{% + % \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] + % input PfLEspace; + % repdroiteorthoplan ; + % label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u)); + % \end{mpost} + % }% + % {plansparadroiteortho}{% + % \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] + % input PfLEspace; + % repplansparadroiteortho ; + % label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u)); + % label.urt(btex $Q$ etex scaled echelle, z10+(0.1u,0u)); + % \end{mpost} + % }% + % {plansparadroitesortho}{% + % \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] + % input PfLEspace; + % repdrtoitesorthoplanspara ; + % label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u)); + % label.urt(btex $Q$ etex scaled echelle, z10+(0.1u,0u)); + % \end{mpost} + % }% + % {plansperp}{% + % \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] + % input PfLEspace; + % repplansperp ; + % label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u)); + % label.rt(btex $Q$ etex scaled echelle, z9); + % \end{mpost} + % }% + % {plansperpplan}{% + % \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}] + % input PfLEspace; + % repplansperpplan ; + % label.urt(btex $Q$ etex scaled echelle, z0+(0.1u,0.025u)); + % label.bot(btex $P$ etex scaled echelle, z11+(0.2u,0.6u)); + % label.bot(btex $P'$ etex scaled echelle, z12+(-0.2u,0.8u)); + % \end{mpost} + % }% + % }% + \fi% } \endinput
\ No newline at end of file diff --git a/macros/latex/contrib/proflycee/tex/proflycee-tools-piton.tex b/macros/latex/contrib/proflycee/tex/proflycee-tools-piton.tex index d325b88e74..418c5aa8cc 100644 --- a/macros/latex/contrib/proflycee/tex/proflycee-tools-piton.tex +++ b/macros/latex/contrib/proflycee/tex/proflycee-tools-piton.tex @@ -2,7 +2,7 @@ % Copyright 2023-2024 Cédric Pierquet % Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt -%3.02e Thonny via piton + modification clé gobble ? +%3.03c Thonny via piton + modification clé gobble ? %3.01f PseudoCode via piton (?) %3.01e Correction du comportement de la console repl piton/pyluatex %2.7.6 Correction du comportement de la console, avec une meilleure gestion de la largeur ^^ (merci à ablasz ;-)) @@ -33,7 +33,7 @@ Largeur=\linewidth,% Alignement=center,% Lignes=true,% - Gobble={tabs},% + Gobble={},% TaillePolice=\footnotesize,% Filigrane=false,% Style=Classique,% @@ -97,7 +97,7 @@ Largeur=\linewidth,% Alignement=center,% Lignes=true,% - Gobble={tabs},% + Gobble={},% TaillePolice=\footnotesize,% Filigrane=false,% Style=Classique,% @@ -177,7 +177,7 @@ } \IfInteger{\CODPITgobble}{\PitonOptions{gobble=\CODPITgobble}}{}% %--fin gestion du gobble - \PitonOptions{break-lines,indent-broken-lines,continuation-symbol={}}%,numbers-sep=0.65em}%language=Python} + \PitonOptions{break-lines,indent-broken-lines,continuation-symbol={\;}}%,numbers-sep=0.65em}%language=Python} %------les styles tcbox \IfEq{\CODPITstyle}{Moderne}%style Moderne (défaut) {% @@ -227,7 +227,7 @@ \useKVdefault[envpcpiton]% \setKV[envpcpiton]{#1}% on paramètres les nouvelles clés et on les simplifie %------les styles piton - \PitonOptions{break-lines,indent-broken-lines,language=minimal,continuation-symbol={}}%,numbers-sep=0.65em}% + \PitonOptions{break-lines,indent-broken-lines,language=minimal,continuation-symbol={\;}}%,numbers-sep=0.65em}% \SetPitonStyle{ Number = } \ifboolKV[envpcpiton]{Couleurs}% {% @@ -360,7 +360,8 @@ { \restoreKV[consolepyluatex]% revenir au valeurs par défaut \setKV[consolepyluatex]{#2}% lit les arguments optionnels - \PitonOptions{width={\ConsPyluaLarg-5mm},break-lines,end-of-broken-line={},continuation-symbol={},#1} + \PitonOptions{width={\ConsPyluaLarg-5mm},break-lines,end-of-broken-line={\,},continuation-symbol={\;},#1} + %\PitonOptions{width={\ConsPyluaLarg-5mm},#1} \PyLTVerbatimEnv \ifboolKV[consolepyluatex]{Logo} {% @@ -398,7 +399,7 @@ NomFichier=script.py,% NomConsole=console,% IntroConsole={Python 3.11.6 /usr/bin/python},% - Gobble={tabs} + Gobble={} } \NewPitonEnvironment{PitonThonnyEditor}{ D<>{} O{} m }% @@ -434,7 +435,18 @@ \PyLTVerbatimEnv% \tcbset{tcbthonnypitonconsole/.style={title=\vphantom{pf}\thonnypitonshellname\:\textcolor{gray}{×}},before skip=0.33\baselineskip,after skip=0.33\baselineskip}% \noindent% - \PitonOptions{width={#3-5mm},break-lines,end-of-broken-line={},continuation-symbol={}}% + %--gestion du gobble + \IfStrEqCase{\thonnypitongobble}{% + {auto}{\PitonOptions{auto-gobble}}% + {env}{\PitonOptions{env-gobble}}% + {tabs}{\PitonOptions{tabs-auto-gobble}}% + {tabs-auto}{\PitonOptions{tabs-auto-gobble,auto-gobble}}% + {auto-tabs}{\PitonOptions{auto-gobble,tabs-auto-gobble}}% + {all}{\PitonOptions{auto-gobble,tabs-auto-gobble,env-gobble}}% + } + \IfInteger{\thonnypitongobble}{\PitonOptions{gobble=\thonnypitongobble}}{}% + %--fin gestion du gobble + \PitonOptions{width={#3-5mm},break-lines,end-of-broken-line={\,},continuation-symbol={\;}}% \tcolorbox[sharp corners=all,enhanced,size=small,width=#3,colframe=gray,colback=white,tcbthonnypitonconsole,fonttitle=\scriptsize\sffamily,coltitle=black, attach boxed title to top left={yshift*=-0.4pt},fontupper=\footnotesize,bottom=-0.25mm,#2,boxed title style={size=tight,colback=lightgray!15,sharp corners=all,boxrule=0.4pt,boxsep=2pt},boxrule=0.4pt,top=1mm]% \textcolor{gray}{\texttt{\thonnypitonintroconsole}} diff --git a/macros/latex/contrib/pynotebook/doc/pynotebook-doc.pdf b/macros/latex/contrib/pynotebook/doc/pynotebook-doc.pdf Binary files differindex e64acd414c..47e8ae1f0e 100644 --- a/macros/latex/contrib/pynotebook/doc/pynotebook-doc.pdf +++ b/macros/latex/contrib/pynotebook/doc/pynotebook-doc.pdf diff --git a/macros/latex/contrib/pynotebook/doc/pynotebook-doc.tex b/macros/latex/contrib/pynotebook/doc/pynotebook-doc.tex index ca6d4511e1..b721cb848d 100644 --- a/macros/latex/contrib/pynotebook/doc/pynotebook-doc.tex +++ b/macros/latex/contrib/pynotebook/doc/pynotebook-doc.tex @@ -33,8 +33,8 @@ \usepackage[margin=2cm]{geometry} \setlength{\parindent}{0pt} -\def\TPversion{0.1.1} -\def\TPdate{19/02/2024} +\def\TPversion{0.1.3} +\def\TPdate{30/03/2024} \sethlcolor{lightgray!25} \NewDocumentCommand\ShowCode{ m }{% @@ -189,6 +189,10 @@ Recommencer [o/n] ? n \section{History} +\verb|v0.1.3|~:~~~~Modification with \texttt{gobble} (for \textsf{piton}) + +\verb|v0.1.2|~:~~~~Enhancements with \texttt{gobble} (for \textsf{piton}) + \verb|v0.1.1|~:~~~~New block \textsf{In/Out} with \textsf{piton/pyluatex} (tks to F. Pantigny) \verb|v0.1.0|~:~~~~Initial version @@ -474,25 +478,37 @@ The package provides environments : \end{itemize} \begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10] -\begin{NotebookPitonIn}(*)[options tcbox]{<width>} +\begin{NotebookPitonRaw}[options tcbox]{width}<gobble options> +<code> +\end{NotebookPitonRaw} +\end{codehigh} + +\begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10] +\begin{NotebookPitonMarkdown}[options tcbox]{width} +<code> +\end{NotebookPitonMarkdown} +\end{codehigh} + +\begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10] +\begin{NotebookPitonIn}(*)[options tcbox]{width}<gobble options> <code> \end{NotebookPitonIn} \end{codehigh} \begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10] -\begin{NotebookPitonOut}(*)[options tcbox]{<width>} +\begin{NotebookPitonOut}(*)[options tcbox]{width}<gobble options> <code> \end{NotebookPitonOut} \end{codehigh} \begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10] -\begin{NotebookPitonInOut}(*)[options tcbox]{<width>} +\begin{NotebookPitonInOut}(*)[options tcbox]{width}<gobble options> <code> \end{NotebookPitonInOut} \end{codehigh} \begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10] -\begin{NotebookPitonConsole}[options tcbox]{<width>} +\begin{NotebookPitonConsole}[options tcbox]{width}<gobble options> <code> \end{NotebookPitonConsole} \end{codehigh} @@ -501,6 +517,18 @@ The starred versions removes the counter, and don't display it. The blocks with \textit{header} (\texttt{In/Out}) are automatically numbered, and the global style is fixed. +\smallskip + +\texttt{gobble options} are given within \textsf{piton} syntax : + +\begin{itemize} + \item \texttt{auto-gobble} ; + \item \texttt{env-gobble} ; + \item \texttt{gobble=xx} ; + \item \texttt{tabs-auto-gobble} ; + \item a mix of them. +\end{itemize} + \subsection{Examples} Due to the necessary usage of \hologo{LuaLaTeX} and \textsf{--shell-escape}, examples are given in a separate file. diff --git a/macros/latex/contrib/pynotebook/doc/pynotebook-examples-pitonpyluatex.pdf b/macros/latex/contrib/pynotebook/doc/pynotebook-examples-pitonpyluatex.pdf Binary files differindex f5a8cfb331..5a816e5eba 100644 --- a/macros/latex/contrib/pynotebook/doc/pynotebook-examples-pitonpyluatex.pdf +++ b/macros/latex/contrib/pynotebook/doc/pynotebook-examples-pitonpyluatex.pdf diff --git a/macros/latex/contrib/pynotebook/doc/pynotebook-examples-pitonpyluatex.tex b/macros/latex/contrib/pynotebook/doc/pynotebook-examples-pitonpyluatex.tex index 6dfdc9bd53..34112ed0c7 100644 --- a/macros/latex/contrib/pynotebook/doc/pynotebook-examples-pitonpyluatex.tex +++ b/macros/latex/contrib/pynotebook/doc/pynotebook-examples-pitonpyluatex.tex @@ -3,7 +3,7 @@ % arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)') \documentclass[a4paper,11pt]{article} -\def\PLver{0.1.1} +\def\PLver{0.1.3} \usepackage[margin=1.5cm]{geometry} \usepackage{pynotebook} \usepackage[executable=python]{pyluatex} @@ -21,6 +21,23 @@ \usepackage[executable=python]{pyluatex} % with a specific compilation !! \end{codehigh} +\section{With gobble} + +Due to \texttt{gobble} options with \textsf{piton}, it's possible to add \texttt{gobble} parameters to the environments, given within last argument between \texttt{<...>}, and default is \texttt{empty} : + +\begin{itemize} + \item \texttt{<gobble=xx>} ; + \item \texttt{<env-gobble>} ; + \item \texttt{<auto-gobble>} ; + \item \texttt{<tabs-auto-gobble>}. +\end{itemize} + +\noindent{}\textbf{Explanations} are given in the doc of \textsf{piton} : + +\begin{itemize} + \item \texttt{https://ctan.org/pkg/piton} +\end{itemize} + \section{Examples of text blocks} \begin{codehigh} @@ -116,7 +133,7 @@ print([fibonacci_of(n) for n in range(10)]) \end{NotebookPitonOut} \end{codehigh} -\begin{NotebookPitonOut}{\linewidth} +\begin{NotebookPitonOut}{0.75\linewidth} def fibonacci_aux(n,a,b): if n == 0 : return a @@ -279,6 +296,20 @@ def fibonacci_of(n): print([fibonacci_of(n) for n in range(10)]) \end{NotebookPitonInOut} +\subsection{Alternate environment for In/Out} + +Thanks to F. Pantigny, an alternate environment for \texttt{In/Out} is available, with \textit{all} line numbers and continuation symbol. + +\begin{codehigh} +\begin{NotebookPitonAllNum}{0.66\linewidth} +print([i**2 for i in range(50)]) +\end{NotebookPitonAllNum} +\end{codehigh} + +\begin{NotebookPitonAllNum}{0.66\linewidth} +print([i**2 for i in range(50)]) +\end{NotebookPitonAllNum} + \pagebreak \section{Global example} @@ -353,14 +384,14 @@ def calculPerimetre(cote1, cote2, cote3) : perimetre1 = calculPerimetre(6, 4, 3) perimetre2 = calculPerimetre(10, 3, 11) -print(f"Le périmètre de mon 1er triangle est {perimetre1}, et celle de mon 2d est {perimetre2}.") +print(f"Le périm de mon 1er triangle est {perimetre1}, et celui de mon 2d est {perimetre2}.") \end{NotebookPitonInOut} \begin{NotebookPitonInOut}{\linewidth} A = 15 B = 10 C = 11 -print(f"Le périmètre de mon triangle est {calculPerimetre(A, B, C)}.") +print(f"Le périmètre de mon triangle est {calculPerimetre(A,B,C)}.") \end{NotebookPitonInOut} \begin{NotebookPitonIn}{\linewidth} @@ -371,4 +402,7 @@ calculPerimetre(4, 4, 4) print(calculPerimetre(4, 4, 4)) \end{NotebookPitonConsole} +\begin{NotebookPitonInOut}{0.5\linewidth} +print([i**2 for i in range(50)]) +\end{NotebookPitonInOut} \end{document}
\ No newline at end of file diff --git a/macros/latex/contrib/pynotebook/tex/pynotebook.sty b/macros/latex/contrib/pynotebook/tex/pynotebook.sty index f899c44b15..242c6c0988 100644 --- a/macros/latex/contrib/pynotebook/tex/pynotebook.sty +++ b/macros/latex/contrib/pynotebook/tex/pynotebook.sty @@ -3,7 +3,9 @@ % licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{pynotebook}[2024/02/19 0.1.1 Present codes like in jupyter notebook] +\ProvidesPackage{pynotebook}[2024/03/30 0.1.3 Present codes like in jupyter notebook] +%0.1.3 Modification with gobble (piton) +%0.1.2 Enhancement with gobble and new code for in/out with all numbers lines %0.1.1 New block In/Out %0.1.0 Initial version @@ -116,7 +118,7 @@ {\tcbset{tcbjpuptitlein/.style={title=\promptjupyter*{\JupyterPromptIn}{red!75!black}{\theJupyterIn}{\hspace*{\OffsetPromptJupyter}}}}}% {\refstepcounter{JupyterIn}\tcbset{tcbjpuptitlein/.style={title=\promptjupyter{\JupyterPromptIn\ifnum\value{JupyterIn}<10~\fi}{red!75!black}{\theJupyterIn}{\hspace*{\OffsetPromptJupyter}}}}}% \tcblisting{% - breakable,sharp corners=all,boxrule=0.5pt,enhanced,size=small,width=#3,tcbjpuparskip, + breakable,sharp corners=all,enhanced,size=small,width=#3,tcbjpuparskip,boxrule=0.5pt, colframe=gray,colback=lightgray!15, left skip=\LargeurPromptJupyter+\OffsetPromptJupyter-2mm, tcbjpuptitlein, @@ -124,7 +126,7 @@ attach title to upper, listing only, listing options={style=PLJupyter,xleftmargin=\LargeurNumbersJupyter,numbers=left,firstnumber=1,numbersep=2mm},% - overlay={\begin{tcbclipinterior}\draw[line width=0.375pt,gray!75] ([xshift={\LargeurNumbersJupyter+1mm}]frame.south west)--([xshift={\LargeurNumbersJupyter+1mm}]frame.north west);\end{tcbclipinterior}},% + overlay={\begin{tcbclipinterior}\draw[line width=0.5pt,gray] ([xshift={\LargeurNumbersJupyter+1mm}]frame.south west)--([xshift={\LargeurNumbersJupyter+1mm}]frame.north west);\end{tcbclipinterior}},% #2 }% }% @@ -138,8 +140,8 @@ \addtolength{\LargeurNumbersJupyter}{0.5mm}% \noindent% \tcblisting{% - breakable,sharp corners=all,boxrule=0.3pt,enhanced,size=small,width=#2,tcbjpuparskip, - colframe=lightgray!15,colback=white, + breakable,sharp corners=all,enhanced,size=small,width=#2,tcbjpuparskip,boxrule=0.5pt, + colframe=lightgray!25,colback=white, left skip=\LargeurPromptJupyter+\OffsetPromptJupyter-2mm, attach title to upper, listing only, @@ -160,8 +162,8 @@ {\tcbset{tcbjpuptitleout/.style={title=\promptjupyter{\JupyterPromptOut\ifnum\value{JupyterIn}<10~\fi}{blue!75!black}{\theJupyterIn}{\hspace*{\OffsetPromptJupyter}}}}}% \noindent% \tcblisting{% - breakable,sharp corners=all,boxrule=0.3pt,enhanced,size=small,width=#3,tcbjpuparskip, - colframe=lightgray!15,colback=white, + breakable,sharp corners=all,enhanced,size=small,width=#3,tcbjpuparskip,boxrule=0.5pt, + colframe=lightgray!25,colback=white, left skip=\LargeurPromptJupyter+\OffsetPromptJupyter-2mm, tcbjpuptitleout, fonttitle=\linespread{1}\footnotesize, @@ -181,13 +183,13 @@ \addtolength{\LargeurNumbersJupyter}{0.5mm}% \noindent% \tcblisting{% - breakable,sharp corners=all,boxrule=0.5pt,enhanced,size=small,width=#2,tcbjpuparskip, + breakable,sharp corners=all,enhanced,size=small,width=#2,tcbjpuparskip,boxrule=0.5pt, colframe=gray,colback=lightgray!15, left skip=\LargeurPromptJupyter+\OffsetPromptJupyter-2mm, attach title to upper, listing only, listing options={style=tcblatex,basicstyle=\ttfamily\footnotesize,numberstyle=\scriptsize\ttfamily\color{gray},xleftmargin=\LargeurNumbersJupyter,numbers=left,firstnumber=1,numbersep=2mm},% - overlay={\begin{tcbclipinterior}\draw[line width=0.375pt,gray!75] ([xshift={\LargeurNumbersJupyter+1mm}]frame.south west)--([xshift={\LargeurNumbersJupyter+1mm}]frame.north west);\end{tcbclipinterior}},% + overlay={\begin{tcbclipinterior}\draw[line width=0.5pt,gray] ([xshift={\LargeurNumbersJupyter+1mm}]frame.south west)--([xshift={\LargeurNumbersJupyter+1mm}]frame.north west);\end{tcbclipinterior}},% #1 }% }% @@ -200,7 +202,7 @@ \SetJupyterLengths% \addtolength{\LargeurNumbersJupyter}{0.5mm}% \noindent% - \tcolorbox[breakable,sharp corners=all,boxrule=0.3pt,enhanced,size=small,width=#2,tcbjpuparskip,colframe=lightgray!15,colback=white,left skip=\LargeurPromptJupyter+\OffsetPromptJupyter-2mm, + \tcolorbox[breakable,sharp corners=all,enhanced,size=small,boxrule=0.5pt,width=#2,tcbjpuparskip,colframe=lightgray!25,colback=white,left skip=\LargeurPromptJupyter+\OffsetPromptJupyter-2mm, attach title to upper,fontupper=\footnotesize,tcbjpuparskip,#1]% }% {% @@ -211,7 +213,7 @@ %----With Piton (only lualatex) \ifluatex \RequirePackage{piton} -\RequirePackage{environ} +%\RequirePackage{environ} \newlength{\LargeurPromptJupiter} \newlength{\LargeurPromptJupiterIn} \newlength{\LargeurPromptJupiterOut} @@ -226,31 +228,32 @@ \settowidth{\LargeurNumbersJupiter}{\footnotesize\texttt{00}}% } -\NewPitonEnvironment{NotebookPitonIn}{ s O{} m }% +\NewPitonEnvironment{NotebookPitonIn}{ s O{} m !D<>{} }% {% \SetJupiterLengths% \IfBooleanTF{#1}% {\tcbset{tcbjpuptitlein/.style={title=\promptjupyter*{\JupyterPromptIn}{red!75!black}{\theJupyterIn}{\hspace*{\OffsetPromptJupiter}}}}}% {\refstepcounter{JupyterIn}\tcbset{tcbjpuptitlein/.style={title=\promptjupyter{\JupyterPromptIn\ifnum\value{JupyterIn}<10~\fi}{red!75!black}{\theJupyterIn}{\hspace*{\OffsetPromptJupiter}}}}}% \noindent% - \PitonOptions{left-margin={\LargeurNumbersJupiter+1.75mm},all-line-numbers}% - \PitonOptions{tabs-auto-gobble,break-lines,indent-broken-lines}% + \PitonOptions{left-margin={\LargeurNumbersJupiter+1.75mm},line-numbers={skip-empty-lines=false,label-empty-lines=true}}% + \PitonOptions{break-lines,indent-broken-lines,continuation-symbol={},#4}% %on crée la boîte - \tcolorbox[breakable,sharp corners=all,boxrule=0.5pt,enhanced,size=small,width=#3,colframe=gray,colback=lightgray!15,left skip=\LargeurPromptJupiter+\OffsetPromptJupiter-2mm,tcbjpuptitlein,fonttitle=\linespread{1}\footnotesize,attach title to upper,fontupper=\footnotesize,overlay={% - \begin{tcbclipinterior}\draw[line width=0.375pt,gray!75] ([xshift={\LargeurNumbersJupiter+2.25mm}]frame.south west)--([xshift={\LargeurNumbersJupiter+2.25mm}]frame.north west);\end{tcbclipinterior}},bottom=-0.5mm,tcbjpuparskip,#2]% + \tcolorbox[size=small,breakable,sharp corners=all,boxrule=0.5pt,enhanced,width=#3,colframe=gray,colback=lightgray!15,left skip=\LargeurPromptJupiter+\OffsetPromptJupiter-2mm,tcbjpuptitlein,fonttitle=\linespread{1}\footnotesize,attach title to upper,fontupper=\footnotesize,overlay={% + \begin{tcbclipinterior}\draw[line width=0.5pt,gray] ([xshift={\LargeurNumbersJupiter+2.25mm}]frame.south west)--([xshift={\LargeurNumbersJupiter+2.25mm}]frame.north west);\end{tcbclipinterior}},bottom=-0.5mm,top=0.5mm,tcbjpuparskip,#2]% }% {% \endtcolorbox% + \ignorespacesafterend% } -\NewDocumentEnvironment{NotebookPitonConsole}{ O{} m }% +\NewDocumentEnvironment{NotebookPitonConsole}{ O{} m !D<>{} }% {% \SetJupiterLengths% \noindent% - \PitonOptions{tabs-auto-gobble,break-lines,indent-broken-lines}% + \PitonOptions{width={#2-5mm-\LargeurPromptJupiter-\OffsetPromptJupiter+2mm},break-lines,end-of-broken-line={},continuation-symbol={},#3}% %on crée la boîte \PyLTVerbatimEnv% - \tcolorbox[breakable,sharp corners=all,boxrule=0.3pt,enhanced,size=small,width=#2,colframe=lightgray!15,colback=white,left skip=\LargeurPromptJupiter+\OffsetPromptJupiter-2mm,attach title to upper,fontupper=\footnotesize,bottom=-0.5mm,tcbjpuparskip,#1]% + \tcolorbox[breakable,sharp corners=all,enhanced,size=small,boxrule=0.5pt,width=#2,colframe=lightgray!25,colback=white,left skip=\LargeurPromptJupiter+\OffsetPromptJupiter-2mm,attach title to upper,fontupper=\footnotesize,bottom=-0.5mm,tcbjpuparskip,#1]% \begin{pythonq}% }% {% @@ -261,19 +264,20 @@ tex.print("\\end{Piton}") }% \endtcolorbox% + \ignorespacesafterend% } -\NewDocumentEnvironment{NotebookPitonOut}{ s O{} m }% +\NewDocumentEnvironment{NotebookPitonOut}{ s O{} m !D<>{} }% {% \SetJupiterLengths% \IfBooleanTF{#1}% {\tcbset{tcbjpuptitleout/.style={title=\promptjupyter*{\JupyterPromptOut}{blue!75!black}{\theJupyterIn}{\hspace*{\OffsetPromptJupiter}}}}}% {\tcbset{tcbjpuptitleout/.style={title=\promptjupyter{\JupyterPromptOut\ifnum\value{JupyterIn}<10~\fi}{blue!75!black}{\theJupyterIn}{\hspace*{\OffsetPromptJupiter}}}}}% \noindent% - \PitonOptions{tabs-auto-gobble,break-lines,indent-broken-lines}% + \PitonOptions{continuation-symbol={},end-of-broken-line={},break-lines,#4}% %on crée la boîte \PyLTVerbatimEnv% - \tcolorbox[breakable,sharp corners=all,boxrule=0.3pt,enhanced,size=small,width=#3,colframe=lightgray!15,colback=white,left skip=\LargeurPromptJupiter+\OffsetPromptJupiter-2mm,tcbjpuptitleout,fonttitle=\linespread{1}\footnotesize,attach title to upper,fontupper=\footnotesize,bottom=-0.5mm,tcbjpuparskip,#2]% + \tcolorbox[breakable,sharp corners=all,enhanced,size=small,boxrule=0.5pt,width=#3,colframe=lightgray!25,colback=white,left skip=\LargeurPromptJupiter+\OffsetPromptJupiter-2mm,tcbjpuptitleout,fonttitle=\linespread{1}\footnotesize,attach title to upper,fontupper=\footnotesize,bottom=-0.5mm,top=0.5mm,tcbjpuparskip,#2]% \begin{pythonq}% }% {% @@ -284,42 +288,44 @@ tex.print("\\end{Piton}") }% \endtcolorbox% + \ignorespacesafterend% } -\NewPitonEnvironment{NotebookPitonRaw}{ O{} m }% +\NewPitonEnvironment{NotebookPitonRaw}{ O{} m !D<>{} }% {% \SetJupiterLengths% \noindent% \SetPitonStyle{Number=}% - \PitonOptions{left-margin={\LargeurNumbersJupiter+1.75mm},all-line-numbers,language=minimal}% - \PitonOptions{tabs-auto-gobble,break-lines,indent-broken-lines}% + \PitonOptions{left-margin={\LargeurNumbersJupiter+1.75mm},line-numbers={skip-empty-lines=false,label-empty-lines=true},language=minimal}% + \PitonOptions{continuation-symbol={},break-lines,indent-broken-lines,#3}% %on crée la boîte - \tcolorbox[breakable,sharp corners=all,boxrule=0.5pt,enhanced,size=small,width=#2,colframe=gray,colback=lightgray!15,left skip=\LargeurPromptJupiter+\OffsetPromptJupiter-2mm,attach title to upper,fontupper=\footnotesize,overlay={% - \begin{tcbclipinterior}\draw[line width=0.375pt,gray!75] ([xshift={\LargeurNumbersJupiter+2.25mm}]frame.south west)--([xshift={\LargeurNumbersJupiter+2.25mm}]frame.north west);\end{tcbclipinterior}},bottom=-0.5mm,tcbjpuparskip,#1]% + \tcolorbox[breakable,sharp corners=all,enhanced,size=small,boxrule=0.5pt,width=#2,colframe=gray,colback=lightgray!25,left skip=\LargeurPromptJupiter+\OffsetPromptJupiter-2mm,attach title to upper,fontupper=\footnotesize,overlay={% + \begin{tcbclipinterior}\draw[line width=0.5pt,gray] ([xshift={\LargeurNumbersJupiter+2.25mm}]frame.south west)--([xshift={\LargeurNumbersJupiter+2.25mm}]frame.north west);\end{tcbclipinterior}},bottom=-0.5mm,tcbjpuparskip,#1]% }% {% \endtcolorbox% + \ignorespacesafterend% } \NewDocumentEnvironment{NotebookPitonMarkdown}{ O{} m }% {% \SetJupiterLengths% \noindent% - \tcolorbox[breakable,sharp corners=all,boxrule=0.3pt,enhanced,size=small,width=#2,tcbjpuparskip,colframe=lightgray!15,colback=white,left skip=\LargeurPromptJupiter+\OffsetPromptJupiter-2mm, + \tcolorbox[breakable,sharp corners=all,enhanced,size=small,boxrule=0.5pt,width=#2,tcbjpuparskip,colframe=lightgray!25,colback=white,left skip=\LargeurPromptJupiter+\OffsetPromptJupiter-2mm, attach title to upper,fontupper=\footnotesize,tcbjpuparskip,#1]% }% {% \endtcolorbox% + \ignorespacesafterend% }% -\NewDocumentEnvironment{NotebookPitonInOut}{ s O{} m }% +\NewDocumentEnvironment{NotebookPitonInOut}{ s O{} m !D<>{} }% {% \PyLTVerbatimEnv% \begin{pythonq}% }% {% \end{pythonq}% - % \SetJupiterLengths% \IfBooleanTF{#1}% {% @@ -330,10 +336,11 @@ \tcbset{tcbjpuptitlein/.style={title=\promptjupyter{\JupyterPromptIn\ifnum\value{JupyterIn}<10~\fi}{red!75!black}{\theJupyterIn}{\hspace*{\OffsetPromptJupiter}}}}% }% \noindent% - \tcolorbox[breakable,sharp corners=all,boxrule=0.5pt,enhanced,size=small,width=#3,colframe=gray,colback=lightgray!15,left skip=\LargeurPromptJupiter+\OffsetPromptJupiter-2mm,tcbjpuptitlein,fonttitle=\linespread{1}\footnotesize, - attach title to upper,fontupper=\footnotesize,overlay={\begin{tcbclipinterior}\draw[line width=0.375pt,gray!75] ([xshift={\LargeurNumbersJupiter+2.25mm}]frame.south west)--([xshift={\LargeurNumbersJupiter+2.25mm}]frame.north west) ;\end{tcbclipinterior}},bottom=-0.5mm,tcbjpuparskip,#2]% + \tcolorbox[breakable,sharp corners=all,enhanced,size=small,boxrule=0.5pt,width=#3,colframe=gray,colback=lightgray!15,left skip=\LargeurPromptJupiter+\OffsetPromptJupiter-2mm,tcbjpuptitlein,fonttitle=\linespread{1}\footnotesize, + attach title to upper,fontupper=\footnotesize,overlay={\begin{tcbclipinterior}\draw[line width=0.5pt,gray] ([xshift={\LargeurNumbersJupiter+2.25mm}]frame.south west)--([xshift={\LargeurNumbersJupiter+2.25mm}]frame.north west) ;\end{tcbclipinterior}},bottom=-0.5mm,top=0.5mm,tcbjpuparskip,#2]% + %\PitonOptions{width={#3-5mm}} \directlua{% - tex.print("\\begin{Piton}[left-margin=\\LargeurNumbersJupiter+1.75mm,all-line-numbers,tabs-auto-gobble,break-lines,indent-broken-lines]") + tex.print("\\begin{Piton}[left-margin=\\LargeurNumbersJupiter+1.75mm,line-numbers={skip-empty-lines=false,label-empty-lines=true},break-lines,indent-broken-lines,continuation-symbol={},#4]") tex.print(pyluatex.get_last_code()) tex.print("\\end{Piton}") }% @@ -347,13 +354,128 @@ }% \tcbset{reset}% \noindent% - \tcolorbox[breakable,sharp corners = all,boxrule=0.3pt,enhanced,size=small,width=#3,colframe=lightgray!15,colback=white,left skip=\LargeurPromptJupiter+\OffsetPromptJupiter-2mm,tcbjpuptitleout,fonttitle=\linespread{1}\footnotesize,attach title to upper,fontupper=\footnotesize,bottom=-0.5mm,tcbjpuparskip,#2]% + \tcolorbox[breakable,sharp corners = all,enhanced,size=small,boxrule=0.5pt,width=#3,colframe=lightgray!25,colback=white,left skip=\LargeurPromptJupiter+\OffsetPromptJupiter-2mm,tcbjpuptitleout,fonttitle=\linespread{1}\footnotesize,attach title to upper,fontupper=\footnotesize,bottom=-0.5mm,top=0.5mm,tcbjpuparskip,#2]% + %\PitonOptions{width={#3-5mm-\LargeurPromptJupiter-\OffsetPromptJupiter+2mm}} \directlua{% - tex.print("\\begin{Piton}[tabs-auto-gobble,break-lines,indent-broken-lines]") + tex.print("\\begin{Piton}[break-lines,continuation-symbol={},end-of-broken-line={},#4]") tex.print(pyluatex.get_last_output()) tex.print("\\end{Piton}") }% \endtcolorbox% + \ignorespacesafterend% +} + +\NewPitonEnvironment{NotebookPitonAllNum}{ s O{} m !D<>{} }% +{% +\SetJupiterLengths +\IfBooleanTF{#1}% +{\tcbset +{ +tcbjpuptitlein/.style = + { title = \promptjupyter*{\JupyterPromptIn} + {red!75!black} + {\theJupyterIn} + {\hspace*{\OffsetPromptJupiter}} + }% +}% +}% +{\refstepcounter{JupyterIn} +\tcbset +{ +tcbjpuptitlein/.style = + { title = \promptjupyter{\JupyterPromptIn \ifnum\value{JupyterIn}<10~\fi} + {red!75!black} + {\theJupyterIn} + {\hspace*{\OffsetPromptJupiter}} + } +}% +}% +\noindent +\PitonOptions +{ +left-margin = \LargeurNumbersJupiter + 1.75mm , +all-line-numbers, +break-lines, +indent-broken-lines, +continuation-symbol={}, +#4 +}% +\tcolorbox[breakable, + sharp corners=all, + enhanced, + size = small, + boxrule = 0.5pt, + width = #3, + colframe = gray, + colback = lightgray!15, + left skip = \LargeurPromptJupiter+\OffsetPromptJupiter-2mm, + tcbjpuptitlein, + fonttitle = \linespread{1}\footnotesize, + attach title to upper, + fontupper = \footnotesize, + overlay = {% + \begin{tcbclipinterior} + \draw[line width=0.5pt,gray] + ([xshift={\LargeurNumbersJupiter+2.25mm}]frame.south west) + --([xshift={\LargeurNumbersJupiter+2.25mm}]frame.north west) ; + \end{tcbclipinterior}}, + bottom = -0.5mm, + tcbjpuparskip, + #2]% +} +{ +\endtcolorbox +% +\tcbset{reset}% +\IfBooleanTF{#1}% +{ \tcbset +{ tcbjpuptitleout/.style = + { title = + \promptjupyter*{\JupyterPromptOut} + {blue!75!black} + {\theJupyterIn} + {\hspace*{\OffsetPromptJupiter}} + } +}% +}% +{ \tcbset +{ tcbjpuptitleout/.style = + { title = + \promptjupyter{\JupyterPromptOut \ifnum\value{JupyterIn}<10~\fi} + {blue!75!black} + {\theJupyterIn} + {\hspace*{\OffsetPromptJupiter}} + } +}% +}% +\tcolorbox[breakable, + sharp corners = all, + enhanced, + size = small, + boxrule = 0.5pt, + width = #3, + colframe = lightgray!25, + colback = white, + left skip = \LargeurPromptJupiter + \OffsetPromptJupiter - 2mm, + tcbjpuptitleout, + fonttitle = \linespread{1}\footnotesize, + attach title to upper, + fontupper = \footnotesize, + overlay = {% + \begin{tcbclipinterior} + \draw[line width=0.5pt,lightgray!15] + ([xshift={\LargeurNumbersJupiter+2.25mm}]frame.south west) + --([xshift={\LargeurNumbersJupiter+2.25mm}]frame.north west) ; + \end{tcbclipinterior}}, + bottom = -0.5mm, + tcbjpuparskip, + #2]% +\directlua{% +tex.print("\\begin{Piton}") +tex.print(pyluatex.execute(piton.get_last_code(), false, true, false, true)) +tex.print("\\end{Piton}") +}% +\endtcolorbox% } \fi diff --git a/macros/latex/contrib/vectorlogos/README.md b/macros/latex/contrib/vectorlogos/README.md index 5c689d9c0f..623bd178a8 100644 --- a/macros/latex/contrib/vectorlogos/README.md +++ b/macros/latex/contrib/vectorlogos/README.md @@ -1,18 +1,33 @@ -vectorlogos is a package with vectorial logos of some 'classic' softwares. --------------------------------------------------------------------------- -vectorlogos est un package des logos vectoriels de logiciels 'classiques'. --------------------------------------------------------------------------- -Author...........: Cédric Pierquet -email............: cpierquet@outlook.fr -Licence..........: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt -Sources..........: I converted the logos from their original SVG or other forms, as found on the given urls, to PDF -Texstudio........: FREE https://en.m.wikipedia.org/wiki/File:TeXstudio_Logo.svg -Emacs............: FREE https://commons.wikimedia.org/wiki/File:EmacsIcon.svg -Emacs alt........: FREE https://fr.m.wikipedia.org/wiki/Fichier:Emacs-logo.svg -Geogebra.........: CC30 https://wiki.geogebra.org/en/File:Geogebra-logo-name.svg -Texmaker.........: FREE https://en.wikipedia.org/wiki/File:TeXmaker_Logo.svg -Texmaker old.....: FREE https://en.wikipedia.org/wiki/File:TeXmaker_New_Logo.svg -Scratch..........: Public https://commons.wikimedia.org/wiki/File:Scratchlogo.svg -Scratch alt......: Public https://commons.wikimedia.org/wiki/File:Scratchlogo.svg -Scratch cat......: CC40 https://fr.scratch-wiki.info/wiki/Fichier:Scratch_Cat_(cat-a).svg -Geogebra icon....: CC30 https://fr.m.wikipedia.org/wiki/Fichier:Geogebra.svg +# vectorlogos + +US `vectorlogos` is a package with vectorial logos of some 'classic' softwares.\ +FR `vectorlogos` est un package des logos vectoriels de logiciels 'classiques'. + +``` +author: Cédric Pierquet +email: cpierquet@outlook.fr +licence: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt +``` + +## Sources + +I converted the logos from their original SVG or other forms, as found on the given URLs, to PDF. + +| Software | Licence | Source | +|------------------|---------|------------------------------------------------------------------------------------------------------| +| Texstudio | FREE | <https://en.m.wikipedia.org/wiki/File:TeXstudio_Logo.svg> | +| Emacs | FREE | <https://commons.wikimedia.org/wiki/File:EmacsIcon.svg> | +| Emacs alt | FREE | <https://fr.m.wikipedia.org/wiki/Fichier:Emacs-logo.svg> | +| Geogebra | CC30 | <https://wiki.geogebra.org/en/File:Geogebra-logo-name.svg> | +| Texmaker | FREE | <https://en.wikipedia.org/wiki/File:TeXmaker_Logo.svg> | +| Texmaker old | FREE | <https://en.wikipedia.org/wiki/File:TeXmaker_New_Logo.svg> | +| Scratch | Public | <https://commons.wikimedia.org/wiki/File:Scratchlogo.svg> | +| Scratch alt | Public | <https://commons.wikimedia.org/wiki/File:Scratchlogo.svg> | +| Scratch cat | CC40 | <https://fr.scratch-wiki.info/wiki/Fichier:Scratch_Cat_(cat-a).svg> | +| Geogebra icon | CC30 | <https://fr.m.wikipedia.org/wiki/Fichier:Geogebra.svg> | +| MikTex logo | Public | <https://fr.wikipedia.org/wiki/Fichier:Logo_MiKTeX.svg> | +| Miktex icons | FREE | <https://github.com/MiKTeX/miktex/tree/next/Resources/Icons/MiKTeX/scalable/apps> | +| CTAN Lion | FREE | CTAN lion drawing by Duane Bibby | +| LaTeX project | CC40 | <https://github.com/latex3/latex3.github.io/tree/ba511d2fd43dc08ad301e31b2a32c472b252b76b/_site/img> | +| | | from Jonas Jacek (<https://www.j15k.com/>) | +| TeXworks | GPL2 | <https://github.com/TeXworks/texworks/blob/main/res/images/TeXworks.png> | diff --git a/macros/latex/contrib/vectorlogos/doc/vectorlogos-doc.pdf b/macros/latex/contrib/vectorlogos/doc/vectorlogos-doc.pdf Binary files differindex 9cd12192e7..258b5776c8 100644 --- a/macros/latex/contrib/vectorlogos/doc/vectorlogos-doc.pdf +++ b/macros/latex/contrib/vectorlogos/doc/vectorlogos-doc.pdf diff --git a/macros/latex/contrib/vectorlogos/doc/vectorlogos-doc.tex b/macros/latex/contrib/vectorlogos/doc/vectorlogos-doc.tex index 3bf44201fa..800b33e627 100644 --- a/macros/latex/contrib/vectorlogos/doc/vectorlogos-doc.tex +++ b/macros/latex/contrib/vectorlogos/doc/vectorlogos-doc.tex @@ -4,7 +4,7 @@ \usepackage{crimson} \renewcommand*\ttdefault{cmvtt} \usepackage[T1]{fontenc} -\usepackage{cabin} +\usepackage[scale=0.875]{cabin} \usepackage{vectorlogos} \usepackage{fancyvrb} \usepackage{fancyhdr} @@ -27,8 +27,8 @@ \hypersetup{pdfborder=0 0 0} \usepackage[margin=2cm]{geometry} \setlength{\parindent}{0pt} -\def\TPversion{0.1.2} -\def\TPdate{30/11/2023} +\def\TPversion{0.1.3} +\def\TPdate{30/03/2024} \usepackage{tcolorbox} \tcbuselibrary{skins,hooks,listingsutf8} \usepackage{soul} @@ -91,6 +91,22 @@ \medskip \scalebox{4}[4]{\logotexmaker}\hspace{1cm}\scalebox{4}[4]{\logotexmaker[alt]} + +\medskip + +\scalebox{4}[4]{\logomiktex}\hspace{1cm}\scalebox{4}[4]{\logomiktex[icon]}\hspace{1cm}\scalebox{4}[4]{\logomiktex[icon-alt]} + +\medskip + +\scalebox{4}[4]{\logoctanlion} + +\medskip + +\scalebox{4}[4]{\logolatexproject} + +\medskip + +\scalebox{4}[4]{\logotexworks}\hspace{1cm}\scalebox{4}[4]{\logotexworks[alt]} \end{center} \end{tcolorbox} @@ -102,7 +118,9 @@ \emph{% Logos came with GNU GPL or CC BY-SA (3.0 or 4.0).\\ -Some brand icons/logos are trademarks of their respective owners. Please do not use brand icons/logos for any purpose except to represent the company, product, or service to which they refer.%\\ +Some brand icons/logos are trademarks of their respective owners. Please do not use brand icons/logos for any purpose except to represent the company, product, or service to which they refer.\\ +CTAN lion drawing by Duane Bibby.\\ +LaTeX project logo, from Jonas Jacek (\url{https://www.j15k.com/}). %"Python" and the Python Logo are trademarks of the Python Software Foundation (\url{https://www.python.org/psf/trademarks/}).% } @@ -172,6 +190,17 @@ Available logos are : & vectorlogo-texmaker-alt.pdf & \logotexmaker[alt] \\ \hline texstudio & vectorlogo-texstudio.pdf & \logotexstudio\ \\ + \hline + MiKTeX & vectorlogo-miktex.pdf & \logomiktex\ \\ + & vectorlogo-miktex-icon.pdf & \logomiktex[icon]\ \\ + & vectorlogo-miktex-icon-alt.pdf & \logomiktex[icon-alt]\ \\ + \hline + CTAN lion & vectorlogo-ctanlion.pdf & \logoctanlion\ \\ + \hline + LaTeX project & vectorlogo-latexproject.pdf & \logolatexproject\ \\ + \hline + TeXworks & vectorlogo-texworks.pdf & \logotexworks\ \\ + & vectorlogo-texworks-alt.pdf & \logotexworks[alt]\ \\ \end{tblr} \pagebreak @@ -195,7 +224,9 @@ There's no automatic height or raising, it's just an \textit{alias} of a classic \simplevectorlogo*[height=4cm]{scratch-cat}\par \simplevectorlogo*[scale=0.33]{texstudio}\par \simplevectorlogo*{emacs}\par -\simplevectorlogo*[width=3cm]{geogebra-icon} +\simplevectorlogo*[width=3cm]{geogebra-icon}\par +\simplevectorlogo*[height=1cm]{miktex}\par +\simplevectorlogo*[height=2cm]{ctanlion} \end{tcblisting} \pagebreak @@ -226,6 +257,10 @@ Available \textsf{names} are : \item \texttt{scratch} \item \texttt{texmaker} \item \texttt{texstudio} + \item \texttt{miktex} + \item \texttt{ctanlion} + \item \texttt{texworks} + \item \texttt{latexproject} \end{itemize} \end{multicols} @@ -253,6 +288,10 @@ There's an other (shortcut) way to insert logos, with a shortcut-name, like in \ \logotexstudio[option] \logoemacs[option] \logotexmaker[option] +\logomiktex[option] +\logoctanlion +\logotexworks +\logolatexproject \end{verbatim} \end{quote} @@ -315,7 +354,29 @@ A sample logo, \logoemacs[alt], inline. \samplevectorlogo{\logotexmaker[alt]} \end{tcblisting} -\pagebreak +\begin{tcblisting}{listing side text} +\samplevectorlogo{\logomiktex} +\end{tcblisting} + +\begin{tcblisting}{listing side text} +\samplevectorlogo{\logomiktex[icon]} +\end{tcblisting} + +\begin{tcblisting}{listing side text} +\samplevectorlogo{\logomiktex[icon-alt]} +\end{tcblisting} + +\begin{tcblisting}{listing side text} +\samplevectorlogo{\logoctanlion} +\end{tcblisting} + +\begin{tcblisting}{listing side text} +\samplevectorlogo{\logotexworks} +\end{tcblisting} + +\begin{tcblisting}{listing side text} +\samplevectorlogo{\logolatexproject} +\end{tcblisting} \subsection{Personal logos} @@ -377,6 +438,7 @@ By this way, and with logo named \MontreCode{vectorlogo-<basename>-...}, a speci \begin{quote} \begin{verbatim} +0.1.3 : Logos for MikTeX + CTAN lion + LateX project 0.1.2 : Alt command for manual insertion, with existing img 0.1.1 : Update licenses 0.1.0 : Initial version diff --git a/macros/latex/contrib/vectorlogos/tex/vectorlogo-ctanlion.pdf b/macros/latex/contrib/vectorlogos/tex/vectorlogo-ctanlion.pdf Binary files differnew file mode 100644 index 0000000000..30dd09e5b9 --- /dev/null +++ b/macros/latex/contrib/vectorlogos/tex/vectorlogo-ctanlion.pdf diff --git a/macros/latex/contrib/vectorlogos/tex/vectorlogo-latexproject.pdf b/macros/latex/contrib/vectorlogos/tex/vectorlogo-latexproject.pdf Binary files differnew file mode 100644 index 0000000000..dd156c2c13 --- /dev/null +++ b/macros/latex/contrib/vectorlogos/tex/vectorlogo-latexproject.pdf diff --git a/macros/latex/contrib/vectorlogos/tex/vectorlogo-miktex-icon-alt.pdf b/macros/latex/contrib/vectorlogos/tex/vectorlogo-miktex-icon-alt.pdf Binary files differnew file mode 100644 index 0000000000..4da7d6f729 --- /dev/null +++ b/macros/latex/contrib/vectorlogos/tex/vectorlogo-miktex-icon-alt.pdf diff --git a/macros/latex/contrib/vectorlogos/tex/vectorlogo-miktex-icon.pdf b/macros/latex/contrib/vectorlogos/tex/vectorlogo-miktex-icon.pdf Binary files differnew file mode 100644 index 0000000000..5973afb192 --- /dev/null +++ b/macros/latex/contrib/vectorlogos/tex/vectorlogo-miktex-icon.pdf diff --git a/macros/latex/contrib/vectorlogos/tex/vectorlogo-miktex.pdf b/macros/latex/contrib/vectorlogos/tex/vectorlogo-miktex.pdf Binary files differnew file mode 100644 index 0000000000..ed8caeaa5f --- /dev/null +++ b/macros/latex/contrib/vectorlogos/tex/vectorlogo-miktex.pdf diff --git a/macros/latex/contrib/vectorlogos/tex/vectorlogo-texworks-alt.pdf b/macros/latex/contrib/vectorlogos/tex/vectorlogo-texworks-alt.pdf Binary files differnew file mode 100644 index 0000000000..b748f51a62 --- /dev/null +++ b/macros/latex/contrib/vectorlogos/tex/vectorlogo-texworks-alt.pdf diff --git a/macros/latex/contrib/vectorlogos/tex/vectorlogo-texworks.pdf b/macros/latex/contrib/vectorlogos/tex/vectorlogo-texworks.pdf Binary files differnew file mode 100644 index 0000000000..627d48a6e1 --- /dev/null +++ b/macros/latex/contrib/vectorlogos/tex/vectorlogo-texworks.pdf diff --git a/macros/latex/contrib/vectorlogos/tex/vectorlogos.sty b/macros/latex/contrib/vectorlogos/tex/vectorlogos.sty index 329b5e8de3..8b4fe4fa30 100644 --- a/macros/latex/contrib/vectorlogos/tex/vectorlogos.sty +++ b/macros/latex/contrib/vectorlogos/tex/vectorlogos.sty @@ -11,12 +11,18 @@ % Geogebra icon...: CC30 https://fr.m.wikipedia.org/wiki/Fichier:Geogebra.svg % Texmaker........: FREE https://en.wikipedia.org/wiki/File:TeXmaker_Logo.svg % Texmaker alt....: FREE https://en.wikipedia.org/wiki/File:TeXmaker_New_Logo.svg +% MikTex logo.....: Public https://fr.wikipedia.org/wiki/Fichier:Logo_MiKTeX.svg +% Miktex icons....: FREE https://github.com/MiKTeX/miktex/tree/next/Resources/Icons/MiKTeX/scalable/apps +% CTAN Lion.......: FREE CTAN lion drawing by Duane Bibby +% LaTeX project...: CC40 https://github.com/latex3/latex3.github.io/tree/ba511d2fd43dc08ad301e31b2a32c472b252b76b/_site/img from Jonas Jacek (https://www.j15k.com/) +% TeXworks........: GPL 2.0 https://github.com/TeXworks/texworks/blob/main/res/images/TeXworks.png \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{vectorlogos}[2023/11/30 0.1.2 Vectorial logos of 'classic' softwares, for inline use.] +\ProvidesPackage{vectorlogos}[2024/03/30 0.1.3 Vectorial logos of 'classic' softwares, for inline use.] %====HISTORY +% v 0.1.3 Miktex logo/icons + LaTeX-projext + CTAN lion + TeXworks (from png) % v 0.1.2 Alt command for manual insertion, with existing img % v 0.1.1 Licenses update % v 0.1.0 Initial Version @@ -82,6 +88,10 @@ \IfEq{#2}{texstudio}{\logotexstudio[#1]}{}% \IfEq{#2}{emacs}{\logoemacs[#1]}{}% \IfEq{#2}{texmaker}{\logotexmaker[#1]}{}% + \IfEq{#2}{miktex}{\logomiktex[#1]}{}% + \IfEq{#2}{ctanlion}{\logoctanlion[#1]}{}% + \IfEq{#2}{latexproject}{\logolatexproject[#1]}{}% + \IfEq{#2}{texworks}{\logotexworks[#1]}{}% } %====SPECIFIC MACROS @@ -90,5 +100,9 @@ \GenMacroLogoVect{\logotexstudio}{texstudio} \GenMacroLogoVect{\logoemacs}{emacs} \GenMacroLogoVect{\logotexmaker}{texmaker} +\GenMacroLogoVect{\logomiktex}{miktex} +\GenMacroLogoVect{\logoctanlion}{ctanlion} +\GenMacroLogoVect{\logolatexproject}{latexproject} +\GenMacroLogoVect{\logotexworks}{texworks} \endinput
\ No newline at end of file |