\documentclass[a4paper,french]{article}
\usepackage[T1]{fontenc}
\usepackage{babel} 
\usepackage{fourier}
\usepackage[table]{xcolor}
\usepackage{tabularx}
\usepackage{cellspace}
	\setlength{\cellspacetoplimit}{4pt}
	\setlength{\cellspacebottomlimit}{4pt}
\usepackage[colorlinks=true,urlcolor=blue]{hyperref}
\usepackage{listingsutf8}
\usepackage{pas-tableur}
\usepackage{titlesec}
\usepackage{tcolorbox}
	\tcbuselibrary{skins}
	\tcbuselibrary{theorems}
	\tcbuselibrary{breakable}	
% ----------------------

\usetikzlibrary{arrows}
\usepackage{eurosym}

\setlength{\parindent}{0pt}

\input{doc.codes.tex}
\input{doc.styles.tex}

\begin{document}

\begin{center}
\begin{tcolorbox}[head]
{\bfseries\LARGE Documentation \texttt{pas-tableur} }\\[3mm]
{\large Version 3.01 -- \today}
\end{tcolorbox}

{\large 
\href{https://www.mathweb.fr/euclide/contact}{St\'ephane Pasquet} -- Cédric Pierquet}

{\small\emph{Thanks to \textbf{Susumu Tanimura} for his contribution to the improvement of this package}}

{\small\emph{Thanks to \textbf{Emiel van Miltenburg}  for his contribution to the improvement of this package with the \textbackslash multimultiSelect macro.}}
\end{center}

\begin{tcolorbox}[toc]
\makeatletter
\@starttoc{toc}
\makeatother
\end{tcolorbox}

\newpage

\section{Introduction et installation}

L'extension \texttt{pas-tableur.sty} a pour but d'imiter l'apparence des tableurs.

Il ne permet en aucun cas d'effectuer des calculs type tableur.

\medskip

Pour cette version 2 de l'extension, j'ai souhaité utiliser une syntaxe dans le fichier sty plus intuitive et plus pratique pour effectuer d'autres op\'erations par rapport à la version 1.

Cette extension charge automatiquement les extensions suivantes :

\medskip

\begin{quote}
tikz (avec la librairie : calc) \\
xkeyval\\
xstring
\end{quote}

On pourra décompresser \texttt{pas-tableur.zip} 
de sorte à avoir :

\begin{itemize}
\item Sous Ubuntu :

\begin{verbatim}
./texlive/texmf-local/tex/latex/pas-tableur/pas-tableur.sty
./texlive/texmf-local/doc/latex/pas-tableur/pas-tableur.tex
./texlive/texmf-local/doc/latex/pas-tableur/pas-tableur.pdf
./texlive/texmf-local/doc/latex/pas-tableur/doc.codes.tex
./texlive/texmf-local/doc/latex/pas-tableur/doc.styles.tex
\end{verbatim}

\item Sous Windows :

\begin{verbatim}
C:\texmf\latex\pas-tableur\pas-tableur.sty
C:\texmf\doc\pas-tableur\pas-tableur.tex
C:\texmf\doc\pas-tableur\pas-tableur.pdf
C:\texmf\doc\pas-tableur\doc.codes.tex
C:\texmf\doc\pas-tableur\doc.styles.tex
\end{verbatim}
\end{itemize}

\medskip

Après installation, n'oubliez pas de taper la commande \texttt{texhash} dans le terminal pour mettre à jour la base de donn\'ees des extensions.

\bigskip 

Sous Mac OS, j'imagine que l'arborescence ressemble à ce qui est écrit précédemment.

\newpage

\section{\textbackslash tableur et \textbackslash tableur* : construire un tableur}

Pour créer un tableur, il faudra se mettre dans un environnement \texttt{tikzpicture} et utiliser la commande \textbackslash tableur ou sa version étoilée.

\subsection{\textbackslash tableur}

\begin{tcblisting}{codeTEX}
\begin{tikzpicture}
\tableur[<nombre de lignes>]{<colonnes>}
\end{tikzpicture}
\end{tcblisting}

\bigskip

L'argument \og colonnes \fg{} peut se pr\'esenter de deux fa\c cons diff\'erentes :

\bigskip

\begin{tcblisting}{listing,title=Exemple 1}
\begin{tikzpicture}
\tableur[2]{A,B,C}
\end{tikzpicture}
\end{tcblisting}

\bigskip

\begin{tcblisting}{listing,title=Exemple 2}
\begin{tikzpicture}
\tableur[2]{A-D}
\end{tikzpicture}
\end{tcblisting}

\bigskip\enlargethispage*{3em}

Pour cette macro, les valeurs par défaut sont :

\medskip

\begin{itemize}
\item la hauteur de chaque ligne : 1.57em ;
\item la largeur de chaque colonne : 7em ;
\item la largeur de la 1\iere{} colonne (contenant le num\'eros des lignes) : 3em ;
\item le nombre de lignes : si l'option entre crochets n'est pas informée, il y aura 1 ligne.
\end{itemize}

\medskip

Pour changer ces valeurs par défaut, on utilisera les commandes :

\medskip

\begin{tcblisting}{codeTEX}
% pour que chaque colonne ait une largeur de 2 cm
\tabcolwidth{2cm} 

% pour que la 1ère colonne fasse 1 cm de large
\tabnumlinewidth{1cm} 

% pour que chaque ligne ait une hauteur de 15 mm
\tablineheight{15mm}
\end{tcblisting}

\paragraph*{Attention :} il faut impérativement mettre l'unité (cm, mm, em, ex ou pt).

\subsection{\textbackslash tableur*}

La version étoilée de \textbackslash\texttt{tableur} permet de construire un tableur dont les colonnes n'ont pas les mêmes dimensions.


\begin{tcblisting}{listing}
\begin{tikzpicture}
\tableur*[2]{A/2cm,B/4cm,C/1cm,D/3cm}
\end{tikzpicture}
\end{tcblisting}

\subsection{Les noms de colonnes}

Les colonnes peuvent porter n'importe quelle lettre majuscule de l'alphabet latin :

ABCDEFGHIJKLMNOPKRSTUVWXYZ.

On ne peut pas nommer les colonnes par \og AA \fg{} par exemple.

\medskip

Quant aux lignes, elles commencent toujours par \og 1 \fg.


\subsection{Les couleurs par d\'efaut}

Deux couleurs sont utilisées pour les cases \og en-têtes \fg{} :

\medskip

\begin{tcblisting}{codeTEX}
\definecolor{grayTopCell}{cmyk}{0.08,0.05,0.06,0}
\definecolor{grayBottomCell}
{cmyk}{0.1,0.07,0.08,0}
\end{tcblisting}

\medskip

Pour les changer, vous pouvez les redéfinir après avoir appelé \texttt{pas-tableur}.

\medskip

Le gris de séparation des cellules est, quant à lui, défini par :

\medskip

\begin{tcblisting}{codeTEX}
\definecolor{graySepCell}{cmyk}{0.29,0.21,0.21,0}
\end{tcblisting}

\subsection{La police de caractère des en-tête}

\begin{tcblisting}{codeTEX}
\newcommand{\helvbx}{\usefont{T1}{phv}{m}{n}}
\end{tcblisting}

\medskip

Ainsi, si vous souhaitez insérer le nom d'une cellule dans votre document, vous pouvez utiliser la syntaxe suivante :

\medskip

\begin{tcblisting}{listing}
Dans la cellule {\helvbx A3}, nous 
avons inséré la formule...
\end{tcblisting}


\subsection{Nom des cellules}

\enlargethispage*{\baselineskip}

Toujours dans un logique de simplifier la rédaction des documents, j'ai souhaité nommer chaque cellule de façon intuitive.

Ainsi, la cellule {\helvbx A1} est nommée : cellA-1.

Cette précision est utile lorsque l'on souhaite ajouter des flèches vers certaines cellules comme dans l'exemple suivant :

\medskip

\begin{tcblisting}{listing}
\begin{tikzpicture}
\tableur[3]{A-D}
\draw[<-,>=latex'] (cellB-2.center) to[bend right=30] ($(cellB-2)+(2,-1.7)$) 
node[right] {C'est la cellule {\helvbx B2}};
\end{tikzpicture}
\end{tcblisting}

\section{\textbackslash celtxt et \textbackslash celtxt* : insérer du texte dans une cellule}


\begin{tcblisting}{codeTEX}
% Insérer une formule ou un texte
\celtxt[<options>]{<colonne>}{<ligne>}{<texte>}

% Insérer un texte en mode mathématiques ou non
\celtxt*[<options>]{<colonne>}{<ligne>}{<texte>}
\end{tcblisting}

\medskip

\begin{tabularx}{\linewidth}{|>{\ttfamily\arraybackslash}Sc|X|}
\hline\rowcolor{gray!25}
\multicolumn{2}{|Sl|}{Les options}\\
\hline
align=center & pour centrer le texte\\
\hline
align=left & pour positionner le texte à gauche (par défaut)\\
\hline
align=right & pour positionner le texte à droite\\
\hline
ajust & si l'on souhaite ajuster le texte correctement sur plusieurs lignes \\
\hline
width= & pour spécifier la largeur de la colonne dans le cas où nous avons utilisé la commande \texttt{\textbackslash tableur*}. Par défaut,la largeur est 7em (largeur par défaut de chaque colonne)\\
\hline
color= & couleur du texte. Par défaut, la couleur est noire\\
\hline
font= & formate le texte\\
\hline
\end{tabularx}

\medskip

Le texte peut être formaté de deux façons différentes selon qu'il désigne une formule ou un texte normal, comme le montre les deux exemples suivants.

\bigskip

\begin{tcblisting}{listing,title=Exemple 1}
\begin{tikzpicture}
\tableur[2]{M-O}
\celtxt[align=right,font=\scriptsize]{N}{2}{Du texte ici}
\celtxt{M}{1}{=B1^2}
\end{tikzpicture}
\end{tcblisting}

\newpage

\begin{tcblisting}{listing,title=Exemple 2}
\begin{tikzpicture}
\tableur*[2]{M/13mm,N/3cm}
\celtxt[width=13mm]{M}{1}{=B1^2}
\celtxt[align=right,width=3cm]{N}{2}{Du texte ici}
\end{tikzpicture}
\end{tcblisting}

On peut écrire un texte sur plusieurs lignes dans une cellule.

Le texte tient sur plusieurs lignes automatiquement s'il déborde de la cellule. En revanche, si vous souhaitez aller à la ligne manuellement (avec les \textbackslash\textbackslash), il faudra ajouter à la commande l'option \emph{ajust} :

\begin{tcblisting}{codeTEX}
\celtxt[ajust]{Un texte ici\textbackslash et ici}
\end{tcblisting}

\subsection{Mode mathématique dans une cellule}

Génération des premiers termes de la suite définie par $\left\{\begin{array}{l}
u_0=5\\
u_{n+1}=au_n+0,1
\end{array}
\right.$ où $a$ est une valeur mise dans la cellule {\helvbx{
C1}}.

\enlargethispage*{\baselineskip}

\begin{tcblisting}{listing,title=\'Ecrire en mode mathématique}
\begin{tikzpicture}
\tableur*[3]{A/2cm,B/3cm,C/2cm}
\celtxt*[align=center]{A}{1}{$n$}
\celtxt*[align=center]{B}{1}{$u_n$}
\celtxt[align=center]{C}{1}{0.85}
\celtxt[align=center]{A}{2}{0}
\celtxt[align=center]{B}{2}{5}
\celtxt{A}{3}{=A2+1}
\celtxt{B}{3}{=$C$1*B2+0.1}
\end{tikzpicture}
\end{tcblisting}

\subsection{Changement d'une étiquette de ligne}

Il peut arriver que l'on ait besoin de changer le nom de l'étiquette d'une ligne. On pourra alors utiliser les macros suivantes:
\begin{itemize}
\item \texttt{\textbackslash renumLine}: remplace le numéro de ligne par un texte sur fond gris;
\item \texttt{\textbackslash renumLineSelect} remplace le numéro de ligne par un texte sur fond bleu.
\end{itemize}

\begin{tcblisting}{listing,title=Changement d'une étiquette de ligne}
\begin{tikzpicture}
\tableur*[3]{A/1cm,B/3cm,C/2cm,D/3cm}
\celtxt*[width=1cm,align=center]{A}{1}{$x$}
\renumLine{2}{...}
\renumLineSelect{3}{51}
\celtxt*[width=1cm,align=center]{A}{3}{$f(x)$}
\end{tikzpicture}
\end{tcblisting}

\section{Sélection de cellules}

\subsection{\textbackslash selecCell : sélection d'une cellule}

\begin{tcblisting}{codeTEX}
\selecCell{<colonne>}{<ligne>}
\end{tcblisting}

\medskip

Permet de simuler le cas où une cellule est sélectionnée, comme le montre l'exemple suivant :

\medskip

\begin{tcblisting}{listing}
\begin{tikzpicture}
\tableur[2]{M-O}
\selecCell{N}{2}
\end{tikzpicture}
\end{tcblisting}

\subsection{\textbackslash multiSelec : sélection de plusieurs colonnes}

Voyons un exemple pour comprendre la syntaxe :

\medskip

\begin{tcblisting}{listing}
\begin{tikzpicture}
\tableur[3]{M-O}
\multiSelec{N-2}{O-3}
\end{tikzpicture}
\end{tcblisting}

\subsection{\textbackslash multimultiSelec : pour visualiser l'étirement}

\begin{tcblisting}{listing}
\sffamily
\begin{tikzpicture}
\begin{scope}[shift={(0,0)}]
\tableur*[7]{A/1cm, B/1cm}
\celtxt[width=1cm,align=right]{A}{1}{1}
\celtxt[width=1cm,align=right]{A}{2}{2}
\celtxt[width=1cm,align=right]{A}{3}{3}
\multimultiSelec{A-1}{A-3}{A-6}
\end{scope}

\node at (2,-2) {\Large $\Rightarrow$};
 
\begin{scope}[shift={(4,0)}]
\tableur*[7]{A/1cm, B/1cm}
\celtxt[width=1cm,align=right]{A}{1}{1}
\celtxt[width=1cm,align=right]{A}{2}{2}
\celtxt[width=1cm,align=right]{A}{3}{3}
\celtxt[width=1cm,align=right]{A}{4}{4}
\celtxt[width=1cm,align=right]{A}{5}{5}
\celtxt[width=1cm,align=right]{A}{6}{6}
\end{scope}
\end{tikzpicture}
\end{tcblisting}


\subsection{Les couleurs par d\'efaut}

\begin{tcblisting}{codeTEX}
% Pour les en-tetes
\definecolor{blueSelecCellTop}{cmyk}
{0.52,0.17,0,0}
\definecolor{blueSelecCellBottom}{cmyk}
{0.75,0.34,0,0}

% Pour les cellules sélectionnées
\definecolor{blueSelec}{cmyk}{0.23,0.06,0,0}
\end{tcblisting}

\medskip

\`A noter qu'une opacité de 50\,\% est appliquée pour les cellules sélectionnées (afin de voir les traits de séparation des cellules).

\section{Nouvelles macros 2026/09}

\subsection{Tableur à lignes ajustables: \textbackslash gentableur}

\begin{tcblisting}{codeTEX}
\gentableur[nombre de lignes]
{liste des colonnes/largeur}[liste des hauteurs]
\end{tcblisting}

\enlargethispage*{\baselineskip}

\subsection{\textbackslash plagecouleur}

\begin{tcblisting}{codeTEX}
\plagecouleur[couleur de fond]
{Colonne de depart-ligne de depart}
{Colonne finale-ligne finale}	
% exemple
\plagecouleur[lightgray]{A-1}{C-1}
\end{tcblisting}

\subsection{\textbackslash plagebordures}

\begin{tcblisting}{codeTEX}
\plagebordures
{Colonne de depart-ligne de depart}
{Colonne finale-ligne finale}
% exemple
\plagebordures{A-1}{C-1}
\end{tcblisting}

\subsection{Un exemple}

\begin{tcblisting}{listing}
\storewidthtolength[2mm]{20\,000,00\,\euro}{\pastableurcolA}%
\storewidthtolength[2mm]{\bfseries Capital restant dû}{\pastableurcolB}%
\storewidthtolength[2mm]{\bfseries Mensualité}{\pastableurcolC}%
\storewidthtolength[2mm]{\bfseries Mensualités}{\pastableurcolD}%
\storewidthtolength[2mm]{\bfseries Amortissement}{\pastableurcolE}%
\begin{tikzpicture}
\gentableur%
[6]{A/\pastableurcolA,B/\pastableurcolB,C/\pastableurcolC,D/\pastableurcolD,E/\pastableurcolE}%
[1.57em,1.57em,1.57em,3em,1.57em,1.57em]
%fond
\plagecouleur[lightgray]{A-1}{C-1}
\plagecouleur[lightgray]{A-4}{E-4}
%bordures
\plagebordures{A-1}{C-2}
\plagebordures{A-4}{E-6}
%cellules tableau 1
\celtxt[align=center,font={\bfseries},width=\pastableurcolA]{A}{1}{Emprunt}
\celtxt[align=center,font={\bfseries},width=\pastableurcolB]{B}{1}{Taux mensuel}
\celtxt[align=center,font={\bfseries},width=\pastableurcolC]{C}{1}{Mensualité}
\celtxt[align=center,width=\pastableurcolA]{A}{2}{20000,00}
\celtxt[align=center,width=\pastableurcolB]{B}{2}{0,40\,\%}
\celtxt[align=center,width=\pastableurcolC]{C}{2}{325,59}	%cellules tableau 2
\celtxt[align=center,font={\bfseries},width=\pastableurcolA]{A}{4}{Mois}
\celtxt[align=center,font={\bfseries},width=\pastableurcolB]{B}{4}{Capital restant dû en début de mois}
\celtxt[align=center,font={\bfseries},width=\pastableurcolC]{C}{4}{Intérêts mensuels}
\celtxt[align=center,font={\bfseries},width=\pastableurcolD]{D}{4}{Mensualités constantes}
\celtxt[align=center,font={\bfseries},width=\pastableurcolE]{E}{4}{Amortissement}
\lignetxt[align=center]{5}{1,{20000,00},{80,00},{375,59},{295,59}}
\lignetxt[align=center]{6}{2,{19704,41},{78,82},{375,59},{296,78}}
%cellules sélectionnées
\multiSelec{B-4}{D-6}
\end{tikzpicture}
\end{tcblisting}

\section{R\'esum\'e des commandes \`a travers des exemples}

\begin{tabularx}{\linewidth}{|Sl|X|}
\hline
\texttt{\textbackslash tableur[3]\{A-F\}} & Trace un tableur sur 3 lignes, avec les colonnes A, B, C, D, E, F.
\\
\hline
\texttt{\textbackslash tableur[2]\{A,B,C\}} & Trace un tableur sur 2 lignes, avec les colonnes A, B, C.\\
\hline
\texttt{\textbackslash tableur*[3]\{A/2cm,B/5cm\}} & Trace un tableur sur 3 lignes, avec des colonnes A et B de largeur diff\'erente.\\
\hline
\texttt{\textbackslash gentableur[2]\{A/2cm,B/5cm\}[5mm,10mm]} & Trace un tableur sur 3 lignes, avec des colonnes A et B de largeur diff\'erente et de hauteurs différentes.\\
\hline
\texttt{\textbackslash celtxt[align=center]\{A\}\{1\}\{=B2*2\}} & Affiche la formule \og =B2*2 \fg{} dans la cellule A1 centr\'ee horizontalement.\\
\hline
\texttt{\textbackslash celtxt[color=red]\{A\}\{1\}\{=B2*2\}} & Affiche en rouge la formule \og =B2*2 \fg{} dans la cellule A1.\\
\hline
\texttt{\textbackslash celtxt[width=5cm]\{A\}\{1\}\{=B2*2\}} & Affiche la formule \og =B2*2 \fg{} dans la cellule A1, de largeur 5 cm.\\
\hline
\texttt{\textbackslash celtxt*[align=right]\{A\}\{1\}\{\verb+$+u\verb+_+n\verb+$+\}} & Affiche \og $u_n$ \fg{} dans la cellule A1, align\'e \`a droite.\\
\hline
\texttt{\textbackslash renumLine\{5\}\{texte\}} & Renomme l'étiquette de la ligne 5 en \og texte \fg.\\
\hline
\texttt{\textbackslash renumLineSelect\{5\}\{texte\}} & Renomme l'étiquette de la ligne 5 en \og texte \fg{} sur fond bleu.\\
\hline
\texttt{\textbackslash selecCell\{A\}\{1\}} & Dessine un cadre autour de la cellule A1.\\
\hline
\texttt{\textbackslash multiSelec\{A-1\}\{C-2\}} & Simule la s\'election des cellules allant de A1 \`a C2.\\
\hline
\texttt{\textbackslash multimultiSelec\{A-1\}\{A-3\}\{A-6\}} & Simule l'étirement des cellules allant de A1 \`a A3 jusqu'à A6.\\
\hline
\texttt{\textbackslash plagecouleur\{A-1\}\{D-3\}} & Dessine une trame de fond.\\

\hline
\texttt{\textbackslash plagebordures\{A-1\}\{D-3\}} & Dessine les bordures des cellules.\\\hline
\texttt{\{\textbackslash helvbx A1\}} & Affiche : \helvbx{A1}.\\
\hline
\end{tabularx}

\newpage




\section{Implantation}

\lstset{%
numbers=left,
numberstyle=\tiny,
tabsize=2,
stepnumber=5,
numbersep=5pt,
language=TeX,
breaklines=true,
basicstyle=\small,%
keywordstyle=\color{red!50!black},%
identifierstyle=, %
commentstyle=\color{gray},%
stringstyle=\ttfamily,%
showstringspaces=true,
morekeywords={newcommand,definecolor,RequirePackage, usetikzlibrary,fill,node,draw,tikzstyle,StrChar,StrBetween, foreach,IfSubStr,StrBefore,StrBehind,StrLen,IfBeginWith,makebox, dimexpr,StrGobbleLeft,setlength}}

\lstinputlisting[inputencoding=utf8/latin1]{pas-tableur.sty}

\end{document}