summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/pas-tableur
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/pas-tableur
Initial commit
Diffstat (limited to 'macros/latex/contrib/pas-tableur')
-rw-r--r--macros/latex/contrib/pas-tableur/README37
-rw-r--r--macros/latex/contrib/pas-tableur/doc/doc.codes.tex144
-rw-r--r--macros/latex/contrib/pas-tableur/doc/doc.styles.tex73
-rw-r--r--macros/latex/contrib/pas-tableur/doc/pas-tableur.pdfbin0 -> 363043 bytes
-rw-r--r--macros/latex/contrib/pas-tableur/doc/pas-tableur.tex469
-rw-r--r--macros/latex/contrib/pas-tableur/latex/pas-tableur.sty353
6 files changed, 1076 insertions, 0 deletions
diff --git a/macros/latex/contrib/pas-tableur/README b/macros/latex/contrib/pas-tableur/README
new file mode 100644
index 0000000000..001719afbb
--- /dev/null
+++ b/macros/latex/contrib/pas-tableur/README
@@ -0,0 +1,37 @@
+********* README file for pas-tableur ******************
+********************* ENGLISH *****************************
+
+This package uses TikZ to imitate spreadsheet.
+
+Licence
+-------
+
+This program can be redistributed and/or modified under the terms
+of the LaTeX Project Public License Distributed from CTAN
+archives in directory macros/latex/base/lppl.txt.
+
+Documentation
+-------------
+
+The documentation of the package is under the
+directory /doc/ in french language.
+
+Thanks to use pas-tableur.sty.
+
+********* Fichier README pour pas-tableur ******************
+********************** FRANCAIS *******************************
+
+Cette extension utilise TikZ pour imiter les feuilles de calculs sous tableur.
+
+Licence
+-------
+
+L'extension peut être redistribuée et/ou modifiée sous les termes
+de la licence LaTeX Project Public (voir macros/latex/base/lppl.txt).
+
+Documentation
+-------------
+
+La documentation de l'extension se trouve dans le répertoire /doc/.
+
+Merci d'utiliser pas-tableur.sty.
diff --git a/macros/latex/contrib/pas-tableur/doc/doc.codes.tex b/macros/latex/contrib/pas-tableur/doc/doc.codes.tex
new file mode 100644
index 0000000000..429b0cad3c
--- /dev/null
+++ b/macros/latex/contrib/pas-tableur/doc/doc.codes.tex
@@ -0,0 +1,144 @@
+\tcbuselibrary{listings}
+\usetikzlibrary{decorations.pathmorphing}
+
+% Couleurs utilisées dans la documentation
+
+\definecolor{codeTitleFont}{cmyk}{0.04,0,0.03,0.16}
+\definecolor{codeTitleBackLeft}{cmyk}{0.08,0,0.06,0.76}
+\definecolor{codeTitleBackRight}{cmyk}{0.07,0,0.05,0.42}
+\definecolor{listingTitleFont}{cmyk}{0,0.31,0.91,0.38}
+\definecolor{listingTitleBackLeft}{cmyk}{0,0.05,0.64,0}
+\definecolor{listingTitleBackRight}{cmyk}{0,0.03,0.31,0.02}
+
+
+% Code LaTeX
+
+\tcbset{codeTEX/.style={
+ sharp corners=all,
+ before skip=1em,
+ after skip=1em,
+ enhanced,
+ frame style={
+ left color=codeTitleBackLeft,
+ right color=codeTitleBackRight},
+ interior style={
+ top color=codeTitleBackLeft!50,
+ bottom color=codeTitleBackRight!20},
+ boxrule=0.7pt,
+ fonttitle={\sffamily\bfseries\color{codeTitleFont}},
+ colback=codeTitleFont,
+ listing only,
+ left=6mm,
+ listing options={
+ basicstyle=\ttfamily\fontsize{7}{9}\selectfont,
+ keywordstyle=\color{blue},
+ numbers=left,
+ language=TeX,
+ breaklines=true,
+ morekeywords={definecolor,tcbset,begin, newtcbtheorem,newenvironment,newcommand,bfseries,color, sffamily,tcblower,ttfamily,setlength},
+ numberstyle=\tiny\color{red!75!black}},
+ breakable
+ }
+}
+
+% Listing exemples
+
+\tcbset{listing/.style={
+ sharp corners=all,
+ before skip=1em,
+ after skip=1em,
+ enhanced,
+ frame style={
+ left color=listingTitleBackLeft,
+ right color=listingTitleBackRight},
+ boxrule=0.7pt,
+ fonttitle={\sffamily\bfseries\color{listingTitleFont}},
+ colback=listingTitleBackRight,
+ breakable,
+ listing options={
+ basicstyle=\ttfamily\fontsize{7}{9}\selectfont,
+ keywordstyle=\color{listingTitleFont},
+ numbers=left,
+ language=TeX,
+ breaklines=true,
+ numbersep=5pt,
+ morekeywords={ifelse,begin,definecolor,tcbset},
+ numberstyle=\tiny\color{red!75!black}},
+ },
+ interior style={
+ draw=listingTitleBackLeft,
+ top color=listingTitleBackLeft!50,
+ bottom color=listingTitleBackRight!20},
+ segmentation style={
+ draw=listingTitleFont,
+ solid,
+ decorate,
+ decoration={random steps,segment length=2mm}
+ }
+}
+
+% Titre de la documentation
+
+\tcbset{head/.style={
+ enhanced,
+ hbox,
+ tikznode,
+ left=8mm,
+ right=8mm,
+ boxrule=0.4pt,
+ colback=white,
+ colframe=gray,
+ drop lifted shadow=black!50!yellow,
+ before=\par\vspace*{5mm},
+ after=\par\bigskip,
+ interior style={
+ draw=white,
+ top color=white,
+ bottom color=white}
+ }
+}
+
+% TOC
+
+\tcbset{toc/.style={
+ breakable,
+ enhanced jigsaw,
+ title={\color{red!50!black}Sommaire},
+ fonttitle=\bfseries\Large,
+ colback=yellow!10!white,
+ colframe=red!50!black,
+ before=\par\bigskip\noindent,
+ interior style={
+ fill overzoom image=goldshade.png,
+ fill image opacity=0.25},
+ colbacktitle=yellow!20,
+ enlargepage flexible=\baselineskip,
+ pad at break*=3mm,
+ attach boxed title to top center={
+ yshift=-0.25mm-\tcboxedtitleheight/2,
+ yshifttext=2mm-\tcboxedtitleheight/2},
+ boxed title style={
+ enhanced,
+ boxrule=0.5mm,
+ frame code={
+ \path[tcb fill frame] ([xshift=-4mm]frame.west) -- (frame.north west)
+ -- (frame.north east) -- ([xshift=4mm]frame.east)
+ -- (frame.south east) -- (frame.south west) -- cycle; },
+ interior code={
+ \path[tcb fill interior] ([xshift=-2mm]interior.west)
+ -- (interior.north west) -- (interior.north east)
+ -- ([xshift=2mm]interior.east) -- (interior.south east) -- (interior.south west)
+ -- cycle;} },
+ drop fuzzy shadow
+ }
+}
+
+% Historique de l'extension
+
+\tcbset{histo/.style={
+ enhanced,
+ breakable,
+ sidebyside,
+ lefthand width=1.5cm
+ }
+} \ No newline at end of file
diff --git a/macros/latex/contrib/pas-tableur/doc/doc.styles.tex b/macros/latex/contrib/pas-tableur/doc/doc.styles.tex
new file mode 100644
index 0000000000..8d41016dc1
--- /dev/null
+++ b/macros/latex/contrib/pas-tableur/doc/doc.styles.tex
@@ -0,0 +1,73 @@
+\makeatletter
+
+\def\@dottedtocline#1#2#3#4#5{%
+ \ifnum #1>\c@tocdepth \else
+ \vskip \z@ \@plus.2\p@
+ {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
+ \parindent #2\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@tempdima #3\relax
+ \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
+ {#4}\nobreak
+ \leaders\hbox{$\m@th
+ \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
+ mu$}\hfill
+ \nobreak
+ \hb@xt@\@pnumwidth{\hfil\helvbx #5}%
+ \par}%
+ \fi}
+
+\renewcommand*\l@section
+{%
+\helvbx\color{red!50!black}\bfseries
+\def\@linkcolor{red!50!black}\@dottedtocline{1}{1.5em}{1.5em}
+}
+
+\renewcommand*\l@subsection
+{%
+\helvbx\color{green!50!black}
+\def\@linkcolor{green!50!black}
+\@dottedtocline{1}{2.3em}{2.6em}
+}
+
+\renewcommand*\l@subsubsection
+{%
+\helvbx\color{orange!80!black}
+\def\@linkcolor{orange!80!black}
+\@dottedtocline{1}{3em}{3.3em}
+}
+
+\def\contentsline#1#2#3#4{%
+ \ifx\\#4\\%
+ \csname l@#1\endcsname{#2}{#3}%
+ \else
+ \csname l@#1\endcsname{\hyper@linkstart{link}{#4}{#2}\hyper@linkend}{%
+ \hyper@linkstart{link}{#4}{#3}\hyper@linkend
+ }%
+ \fi
+}
+
+% --------------------
+% TITRES DES SECTIONS
+% --------------------
+
+\titleformat{\section}[block]
+{\helvbx\Large\color{red!50!black}}
+{\fcolorbox{red!50!black}{red!50!black}{\textcolor{white}{\bfseries\thesection}}}
+{1em}
+{\helvbx}
+
+\titleformat{\subsection}[block]
+{\helvbx\large\color{green!50!black}}
+{\thesubsection}
+{1em}
+{\helvbx}
+
+\titleformat{\subsubsection}[block]
+{\helvbx\large\color{orange!50!black}}
+{\thesubsubsection}
+{1em}
+{\helvbx}
+
+\makeatother \ No newline at end of file
diff --git a/macros/latex/contrib/pas-tableur/doc/pas-tableur.pdf b/macros/latex/contrib/pas-tableur/doc/pas-tableur.pdf
new file mode 100644
index 0000000000..c778309a3f
--- /dev/null
+++ b/macros/latex/contrib/pas-tableur/doc/pas-tableur.pdf
Binary files differ
diff --git a/macros/latex/contrib/pas-tableur/doc/pas-tableur.tex b/macros/latex/contrib/pas-tableur/doc/pas-tableur.tex
new file mode 100644
index 0000000000..33e85c2bb4
--- /dev/null
+++ b/macros/latex/contrib/pas-tableur/doc/pas-tableur.tex
@@ -0,0 +1,469 @@
+\documentclass[a4paper,french]{article}
+\usepackage[latin1]{inputenc}
+ \usepackage[T1]{fontenc}
+\usepackage{babel}
+\usepackage{etex}
+\usepackage{fourier}
+\usepackage[table]{xcolor}
+\usepackage{tabularx}
+\usepackage{cellspace}
+ \setlength{\cellspacetoplimit}{4pt}
+ \setlength{\cellspacebottomlimit}{4pt}
+\usepackage[colorlinks=true,urlcolor=blue]{hyperref}
+\usepackage{pas-tableur}
+\usepackage{titlesec}
+\usepackage{tcolorbox}
+ \tcbuselibrary{skins}
+ \tcbuselibrary{theorems}
+ \tcbuselibrary{breakable}
+\usepackage{listings}
+% ----------------------
+
+\usetikzlibrary{arrows}
+
+\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 2.01 -- \today}
+\end{tcolorbox}
+
+{\large
+\href{http://www.mathweb.fr/contact.html}{St\'ephane Pasquet}}
+\end{center}
+
+\begin{tcolorbox}[toc]
+\makeatletter
+\@starttoc{toc}
+\makeatother
+\end{tcolorbox}
+
+\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\'e utiliser une syntaxe dans le fichier sty plus intuitive et plus pratique pour effectuer d'autres op\'erations par rapport \`a la version 1.
+
+\medskip
+
+Cette extension charge automatiquement les extensions suivantes :
+
+\medskip
+
+\begin{quote}
+tikz (avec la librairie : calc) \\
+xkeyval\\
+xstring
+\end{quote}
+
+\newpage
+
+On pourra d\'ecompresser \texttt{pas-tableur.zip}
+de sorte \`a 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\`es installation, n'oubliez pas de taper la commande \texttt{texhash} dans le terminal pour mettre \`a jour la base de donn\'ees des extensions.
+
+\bigskip
+
+Sous Mac OS, j'imagine que l'arborescence ressemble \`a ce qui est \'ecrit pr\'ec\'edemment.
+
+
+\section{\textbackslash tableur et \textbackslash tableur* : construire un tableur}
+
+Pour cr\'eer un tableur, il faudra se mettre dans un environnement \texttt{tikzpicture} et utiliser la commande \textbackslash tableur ou sa version \'etoil\'ee.
+
+\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
+
+Pour cette macro, les valeurs par d\'efaut 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\'ee, il y aura 1 ligne.
+\end{itemize}
+
+\medskip
+
+Pour changer ces valeurs par d\'efaut, on utilisera les commandes :
+
+\medskip
+
+\begin{tcblisting}{codeTEX}
+\tabcolwidth{2cm} % pour que chaque colonne ait une largeur de 2 cm
+\tabnumlinewidth{1cm} % pour que la 1\`ere colonne fasse 1 cm de large
+\tablineheight{15mm} % pour que chaque ligne ait une hauteur de 15 mm
+\end{tcblisting}
+
+\paragraph*{Attention :} il faut imp\'erativement mettre l'unit\'e (cm, mm, em, ex ou pt).
+
+\subsection{\textbackslash tableur*}
+
+La version \'etoil\'ee de \textbackslash\texttt{tableur} permet de construire un tableur dont les colonnes n'ont pas les m\^emes dimensions.
+
+
+\begin{tcblisting}{listing}
+\begin{tikzpicture}
+\tableur*[2]{A/2cm,B/4cm,C/1cm,D/3cm}
+\end{tikzpicture}
+\end{tcblisting}
+
+\newpage
+
+\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\'ees pour les cases \og en-t-\^etes \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\'efinir apr\`es avoir appel\'e \texttt{pas-tableur}.
+
+\medskip
+
+Le gris de s\'eparation des cellules est, quant \`a lui, d\'efini par :
+
+\medskip
+
+\begin{tcblisting}{codeTEX}
+\definecolor{graySepCell}{cmyk}{0.29,0.21,0.21,0}
+\end{tcblisting}
+
+\subsection{La police de caract\`ere des en-t\^ete}
+
+\begin{tcblisting}{codeTEX}
+\newcommand{\helvbx}{\usefont{T1}{phv}{m}{n}}
+\end{tcblisting}
+
+\medskip
+
+Ainsi, si vous souhaitez ins\'erer 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\'er\'e la formule...
+\end{tcblisting}
+
+
+\subsection{Nomination des cellules}
+
+Toujours dans un logique de simplifier la r\'edaction des documents, j'ai souhait\'e nommer chaque cellule de fa\c con intuitive.
+
+Ainsi, la cellule {\helvbx A1} est nomm\'ee : cellA-1.
+
+Cette pr\'ecision est utile lorsque l'on souhaite ajouter des fl\`eches 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\'erer du texte dans une cellule}
+
+
+\begin{tcblisting}{codeTEX}
+% Ins\'erer une formule ou un texte
+\celtxt[<options>}{<colonne>}{<ligne>}{<texte>}
+% Ins\'erer un texte en mode math\'ematiques ou non
+\celtxt*[<options>}{<colonne>}{<ligne>}{<texte>}
+\end{tcblisting}
+
+\medskip
+
+Les options sont :
+
+\medskip
+
+\begin{itemize}
+\item \texttt{c} : pour centrer le texte ;
+\item \texttt{l} : pour positionner le texte \`a gauche (c'est cette valeur qui est d\'esign\'ee par d\'efaut) ;
+\item \texttt{r} : pour positionner le texte \`a droite ;
+
+\item \texttt{width=} : pour sp\'ecifier la largeur de la colonne dans le cas o\`u nous avons utilis\'e la commande \texttt{\textbackslash tableur*}. Par d\'efaut,la largeur est 7em (largeur par d\'efaut de chaque colonne) ;
+
+\item \texttt{color=} : couleur du texte. Par d\'efaut, la couleur est noire.
+\end{itemize}
+
+\medskip
+
+Le texte peut \^etre format\'e de deux fa\c cons diff\'erentes selon qu'il d\'esigne une formule ou un texte normal, comme le montre l'exemple suivant :
+
+\bigskip
+
+\begin{tcblisting}{listing,title=Exemple 1}
+\begin{tikzpicture}
+\tableur[2]{M-O}
+\celtxt{M}{1}{=B1^2}
+\celtxt[r]{N}{2}{Du texte ici}
+\end{tikzpicture}
+\end{tcblisting}
+
+\medskip
+
+\begin{tcblisting}{listing,title=Exemple 2}
+\begin{tikzpicture}
+\tableur*[2]{M/13mm,N/3cm}
+\celtxt[width=13mm]{M}{1}{=B1^2}
+\celtxt[r,width=3cm]{N}{2}
+{Du texte ici}
+\end{tikzpicture}
+\end{tcblisting}
+
+\subsection{Formater le texte}
+
+On peut mettre en italique :
+
+\medskip
+
+\begin{tcblisting}{listing,title=\'Ecrire en italique}
+\begin{tikzpicture}
+\tableur[2]{M-O}
+\celtxt{M}{1}{=B1^2}
+\celtxt[r]{N}{2}
+{\itshape Du texte ici}
+\end{tikzpicture}
+\end{tcblisting}
+
+\medskip
+
+ou m\^eme en gras :
+
+\medskip
+
+\begin{tcblisting}{listing,title=\'Ecrire en gras}
+\begin{tikzpicture}
+\tableur[2]{M-O}
+\celtxt{M}{1}{=B1^2}
+\celtxt[r]{N}{2}
+{\bfseries Du texte ici}
+\end{tikzpicture}
+\end{tcblisting}
+
+voire m\^eme en petites majuscules :
+
+\medskip
+
+\begin{tcblisting}{listing,title=\'Ecrire en petites majuscules}
+\begin{tikzpicture}
+\tableur[2]{M-O}
+\celtxt{M}{1}{=B1^2}
+\celtxt[r,color=red]{N}{2}
+{\scshape Du texte ici}
+\end{tikzpicture}
+\end{tcblisting}
+
+\subsection{Mode math\'ematique dans une cellule}
+
+G\'en\'eration des premiers termes de la suite d\'efinie par $\left\{\begin{array}{l}
+u_0=5\\
+u_{n+1}=au_n+0,1
+\end{array}
+\right.$ o\`u $a$ est une valeur mise dans la cellule \helvbx{
+C1}.
+
+\begin{tcblisting}{listing,title=\'Ecrire en mode math\'ematique}
+\begin{tikzpicture}
+\tableur*[3]{A/2cm,B/3cm,C/2cm}
+\celtxt*[c]{A}{1}{$n$}
+\celtxt*[c]{B}{1}{$u_n$}
+\celtxt[c]{C}{1}{0.85}
+\celtxt[c]{A}{2}{0}
+\celtxt[c]{B}{2}{5}
+\celtxt{A}{3}{=A2+1}
+\celtxt{B}{3}{=$C$1*B2+0.1}
+\end{tikzpicture}
+\end{tcblisting}
+
+\paragraph*{Remarque :} les commandes \texttt{\textbackslash celtxt} et sa version \'etoil\'ee (introduites dans la version 2.01 du 31 janvier 2016) ont \'et\'e r\'e-\'ecrites et imagin\'ees sur la page \url{https://groups.google.com/forum/#!topic/fr.comp.text.tex/7K1r9fUd_Rs}. J'ai donc d\'ecid\'e d'introduire ce nouveau code car il semblerait que certains utilisateurs aient express\'ement envie d'ins\'erer du texte en mode math\'ematique dans certaines cellules.
+
+\section{S\'election de cellules}
+
+\subsection{\textbackslash selecCell : s\'election d'une cellule}
+
+\begin{tcblisting}{codeTEX}
+\selecCell{<colonne>}{<ligne>}
+\end{tcblisting}
+
+\medskip
+
+Permet de simuler le cas o\`u une cellule est s\'electionn\'ee, 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\'election 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}
+
+\newpage
+
+\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\'electionn\'ees
+\definecolor{blueSelec}{cmyk}{0.23,0.06,0,0}
+\end{tcblisting}
+
+\medskip
+
+\`A noter qu'une opacit\'e de 50\,\% est appliqu\'ee pour les cellules s\'electionn\'ees (afin de voir les traits de s\'eparation des cellules).
+
+\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 celtxt[c]\{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*[r]\{A\}\{1\}\{\verb+$+u\verb+_+n\verb+$+\}} & Affiche \og $u_n$ \fg{} dans la cellule A1, align\'e \`a droite.\\
+\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 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{pas-tableur.sty}
+
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/pas-tableur/latex/pas-tableur.sty b/macros/latex/contrib/pas-tableur/latex/pas-tableur.sty
new file mode 100644
index 0000000000..e98aa208bc
--- /dev/null
+++ b/macros/latex/contrib/pas-tableur/latex/pas-tableur.sty
@@ -0,0 +1,353 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% pas-tableur.sty v2.01 encodage : UTF8 %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% Cree par Stephane PASQUET %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\def\fileversion{2.1}
+\def\filedate{2016/01/31}
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesClass{pas-tableur}[%
+ \filedate\space v\fileversion\space
+ LaTeX package by Stephane PASQUET]
+\RequirePackage{tikz}
+\usetikzlibrary{calc}
+\RequirePackage{xstring}
+\RequirePackage{xkeyval}
+%
+% Definition des couleurs
+%
+\definecolor{grayTopCell}{cmyk}{0.08,0.05,0.06,0}
+\definecolor{grayBottomCell}{cmyk}{0.1,0.07,0.08,0}
+\definecolor{graySepCell}{cmyk}{0.29,0.21,0.21,0}
+\definecolor{blueSelecCellTop}{cmyk}{0.52,0.17,0,0}
+\definecolor{blueSelecCellBottom}{cmyk}{0.75,0.34,0,0}
+\definecolor{blueSelec}{cmyk}{0.23,0.06,0,0}
+%
+% Definition des dimensions par defaut
+%
+\def\col@width{7em}
+\def\numline@width{3em} % largeur de la colonne indiquant le numeros des lignes
+\def\line@height{1.57em}
+%
+ %==> Changer les valeurs par defaut
+ \newcommand*{\tabcolwidth}[1]{\def\col@width{#1}}
+ \newcommand*{\tabnumlinewidth}[1]{\def\numline@width{#1}}
+ \newcommand*{\tablineheight}[1]{\def\line@height{#1}}
+%
+% Definition des polices de caracteres
+%
+\newcommand{\helvbx}{\usefont{T1}{phv}{m}{n}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Construction du tableur %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%==> Macro intermediaire : trace de la premiere cellule
+%
+\newcommand{\pastab@draw@cell}[5]
+% #1 : \first@width, #2 : \first@name, #3 : 0=colonne1 / 1=autres colonnes /
+% 2 = ligne 1, #4 : coord., #5 : contenu
+ {%
+ \ifnum#3=0%
+ \tikzstyle{cellstyle} = [celhead,minimum width={#1},minimum height=\line@height]%
+ \def\pastableur@coord{(0,0)}%
+ \else%
+ \ifnum#3=1%
+ \tikzstyle{cellstyle} = [celhead,right,minimum width={#1},minimum height=\line@height]%
+ \else
+ \ifnum#3=2%
+ \tikzstyle{cellstyle} = [below left,celhead,minimum width={#1},minimum height=\line@height]
+ \else%
+ \tikzstyle{cellstryle} = [below,celhead,minimum width={#1},minimum height=\line@height]
+ \fi%
+ \fi%
+ \def\pastableur@coord{(#4)}%
+ \fi%
+ \node[cellstyle] (#2) at \pastableur@coord {\helvbx#5};%
+ \fill[grayBottomCell]
+ (#2.south west) --
+ (#2.south east) --
+ ($0.5*(#2.south east)+0.5*(#2.north east)$) --
+ ($0.5*(#2.south west)+0.5*(#2.north west)$) --
+ cycle;%
+ \fill[grayTopCell]
+ (#2.north west) --
+ (#2.north east) --
+ ($0.5*(#2.south east)+0.5*(#2.north east)$) --
+ ($0.5*(#2.south west)+0.5*(#2.north west)$) --
+ cycle;%
+ \node[minimum width={#1},minimum height=\line@height,cellstyle] at \pastableur@coord {\helvbx#5};%
+ }
+%
+%==> Macro intermediaire : trace de la grille
+%
+\newcommand{\pastableur@grid}[4] % #1 : width, #2 : name, #3 : numline, #4 : coord.
+ {%
+ \node[celempty,below,minimum height=\line@height,minimum width=#1] (cell#2-#3) at (#4) {};%
+ \draw[graySepCell] ($(cell#2-#3.south west)+(0.25pt,0)$) -- (cell#2-#3.south east) -- ($(cell#2-#3.north east)+(0,-0.25pt)$);%
+ }
+%
+%==> Style des cellules
+%
+\tikzstyle{celempty} = [outer sep=0pt]
+\tikzstyle{celhead} = [draw=black,rectangle,outer sep=0pt]
+%
+%==> Macro de redirection : etoilee ou pas etoilee ?
+%
+\newcommand{\tableur}{\@ifstar{\tableur@star}{\tableur@nostar}}
+%
+%==> Macro etoilee : \tableur*{A/<l1>,B/<l2>,...}. Tableur avec colonnes de largeurs differentes
+%
+\newcommand{\tableur@star}[2][1]
+ {%
+ \xdef\list@of@col{#2}%
+ % Placement de la premiere cellule en-tête
+ \StrChar{#2}{1}[\first@name]%
+ \StrBetween{#2}{/}{,}[\first@width]%
+ \pastab@draw@cell{\first@width}{\first@name}{0}{}{\first@name}
+ % Placement des autres en-têtes de colonnes
+ \foreach \name/\w [remember=\name as \lastname,count=\colnumber] in {#2}
+ {%
+ \ifx\name\first@name%
+ \else%
+ \pastab@draw@cell{\w}{\name}{1}{\lastname.east}{\name}
+ \fi%
+ }%
+ % Placement des en-têtes de lignes
+ \pastab@draw@cell{\numline@width}{numline1}{2}{\first@name.south west}{1}
+ \ifnum#1>1%
+ \foreach \num@line [remember=\num@line as \lastnum (initially 1)] in {2,...,#1}
+ {%
+ \pastab@draw@cell{\numline@width}{numline\num@line}{3}{numline\lastnum.south east}{\num@line}%
+ }%
+ \fi%
+ % Trace de la grille
+ \foreach \name/\w in {#2}
+ {%
+ \pastableur@grid{\w}{\name}{1}{\name.south}%
+ }%
+ \ifnum#1>1%
+ \foreach\numline [remember=\numline as \lastnumline (initially 1)] in {2,...,#1}
+ {%
+ \foreach \name/\w in {#2}
+ {%
+ \pastableur@grid{\w}{\name}{\numline}{cell\name-\lastnumline.south}%
+ }%
+ }%
+ \fi%
+ } % --> Fin de \tableur*
+%
+%==> Macro non etoilee : \tableur{A,B,C,...} ou \tableur{A-C}
+%
+\xdef\col@names{ABCDEFGHIJKLMNOPQRSTUVWXYZ} %----------> Liste des noms de colonnes <----------
+%
+\newcommand{\tableur@nostar}[2][1] % [#1] -> nombre de lignes (par defaut, "1"), #2 -> A,B,...,Z
+ {%
+ \IfSubStr{#2}{-}
+ {%
+ \StrBefore{#2}{-}[\str@start] % 1ere lettre, par ex. "G"
+ \StrBehind{#2}{-}[\str@end] % 2eme lettre, par ex. "L"
+ \StrBetween{\col@names}{\str@start}{\str@end}[\str@col] % retourne par exemple "HIJK"
+ \edef\str@col{\str@start\str@col\str@end} % retourne alors "GHIJKL"
+ \StrLen{\str@col}[\nb@columns] % nombre de colonnes
+ % --> On place la premiere cellule en-tête
+ \pastab@draw@cell{\col@width}{\str@start}{0}{}{\str@start}%
+ % --> On place les autres en-têtes
+ \foreach \i [remember=\i as \lasti (initially 1)] in {2,...,\nb@columns}
+ {%
+ \StrChar{\str@col}{\i}[\name]%
+ \StrChar{\str@col}{\lasti}[\lastname]%
+ \pastab@draw@cell{\col@width}{\name}{1}{\lastname.east}{\name}%
+ }%
+ }%
+ {%
+ \StrChar{#2}{1}[\str@start]%
+ \pastab@draw@cell{\col@width}{\str@start}{0}{}{\str@start}%
+ \foreach \name [remember=\name as \lastname] in {#2}
+ {%
+ \ifx\name\str@start%
+ \else%
+ \pastab@draw@cell{\col@width}{\name}{1}{\lastname.east}{\name}%
+ \fi%
+ }%
+ }%
+ % Placement des en-têtes de lignes
+ \StrChar{#2}{1}[\first@name]%
+ \pastab@draw@cell{\numline@width}{numline1}{2}{\first@name.south west}{1}
+ \ifnum#1>1%
+ \foreach \num@line [remember=\num@line as \lastnum (initially 1)] in {2,...,#1}
+ {%
+ \pastab@draw@cell{\numline@width}{numline\num@line}{3}{numline\lastnum.south east}{\num@line}%
+ }%
+ \fi%
+ % Trace de la grille
+ \IfSubStr{#2}{-}
+ {%
+ \foreach \i in {1,...,\nb@columns}
+ {%
+ \StrChar{\str@col}{\i}[\name]%
+ \pastableur@grid{\col@width}{\name}{1}{\name.south}%
+ }%
+ \ifnum#1>1%
+ \foreach\numline [remember=\numline as \lastnumline (initially 1)] in {2,...,#1}
+ {%
+ \foreach \i in {1,...,\nb@columns}
+ {%
+ \StrChar{\str@col}{\i}[\name]%
+ \pastableur@grid{\col@width}{\name}{\numline}{cell\name-\lastnumline.south}%
+ }%
+ }%
+ \fi%
+ }
+ {%
+ \foreach \name in {#2}
+ {%
+ \pastableur@grid{\col@width}{\name}{1}{\name.south}%
+ }%
+ \ifnum#1>1%
+ \foreach\numline [remember=\numline as \lastnumline (initially 1)] in {2,...,#1}
+ {%
+ \foreach \name in {#2}
+ {%
+ \pastableur@grid{\col@width}{\name}{\numline}{cell\name-\lastnumline.south}%
+ }%
+ }%
+ \fi%
+ }%
+ } % --> Fin de \tableur
+%
+% Inserer quelque chose dans une cellule : \celtxt [modif. du 2016/01/21 due \`a "Un bon petit"]
+%
+\define@cmdkey [PAS] {celtxt} {width}{}
+\define@cmdkey [PAS] {celtxt} {color}{}
+\define@boolkey [PAS] {celtxt} {l}[true]{}
+\define@boolkey [PAS] {celtxt} {r}[true]{}
+\define@boolkey [PAS] {celtxt} {c}[true]{}
+\presetkeys [PAS] {celtxt} {width = \col@width, color=black}{}
+%
+\newcommand*\celtxt@catcoderegime@begin{}
+\newcommand*\celtxt@catcoderegime@end{}
+%
+\newcommand*\celtxt
+ {%
+ \@ifstar{%
+ \let\celtxt@catcoderegime@end\@empty
+ \let\celtxt@catcoderegime@begin\@empty
+ \celtxt@i
+ }{%
+ \def\celtxt@catcoderegime@begin{%
+ \begingroup
+ \@makeother\^%
+ \@makeother\$%
+ }%
+ \let\celtxt@catcoderegime@end\endgroup
+ \celtxt@i
+ }%
+ }
+%
+\newcommand*{\celtxt@i}[1][]{\celtxt@ii{#1}}
+%
+\newcommand*\celtxt@ii[3]
+ {%
+ \setkeys[PAS]{celtxt}{#1}%
+ \celtxt@catcoderegime@begin
+ \celtxt@iii{#1}{#2}{#3}%
+ }
+%
+\newcommand*\celtxt@iii[4]
+ {%
+ \celtxt@catcoderegime@end
+ \IfBeginWith{#4}{=}{\let\pastab@style\texttt}{\let\pastab@style\@empty}
+ \ifPAS@celtxt@c
+ \def\pos@align{c}%
+ \else
+ \ifPAS@celtxt@r
+ \def\pos@align{r}%
+ \else
+ \def\pos@align{l}%
+ \fi
+ \fi
+ \node at (cell#2-#3) {\makebox[\dimexpr\cmdPAS@celtxt@width-2pt][\pos@align]{\pastab@style{\textcolor{\cmdPAS@celtxt@color}{#4}}}};%
+ }
+%
+% Cellule selectionnee : \selecCell
+%
+\newcommand*\selecCell[2]
+ {%
+ %==> En-tête ligne
+ %
+ \pastableur@colorcell{numline#2}{0}
+ \node[celhead,minimum width=\numline@width,minimum height=\line@height] at (numline#2) {\helvbx#2};%
+ %
+ %==> En-tête colonne
+ %
+ \pastableur@colorcell{#1}{1}
+ \node at (#1) {\helvbx#1};%
+ %
+ %==> Cellule cell#1-#1
+ %
+ \draw[very thick] (cell#1-#2.south west) rectangle (cell#1-#2.north east);%
+ \fill[black] ($(cell#1-#2.south east)+(-1pt,1pt)$) rectangle +(3pt,-3pt);%
+ } % fin de \selecCell
+%
+% Selection de plusieurs cellules : \multiSelec{A-1}{B-2} _/!\_ Nouvelle syntaxe 2014
+%
+\newcommand*\multiSelec[2]
+ {%
+ \fill[blueSelec,opacity=0.5] ($(cell#1.north west)+(0.25pt,-0.25pt)$) rectangle ($(cell#2.south east)+(-0.25pt,0.25pt)$);%
+ \draw[very thick] (cell#1.south west) rectangle (cell#1.north east);%
+ \fill[black] ($(cell#2.south east)+(-0.5pt,0.5pt)$) rectangle +(3pt,-3pt);%
+ %
+ %==> On colorie les en-têtes "colonnes"
+ %
+ \StrChar{#1}{1}[\str@start] % par exemple, "G"
+ \StrChar{#2}{1}[\str@end] % par exemple, "L"
+ \StrBetween{\col@names}{\str@start}{\str@end}[\str@col] % retourne par exemple "HIJK"
+ \edef\str@col{\str@start\str@col\str@end} % retourne alors "GHIJKL"
+ \StrLen{\str@col}[\nb@columns] % nombre d'en-têtes "colonnes" \`a colorier
+ \foreach \i in {1,...,\nb@columns}
+ {%
+ \StrChar{\str@col}{\i}[\name]%
+ \pastableur@colorcell{\name}{1}
+ \node at (\name) {\helvbx\name};%
+ }%
+ %
+ %==> On colorie les en-têtes "lignes"
+ %
+ \StrGobbleLeft{#1}{2}[\first@num]%
+ \StrGobbleLeft{#2}{2}[\second@num]%
+ \foreach \i in {\first@num,...,\second@num}
+ {%
+ \pastableur@colorcell{numline\i}{0}
+ \node[celhead,minimum width=\numline@width,minimum height=\line@height] at (numline\i) {\helvbx\i};%
+ }%
+ }% fin de \multiSelec
+%
+%
+%
+\newlength\pastableur@decal
+\newcommand{\pastableur@colorcell}[2] % #1 : name, #2 : 0=en-tetes "lignes" / 1=en-tetes "colonnes"
+ {%
+ \ifnum#2=0%
+ \setlength\pastableur@decal{0pt}%
+ \else%
+ \setlength\pastableur@decal{0.25pt}%
+ \fi%
+ \fill[blueSelecCellBottom]
+ ($(#1.south west)+(\pastableur@decal,-\pastableur@decal)$) --
+ ($(#1.south east)+(-\pastableur@decal,\pastableur@decal)$) --
+ ($0.5*(#1.south east)+0.5*(#1.north east)+(-\pastableur@decal,0)$) --
+ ($0.5*(#1.south west)+0.5*(#1.north west)+(\pastableur@decal,0)$) --
+ cycle;%
+ \fill[blueSelecCellTop]
+ ($(#1.north west)+(\pastableur@decal,-\pastableur@decal)$) --
+ ($(#1.north east)+(-\pastableur@decal,-\pastableur@decal)$) --
+ ($0.5*(#1.south east)+0.5*(#1.north east)+(-\pastableur@decal,0)$) --
+ ($0.5*(#1.south west)+0.5*(#1.north west)+(\pastableur@decal,0)$) --
+ cycle;%
+ }%
+\endinput