summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Master/texmf-dist/doc/latex/pas-tableur/pas-tableur.tex530
-rw-r--r--Master/texmf-dist/tex/latex/pas-tableur/pas-tableur.sty602
2 files changed, 828 insertions, 304 deletions
diff --git a/Master/texmf-dist/doc/latex/pas-tableur/pas-tableur.tex b/Master/texmf-dist/doc/latex/pas-tableur/pas-tableur.tex
index 47ed322efee..60d08675c60 100644
--- a/Master/texmf-dist/doc/latex/pas-tableur/pas-tableur.tex
+++ b/Master/texmf-dist/doc/latex/pas-tableur/pas-tableur.tex
@@ -1,251 +1,559 @@
-\documentclass[10pt]{article}
-\usepackage{pas-doc}
+\documentclass[12pt]{article}
+\usepackage[latin1]{inputenc}
+\usepackage[french]{babel}
+\usepackage[T1]{fontenc}
+\usepackage{listings}
+\usepackage[colorlinks=true,urlcolor=blue]{hyperref}
+\usepackage[vmargin=2cm,hmargin=2cm]{geometry}
+\usepackage{titlesec}
\usepackage{pas-tableur}
-% 2014/04/17
-\title{Documentation\\ \texttt{pas-tableur.sty V1.06}}
-\begin{document}
+\usetikzlibrary{arrows}
+\usepackage{kpfonts}
+
+\makeatletter
+% -------------------
+% TABLE DES MATIERES
+% -------------------
+
+\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\normalfont #5}%
+ \par}%
+ \fi}
+
+\renewcommand*\l@section
+{%
+\color{blueSelecCellBottom}
+\def\@linkcolor{blueSelecCellBottom}\@dottedtocline{1}{1.5em}{2.3em}
+}
+
+\renewcommand*\l@subsection
+{%
+\color{blueSelecCellTop}
+\def\@linkcolor{blueSelecCellTop}
+\@dottedtocline{1}{2.3em}{2.6em}
+}
+
+\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{blueSelecCellBottom}}
+{\fcolorbox{blueSelecCellBottom}{blueSelecCellBottom}{\textcolor{white}{\bfseries\thesection}}}
+{1em}
+{\helvbx}
+
+\titleformat{\subsection}[block]
+{\helvbx\large\color{blueSelecCellTop}}
+{\thesubsection}
+{1em}
+{\helvbx}
+
+
+\makeatother
+
+\title{pas-tableur.sty\\\small v2.00}
+\date{\today}
+\author{Stéphane PASQUET\\\href{mailto:contact@mathweb.fr}{contact@mathweb.fr}}
+
\lstset{
numbers=left,
numberstyle=\tiny,
stepnumber=1,
numbersep=3pt,
language=[LaTeX]TeX,
- backgroundcolor=\color{brown!10},
+ backgroundcolor=\color{blueSelec},
frame=shadowbox,
- rulesepcolor=\color{brown},
- rulecolor=\color{brown},
+ rulesepcolor=\color{blueSelecCellBottom},
+ rulecolor=\color{blueSelecCellBottom},
framexleftmargin=10pt,
- keywordstyle=\color{green!50!black}\bfseries,
+ keywordstyle=\color{blueSelecCellBottom}\bfseries,
basicstyle=\ttfamily,
- columns=flexible,
- keepspaces=true,
- upquote=true,
- commentstyle=\color{gray},
- morekeywords={tableur,celtxt,selecCell,definecolor,colminwidth,lineminheight, multiSelec}
+ columns=flexible,
+ keepspaces=true,
+ upquote=true,
+ commentstyle=\color{gray},
+ morekeywords={tableur,celtxt,selecCell,definecolor,colminwidth,lineminheight, multiSelec,tabcolwidth,tabnumlinewidth,tablineheight,helvbx,draw}
}
-\head
+\setlength{\parindent}{0pt}
+\begin{document}
-\bigskip
-
-\begingroup
-\color{DarkRed}
-\hrulefill
+\maketitle
\tableofcontents
-\hrulefill
-\endgroup
+\section{Introduction}
-\newpage
+\subsection{Résumé}
-\section{Introduction}
+L'extension \texttt{pas-tableur.sty} a pour but d'imiter l'apparence des tableurs.
-L'extension \texttt{pas-tableur} est conçue pour imiter un tableur.
+Il ne permet en aucun cas d'effectuer des calculs type tableur.
\medskip
-Elle s'installe dans votre arborescence \LaTeX.
+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érations par rapport à la version 1.
-\medskip
+\subsection{Installation}
-N'hésitez pas à me contacter pour toute suggestion d'ajout de commandes.
+Dans le fichier zip, l'arborescence \LaTeX a été conservée pour vous permettre une installation plus facile.
-\section{Dessiner un tableur}
+Ainsi, \texttt{pas-tableur.sty} devra \^etre installée dans le répertoire \og latex \fg{} de votre arborescence \LaTeX, et les fichiers \og pas-tableur.tex \fg{} et \og pas-tableur.pdf \fg{} dans son répertoire \og doc \fg.
-\subsection{La commande \textbackslash tableur}
+\subsection{Les extensions chargées}
-Les tableurs se font nécessairement dans un environnement \texttt{tikzpicture} à l'aide de la commande :
+Afin de fonctionner correctement, \texttt{pas-tableur.sty} chargent les extensions suivantes :
\medskip
+\begin{itemize}
+\item TiKZ, avec la librairie \og calc \fg{} ;
+\item xstring ;
+\item xkeyval.
+\end{itemize}
+
+\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{lstlisting}
+\begin{tikzpicture}
\tableur[<nombre de lignes>]{<colonnes>}
+\end{tikzpicture}
\end{lstlisting}
-\medskip
+\bigskip
-Par défaut, le nombre de lignes est fixé à \og 1 \fg.
+L'argument \og colonnes \fg{} peut se présenter de deux façons différentes :
-\medskip
+\bigskip
+\begin{minipage}{6cm}
+~\par
\begin{lstlisting}
\begin{tikzpicture}
-\tableur[3]{A,B,C,D}
+\tableur[2]{A,B,C}
\end{tikzpicture}
\end{lstlisting}
+\end{minipage}
+\begin{minipage}{5mm}
+~\par
+\end{minipage}
+\begin{minipage}{\dimexpr\linewidth-6.5cm}
+\begin{tikzpicture}
+\tableur[2]{A,B,C}
+\end{tikzpicture}
+\end{minipage}
-\begin{center}
+\bigskip
+
+\begin{minipage}{6cm}
+~\par
+\begin{lstlisting}
\begin{tikzpicture}
-\tableur[3]{A,B,C,D}
+\tableur[2]{A-D}
\end{tikzpicture}
-\end{center}
+\end{lstlisting}
+\end{minipage}
+\begin{minipage}{5mm}
+~\par
+\end{minipage}
+\begin{minipage}{\dimexpr\linewidth-6.5cm}
+\begin{tikzpicture}
+\tableur[2]{A-C}
+\end{tikzpicture}
+\end{minipage}
+
+\bigskip
-\paragraph*{Mise à jour du 11 mai 2012.} on peut désormais utiliser la syntaxe suivante :
+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éros 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{lstlisting}
+\tabcolwidth{2cm} % pour que chaque colonne ait une largeur de 2 cm
+\tabnumlinewidth{1cm} % pour que la 1ère colonne fasse 1 cm de large
+\tablineheight{15mm} % pour que chaque ligne ait une hauteur de 15 mm
+\end{lstlisting}
+
+\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\^emes dimensions.
+
+%\medskip%
+
+\begin{lstlisting}
+\tableur*{A/2cm,B/4cm,C/1cm,D/4cm}
+\end{lstlisting}
+
+\begin{center}
\begin{tikzpicture}
-\tableur[3]{A-D}
+\tableur*{A/2cm,B/4cm,C/1cm,D/4cm}
\end{tikzpicture}
-\end{lstlisting}
+\end{center}
+
+\subsection{Les noms de colonnes}
-\subsection{Les valeurs par défaut}
+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éfaut}
+
+Deux couleurs sont utilisées pour les cases \og en-t-\^etes \fg{} :
+
+\medskip
\begin{lstlisting}
-% Couleur du haut des en-têtes de colonnes
\definecolor{grayTopCell}{cmyk}{0.08,0.05,0.06,0}
-
-% Couleur du bas des en-têtes de colonnes
\definecolor{grayBottomCell}{cmyk}{0.1,0.07,0.08,0}
+\end{lstlisting}
-% Couleur du trait de séparation des cellules
+\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{lstlisting}
\definecolor{graySepCell}{cmyk}{0.29,0.21,0.21,0}
+\end{lstlisting}
+
+\subsection{La police de caractère des en-t\^ete}
+
+\begin{lstlisting}
+\newcommand{\helvbx}{\usefont{T1}{phv}{m}{n}}
+\end{lstlisting}
-% Largeur minimale des colonnes
-\def\colminwidth{7em}
+\medskip
+
+Ainsi, si vous souhaitez insérer le nom d'une cellule dans votre document, vous pouvez utiliser la syntaxe suivante :
-% Hauteur minimale des lignes
-\def\lineminheight{1.4em}
+\medskip
+
+\begin{minipage}{8cm}
+\begin{lstlisting}
+Dans la cellule {\helvbx A3}, nous
+avons inséré la formule ...
\end{lstlisting}
+\end{minipage}
+\begin{minipage}{5mm}
+~\par
+\end{minipage}
+\begin{minipage}{\dimexpr\linewidth-8.5cm}
+Dans la cellule {\helvbx A3}, nous avons inséré la formule ...
+\end{minipage}
-\newpage
+\subsection{Nomination des cellules}
-\section{Insérer un texte dans une cellule : \textbackslash celtxt}
+Toujours dans un logique de simplifier la rédaction des documents, j'ai souhaité nommer chaque cellule de façon intuitive.
-Insérer du texte se fait avec la commande :
+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{lstlisting}
-\celtxt[<l|c|r>]{<colonne>}{<ligne>}{<texte>}
+\begin{tikzpicture}
+\tableur[3]{A-E}
+\draw[<-] (cellB-2.center) to[bend right=30] ($(cellB-2)+(2,-1.7)$)
+node[right] {C'est la cellule {\helvbx B2}};
+\end{tikzpicture}
+\end{lstlisting}
+
+\begin{tikzpicture}
+\tableur[3]{A-E}
+\draw[<-,>=stealth'] (cellB-2.center) to[bend right=30] ($(cellB-2)+(2,-1.7)$) node[right] {C'est la cellule {\helvbx B2}};
+\end{tikzpicture}
+
+\section{\textbackslash celtxt : insérer du texte dans une cellule}
+
+
+\subsection{Syntaxe générale}
+
+\begin{lstlisting}
+\celtxt[<options>}{<colonne>}{<ligne>}{<texte>}
\end{lstlisting}
\medskip
-Par défaut, l'option d'alignement horizontal est fixée à \og l \fg{} pour aligner le texte à gauche (left).
+Les options sont :
\medskip
-Voici un exemple :
+\begin{itemize}
+\item \texttt{c} : pour centrer le texte ;
+\item \texttt{l} : pour positionner le texte à gauche (c'est cette valeur qui est désignée par défaut) ;
+\item \texttt{r} : pour positionner le texte à droite ;
+\item \texttt{width=} : pour spécifier la largeur de la colonne dans le cas où nous avons utiliser la commande \textbackslash\texttt{tableur*}. Par défaut, la largeur est 7em (largeur par défaut de chaque colonne) ;
+\item \texttt{color=} : couleur du texte. Par défaut, la couleur est noire.
+\end{itemize}
\medskip
+Le texte peut \^etre formatté de deux façons différentes selon qu'il désigne une formule ou un texte normal, comme le montre l'exemple suivant :
+
+\bigskip
+
+\begin{minipage}{7cm}
\begin{lstlisting}
\begin{tikzpicture}
-\tableur[3]{A,B,C,D,E}
-\celtxt[r]{C}{2}{=3*C1}
-\celtxt{A}{1}{\helv Du texte}
-\celtxt[c]{B}{3}{\helv Ici}
+\tableur[2]{M-O}
+\celtxt{M}{1}{=B1^2}
+\celtxt[r]{N}{2}{Du texte ici}
\end{tikzpicture}
\end{lstlisting}
-
-\begin{center}
+\end{minipage}
+\begin{minipage}{5mm}
+~\par
+\end{minipage}
+\begin{minipage}{\dimexpr\linewidth-7.5mm}
\begin{tikzpicture}
-\tableur[3]{A,B,C,D,E}
-\celtxt[r]{C}{2}{=3*C1}
-\celtxt{A}{1}{\helv Du texte}
-\celtxt[c]{B}{3}{\helv Ici}
+\tableur[2]{M-O}
+\celtxt{M}{1}{=B1^2}
+\celtxt[r]{N}{2}{Du texte ici}
\end{tikzpicture}
-\end{center}
+\end{minipage}
-\section{Cellule sélectionnée}
+\medskip
-\subsection{La commande \textbackslash selecCell}
+\begin{minipage}{7cm}
+\begin{lstlisting}
+\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{lstlisting}
+\end{minipage}
+\begin{minipage}{5mm}
+~\par
+\end{minipage}
+\begin{minipage}{\dimexpr\linewidth-7.5mm}
+\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{minipage}
-Cette commande colorie l'en-tête de la colonne et le numéro de la ligne d'une cellule sélectionnée, et place un cadre à bords épais autour de la cellule, comme dans un tableur ...
+\subsection{Formater le texte}
+
+On peut mettre en italique :
\medskip
+\begin{minipage}{7cm}
\begin{lstlisting}
-\selecCell{<colonne>}{<ligne>}
+\begin{tikzpicture}
+\tableur[2]{M-O}
+\celtxt{M}{1}{=B1^2}
+\celtxt[r]{N}{2}
+{\itshape Du texte ici}
+\end{tikzpicture}
\end{lstlisting}
+\end{minipage}
+\begin{minipage}{5mm}
+~\par
+\end{minipage}
+\begin{minipage}{\dimexpr\linewidth-7.5mm}
+\begin{tikzpicture}
+\tableur[2]{M-O}
+\celtxt{M}{1}{=B1^2}
+\celtxt[r]{N}{2}{\itshape Du texte ici}
+\end{tikzpicture}
+\end{minipage}
\medskip
-Voici un exemple :
+ou m\^eme en gras :
\medskip
+\begin{minipage}{7cm}
\begin{lstlisting}
\begin{tikzpicture}
-\tableur[3]{A,B,C,D,E}
-\celtxt[r]{C}{2}{=3*C1}
-\selecCell{C}{2}
+\tableur[2]{M-O}
+\celtxt{M}{1}{=B1^2}
+\celtxt[r]{N}{2}
+{\bfseries Du texte ici}
\end{tikzpicture}
\end{lstlisting}
-
-\begin{center}
+\end{minipage}
+\begin{minipage}{5mm}
+~\par
+\end{minipage}
+\begin{minipage}{\dimexpr\linewidth-7.5mm}
\begin{tikzpicture}
-\tableur[3]{A,B,C,D,E}
-\celtxt[r]{C}{2}{=3*C1}
-\selecCell{C}{2}
+\tableur[2]{M-O}
+\celtxt{M}{1}{=B1^2}
+\celtxt[r]{N}{2}{\bfseries Du texte ici}
\end{tikzpicture}
-\end{center}
+\end{minipage}
-\subsection{Les valeurs par défaut}
+\medskip
-\begin{lstlisting}
-% Couleur du haut de l'en-tête de la colonne/ligne sélectionnée
-\definecolor{blueSelecCellTop}{cmyk}{0.52,0.17,0,0}
+voire m\^eme en petites majuscules :
-% Couleur du bas de l'en-tête de la colonne/ligne sélectionnée
-\definecolor{blueSelecCellBottom}{cmyk}{0.75,0.34,0,0}
+\medskip
+
+
+\begin{minipage}{7cm}
+\begin{lstlisting}
+\begin{tikzpicture}
+\tableur[2]{M-O}
+\celtxt{M}{1}{=B1^2}
+\celtxt[r,color=red]{N}{2}
+{\scshape Du texte ici}
+\end{tikzpicture}
\end{lstlisting}
+\end{minipage}
+\begin{minipage}{5mm}
+~\par
+\end{minipage}
+\begin{minipage}{\dimexpr\linewidth-7.5mm}
+\begin{tikzpicture}
+\tableur[2]{M-O}
+\celtxt{M}{1}{=B1^2}
+\celtxt[r,color=red]{N}{2}{\scshape Du texte ici}
+\end{tikzpicture}
+\end{minipage}
-\section{Sélection de plusieurs cellules}
+\section{Sélection de cellules}
+
+\subsection{\textbackslash selecCell : sélection d'une cellule}
-\subsection{La commande \textbackslash multiSelec}
\begin{lstlisting}
-\multiSelec{<liste des colonnes>}{<liste des lignes>}
+\selecCell{<colonne>}{<ligne>}
\end{lstlisting}
\medskip
-Les colonnes et les lignes sont à séparer par des virgules.
+Permet de simuler le cas où une cellule est sélectionnée, comme le montre l'exemple suivant :
\medskip
+\begin{minipage}{7cm}
+~\par
\begin{lstlisting}
\begin{tikzpicture}
-\tableur[4]{A,B,C,D,E}
-\celtxt[r]{B}{2}{1}
-\multiSelec{B,C}{2,3}
+\tableur[3]{M-O}
+\selecCell{N}{2}
\end{tikzpicture}
\end{lstlisting}
-
-\begin{center}
+\end{minipage}
+\begin{minipage}{5mm}
+~\par
+\end{minipage}
+\begin{minipage}{\dimexpr\linewidth-7.5mm}
\begin{tikzpicture}
-\tableur[4]{A,B,C,D,E}
-\celtxt[r]{B}{2}{1}
-\multiSelec{B,C}{2,3}
+\tableur[3]{M-O}
+\selecCell{N}{2}
\end{tikzpicture}
-\end{center}
+\end{minipage}
-\subsection{Paramètres par défaut}
+\subsection{\textbackslash multiSelec : sélection de plusieurs colonnes}
-La couleur des cellules sélectionnée est par défaut :
+Voyons un exemple pour comprendre la syntaxe :
\medskip
+\begin{minipage}{7cm}
+~\par
\begin{lstlisting}
+\begin{tikzpicture}
+\tableur[3]{M-O}
+\multiSelec{N-2}{O-3}
+\end{tikzpicture}
+\end{lstlisting}
+\end{minipage}
+\begin{minipage}{5mm}
+~\par
+\end{minipage}
+\begin{minipage}{\dimexpr\linewidth-7.5mm}
+\begin{tikzpicture}
+\tableur[3]{M-O}
+\multiSelec{N-2}{O-3}
+\end{tikzpicture}
+\end{minipage}
+
+\subsection{Les couleurs par défaut}
+
+\begin{lstlisting}
+% 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{lstlisting}
-\section{Historique des modifications}
+\medskip
-\emph{Merci à Christophe BAL pour ses suggestions, ainsi que son soutien et celui des intervenants du forum de \href{http://forum.mathematex.net/}{mathematex}}.
+\`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{Suggestions et remarques}
+
+Je suis bien entendu ouvert à toute suggestion d'évolution et remarques. C'est d'ailleurs à l'aide de vos remarques que j'ai pu faire évoluer cette extension.
+
+N'hésitez donc pas à m'envoyer un mail ou a poster votre soucis sur le forum de \href{http://forum.mathematex.net}{mathematex}.
\medskip
-\begin{enumerate}
-\item \textbf{V1.02 : 12/05/2012} Modification de la macro \textbackslash tableur : on peut désormais écrire l'argument sous la forme A,B,C,D ou A-D.
-\item \textbf{V1.03 : 13/05.2012} Modification de la macro \textbackslash celtxt : on peut désormais insérer l'accent circonflexe dans du texte et si le texte est plus large que la cellule, le trait gris de séparation des cellules n'est plus visible (le texte s'écrit par dessus).
-\item \textbf{V1.04 : 13/05/2012} Modification de la macro \textbackslash celtxt : le texte est réduit pour ne pas effacer les traits de cellules.
+J'attire toutefois votre attention sur le fait que toute demande concernant un problème de compilation doit \^etre postée sur le forum (en non envoyée par mail) et accompagnée d'un code précis afin que cela serve aux multiples utilisateurs de cette extension.
-\item \textbf{V1.05 : 25/03/2014} Modification de la macro \textbackslash celtxt : conflit avec \verb+$+ et \verb+^+.
+\medskip
-\item \textbf{V1.06 : 17/04/2014} Modification de la macro \textbackslash celtxt : les options [c] et [r] fonctionnent à nouveau.
-\end{enumerate}
+Je ne répondrai par mail qu'aux questions concernant directement \texttt{pas-tableur}, et non aux problèmes de compilation, qui sont plus d'ordre technique.
\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/pas-tableur/pas-tableur.sty b/Master/texmf-dist/tex/latex/pas-tableur/pas-tableur.sty
index d1a735b3768..f1422a6f9f2 100644
--- a/Master/texmf-dist/tex/latex/pas-tableur/pas-tableur.sty
+++ b/Master/texmf-dist/tex/latex/pas-tableur/pas-tableur.sty
@@ -1,26 +1,24 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
-% pas-tableur.sty v1.06 encodage : UTF8 %
+% pas-tableur.sty v2.00 encodage : UTF8 %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
-% Créé par Stéphane PASQUET %
+% Créé par Stéphane PASQUET %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% V1.02 : 12/05/2012 -> Modification de la macro \tableur : on peut désormais écrire \tableur{A,B,C,D} ou \tableur{A-D}
-% V1.03 : 13/05/2012 -> Modification de la macro \celtxt : on peut désormais insérer l'accent circonflexe dans du texte et si le texte est plus large que la cellule, le trait gris de séparation des cellules n'est plus visible (le texte s'écrit par dessus).
-% V1.04 : 13/05/2012 -> Amélioration de la macro \celtxt : le texte est réduit pour ne pas effacer les traits de cellule
-% V1.05 : 25/03/2014 -> Amélioration de la macro \celtxt : conflit avec "$" et "^"
-% V1.06 : 17/04/2014 -> correction du bug sur la macro \celtxt : les options [c] et [r] fonctionnent
-
-% Informations générales
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{pas-tableur}[2014/04/17]
-
-\RequirePackage{tikz}
+%
+\def\fileversion{2.00}
+\def\filedate{2014/08/16}
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesClass{pas-tableur}[%
+ \filedate\space v\fileversion\space
+ LaTeX package by Stephane PASQUET]
+\@ifpackageloaded{tikz}{}{\RequirePackage{tikz}}
\usetikzlibrary{calc}
-\RequirePackage{xstring}
-\RequirePackage{multido}
+\@ifpackageloaded{xstring}{}{\RequirePackage{xstring}}
+\@ifpackageloaded{xkeyval}{}{\RequirePackage{xkeyval}}
+
% Définition des couleurs
@@ -31,215 +29,433 @@
\definecolor{blueSelecCellBottom}{cmyk}{0.75,0.34,0,0}
\definecolor{blueSelec}{cmyk}{0.23,0.06,0,0}
-% Définition des dimensions lignes/colonnes
-\def\colminwidth{7em}
-\def\lineminheight{1.57em}
+% Définition des dimensions par défaut
-% Définition des polices de caractères
-\newcommand{\helvbx}{\usefont{T1}{phv}{m}{n}}
-\newcommand{\helv}{\usefont{T1}{phv}{l}{n}}
-
-% Définition des compteurs
-\newcounter{celnumber}
-\newcounter{tmp}
-\newcounter{nbcolselected}
-\newcounter{nblineselected}
-\newcount\cntcol
-
-% Macros auxiliaires pour mémoriser les lettres désignant les colonnes
-\newcommand*\defcolumns{\cntcol\z@\valheadcols}
-\newcommand*\valheadcols[1]{\expandafter\valheadcols@#1,\valheadcols@,}
-\newcommand*\defcolumnsB{\cntcol\z@\valheadcolsB}
-\newcommand*\valheadcolsB[1]{\valheadcols@#1,\valheadcols@,}
-\def\valheadcols@#1,{%
- \ifx\valheadcols@#1%
- \else
- \advance\cntcol\@ne
- \expandafter\xdef\csname ValCol#1\endcsname{\number\cntcol}
- \expandafter\valheadcols@
- \fi
-}
-\newcommand*\ValCol[1]{\@nameuse{ValCol#1}}
+\def\col@width{7em}
+\def\numline@width{3em} % largeur de la colonne indiquant le numéros des lignes
+\def\line@height{1.57em}
-% Macros auxiliaires pour mémoriser les lettres désignant les colonnes sélectionnées
-\newcommand*\defcolselected{\cntcol\z@\valcolselected}
-\newcommand*\valcolselected[1]{\expandafter\valcolselected@#1,\valcolselected@,}
-\def\valcolselected@#1,{%
- \ifx\valcolselected@#1%
- \else
- \advance\cntcol\@ne
- \expandafter\xdef\csname ValColSelected\number\cntcol\endcsname{#1}
- \expandafter\valcolselected@
- \fi
-}
-\newcommand*\ValColSelected[1]{\@nameuse{ValColSelected#1}}
+ %==> Changer les valeurs par défaut
+ \newcommand*{\tabcolwidth}[1]{\def\col@width{#1}}
+ \newcommand*{\tabnumlinewidth}[1]{\def\numline@width{#1}}
+ \newcommand*{\tablineheight}[1]{\def\line@height{#1}}
+
+% Définition des polices de caractères
-% Macros auxiliaires pour mémoriser les lettres désignant les lignes sélectionnées
-\newcommand*\deflineselected{\cntcol\z@\vallineselected}
-\newcommand*\vallineselected[1]{\vallineselected@#1,\vallineselected@,}
-\def\vallineselected@#1,{%
- \ifx\vallineselected@#1%
- \else
- \advance\cntcol\@ne
- \expandafter\xdef\csname ValLineSelected\number\cntcol\endcsname{#1}
- \expandafter\vallineselected@
- \fi
-}
-\newcommand*\ValLineSelected[1]{\@nameuse{ValLineSelected#1}}
+\newcommand{\helvbx}{\usefont{T1}{phv}{m}{n}}
-%----------> Liste des noms de colonnes <----------
-\global\def\col@names{ABCDEFGHIJKLMNOPQRSTUVWXYZ}
+% Construction du tableur
-%----------> Construction du tableur <-----------
-\newcommand{\tableur}[2][1] % [#1] -> nombre de lignes (par défaut, "1"), #2 -> A,B,...,Z
-{%
-% On mémorise les lettres des colonnes
-% \ValCol{A} sera égal à "1" si la 1ère colonne porte la lettre "A"
-\setcounter{celnumber}{0}
-\IfSubStr{#2}{-}
-{%
- \StrBefore{#2}{-}[\str@start] % 1ère lettre, par ex. "G"
- \StrBehind{#2}{-}[\str@end] % 2ème 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}
- \StrLen{\str@col}[\nb@columns]
- \StrChar{\str@col}{1}[\lettre]
- \xdef\chaine{\lettre}
- \multido{\i=2+1}{\nb@columns}
- {
- \StrChar{\str@col}{\i}[\lettre]
- \xdef\chaine{\chaine,\lettre}
- } % ici, \chaine = "H,I,J,K,"
- \StrGobbleRight{\chaine}{1}[\chaine] % retire la dernière virgule : \chaine -> "H,I,J,K"
- \defcolumns{\chaine}
- \multido{\i=1+1}{\nb@columns}
- {
- \StrChar{\str@col}{\i}[\lettre]
- \node[below right,inner xsep=1ex,minimum width=\colminwidth,minimum height=\lineminheight] (c\thecelnumber) at ({\thecelnumber*\colminwidth},0) {\helvbx\lettre};
- \fill[grayTopCell] (c\thecelnumber.north west) -- (c\thecelnumber.north east) -- ($0.5*(c\thecelnumber.north east)+0.5*(c\thecelnumber.south east)$) -- ($0.5*(c\thecelnumber.south west)+0.5*(c\thecelnumber.north west)$) -- cycle;
- \fill[grayBottomCell] (c\thecelnumber.south west) -- (c\thecelnumber.south east) -- ($0.5*(c\thecelnumber.south east)+0.5*(c\thecelnumber.north east)$) -- ($0.5*(c\thecelnumber.south west)+0.5*(c\thecelnumber.north west)$) -- cycle;
- \node[below right,inner sep=1ex,minimum width=\colminwidth,minimum height=\lineminheight] at (c\thecelnumber.north west) {\helvbx\lettre};
- \stepcounter{celnumber}
- }
-}
-{
- \defcolumnsB{#2}
- \foreach \i in {#2}
- {
- \node[below right,inner xsep=1ex,minimum width=\colminwidth,minimum height=\lineminheight] (c\thecelnumber) at ({\thecelnumber*\colminwidth},0) {\helvbx\i};
- \fill[grayTopCell] (c\thecelnumber.north west) -- (c\thecelnumber.north east) -- ($0.5*(c\thecelnumber.north east)+0.5*(c\thecelnumber.south east)$) -- ($0.5*(c\thecelnumber.south west)+0.5*(c\thecelnumber.north west)$) -- cycle;
- \fill[grayBottomCell] (c\thecelnumber.south west) -- (c\thecelnumber.south east) -- ($0.5*(c\thecelnumber.south east)+0.5*(c\thecelnumber.north east)$) -- ($0.5*(c\thecelnumber.south west)+0.5*(c\thecelnumber.north west)$) -- cycle;
- \node[below right,inner sep=1ex,minimum width=\colminwidth,minimum height=\lineminheight] at (c\thecelnumber.north west) {\helvbx\i};
- \stepcounter{celnumber}
- }
-}
+ %==> Style des cellules
+ \tikzstyle{celempty} = [outer sep=0pt]
+ \tikzstyle{celhead} = [draw=black,rectangle,outer sep=0pt]
+
+ %==> Macro de redirection : étoilée ou pas étoilée ?
+ \newcommand{\tableur}{\@ifstar{\tableur@star}{\tableur@nostar}}
-% Placement des numéros de lignes
-\foreach \i in {1,...,#1}
-{
- \node[below left,inner xsep=1ex,minimum width=3em,minimum height=\lineminheight,draw,very thin] (nb) at (0,{-\i*\lineminheight}) {\helvbx\i};
- \fill[grayTopCell] (nb.north west) -- (nb.north east) -- ($0.5*(nb.north east)+0.5*(nb.south east)$) -- ($0.5*(nb.south west)+0.5*(nb.north west)$) -- cycle;
- \fill[grayBottomCell] (nb.south west) -- (nb.south east) -- ($0.5*(nb.south east)+0.5*(nb.north east)$) -- ($0.5*(nb.south west)+0.5*(nb.north west)$) -- cycle;
- \node[below left,inner xsep=1ex,minimum width=3em,minimum height=\lineminheight,draw,very thin] (nb) at (0,{-\i*\lineminheight}) {\helvbx\i};
+ %==> Macro étoilée : \tableur*{A/<l1>,B/<l2>,...}. Tableur avec colonnes de largeurs différentes
+ \newcommand{\tableur@star}[2][1]
+ {%
+ \xdef\list@of@col{#2}
+ % Placement de la première cellule en-tête
+ \StrChar{#2}{1}[\first@name]
+ \StrBetween{#2}{/}{,}[\first@width]
+ \node[minimum width={\first@width},minimum height=\line@height,celhead] (\first@name) {\helvbx\first@name};
+ \fill[grayBottomCell]
+ (\first@name.south west) --
+ (\first@name.south east) --
+ ($0.5*(\first@name.south east)+0.5*(\first@name.north east)$) --
+ ($0.5*(\first@name.south west)+0.5*(\first@name.north west)$) --
+ cycle;
+ \fill[grayTopCell]
+ (\first@name.north west) --
+ (\first@name.north east) --
+ ($0.5*(\first@name.south east)+0.5*(\first@name.north east)$) --
+ ($0.5*(\first@name.south west)+0.5*(\first@name.north west)$) --
+ cycle;
+ \node[minimum width={\first@width},minimum height=\line@height,celhead] at (\first@name) {\helvbx\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
+ \node[minimum width={\w},minimum height=\line@height,celhead,right] (\name) at (\lastname.east) {\helvbx\name};
+ \fill[grayBottomCell]
+ (\name.south west) --
+ (\name.south east) --
+ ($0.5*(\name.south east)+0.5*(\name.north east)$) --
+ ($0.5*(\name.south west)+0.5*(\name.north west)$) --
+ cycle;
+ \fill[grayTopCell]
+ (\name.north west) --
+ (\name.north east) --
+ ($0.5*(\name.south east)+0.5*(\name.north east)$) --
+ ($0.5*(\name.south west)+0.5*(\name.north west)$) --
+ cycle;
+ \node[minimum width={\w},minimum height=\line@height,celhead,right] at (\lastname.east) {\helvbx\name};
+ \fi
+ }
+
+ % Placement des en-têtes de lignes
+
+ \node[below left,celhead,minimum width=\numline@width,minimum height=\line@height] (numline1) at (\first@name.south west) {\helvbx 1};
+ \fill[grayBottomCell]
+ (numline1.south west) --
+ (numline1.south east) --
+ ($0.5*(numline1.south east)+0.5*(numline1.north east)$) --
+ ($0.5*(numline1.south west)+0.5*(numline1.north west)$) --
+ cycle;
+ \fill[grayTopCell]
+ (numline1.north west) --
+ (numline1.north east) --
+ ($0.5*(numline1.south east)+0.5*(numline1.north east)$) --
+ ($0.5*(numline1.south west)+0.5*(numline1.north west)$) --
+ cycle;
+ \node[below left,celhead,minimum width=\numline@width,minimum height=\line@height] (numline1) at (\first@name.south west) {\helvbx1};
+ \ifnum#1>1
+ \foreach \num@line [remember=\num@line as \lastnum (initially 1)] in {2,...,#1}
+ {
+ \node[below,celhead,minimum width=\numline@width,minimum height=\line@height] (numline\num@line) at (numline\lastnum.south) {\helvbx\num@line};
+ \fill[grayBottomCell]
+ (numline\num@line.south west) --
+ (numline\num@line.south east) --
+ ($0.5*(numline\num@line.south east)+0.5*(numline\num@line.north east)$) --
+ ($0.5*(numline\num@line.south west)+0.5*(numline\num@line.north west)$) --
+ cycle;
+ \fill[grayTopCell]
+ (numline\num@line.north west) --
+ (numline\num@line.north east) --
+ ($0.5*(numline\num@line.south east)+0.5*(numline\num@line.north east)$) --
+ ($0.5*(numline\num@line.south west)+0.5*(numline\num@line.north west)$) --
+ cycle;
+ \node[below,celhead,minimum width=\numline@width,minimum height=\line@height] (numline\num@line) at (numline\lastnum.south) {\helvbx\num@line};
+ }
+ \fi
+
+ % Tracé de la grille
+
+ \foreach \name/\w in {#2}
+ {
+ \node[celempty,below,minimum height=\line@height,minimum width=\w] (cell\name-1) at (\name.south) {};
+ \draw[graySepCell] ($(cell\name-1.south west)+(0.25pt,0)$) -- (cell\name-1.south east) -- ($(cell\name-1.north east)+(0,-0.25pt)$);
+ }
+ \ifnum#1>1
+ \foreach\numline [remember=\numline as \lastnumline (initially 1)] in {2,...,#1}
+ {
+ \foreach \name/\w in {#2}
+ {
+ \node[celempty,below,minimum height=\line@height,minimum width=\w] (cell\name-\numline) at (cell\name-\lastnumline.south) {};
+ \draw[graySepCell] ($(cell\name-\numline.south west)+(0.25pt,0)$) -- (cell\name-\numline.south east) -- ($(cell\name-\numline.north east)+(0,-0.25pt)$);
+ }
+ }
+ \fi
+ } % --> Fin de \tableur*
+
+ %==> Macro non étoilée : \tableur{A,B,C,...} ou \tableur{A-C}
+
+ %----------> Liste des noms de colonnes <----------
+ \xdef\col@names{ABCDEFGHIJKLMNOPQRSTUVWXYZ}
+
+ \newcommand{\tableur@nostar}[2][1] % [#1] -> nombre de lignes (par défaut, "1"), #2 -> A,B,...,Z
+ {%
+ \IfSubStr{#2}{-}
+ {%
+ \StrBefore{#2}{-}[\str@start] % 1ère lettre, par ex. "G"
+ \StrBehind{#2}{-}[\str@end] % 2ème 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 première cellule en-tête
+ \node[minimum width={\col@width},minimum height=\line@height,celhead] (\str@start) {\helvbx\str@start};
+ \fill[grayBottomCell]
+ (\str@start.south west) --
+ (\str@start.south east) --
+ ($0.5*(\str@start.south east)+0.5*(\str@start.north east)$) --
+ ($0.5*(\str@start.south west)+0.5*(\str@start.north west)$) --
+ cycle;
+ \fill[grayTopCell]
+ (\str@start.north west) --
+ (\str@start.north east) --
+ ($0.5*(\str@start.south east)+0.5*(\str@start.north east)$) --
+ ($0.5*(\str@start.south west)+0.5*(\str@start.north west)$) --
+ cycle;
+ \node[minimum width={\col@width},minimum height=\line@height,celhead] at (\str@start) {\helvbx\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]
+ \node[minimum width={\col@width},minimum height=\line@height,celhead,right] (\name) at (\lastname.east) {\helvbx\name};
+ \fill[grayBottomCell]
+ (\name.south west) --
+ (\name.south east) --
+ ($0.5*(\name.south east)+0.5*(\name.north east)$) --
+ ($0.5*(\name.south west)+0.5*(\name.north west)$) --
+ cycle;
+ \fill[grayTopCell]
+ (\name.north west) --
+ (\name.north east) --
+ ($0.5*(\name.south east)+0.5*(\name.north east)$) --
+ ($0.5*(\name.south west)+0.5*(\name.north west)$) --
+ cycle;
+ \node[minimum width={\col@width},minimum height=\line@height,celhead] at (\name) {\helvbx\name};
+ }
+ }
+ {
+ \StrChar{#2}{1}[\str@start]
+ \node[minimum width={\col@width},minimum height=\line@height,celhead] (\str@start) {\helvbx\str@start};
+ \fill[grayBottomCell]
+ (\str@start.south west) --
+ (\str@start.south east) --
+ ($0.5*(\str@start.south east)+0.5*(\str@start.north east)$) --
+ ($0.5*(\str@start.south west)+0.5*(\str@start.north west)$) --
+ cycle;
+ \fill[grayTopCell]
+ (\str@start.north west) --
+ (\str@start.north east) --
+ ($0.5*(\str@start.south east)+0.5*(\str@start.north east)$) --
+ ($0.5*(\str@start.south west)+0.5*(\str@start.north west)$) --
+ cycle;
+ \node[minimum width={\col@width},minimum height=\line@height,celhead] at (\str@start) {\helvbx\str@start};
+
+ \foreach \name [remember=\name as \lastname] in {#2}
+ {
+ \ifx\name\str@start
+ \else
+ \node[minimum width={\col@width},minimum height=\line@height,celhead,right] (\name) at (\lastname.east) {\helvbx\name};
+ \fill[grayBottomCell]
+ (\name.south west) --
+ (\name.south east) --
+ ($0.5*(\name.south east)+0.5*(\name.north east)$) --
+ ($0.5*(\name.south west)+0.5*(\name.north west)$) --
+ cycle;
+ \fill[grayTopCell]
+ (\name.north west) --
+ (\name.north east) --
+ ($0.5*(\name.south east)+0.5*(\name.north east)$) --
+ ($0.5*(\name.south west)+0.5*(\name.north west)$) --
+ cycle;
+ \node[minimum width={\col@width},minimum height=\line@height,celhead] at (\name) {\helvbx\name};
+ \fi
+ }
+ }
+
+
+ % Placement des en-têtes de lignes
+
+ \StrChar{#2}{1}[\first@name]
+ \node[below left,celhead,minimum width=\numline@width,minimum height=\line@height] (numline1) at (\first@name.south west) {\helvbx 1};
+ \fill[grayBottomCell]
+ (numline1.south west) --
+ (numline1.south east) --
+ ($0.5*(numline1.south east)+0.5*(numline1.north east)$) --
+ ($0.5*(numline1.south west)+0.5*(numline1.north west)$) --
+ cycle;
+ \fill[grayTopCell]
+ (numline1.north west) --
+ (numline1.north east) --
+ ($0.5*(numline1.south east)+0.5*(numline1.north east)$) --
+ ($0.5*(numline1.south west)+0.5*(numline1.north west)$) --
+ cycle;
+ \node[below left,celhead,minimum width=\numline@width,minimum height=\line@height] (numline1) at (\first@name.south west) {\helvbx1};
+ \ifnum#1>1
+ \foreach \num@line [remember=\num@line as \lastnum (initially 1)] in {2,...,#1}
+ {
+ \node[below,celhead,minimum width=\numline@width,minimum height=\line@height] (numline\num@line) at (numline\lastnum.south) {\helvbx\num@line};
+ \fill[grayBottomCell]
+ (numline\num@line.south west) --
+ (numline\num@line.south east) --
+ ($0.5*(numline\num@line.south east)+0.5*(numline\num@line.north east)$) --
+ ($0.5*(numline\num@line.south west)+0.5*(numline\num@line.north west)$) --
+ cycle;
+ \fill[grayTopCell]
+ (numline\num@line.north west) --
+ (numline\num@line.north east) --
+ ($0.5*(numline\num@line.south east)+0.5*(numline\num@line.north east)$) --
+ ($0.5*(numline\num@line.south west)+0.5*(numline\num@line.north west)$) --
+ cycle;
+ \node[below,celhead,minimum width=\numline@width,minimum height=\line@height] (numline\num@line) at (numline\lastnum.south) {\helvbx\num@line};
+ }
+ \fi
+
+ % Tracé de la grille
+
+ \IfSubStr{#2}{-}
+ {%
+ \foreach \i in {1,...,\nb@columns}
+ {
+ \StrChar{\str@col}{\i}[\name]
+ \node[celempty,below,minimum height=\line@height,minimum width=\col@width] (cell\name-1) at (\name.south) {};
+ \draw[graySepCell] ($(cell\name-1.south west)+(0.25pt,0)$) -- (cell\name-1.south east) -- ($(cell\name-1.north east)+(0,-0.25pt)$);
+ }
+ \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]
+ \node[celempty,below,minimum height=\line@height,minimum width=\col@width] (cell\name-\numline) at (cell\name-\lastnumline.south) {};
+ \draw[graySepCell] ($(cell\name-\numline.south west)+(0.25pt,0)$) -- (cell\name-\numline.south east) -- ($(cell\name-\numline.north east)+(0,-0.25pt)$);
+ }
+ }
+ \fi
+ }
+ {%
+ \foreach \name in {#2}
+ {
+ \node[celempty,below,minimum height=\line@height,minimum width=\col@width] (cell\name-1) at (\name.south) {};
+ \draw[graySepCell] ($(cell\name-1.south west)+(0.25pt,0)$) -- (cell\name-1.south east) -- ($(cell\name-1.north east)+(0,-0.25pt)$);
+ }
+ \ifnum#1>1
+ \foreach\numline [remember=\numline as \lastnumline (initially 1)] in {2,...,#1}
+ {
+ \foreach \name in {#2}
+ {
+ \node[celempty,below,minimum height=\line@height,minimum width=\col@width] (cell\name-\numline) at (cell\name-\lastnumline.south) {};
+ \draw[graySepCell] ($(cell\name-\numline.south west)+(0.25pt,0)$) -- (cell\name-\numline.south east) -- ($(cell\name-\numline.north east)+(0,-0.25pt)$);
+ }
+ }
+ \fi
+ }
}
-\addtocounter{celnumber}{-1}
+
+% Insérer quelque chose dans une cellule
-% Tracé de la grille
-\draw[black,very thin] (0,0) grid[xstep=\colminwidth] (c\thecelnumber.south east);
-\foreach \i in {1,...,#1}
-{
- \draw[graySepCell,very thin] (0,{-(\i+1)*\lineminheight}) -- ({(\thecelnumber+1)*\colminwidth},{-(\i+1)*\lineminheight});
-}
-\addtocounter{celnumber}{1}
-\foreach \x in {0,...,\thecelnumber}
-{
- \draw[graySepCell] ({\x*\colminwidth},-\lineminheight) -- ({\x*\colminwidth},{-(#1+1)*\lineminheight});
-}
-\addtocounter{celnumber}{-1}
-\draw (c0.south west) -- (c\thecelnumber.south east);
-\draw (c0.south west) -- ($(c0.south west)+(0,{-\lineminheight*#1})$);
-}
+\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}{}
-%-----------> Insérer un texte dans une cellule <---------------
+\newcommand*{\celtxt}[1][]{\cel@txt[#1]}
-\newcommand\celtxt[3][l]{%
+\newcommand\cel@txt[3][]{%
+ \setkeys[PAS]{celtxt}{#1}
\begingroup
\@makeother\^%
\@makeother\$%
- \@celtxt@{#1}{#2}{#3}%
+ \@celtxt@[#1]{#2}{#3}%
}
-\newcommand\@celtxt@[4]{%
+\newcommand\@celtxt@[4][]{%
\endgroup
+ \setkeys[PAS]{celtxt}{#1}
\StrPosition{#4}{=}[\@equalPos]
\ifnum\@equalPos=1
- \def\@scale{1}%
+ %\def\@scale{1}%
\let\@style\texttt
\else
- \def\@scale{0.9}%
+ %\def\@scale{0.9}%
\let\@style\@empty
\fi
- \node[below right] at ($(c0.south west)+({(\ValCol{#2}-1)*\colminwidth},{-(#3-1)*\lineminheight})$) {\makebox[\colminwidth][#1]{\@style{#4}\phantom{-.}}};
-}
-
-%\newsavebox{\tmp@txt}
-%\newlength{\tmp@ltxt}
-
-% Macro auxiliaire : colorie en-tête colonne
-\newcommand*\colorHead[2]
-{
- \fill[blueSelecCellTop] (c#1.north west) -- (c#1.north east) -- ($0.5*(c#1.north east)+0.5*(c#1.south east)$) -- ($0.5*(c#1.south west)+0.5*(c#1.north west)$) -- cycle;
- \fill[blueSelecCellBottom] (c#1.south west) -- (c#1.south east) -- ($0.5*(c#1.south east)+0.5*(c#1.north east)$) -- ($0.5*(c#1.south west)+0.5*(c#1.north west)$) -- cycle;
- \node[below right,inner sep=1ex,minimum width=\colminwidth,minimum height=\lineminheight] at (c#1.north west) {\helvbx#2};
- \draw[black,very thin] (0,0) grid[xstep=\colminwidth] (c\thecelnumber.south east);
- \draw (c0.south west) -- (c\thecelnumber.south east);
-}
-% Macro auxiliaire : colorie en-tête ligne
-\newcommand*\colorLine[1]
-{
- \node[below left,inner xsep=1ex,minimum width=3em,minimum height=\lineminheight,draw,very thin] (nb) at (0,{-#1*\lineminheight}) {\helvbx#1};
- \fill[blueSelecCellTop] (nb.north west) -- (nb.north east) -- ($0.5*(nb.north east)+0.5*(nb.south east)$) -- ($0.5*(nb.south west)+0.5*(nb.north west)$) -- cycle;
- \fill[blueSelecCellBottom] (nb.south west) -- (nb.south east) -- ($0.5*(nb.south east)+0.5*(nb.north east)$) -- ($0.5*(nb.south west)+0.5*(nb.north west)$) -- cycle;
- \node[below left,inner xsep=1ex,minimum width=3em,minimum height=\lineminheight,draw,very thin] (nb) at (0,{-#1*\lineminheight}) {\helvbx#1};
+ \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]{\@style{\textcolor{\cmdPAS@celtxt@color}{#4}}}};
}
-\newcommand{\selecCell}[2] % #1 = colonne, #2 = ligne
-{
- \setcounter{tmp}{\ValCol{#1}}
- \addtocounter{tmp}{-1}
- \colorHead{\thetmp}{#1}
- \colorLine{#2}
- \draw[very thick,black] ($(c0.south west)+({\thetmp*\colminwidth},{-(#2-1)*\lineminheight+0.5pt})$) rectangle +(\colminwidth,-\lineminheight);
- \fill[black] ($(c0.south west)+({(\thetmp+1)*\colminwidth},{-(#2-1)*\lineminheight-\lineminheight})+(-1pt,1.5pt)$) rectangle+(3pt,-3pt);
-}
+% Cellule sélectionnée : \selecCell
-\newcommand{\multiSelec}[2] % #1 : colonnes (B,C,D) par exemple, #2 : lignes (2,3,4)
-{
- \defcolselected{#1} % on mémorise les noms des colonnes sélectionnées - \ValColSelected{1} = lettre de la première colonne
- %\xdef\firstlettercol\ValColSelected{1}
+\newcommand*\selecCell[2]
+{%
+ %==> En-tête ligne
- \deflineselected{#2} % on mémorise les noms des lignes sélectionnées - \ValLineSelected{1} = numéro de la première ligne
- %\def\firstline{\ValLineSelected{1}}
+ \fill[blueSelecCellBottom]
+ (numline#2.south west) --
+ (numline#2.south east) --
+ ($0.5*(numline#2.south east)+0.5*(numline#2.north east)$) --
+ ($0.5*(numline#2.south west)+0.5*(numline#2.north west)$) --
+ cycle;
+ \fill[blueSelecCellTop]
+ (numline#2.north west) --
+ (numline#2.north east) --
+ ($0.5*(numline#2.south east)+0.5*(numline#2.north east)$) --
+ ($0.5*(numline#2.south west)+0.5*(numline#2.north west)$) --
+ cycle;
+ \node[celhead,minimum width=\numline@width,minimum height=\line@height] at (numline#2) {\helvbx#2};
- \setcounter{nbcolselected}{0}
+ %==> En-tête colonne
- \foreach \c in {#1}
- {
- \stepcounter{nbcolselected}
- \setcounter{tmp}{\ValCol\c}
- \addtocounter{tmp}{-1}
- \colorHead{\thetmp}{\c}
- }
+ \fill[blueSelecCellBottom]
+ ($(#1.south west)+(0.25pt,0.25pt)$) --
+ ($(#1.south east)+(-0.25pt,0.25pt)$) --
+ ($0.5*(#1.south east)+0.5*(#1.north east)+(-0.25pt,0)$) --
+ ($0.5*(#1.south west)+0.5*(#1.north west)+(0.25pt,0)$) --
+ cycle;
+ \fill[blueSelecCellTop]
+ ($(#1.north west)+(0.25pt,-0.25pt)$) --
+ ($(#1.north east)+(-0.25pt,-0.25pt)$) --
+ ($0.5*(#1.south east)+0.5*(#1.north east)+(-0.25pt,0)$) --
+ ($0.5*(#1.south west)+0.5*(#1.north west)+(0.25pt,0)$) --
+ cycle;
+ \node at (#1) {\helvbx#1};
+
+ %==> Cellule cell#1-#1
- \setcounter{nblineselected}{0}
- \foreach \l in {#2}
+ \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);
+}
+
+% Sélection 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" à colorier
+ \foreach \i in {1,...,\nb@columns}
{
- \stepcounter{nblineselected}
- \colorLine{\l}
+ \StrChar{\str@col}{\i}[\name]
+ \fill[blueSelecCellBottom]
+ ($(\name.south west)+(0.25pt,0.25pt)$) --
+ ($(\name.south east)+(-0.25pt,0.25pt)$) --
+ ($0.5*(\name.south east)+0.5*(\name.north east)+(-0.25pt,0)$) --
+ ($0.5*(\name.south west)+0.5*(\name.north west)+(0.25pt,0)$) --
+ cycle;
+ \fill[blueSelecCellTop]
+ ($(\name.north west)+(0.25pt,-0.25pt)$) --
+ ($(\name.north east)+(-0.25pt,-0.25pt)$) --
+ ($0.5*(\name.south east)+0.5*(\name.north east)+(-0.25pt,0)$) --
+ ($0.5*(\name.south west)+0.5*(\name.north west)+(0.25pt,0)$) --
+ cycle;
+ \node at (\name) {\helvbx\name};
}
- \fill[blueSelec,opacity=.5] ($(c0.south west)+({(\ValCol{\ValColSelected{1}}-1)*\colminwidth},{-(\ValLineSelected{1}-1)*\lineminheight})$) rectangle +({\thenbcolselected*\colminwidth},{-\thenblineselected*\lineminheight});
+ %==> On colorie les en-têtes "lignes"
- \draw[very thick,black] ($(c0.south west)+({(\ValCol{\ValColSelected{1}}-1)*\colminwidth},{-(\ValLineSelected{1}-1)*\lineminheight+0.5pt})$) rectangle +(\colminwidth,-\lineminheight);
- \fill[black] ($(c0.south west)+({(\ValCol{\ValColSelected{1}}-1)*\colminwidth+\thenbcolselected*\colminwidth-1pt},{-(\ValLineSelected{1}-1)*\lineminheight-\thenblineselected*\lineminheight+1.5pt})$) rectangle+(3pt,-3pt);
+ \StrGobbleLeft{#1}{2}[\first@num]
+ \StrGobbleLeft{#2}{2}[\second@num]
+ \foreach \i in {\first@num,...,\second@num}
+ {
+ \fill[blueSelecCellBottom]
+ (numline\i.south west) --
+ (numline\i.south east) --
+ ($0.5*(numline\i.south east)+0.5*(numline\i.north east)$) --
+ ($0.5*(numline\i.south west)+0.5*(numline\i.north west)$) --
+ cycle;
+ \fill[blueSelecCellTop]
+ (numline\i.north west) --
+ (numline\i.north east) --
+ ($0.5*(numline\i.south east)+0.5*(numline\i.north east)$) --
+ ($0.5*(numline\i.south west)+0.5*(numline\i.north west)$) --
+ cycle;
+ \node[celhead,minimum width=\numline@width,minimum height=\line@height] at (numline\i) {\helvbx\i};
+ }
}
\endinput