% !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}