summaryrefslogtreecommitdiff
path: root/graphics/pgf/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/pgf/contrib')
-rw-r--r--graphics/pgf/contrib/fenetrecas/README.md7
-rw-r--r--graphics/pgf/contrib/fenetrecas/doc/FenetreCas-doc.pdfbin0 -> 620070 bytes
-rw-r--r--graphics/pgf/contrib/fenetrecas/doc/FenetreCas-doc.tex542
-rw-r--r--graphics/pgf/contrib/fenetrecas/tex/FenetreCas.sty274
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
new file mode 100644
index 0000000000..25954ebfce
--- /dev/null
+++ b/graphics/pgf/contrib/fenetrecas/doc/FenetreCas-doc.pdf
Binary files differ
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