% !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.4}
\def\TPdate{5 novembre 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=green!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 à Christophe Bal pour ses retours !}

\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}

\subsection{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.4|~:~~~~Migration de \textsf{\textbackslash tikzstyle} à \textsf{\textbackslash tikzset}.

\verb|v0.1.3|~:~~~~Clé \textsf{[PosRes]} pour la réponse (gauche/centre/droite) + correction de bugs mineurs.

\verb|v0.1.2|~:~~~~Clé \textsf{[Select]} pour le \textit{rond} de sélection sur Geogebra.

\verb|v0.1.1|~:~~~~Clés \textsf{[Fond]} et \textsf{[FondCouleur]} pour le fond des lignes.

\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 \cmaj{0.1.3} \Cle{PosRes} pour la position du résultat parmi \Cle{gauche/centre/droite} ;

       \hfill~défaut : \Cle{gauche}
       \item le booléen \Cle{Fond} pour activer la coloration de fond de la ligne ; \hfill~défaut : \Cle{false}
       \item \Cle{CouleurFond} pour spécifier une couleur de fond si \Cle{Fond=true} ; \hfill~défaut : \Cle{white}
       \item le booléen \Cle{Select} pour (dés)activer le \textit{rond} de sélection ; \hfill~défaut : \Cle{true}
       \item \Cle{CouleurSelect} pour spécifier une couleur de fond du \textit{rond} si \Cle{Select=true} ;

       \hfill~défaut : \Cle{white}
       \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}
\vspace*{-\baselineskip}\leavevmode
\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[Select=false]
               {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,CouleurSelect=violet]
               {(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,Fond,CouleurFond=cyan!10, PosRes=droite]
               {(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 \cmaj{0.1.3} \Cle{PosRes} pour la position du résultat parmi \Cle{gauche/centre/droite} ;

       \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 le booléen \Cle{Fond} activer la coloration de fond de la ligne ; \hfill~défaut : \Cle{false}
       \item \Cle{CouleurFond} pour spécifier une couleur (sous la forme \Cle{Couleur} ou \Cle{CouleurCmd/CouleurRes}) de fond si \Cle{Fond=true} ;

       \hfill~défaut : \Cle{white}
       \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,PosRes=droite]%
               {\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[,Fond,CouleurFond=yellow!10]
               {\texttt{Dériver[exp(0.1*x)]}}
               {\texttt{x $\rightarrow$ 0.1*exp(0.1*x)}}
       \LigneCalculsXcas[TailleResultat=\Huge,Fond,CouleurFond=orange!5/cyan!5, PosRes=gauche]
               {(1/4+1/3)/(1/5+2/7)}
               {$\rightarrow$ \: $\dfrac{\dfrac14+\dfrac13}{\dfrac15+\dfrac27}$}
       \end{CalculFormelXcas}
\end{PresentationCode}

\end{document}