diff options
author | Norbert Preining <norbert@preining.info> | 2023-03-18 03:05:29 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2023-03-18 03:05:29 +0000 |
commit | b0cfbb3bcaeafdcb4da817c21937f10ce07f5dca (patch) | |
tree | e50beb9881e430a320ea9fc1003ead361d78b510 /graphics | |
parent | cb77be104201eaab9be41990136901f05d4fa4a6 (diff) |
CTAN sync 202303180305
Diffstat (limited to 'graphics')
-rw-r--r-- | graphics/pgf/contrib/fenetrecas/README.md | 7 | ||||
-rw-r--r-- | graphics/pgf/contrib/fenetrecas/doc/FenetreCas-doc.pdf | bin | 0 -> 620070 bytes | |||
-rw-r--r-- | graphics/pgf/contrib/fenetrecas/doc/FenetreCas-doc.tex | 542 | ||||
-rw-r--r-- | graphics/pgf/contrib/fenetrecas/tex/FenetreCas.sty | 274 |
4 files changed, 823 insertions, 0 deletions
diff --git a/graphics/pgf/contrib/fenetrecas/README.md b/graphics/pgf/contrib/fenetrecas/README.md new file mode 100644 index 0000000000..c2853477dd --- /dev/null +++ b/graphics/pgf/contrib/fenetrecas/README.md @@ -0,0 +1,7 @@ +FenetreCas is a package with Xcas or Geogebra CAS Window-like. +---------------------------------------------------------------------- +FenetreCas est un package avec des fenêtres CAS type Geogebra ou Xcas. +---------------------------------------------------------------------- +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
\ No newline at end of file diff --git a/graphics/pgf/contrib/fenetrecas/doc/FenetreCas-doc.pdf b/graphics/pgf/contrib/fenetrecas/doc/FenetreCas-doc.pdf Binary files differnew file mode 100644 index 0000000000..25954ebfce --- /dev/null +++ b/graphics/pgf/contrib/fenetrecas/doc/FenetreCas-doc.pdf diff --git a/graphics/pgf/contrib/fenetrecas/doc/FenetreCas-doc.tex b/graphics/pgf/contrib/fenetrecas/doc/FenetreCas-doc.tex new file mode 100644 index 0000000000..834a013182 --- /dev/null +++ b/graphics/pgf/contrib/fenetrecas/doc/FenetreCas-doc.tex @@ -0,0 +1,542 @@ +% !TeX TXS-program:compile = txs:///arara +% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode} +% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)') + +\documentclass[french,a4paper,11pt]{article} +\def\TPversion{0.1.0} +\def\TPdate{17 Mars 2023} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{amsmath,amssymb} +\usepackage{FenetreCas} +\usepackage{awesomebox} +\usepackage{fontawesome5} +\usepackage{enumitem} +\usepackage{tabularray} +\usepackage{fancyvrb} +\usepackage{fancyhdr} +\fancyhf{} +\renewcommand{\headrulewidth}{0pt} +\lfoot{\sffamily\small [FenetreCas]} +\cfoot{\sffamily\small - \thepage{} -} +\rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}} + +%\usepackage{hvlogos} +\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=\sffamily}} + {\LARGE \LaTeX} & & & & &\\ + & {\LARGE \hologo{pdfLaTeX}} & & & & \\ + & & {\LARGE \hologo{LuaLaTeX}} & & & \\ + & & & {\LARGE \TikZ} & & \\ + & & & & {\LARGE \TeXLive} & \\ + & & & & & {\LARGE \hologo{MiKTeX}} \\ + \end{tblr} +} + +\usepackage{hyperref} +\urlstyle{same} +\hypersetup{pdfborder=0 0 0} +\usepackage[margin=1.5cm]{geometry} +\setlength{\parindent}{0pt} +\definecolor{LightGray}{gray}{0.9} + +\usepackage[french]{babel} + +\usepackage[most]{tcolorbox} +\usetikzlibrary{calc} +\tcbuselibrary{minted} +\NewTCBListing{PresentationCode}{ O{blue} m }{% + sharp corners=downhill,enhanced,arc=12pt,skin=bicolor,% + colback=#1!1!white,colframe=#1!75!black,colbacklower=white,% + attach boxed title to top right={yshift=-\tcboxedtitleheight},title=Code \LaTeX,% + boxed title style={% + colframe=#1!75!black,colback=#1!15!white,% + ,sharp corners=downhill,arc=12pt,% + },% + top=\baselineskip,% + fonttitle=\color{#1!90!black}\itshape\ttfamily\footnotesize,% + listing engine=minted,minted style=colorful, + minted language=tex,minted options={tabsize=4,fontsize=\small,autogobble}, + #2 +} + +\tcbset{vignettes/.style={% + nobeforeafter,box align=base,boxsep=0pt,enhanced,sharp corners=all,rounded corners=southeast,% + boxrule=0.75pt,left=7pt,right=1pt,top=0pt,bottom=0.25pt,% + } +} + +\tcbset{vignetteMaJ/.style={% + fontupper={\vphantom{pf}\footnotesize\ttfamily}, + vignettes,colframe=ForestGreen!50!black,coltitle=white,colback=purple!25,% + overlay={\begin{tcbclipinterior}% + \fill[fill=purple!75]($(interior.south west)$) rectangle node[rotate=90]{\tiny \sffamily{\textcolor{Black}{\scalebox{0.85}[0.75]{\textbf{MàJ}}}}} ($(interior.north west)+(5pt,0pt)$);% + \end{tcbclipinterior}} + } +} + +\newcommand\Cle[1]{{\bfseries\sffamily\textlangle #1\textrangle}} +\newcommand\cmaj[1]{\tcbox[vignetteMaJ]{#1}\xspace} + +\begin{document} + +\setlength{\aweboxleftmargin}{0.07\linewidth} +\setlength{\aweboxcontentwidth}{0.93\linewidth} +\setlength{\aweboxvskip}{8pt} + +\pagestyle{fancy} + +\thispagestyle{empty} + +\vspace{2cm} + +\begin{center} + \begin{minipage}{0.75\linewidth} + \begin{tcolorbox}[colframe=yellow,colback=yellow!15] + \begin{center} + \begin{tabular}{c} + {\Huge \texttt{FenetreCas [fr]}}\\ + \\ + {\LARGE Des fenêtres CAS à la manière} \\ + \\ + {\LARGE de Xcas ou Geogebra.} \\ + \end{tabular} + + \bigskip + + {\small \texttt{Version \TPversion{} -- \TPdate}} + \end{center} + \end{tcolorbox} +\end{minipage} +\end{center} + +\begin{center} + \begin{tabular}{c} + \texttt{Cédric Pierquet}\\ + {\ttfamily c pierquet -- at -- outlook . fr}\\ + \texttt{\url{https://github.com/cpierquet/FenetreCas}} +\end{tabular} +\end{center} + +\vspace{0.25cm} + +{$\blacktriangleright$~~Une commande pour afficher une fenêtre CAS à la manière de \textsf{Xcas}.} + +\smallskip + +{$\blacktriangleright$~~Une commande pour afficher une fenêtre CAS à la manière de \textsf{Geogebra}.} + +\smallskip + +{$\blacktriangleright$~~Utilisation de \TikZ{} avec calcul automatique des hauteurs de lignes.} + +\smallskip + +{$\blacktriangleright$~~Personnalisation de certains éléments (couleurs, etc).} + +\smallskip + +{$\blacktriangleright$~~Saisie libre des commandes et des résultats.} + +\vspace{1cm} + +\begin{center} + \begin{tcolorbox}[enhanced,colframe=cyan,colback=cyan!2,center,width=0.95\linewidth,drop fuzzy shadow=lightgray] + À la manière de GeoGebra : + + \smallskip + + \begin{CalculFormelGeogebra}[Largeur=10] + \LigneCalculsGeogebra% + {\sffamily g(x)=4/(1+e\textasciicircum(-k x))} + {$\rightarrow$ \: $\mathsf{g(x)=\dfrac{4}{e^{-kx}+1}}$} + \end{CalculFormelGeogebra} + + \medskip + + \hfill~À la manière de Xcas : + + \smallskip + + \hfill + \begin{CalculFormelXcas}[Entete=true,Largeur=12] + \LigneCalculsXcas% + {\sffamily g(x):=4/(1+e\textasciicircum(-k x))} + {$\mathsf{x \rightarrow \dfrac{4}{e^{-kx}+1}}$} + \end{CalculFormelXcas} + \end{tcolorbox} +\end{center} + +\vspace{0.5cm} + +%\hfill{}\textit{Merci à Denis Bitouzé et à Gilles Le Bourhis pour leurs retours et idées !} + +\smallskip + +\vfill + +\hrule + +\medskip + +\TableauDocumentation + +\medskip + +\hrule + +\medskip + +\newpage + +\phantomsection +\hypertarget{matoc}{} + +\tableofcontents + +\newpage + +\part{Introduction} + +\section{Le package FenetreCas} + +\subsection{Introduction} + +\begin{noteblock} +La package \textit{propose} des outils pour afficher des fenêtres de logiciel de Calcul Formel : + +\begin{itemize} + \item à la manière de \textsf{Xcas} ; + \item à la manière de \textsf{GeoGebra}. +\end{itemize} +\vspace*{-\baselineskip}\leavevmode +\end{noteblock} + +\begin{importantblock} +Les environnements créés sont liés à des environnements \TikZ, et les hauteurs des lignes sont calculées automatiquement -- en interne -- par le package. + +\smallskip + +L'utilisateur pourra cependant paramétrer \textit{plus finement} le rendu s'il le souhaite. +\end{importantblock} + +\subsection{Chargement du package, packages utilisés} + +\begin{importantblock} +Le package se charge, de manière classique, dans le préambule. + +Il n'existe pas d'option pour le package, et \texttt{xcolor} n'est pas chargé avec des options spécifiques. +\end{importantblock} + +\begin{PresentationCode}{listing only} +\usepackage{FenetreCas} +\end{PresentationCode} + +\begin{noteblock} +\textsf{FenetreCas} charge les packages suivantes : + +\begin{itemize} + \item \texttt{tikz}, \texttt{xstring}, \texttt{xintexpr}, \texttt{simplekv} et \texttt{settobox} ; + \item les librairies \texttt{\textit{tikz}.calc} et \texttt{\textit{tikz}.positioning}.. +\end{itemize} + +Il est compatible avec les compilations usuelles en \textsf{latex}, \textsf{pdflatex}, \textsf{lualatex} ou \textsf{xelatex}. +\end{noteblock} + +\section{Fonctionnement global} + +\begin{importantblock} +Le fonctionnement global est : + +\begin{itemize} + \item de créer l'\textbf{environnement}, avec ses options \textit{globales} ; + \item de créer les \textbf{lignes}, une par une, avec leurs options \textit{locales}. +\end{itemize} +\vspace*{-\baselineskip}\leavevmode +\end{importantblock} + +\vfill + +\section{Historique} + +\verb|v0.1.0|~:~~~~Version initiale. + +\hspace*{1cm} + +\pagebreak + +\part{Fenêtre à la manière de Geogebra} + +\section{Création de l'environnement} + +\subsection{Commande} + +\begin{cautionblock} +L'environnement dédié à l'affichage d'une fenêtre \textit{à la Geogebra} est \texttt{CalculFormelGeogebra}. + +Par défaut, il va donc créer la ligne d'\textit{entête} avec le titre. +\end{cautionblock} + +\begin{PresentationCode}{listing only} +\begin{CalculFormelGeogebra}[clés et options]<options tikz> +\end{CalculFormelGeogebra} +\end{PresentationCode} + +\begin{PresentationCode}{} +\begin{CalculFormelGeogebra} +\end{CalculFormelGeogebra} +\end{PresentationCode} + +\subsection{Clés et options} + +\begin{tipblock} +Le premier argument, optionnel et entre \texttt{[...]} propose les \Cle{clés} suivantes : + +\begin{itemize} + \item \Cle{Largeur} qui est la largeur de la fenêtre, en cm ; \hfill~défaut : \Cle{10} + \item \Cle{CouleurEntete} qui est la couleur du fond de l'entête ; \hfill~défaut : \Cle{lightgray!25} + \item \Cle{LargeurNumero} qui est la largeur de la colonne du numéro ; \hfill~défaut : \Cle{1} + \item \Cle{CouleurNumero} qui est la couleur du fond du numéro ; \hfill~défaut : \Cle{cyan!5} + \item \Cle{PoliceEntete} qui paramètre la police du texte de l'entête ; + + \hfill~défaut : \Cle{\textbackslash bfseries\textbackslash large\textbackslash sffamily} + \item \Cle{PoliceNumero} qui paramètre la police du numéro ; \hfill~défaut : \Cle{\textbackslash Large\textbackslash sffamily} + \item \Cle{Titre} qui permet de personnaliser le label de l'entête ; + + \hfill~défaut : \Cle{\$\textbackslash triangleright\$ Calcul formel} + \item le booléen \Cle{Entete} qui permet d'afficher ou non l'entête. \hfill~défaut : \Cle{true} +\end{itemize} +\vspace*{-\baselineskip}\leavevmode +\end{tipblock} + +\begin{tipblock} +Le second argument, optionnel et entre \texttt{<...>} est quant à lui relatif à des arguments à passer à l'environnement \TikZ{} créé, comme par exemple un alignement vertical, etc +\end{tipblock} + +\begin{PresentationCode}{} +%\usepackage{amssymb} +\begin{CalculFormelGeogebra} + [CouleurEntete=green!25,PoliceEntete=\LARGE\ttfamily, + Titre={$\blacktriangleright$ Illustration via GeoGebra},Largeur=13] +\end{CalculFormelGeogebra} +\end{PresentationCode} + +\pagebreak + +\section{Création des lignes} + +\subsection{Commande} + +\begin{cautionblock} +La commande dédiée à l'affichage des lignes est \texttt{\textbackslash LigneCalculsGeogebra}. + +Les lignes sont construites l'une après l'une, avec un système de nœuds pour délimiter les \og coins \fg. +\end{cautionblock} + +\begin{PresentationCode}{listing only} +\begin{CalculFormelGeogebra}[clés et options]<options tikz> + LigneCalculsGeogebra[options]{commande}{resultat} +\end{CalculFormelGeogebra} +\end{PresentationCode} + +\begin{PresentationCode}{} +\begin{CalculFormelGeogebra} + \LigneCalculsGeogebra{commande1}{résultat1} + \LigneCalculsGeogebra{commande2}{résultat2} +\end{CalculFormelGeogebra} +\end{PresentationCode} + +\subsection{Clés et arguments} + +\begin{tipblock} +Le premier argument, optionnel et entre \texttt{[...]} propose les \Cle{clés} suivantes : + +\begin{itemize} + \item le booléen \Cle{HauteurAuto} qui permet un ajustement automatique de la hauteur ; + + \hfill~défaut : \Cle{true} + \item \Cle{TailleCommande} pour la taille de la commande ; \hfill~défaut : \Cle{\textbackslash normalsize} + \item \Cle{TailleResultat} pour la taille du résultat ; \hfill~défaut : \Cle{\textbackslash large} + \item \Cle{MargeH} pour spécifier l'espacement horizontal entre les calculs et les bords verticaux ; + + \hfill~défaut : \Cle{0.2} + \item \Cle{MargeV} pour spécifier l'espacement vertical entre les calculs et les traits. + + \hfill~défaut : \Cle{6pt} +\end{itemize} +\vspace*{-\baselineskip}\leavevmode +\end{tipblock} + +\begin{tipblock} +Les arguments obligatoires, et entre \texttt{\{...\}}, correspondent à la commande et au résultat à afficher dans la ligne : + +\begin{itemize} + \item les tailles des caractères sont fixées par les \Cle{clés} précédemment explicitées ; + \item la saisie est libre au niveau du contenu, de la police et des couleurs. +\end{itemize} +\end{tipblock} + +\begin{PresentationCode}{} +\begin{CalculFormelGeogebra}[CouleurEntete=pink!25,CouleurNumero=yellow!25,Largeur=15] + \LigneCalculsGeogebra% + {\sffamily g(x)=4/(1+e\textasciicircum(-k x))} + {$\rightarrow$ \: $\mathsf{g(x)=\dfrac{4}{e^{-kx}+1}}$} + \LigneCalculsGeogebra + {f(x)=1+sqrt(x+3)} + {$\rightarrow$ \: $f(x)=1+\sqrt{x+3}$} + \LigneCalculsGeogebra + {\texttt{Dériver[exp(0.1*x)]}} + {$\rightarrow$ \: \texttt{x $\mapsto$ 0.1*exp(0.1*x)}} + \LigneCalculsGeogebra[TailleCommande=\LARGE,TailleResultat=\huge] + {(1/4+1/3)/(1/5+2/7)} + {$\rightarrow$ \: $\dfrac{\dfrac14+\dfrac13}{\dfrac15+\dfrac27}= + \fpeval{(1/4+1/3)/(1/5+2/7)}$} + \LigneCalculsGeogebra[HauteurAuto=false,HauteurLigne=5] + {(1+i)\textasciicircum{}2} + {$2\text{i}$} +\end{CalculFormelGeogebra} +\end{PresentationCode} + +\pagebreak + +\part{Fenêtre à la manière de Xcas} + +\section{Création de l'environnement} + +\subsection{Commande} + +\begin{cautionblock} +L'environnement dédié à l'affichage d'une fenêtre \textit{à la Xcas} est \texttt{CalculFormelXcas}. + +Par défaut, il va donc créer la ligne d'\textit{entête} avec les infos classiques. +\end{cautionblock} + +\begin{PresentationCode}{listing only} +\begin{CalculFormelXcas}[clés et options]<options tikz> +\end{CalculFormelXcas} +\end{PresentationCode} + +\begin{PresentationCode}{} +\begin{CalculFormelXcas} +\end{CalculFormelXcas} +\end{PresentationCode} + +\subsection{Clés et options} + +\begin{tipblock} +Le premier argument, optionnel et entre \texttt{[...]} propose les \Cle{clés} suivantes : + +\begin{itemize} + \item \Cle{Largeur} qui est la largeur de la fenêtre, en cm ; \hfill~défaut : \Cle{10} + \item \Cle{EspaceLg} qui est l'espacement vertical entre les lignes ; \hfill~défaut : \Cle{2pt} + \item \Cle{Couleur} qui est la couleur des tracés ; \hfill~défaut : \Cle{darkgray} + \item \Cle{PoliceEntete} qui est la taille de la police de l'entête ; \hfill~défaut : \Cle{\textbackslash scriptsize} + \item le booléen \Cle{Entete} qui permet d'afficher ou non l'entête. \hfill~défaut : \Cle{true} + \item le booléen \Cle{Menu} qui permet d'afficher ou non le bouton \textit{MENU} dans les lignes ; + + \hfill~défaut : \Cle{true} + \item le booléen \Cle{NoirBlanc} qui permet de forcer tout en niveaux de gris ; \hfill~défaut : \Cle{false} + \item \Cle{TexteOptions} qui est le texte des \textit{options} à afficher ; + + \hfill~défaut : \Cle{Config : exact real RAD 12 xcas} + \item le booléen \Cle{Sep} qui permet d'afficher le trait de séparation commande/résultat. + + \hfill~défaut : \Cle{true} +\end{itemize} +\vspace*{-\baselineskip}\leavevmode +\end{tipblock} + +\begin{tipblock} +Le second argument, optionnel et entre \texttt{<...>} est quant à lui relatif à des arguments à passer à l'environnement \TikZ{} créé, comme par exemple un alignement vertical, etc +\end{tipblock} + +\begin{PresentationCode}{} +\begin{CalculFormelXcas}[PoliceEntete=\large,Largeur=13,NoirBlanc] +\end{CalculFormelXcas} +\end{PresentationCode} + +\pagebreak + +\section{Création des lignes} + +\subsection{Commande} + +\begin{cautionblock} +La commande dédiée à l'affichage des lignes est \texttt{\textbackslash LigneCalculsXcas}. + +Les lignes sont construites l'une après l'une, avec un système de nœuds pour délimiter les \og coins \fg. +\end{cautionblock} + +\begin{PresentationCode}{listing only} +\begin{CalculFormelXcas}[clés et options]<options tikz> + \LigneCalculsXcas[options]{commande}{resultat} +\end{CalculFormelXcas} +\end{PresentationCode} + +\begin{PresentationCode}{} +\begin{CalculFormelXcas} + \LigneCalculsXcas{commande1}{résultat1} + \LigneCalculsXcas{commande2}{résultat2} +\end{CalculFormelXcas} +\end{PresentationCode} + +\subsection{Clés et arguments} + +\begin{tipblock} +Le premier argument, optionnel et entre \texttt{[...]} propose les \Cle{clés} suivantes : + +\begin{itemize} + \item \Cle{CouleurCmd} pour la couleur de la commande ; \hfill~défaut : \Cle{red} + \item \Cle{CouleurRes} pour la couleur du résultat ; \hfill~défaut : \Cle{blue} + \item \Cle{PosRes} pour la position du résultat ; \hfill~défaut : \Cle{centre} + \item \Cle{TailleCommande} pour la taille de la commande ; \hfill~défaut : \Cle{\textbackslash normalsize} + \item \Cle{TailleResultat} pour la taille du résultat ; \hfill~défaut : \Cle{\textbackslash large} + \item \Cle{MargeH} pour spécifier l'espacement horizontal entre les calculs et les bords verticaux ; + + \hfill~défaut : \Cle{0.15} + \item \Cle{MargeV} pour spécifier l'espacement vertical entre les calculs et les traits. + + \hfill~défaut : \Cle{6pt} +\end{itemize} +\vspace*{-\baselineskip}\leavevmode +\end{tipblock} + +\begin{tipblock} +Les arguments obligatoires, et entre \texttt{\{...\}}, correspondent à la commande et au résultat à afficher dans la ligne : + +\begin{itemize} + \item les tailles des caractères sont fixées par les \Cle{clés} précédemment explicitées ; + \item la saisie est libre au niveau du contenu, de la police et des couleurs. +\end{itemize} +\end{tipblock} + +\begin{PresentationCode}{} +Un exemple en ligne :~ +\begin{CalculFormelXcas}% + [Largeur=10,TexteOptions={Config : exact cpxl RAD 12 xcas}]% + <baseline=(current bounding box.center)> + \LigneCalculsXcas% + {\sffamily g(x):=4/(1+e\textasciicircum(-k x))} + {$\mathsf{x \rightarrow \dfrac{4}{e^{-kx}+1}}$} + \LigneCalculsXcas[TailleCommande=\Large,TailleResultat=\LARGE]% + {\sffamily g(x):=4/(1+e\textasciicircum(-k x))} + {$\mathsf{x \rightarrow \dfrac{4}{e^{-kx}+1}}$} + \LigneCalculsXcas + {f(x):=1+sqrt(x+3)} + {$x \rightarrow 1+\sqrt{x+3}$} + \LigneCalculsXcas + {\texttt{Dériver[exp(0.1*x)]}} + {\texttt{x $\rightarrow$ 0.1*exp(0.1*x)}} + \LigneCalculsXcas[TailleResultat=\Huge] + {(1/4+1/3)/(1/5+2/7)} + {$\rightarrow$ \: $\dfrac{\dfrac14+\dfrac13}{\dfrac15+\dfrac27}$} + \end{CalculFormelXcas} +\end{PresentationCode} + +\end{document}
\ No newline at end of file diff --git a/graphics/pgf/contrib/fenetrecas/tex/FenetreCas.sty b/graphics/pgf/contrib/fenetrecas/tex/FenetreCas.sty new file mode 100644 index 0000000000..56b12746f5 --- /dev/null +++ b/graphics/pgf/contrib/fenetrecas/tex/FenetreCas.sty @@ -0,0 +1,274 @@ +% Author : C. Pierquet +% licence : Released under the LaTeX Project Public License v1.3c +% or later, see http://www.latex-project.org/lppl.txtf + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{FenetreCas}[2023/03/17 0.1.0 Simuer une fenetre CAS type Geogebra ou Xcas] +% 0.1.0 Version initiale + +%------Option(s) + +%------Packages utiles +\RequirePackage{tikz} +\RequirePackage{xstring} +\RequirePackage{xintexpr} +\RequirePackage{simplekv} +\RequirePackage{settobox} +%librairies tikz +\usetikzlibrary{calc,positioning} + +%%------FENÊTRE CALCUL FORMEL GEOGEBRA +%compteurs pour les n° de lignes +\newcounter{geogebracfnum} + +%--création de l'environnement, en TikZ +\newsavebox{\maboiteggbtitre} +\newlength{\hauteurboiteggbtitre} + +%def des clés +\defKV[paramfengeogebracf]{% + Largeur=\def\GEOCFlarg{#1},% + CouleurEntete=\def\GEOCFcoulentete{#1},% + LargeurNumero=\def\GEOCFlargnum{#1},% + CouleurNumero=\def\GEOCFcoulnum{#1},% + PoliceEntete=\def\GEOCFfontenete{#1},% + PoliceNumero=\def\GEOCFpolnum{#1},% + Titre=\def\GEOCFtitre{#1} +} +\setKVdefault[paramfengeogebracf]{% + Largeur=10,% + CouleurEntete=lightgray!25,% + LargeurNumero=1,% + CouleurNumero=cyan!5,% + PoliceEntete=\bfseries\large\sffamily,% + PoliceNumero=\Large\sffamily,% + Titre={$\triangleright$ Calcul formel},% + Entete=true +} + +\NewDocumentEnvironment{CalculFormelGeogebra}{ O{} D<>{} } +{% + \useKVdefault[paramfengeogebracf]% + \setKV[paramfengeogebracf]{#1}% on paramètres les nouvelles clés et on les simplifie + \setcounter{geogebracfnum}{0}%on repart avec le compteur à 0 + \sbox{\maboiteggbtitre}{\GEOCFfontenete\GEOCFtitre}\settoboxtotalheight{\hauteurboiteggbtitre}{\maboiteggbtitre} + \begin{tikzpicture}[#2] + %ENTETE + \ifboolKV[paramfengeogebracf]{Entete} + { + \def\HCroix{\the\hauteurboiteggbtitre}% + \draw[semithick,fill=\GEOCFcoulentete] (0,0) rectangle (\GEOCFlarg,{2.25*\the\hauteurboiteggbtitre}) ;% + \draw (0,{2.25*0.5*\the\hauteurboiteggbtitre}) node[right=4pt,font=\GEOCFfontenete] {\GEOCFtitre} ;% + %crois fermeture + \coordinate (CROIXGEO) at ($({\GEOCFlarg},{2.25*0.5*\the\hauteurboiteggbtitre})+({-\the\hauteurboiteggbtitre},0)$) ; + \draw[semithick] ($(CROIXGEO)+({-0.35*\the\hauteurboiteggbtitre},{0.35*\the\hauteurboiteggbtitre})$)--++({0.7*\HCroix},{-0.7*\HCroix}) ; + \draw[semithick] ($(CROIXGEO)+({-0.35*\the\hauteurboiteggbtitre},{-0.35*\the\hauteurboiteggbtitre})$)--++({0.7*\HCroix},{0.7*\HCroix}) ; + \draw[semithick] ($(CROIXGEO)+({-0.5*\the\hauteurboiteggbtitre},{0.5*\the\hauteurboiteggbtitre})$)rectangle++({\HCroix},{-\HCroix}) ; + } + {} +}% +{% + \end{tikzpicture}% +} + +%--création des lignes, une par une +%commande externe pour les hauteurs +\newsavebox{\maboiteggbcmd} +\newsavebox{\maboiteggbres} +\newlength{\hauteurboiteggbcmd} +\newlength{\hauteurboiteggbres} +\newlength{\offsetcfgeogebra} + +%def des clés +\defKV[paramlgeogebra]{% + HauteurLigne=\def\GEOCFhauteur{#1},% + TailleCommande=\def\GEOCFtaillecmd{#1},% + TailleResultat=\def\GEOCFtailleres{#1},% + ElargirAuto=\def\GEOCFelargirauto{#1},% + MargeV=\def\GEOCFoffset{#1},% + MargeH=\def\GEOCFoffseth{#1} +} +\setKVdefault[paramlgeogebra]{% + HauteurLigne=2,% + TailleCommande=\normalsize,% + TailleResultat=\large,% + ElargirAuto=1,% + HauteurAuto=true,% + MargeV=6pt,% + MargeH=0.2 +} + +\NewDocumentCommand\LigneCalculsGeogebra{ O{} m m }{% + %clés + \useKVdefault[paramlgeogebra]% + \setKV[paramlgeogebra]{#1}% on paramètres les nouvelles clés et on les simplifie + %récupération des tailles des lignes cmd et res poour ajustement + \setlength{\offsetcfgeogebra}{\GEOCFoffset} + \ifboolKV[paramlgeogebra]{HauteurAuto} + {% + \sbox{\maboiteggbcmd}{\pgfinterruptpicture \GEOCFtaillecmd#2\endpgfinterruptpicture}\settoboxtotalheight{\hauteurboiteggbcmd}{\maboiteggbcmd} + \sbox{\maboiteggbres}{\pgfinterruptpicture \GEOCFtailleres#3\endpgfinterruptpicture}\settoboxtotalheight{\hauteurboiteggbres}{\maboiteggbres} + \def\GEOCFhauteur{\GEOCFelargirauto*(\the\hauteurboiteggbcmd+\the\hauteurboiteggbres+4*\the\offsetcfgeogebra)} + } + {} + %compteur et raccourcis + \addtocounter{geogebracfnum}{1}% + \def\GGBL{\thegeogebracfnum}% + \def\GGBLA{\inteval{\GGBL-1}}% + %déclaration des nœuds (les "4" coins des blocs numéros) + \xintifboolexpr{\GGBL == 1}%si c'est la première ligne + {\coordinate (A0\GGBL) at (0,0);} + {\coordinate (A0\GGBL) at (A1\GGBLA) ;} + \coordinate (A1\GGBL) at ($(A0\GGBL) + (0,{-\GEOCFhauteur})$); + \coordinate (A2\GGBL) at ($(A0\GGBL) + ({\GEOCFlargnum},0)$); + \coordinate (A3\GGBL) at ($(A1\GGBL) + ({\GEOCFlargnum},0)$); + %les tracés + \draw[semithick,fill=\GEOCFcoulnum] (A0\GGBL) rectangle (A3\GGBL) node[midway,font=\GEOCFpolnum] {\GGBL} ; + \draw[semithick] (A2\GGBL) rectangle++({\GEOCFlarg-\GEOCFlargnum},{-\GEOCFhauteur}) ; + %les commande/résultat + \ifboolKV[paramlgeogebra]{HauteurAuto} + {% + \draw ($(A2\GGBL) + ({\GEOCFoffseth},{-\the\offsetcfgeogebra-0.5*\GEOCFelargirauto*\the\hauteurboiteggbcmd})$) node[font=\GEOCFtaillecmd,right] {#2} ; + \draw ($(A3\GGBL) + ({\GEOCFoffseth},{\the\offsetcfgeogebra+0.5*\GEOCFelargirauto*\the\hauteurboiteggbres})$) node[font=\GEOCFtailleres,right] {#3} ; + } + {% + \draw ($(A2\GGBL) + ({\GEOCFoffseth},{-0.25*\GEOCFhauteur})$) node[font=\GEOCFtaillecmd,right] {#2} ; + \draw ($(A2\GGBL) + ({\GEOCFoffseth},{-0.66*\GEOCFhauteur})$) node[font=\GEOCFtailleres,right] {#3} ; + } +} + +%%------FENÊTRE CALCUL FORMEL XCAS +\newcounter{xcascfnum} +%def des clés +\defKV[paramfenxcascf]{% + Largeur=\def\XCCFlarg{#1},% + EspaceLg=\def\XCCFesplg{#1},% + Couleur=\def\XCCFcouleur{#1},% + PoliceEntete=\def\XCCFfontenete{#1},% + TexteOptions=\def\XCCFtxtopts{#1} +} +\setKVdefault[paramfenxcascf]{% + Largeur=14,% + EspaceLg=2pt,% + Couleur=darkgray,% + Menu=true,% + Entete=true,% + NoirBlanc=false,% + PoliceEntete=\scriptsize,% + Sep=true,% + TexteOptions={Config : exact real RAD 12 xcas} +} + +\NewDocumentEnvironment{CalculFormelXcas}{ O{} D<>{} } +{% + \useKVdefault[paramfenxcascf]% + \setKV[paramfenxcascf]{#1}% on paramètres les nouvelles clés et on les simplifie + \setcounter{xcascfnum}{0}%on repart avec le compteur à 0 + %couleurs + \ifboolKV[paramfenxcascf]{NoirBlanc}%si NB=true + { + \def\CoulXCASPt{lightgray!20}\def\CoulXCASSave{lightgray!20}\def\CoulXCASMid{lightgray!20}\def\CoulXCASStop{black} + } + { + \def\CoulXCASPt{cyan!20}\def\CoulXCASSave{green!20}\def\CoulXCASMid{violet!20}\def\CoulXCASStop{red} + } + \begin{tikzpicture}[#2] + \tikzstyle{xcastitre}=[font=\XCCFfontenete\ttfamily,inner sep=1pt,outer sep=0pt] + %LE BLOC "TITRE" + \ifboolKV[paramfenxcascf]{Entete}%si titre=true + {% + \node[semithick,draw=\XCCFcouleur,fill=\CoulXCASPt,above right,xcastitre] (PTIN) at ($(0,0)+(0,2pt)$) {\strut {\,?\,}} ; + \node[semithick,draw=\XCCFcouleur,fill=\CoulXCASSave,xcastitre,right=2pt] (SAUV) at (PTIN.east) {\strut \,Sauver\,} ; + \node[semithick,draw=\XCCFcouleur,fill=lightgray!20,xcastitre,above left] (CLOSE) at ($({\XCCFlarg},0)+(0,2pt)$) {\strut \,$\mathtt{\times}$\,} ; + \node[semithick,draw=\XCCFcouleur,fill=lightgray!20,xcastitre,left=6pt] (KBD) at (CLOSE.west) {\strut \:\:Kbd\:\:} ; + \node[semithick,draw=\XCCFcouleur,fill=lightgray!20,xcastitre,left=2pt] (STOP) at (KBD.west) {\strut \,\textcolor{\CoulXCASStop}{STOP}\,} ; + \draw[semithick,\XCCFcouleur,fill=\CoulXCASMid] ($(SAUV.north east)+({2pt},0)$) rectangle ($(STOP.south west)+({-2pt},0)$) node[midway,xcastitre,black] {\strut \XCCFtxtopts} ; + } + {} +}% +{% + \end{tikzpicture}% +} + +\newsavebox{\maboitecmdxcas} +\newsavebox{\maboiteresxcas} +\newlength{\hauteurboitecmdxcas} +\newlength{\hauteurboiteresxcas} +\newlength{\offsetcfxcas} + +\defKV[paramlgxcas]{% + TailleCommande=\def\XCCFtaillecmd{#1},% + TailleResultat=\def\XCCFtailleres{#1},% + ElargirAuto=\def\XCCFelargirauto{#1},% + MargeV=\def\XCCFoffset{#1},% + MargeH=\def\XCCFoffseth{#1},% + CouleurCmd=\def\XCCFcoulcmd{#1},% + CouleurRes=\def\XCCFcoulres{#1},% + PosRes=\def\XCCFposres{#1} +} + +\setKVdefault[paramlgxcas]{% + TailleCommande=\normalsize,% + TailleResultat=\large,% + ElargirAuto=1,% + MargeV=6pt,% + MargeH=0.15,% + CouleurCmd=red,% + CouleurRes=blue,% + PosRes=centre +} + +\NewDocumentCommand\LigneCalculsXcas{ O{} m m }{% + %clés + \useKVdefault[paramlgxcas]% + \setKV[paramlgxcas]{#1}% on paramètres les nouvelles clés et on les simplifie + %récupération des tailles des lignes cmd et res poour ajustement + \setlength{\offsetcfxcas}{\XCCFoffset} + \sbox{\maboitecmdxcas}{\pgfinterruptpicture \XCCFtaillecmd #2\endpgfinterruptpicture}\settoboxtotalheight{\hauteurboitecmdxcas}{\maboitecmdxcas} + \sbox{\maboiteresxcas}{\pgfinterruptpicture \XCCFtailleres #3\endpgfinterruptpicture}\settoboxtotalheight{\hauteurboiteresxcas}{\maboiteresxcas} + \def\XCCFhauteur{\XCCFelargirauto*(\the\hauteurboitecmdxcas+\the\hauteurboiteresxcas+4*\the\offsetcfxcas)} + %couleurs forcées + \ifboolKV[paramfenxcascf]{NoirBlanc}%si NB=true + {\def\XCCFcoulcmd{black}\def\XCCFcoulres{black}}{} + %compteur et raccourcis + \addtocounter{xcascfnum}{1}% + \def\XCL{\thexcascfnum}% + \def\XCLA{\inteval{\XCL-1}}% + %déclaration des nœuds (les "4" coins des blocs numéros) + \xintifboolexpr{\XCL == 1}%si c'est la première ligne + {\coordinate (A0\XCL) at (0,0);} + {\coordinate (A0\XCL) at ($(A1\XCLA)+(0,{-\XCCFesplg})$) ;} + \coordinate (A1\XCL) at ($(A0\XCL) + (0,{-\XCCFhauteur})$); + \coordinate (A2\XCL) at ($(A0\XCL) + ({\XCCFlarg},0)$); + \coordinate (A3\XCL) at ($(A1\XCL) + ({\XCCFlarg},0)$); + %les tracés + \draw[semithick,\XCCFcouleur] (A0\XCL) rectangle (A3\XCL) ; + %LA COMMANDE À GAUCHE + \draw ($(A0\XCL) + ({\XCCFoffseth},{-\the\offsetcfxcas-0.5*\XCCFelargirauto*\the\hauteurboitecmdxcas})$) node[\XCCFcoulcmd,font=\XCCFtaillecmd,right] {#2} ; + %LE RÉSULTAT + \IfStrEq{\XCCFposres}{centre}%si posrep=center + {% + \draw ($(A1\XCL) + ({0.5*\XCCFlarg},{\the\offsetcfxcas+0.5*\XCCFelargirauto*\the\hauteurboiteresxcas})$) node[\XCCFcoulres,font=\XCCFtailleres] {#3} ; + }{} + \IfStrEq{\XCCFposres}{gauche}%si posrep=left + {% + \draw ($(A1\XCL) + ({{\XCCFoffseth}},{\the\offsetcfxcas+0.5*\XCCFelargirauto*\the\hauteurboiteresxcas})$) node[\XCCFcoulres,font=\XCCFtailleres,right] {#3} ; + }{} + \IfStrEq{\XCCFposres}{droite}%si posrep=right + {% + \draw ($(A1\XCL) + ({\XCCFlarg-{\XCCFoffseth}},{\the\offsetcfxcas+0.5*\XCCFelargirauto*\the\hauteurboiteresxcas})$) node[\XCCFcoulres,font=\XCCFtailleres,left] {#3} ; + }{} + %LA LIGNE DE SÉPARATION + \ifboolKV[paramfenxcascf]{Sep}%si sep=true + {\draw[semithick,\XCCFcouleur] ($(A0\XCL)+(0,{-2*\the\offsetcfxcas-\XCCFelargirauto*\the\hauteurboitecmdxcas})$)--++({\XCCFlarg},0);} + {} + %LE BOUTON MENU + \ifboolKV[paramfenxcascf]{Menu}%si menu=true + { + \draw[semithick] (A3\XCL) node[draw=\XCCFcouleur,black,fill=lightgray!25,outer sep=0pt,inner sep=2pt,draw,above left,font=\tiny\sffamily\bfseries] {MENU} ; + }{} + %LE PETIT NUMÉRO + \draw[semithick] (A0\XCL) node[draw=\XCCFcouleur,fill=\CoulXCASMid,outer sep=0pt,inner sep=2pt,draw,below left,font=\footnotesize\sffamily] {\XCL} ; +} + +\endinput
\ No newline at end of file |