texlive[68256] Master/texmf-dist: spreadtab (12sep23)
commits+karl at tug.org
commits+karl at tug.org
Tue Sep 12 22:15:26 CEST 2023
Revision: 68256
http://tug.org/svn/texlive?view=revision&revision=68256
Author: karl
Date: 2023-09-12 22:15:26 +0200 (Tue, 12 Sep 2023)
Log Message:
-----------
spreadtab (12sep23)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/spreadtab/README
trunk/Master/texmf-dist/doc/latex/spreadtab/spreadtab-en.pdf
trunk/Master/texmf-dist/doc/latex/spreadtab/spreadtab-en.tex
trunk/Master/texmf-dist/doc/latex/spreadtab/spreadtab-fr.pdf
trunk/Master/texmf-dist/doc/latex/spreadtab/spreadtab-fr.tex
trunk/Master/texmf-dist/tex/latex/spreadtab/spreadtab.sty
Modified: trunk/Master/texmf-dist/doc/latex/spreadtab/README
===================================================================
--- trunk/Master/texmf-dist/doc/latex/spreadtab/README 2023-09-12 20:15:17 UTC (rev 68255)
+++ trunk/Master/texmf-dist/doc/latex/spreadtab/README 2023-09-12 20:15:26 UTC (rev 68256)
@@ -1,9 +1,9 @@
L'extension
spreadtab
- v0.5
+ v0.52
- 27 f\'evrier 2019
+ 11 septembre 2023
Author : Christian Tellechea
Email : unbonpetit at netc.fr (CT)
@@ -13,14 +13,14 @@
later, see http://www.latex-project.org/lppl.txt
----------------------------------------------------------------------
- R\'esum\'é
+ Résumé
-Cette extension met \`a disposition des fonctionnalit\'es de tableur
+Cette extension met à disposition des fonctionnalités de tableur
dans les environnements tableaux de LaTeX.
-Les cellules d'un tableau ont des coordonn\'ees repr\'esentant leur
-ligne et colonne, et par cet interm\'ediaire, peuvent \^etre
-ins\'er\'ees dans des formules pour g\'en\'erer des valeurs dans
+Les cellules d'un tableau ont des coordonnées représentant leur
+ligne et colonne, et par cet intermédiaire, peuvent être
+insérées dans des formules pour générer des valeurs dans
d'autres cellules.
----------------------------------------------------------------------
Modified: trunk/Master/texmf-dist/doc/latex/spreadtab/spreadtab-en.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/spreadtab/spreadtab-en.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/spreadtab/spreadtab-en.tex 2023-09-12 20:15:17 UTC (rev 68255)
+++ trunk/Master/texmf-dist/doc/latex/spreadtab/spreadtab-en.tex 2023-09-12 20:15:26 UTC (rev 68256)
@@ -1,7 +1,6 @@
+% !TeX TS-program = lualatex
% Manual of the "spreadtab" package
\documentclass[english,a4paper,10pt]{article}
-\usepackage[utf8]{inputenc}
-\usepackage[T1]{fontenc}
\usepackage[a4paper,margin=2.6cm]{geometry}
\usepackage[table]{xcolor}
\usepackage{amsmath,amssymb,textcomp,array,arydshln,tabularx,listings,numprint,xspace,fancyhdr,libertine,babel,enumitem,bxtexlogo}
@@ -8,7 +7,7 @@
\bxtexlogoimport{*}
\usepackage[xfp,fp]{spreadtab}\STusexfp
\usepackage[italic]{mathastext}
-\usepackage[scaled=0.8]{luximono}
+\usepackage[scaled=0.8]{GoMono}
\fancyhead[L]{}
\fancyhead[C]{\small\bfseries\ST}
\fancyhead[R]{\scriptsize\slshape \leftmark}
@@ -148,7 +147,7 @@
\item the functions \verbinline|rand| and \verbinline|randint| are not available with the engine \xfp when compiling with an old version of \XeLaTeX{}.
\end{itemize}
-The package requires \eTeX, \LaTeXe{} format and the \href{http://www.ctan.org/tex-archive/macros/latex/contrib/fp/}{\fp} or \href{https://ctan.org/pkg/xfp}{\xfp} packages, which performs arithmetic on cell values. Also, the \href{http://www.ctan.org/tex-archive/macros/latex/contrib/xstring/}{\texttt{\textbf{xstring}}} package is needed.\medskip
+The package requires \eTeX, \LaTeXe{} format and the \href{https://ctan.org/pkg/fp}{\fp} or \href{https://ctan.org/pkg/xfp}{\xfp} packages, which performs arithmetic on cell values. Also, the \href{https://ctan.org/pkg/xstring}{\texttt{\textbf{xstring}}} package is needed.\medskip
The package is compatible with \emph{all} tabular environments, and assumes that `\verb=&=' is used to delimit columns and `\verb-\\-' to end lines (but see page~\pageref{STeol}). This compatibility requirement led me to program \ST so that it works independently of the table environment. Thus, reading the table, processing and calculating the formulas is done \emph{before} the environment table `sees' the body of the table.\medskip
@@ -183,7 +182,7 @@
Although having features resembling those of a spreadsheet with \LaTeX{} is appreciable, the 3 stages described above take time. The \ST environment leads to \emph{much slower compilation} than with a classical table.
-Moreover, \ST \emph{cannot stand in for a spreadsheet program}. Indeed, it has very few features, and it does not provide visual assistance. This point may cause difficulty\footnote{I certify that, with use, this discomfort tends to disappear (if you do not work with huge tables, of course).} for big or complex tables. The syntax of \ST is also another difficulty. However, the advantage of this package is that it makes it possible to write \emph{in the \LaTeX{} code} tables involving calculation when these tables are usually exported\footnote{I mention the two main exportation programs: \href{http://calc2latex.sourceforge.net/}{\texttt{\textbf{cacl2latex}}} for `calc' (Open Office), and \href{http://www.ctan.org/tex-archive/support/excel2latex/}{\texttt{\textbf{excel2latex}}} for `excel' (Microsoft Office).} from a spreadsheet program to \LaTeX{} code. Consequently, it becomes possible to avoid the disadvantages of the exportation programs: fine tuning often necessary to obtain exactly what you want, exported tables containing the values only (formulas are lost when exportation is done), no compatibility with all types of environments, exportation must be started again if a single number or formula is modified in the table.
+Moreover, \ST \emph{cannot stand in for a spreadsheet program}. Indeed, it has very few features, and it does not provide visual assistance. This point may cause difficulty\footnote{I certify that, with use, this discomfort tends to disappear (if you do not work with huge tables, of course).} for big or complex tables. The syntax of \ST is also another difficulty. However, the advantage of this package is that it makes it possible to write \emph{in the \LaTeX{} code} tables involving calculation when these tables are usually exported\footnote{I mention the two main exportation programs: \href{http://calc2latex.sourceforge.net/}{\texttt{\textbf{cacl2latex}}} for `calc' (Open Office), and \href{https://ctan.org/pkg/excel2latex}{\texttt{\textbf{excel2latex}}} for `excel' (Microsoft Office).} from a spreadsheet program to \LaTeX{} code. Consequently, it becomes possible to avoid the disadvantages of the exportation programs: fine tuning often necessary to obtain exactly what you want, exported tables containing the values only (formulas are lost when exportation is done), no compatibility with all types of environments, exportation must be started again if a single number or formula is modified in the table.
\subsection{Motivation}
A few months before I started to write this package, Derek \textsc{O'Connor} had pointed out that nothing was available in the world of \LaTeX{} packages to imitate --~even a little~-- the behaviour of spreadsheet programs. I found the challenge interesting and I started writing this package as a good programming exercise.
@@ -256,7 +255,7 @@
\subsection{Relative references}
To refer to a cell, it may be convenient to specify its position relative to where the formula is written. Thus, the relative coordinates of a cell are 2 relative numbers written using this syntax: \falseverb{[x,y]} where \falseverb x is the horizontal offset from the cell containing the formula and \falseverb y is the vertical offset. For example, \falseverb{[-2,3]} refers to the cell located 2 columns before (on the left) and 3 rows after (below) the cell where the formula is located.
-Here is the same table as above but the references are relatives and the \verbinline-matrix- environment of the \href{http://www.ctan.org/tex-archive/macros/latex/required/amslatex/math/}{\texttt{\textbf{amsmath}}} package is used:\par\nobreak
+Here is the same table as above but the references are relatives and the \verbinline-matrix- environment of the \href{https://ctan.org/pkg/amsmath}{\texttt{\textbf{amsmath}}} package is used:\par\nobreak
\begin{minipage}{0.82\linewidth}
\begin{lstlisting}
$
@@ -508,11 +507,11 @@
\end{minipage}
\subsection{Number formatting and the \fp package}
-With \verb|fp| option, all calculations are made by the \verb-\FPeval- macro\footnote{This macro accepts infix or postfix notation. Consequently, both can be used to write formulas in a cell. For example the infix formula `\falseverb{a1+b1}' is equivalent to the postfix ones `\falseverb{a1 b1 add}' or `\falseverb{a1 b1 +}'.} of the \href{http://www.ctan.org/tex-archive/macros/latex/contrib/fp/}{\fp} package. This package provides all necessary arithmetical functions along with various scientific and trigonometric functions. Calculations are made with 18 decimal digits of precision, and \fp displays \emph{all} the decimals! Without taking precautions, you can end up with a lot of numbers in the decimal parts of some results. This section is compiled with \verbinline|\STusefp|.\STusefp
+With \verb|fp| option, all calculations are made by the \verb-\FPeval- macro\footnote{This macro accepts infix or postfix notation. Consequently, both can be used to write formulas in a cell. For example the infix formula `\falseverb{a1+b1}' is equivalent to the postfix ones `\falseverb{a1 b1 add}' or `\falseverb{a1 b1 +}'.} of the \href{https://ctan.org/pkg/fp}{\fp} package. This package provides all necessary arithmetical functions along with various scientific and trigonometric functions. Calculations are made with 18 decimal digits of precision, and \fp displays \emph{all} the decimals! Without taking precautions, you can end up with a lot of numbers in the decimal parts of some results. This section is compiled with \verbinline|\STusefp|.\STusefp
The number of digits displayed can be controlled in various ways:
\begin{itemize}
- \item the \href{http://www.ctan.org/tex-archive/macros/latex/contrib/numprint/}{\texttt{\textbf{numprint}}} package can be used in order to properly display numbers;
+ \item the \href{https://ctan.org/pkg/numprint}{\texttt{\textbf{numprint}}} package can be used in order to properly display numbers;
\item \fp can round or truncate numbers with \verb-round(number,integer)- or \verb-trunc(number,integer)- but the syntax makes this tedious to write if this is needed for many cells;
\item \ST can round \emph{all} the numbers in the table with the macro \verbinline-\STautoround- whose argument is number of digits in the decimal part. If the argument is empty, no rounding is done. If the starred macro \verbinline-\STautoround*- is used, the decimal part is filled with 0 as necessary (only with \fp).
\end{itemize}
@@ -597,8 +596,8 @@
\begin{itemize}
\item \verb-\hline-;
\item \verb=\cline{x-y}= where \falseverb x and \falseverb y define the start and the end of the rule;
- \item \verb=\hhline{<type>}= where \verb=<type>= is the type of rule (read the manual of the \href{http://www.ctan.org/tex-archive/macros/latex/required/tools/}{\texttt{\textbf{hhline}}} package).
- \item any command of the \href{http://www.ctan.org/tex-archive/macros/latex/contrib/booktabs/}{\texttt{\textbf{booktabs}}} package: \verb-\toprule-, \verb-\midrule-, \verb-\bottomrule-, \verb-\cmidrule-, \verb-\addlinespace-, \verb-\morecmidrule- and \verb-\specialrule-. All the arguments of these macros, optional or mandatory are taken into account;
+ \item \verb=\hhline{<type>}= where \verb=<type>= is the type of rule (read the manual of the \href{https://ctan.org/pkg/hhline}{\texttt{\textbf{hhline}}} package).
+ \item any command of the \href{https://ctan.org/pkg/booktabs}{\texttt{\textbf{booktabs}}} package: \verb-\toprule-, \verb-\midrule-, \verb-\bottomrule-, \verb-\cmidrule-, \verb-\addlinespace-, \verb-\morecmidrule- and \verb-\specialrule-. All the arguments of these macros, optional or mandatory are taken into account;
\item \verbinline-\noalign- and its mandatory argument can be written after \verb-\\-.
\end{itemize}
Example:
@@ -813,7 +812,7 @@
\end{minipage}%
\subsubsection{The \texttt{fact} macro}
-The macro-function \verbinline=fact(<number>)= computes the factorial of its argument. With the engine \href{https://www.ctan.org/pkg/fp}{\fp}, the argument must be less than 19 to avoid overflows. The \falseverb{<number>} can also be a reference to a cell whose numeric field contains an integer.\medskip
+The macro-function \verbinline=fact(<number>)= computes the factorial of its argument. With the engine \href{https://ctan.org/pkg/fp}{\fp}, the argument must be less than 19 to avoid overflows. The \falseverb{<number>} can also be a reference to a cell whose numeric field contains an integer.\medskip
Here are the factorials from 0 to 8:\par\nobreak
\begin{lstlisting}
@@ -837,7 +836,7 @@
In this simple example, the average age of a group of children aged from 10 to 15 years old is calculated:\par\nobreak
\begin{lstlisting}
\begin{spreadtab}{{tabular}{r*6c}}
-@\Ages & 10 & 11 & 12 & 13 & 14 & 15\\
+ at Ages & 10 & 11 & 12 & 13 & 14 & 15\\
@Number & 5 & 8 & 20 & 55 & 9 & 3\\\hline
@Average&\multicolumn{6}{l}{:={sumprod(b1:g1;b2:g2)/sum(b2:g2)}}
\end{spreadtab}
@@ -1449,7 +1448,7 @@
\end{center}
These 3 debugging tables may help to better understand what happens behind the scene when \ST works. We can observe that all cells with a numeric field (see table 2) have an internal code of 1 or 2 (see table 3) and an associated numeric field marker `\verb-:=-' in table 1. This marker represents the location where (by substitution) the result of the numeric field will be inserted. So from the contents of text fields in table 1 and, once calculated, the numeric fields, by a simple substitution, the cells are reconstituted to give those of the final table.
-In the debugging tables, cells containing the coordinates are grayed if the package \href{http://www.ctan.org/tex-archive/macros/latex/contrib/colortbl/}{\texttt{\textbf{colortbl}}} has been loaded; they are left white otherwise.
+In the debugging tables, cells containing the coordinates are grayed if the package \href{https://ctan.org/pkg/colortbl}{\texttt{\textbf{colortbl}}} has been loaded; they are left white otherwise.
\section{Examples}
In the examples of this section, the numbers entered by the user are in \textcolor{black}{red} and the calculated numbers are in \textcolor{black}{black}
Modified: trunk/Master/texmf-dist/doc/latex/spreadtab/spreadtab-fr.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/spreadtab/spreadtab-fr.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/spreadtab/spreadtab-fr.tex 2023-09-12 20:15:17 UTC (rev 68255)
+++ trunk/Master/texmf-dist/doc/latex/spreadtab/spreadtab-fr.tex 2023-09-12 20:15:26 UTC (rev 68256)
@@ -1,7 +1,6 @@
+% !TeX TS-program = lualatex
% Documentation de l'extension "spreadtab"
\documentclass[french,a4paper,10pt]{article}
-\usepackage[utf8]{inputenc}
-\usepackage[T1]{fontenc}
\usepackage[a4paper,margin=2.6cm]{geometry}
\usepackage[table]{xcolor}
\usepackage{amsmath,amssymb,textcomp,array,arydshln,tabularx,numprint,xspace,fancyhdr,libertine,babel,enumitem,listings,bxtexlogo}
@@ -8,7 +7,7 @@
\bxtexlogoimport{*}\frenchsetup{og=«,fg=»}
\usepackage[xfp,fp]{spreadtab}\STusexfp
\usepackage[italic]{mathastext}
-\usepackage[scaled=0.8]{luximono}
+\usepackage[scaled=0.8]{GoMono}
\fancyhead[L]{}
\fancyhead[C]{\small\bfseries\ST}
\fancyhead[R]{\scriptsize\slshape \leftmark}
@@ -148,7 +147,7 @@
\item les fonctions \verbinline|rand| et \verbinline|randint| ne sont pas disponibles avec le moteur \xfp lorsqu'on compile avec une version de \XeLaTeX{} trop ancienne.
\end{itemize}
-Ce package nécessite le moteur \eTeX, le format \LaTeXe{} ainsi que le package \href{https://www.ctan.org/pkg/fp}{\fp} ou \href{https://ctan.org/pkg/xfp}{\xfp} à qui sont confiés les calculs. Le package \href{https://www.ctan.org/pkg/xstring}{\texttt{\textbf{xstring}}} est également requis.
+Ce package nécessite le moteur \eTeX, le format \LaTeXe{} ainsi que le package \href{https://ctan.org/pkg/fp}{\fp} ou \href{https://ctan.org/pkg/xfp}{\xfp} à qui sont confiés les calculs. Le package \href{https://ctan.org/pkg/xstring}{\texttt{\textbf{xstring}}} est également requis.
J'ai souhaité dès le départ de rendre ce package compatible avec \emph{tous} les environnements de tableaux, sous réserve que les séparateurs entre colonnes soient «\verb=&=» et les retours à la ligne soient «\verb=\\=». Cette contrainte forte sur la compatibilité m'a conduit à programmer \ST pour qu'il agisse d'une façon \emph{totalement indépendante} de l'environnement tableau. Ainsi, la lecture du tableau, le traitement et le calcul des formules se fait \emph{avant} que l'environnement tableau ne prenne la main et ne «voit» le corps du tableau.
@@ -183,7 +182,7 @@
Même si disposer de fonctionnalités ressemblant à celles d'un tableur avec \LaTeX{} est appréciable, il ne faut pas perdre de vue que les 3 étapes décrites ci-dessus prennent du temps. L'ensemble conduit donc à des temps de compilation \emph{beaucoup plus importants} qu'avec un tableau classique.
-Il faut ajouter que \ST \emph{ne peut remplacer un tableur}. En effet, ses possibilités sont très limitées. De plus, surtout pour des tableaux complexes ou de grande taille, le manque d'aide visuelle devient gênant\footnote{Ceci dit, je certifie qu'avec l'habitude, cette gêne tend à s'estomper (si l'on s'en tient à des tableaux raisonnables, bien sûr).}, et la syntaxe de \ST constitue aussi un obstacle supplémentaire. L'avantage de cette extension est de pouvoir écrire \emph{dans le code \LaTeX} des tableaux comportant des calculs, alors que ces tableaux sont généralement exportés\footnote{On peut signaler les 2 principaux programmes d'exportation : \href{http://calc2latex.sourceforge.net/}{\texttt{\textbf{cacl2latex}}} pour «calc» de Open Office, et \href{http://www.ctan.org/tex-archive/support/excel2latex/}{\texttt{\textbf{excel2latex}}} pour «excel» de Microsoft Office.} d'une feuille de calcul d'un tableur vers le code \LaTeX. On évite ainsi les désagréments des programmes d'exportation : mise en forme souvent à retoucher pour obtenir exactement ce que l'on veut, non compatibilité avec tous les environnements de tableaux, obtention de tableaux ne contenant que les valeurs (les formules sont perdues à l'exportation), exportation à recommencer si l'on modifie un seul nombre ou formule dans le tableau.
+Il faut ajouter que \ST \emph{ne peut remplacer un tableur}. En effet, ses possibilités sont très limitées. De plus, surtout pour des tableaux complexes ou de grande taille, le manque d'aide visuelle devient gênant\footnote{Ceci dit, je certifie qu'avec l'habitude, cette gêne tend à s'estomper (si l'on s'en tient à des tableaux raisonnables, bien sûr).}, et la syntaxe de \ST constitue aussi un obstacle supplémentaire. L'avantage de cette extension est de pouvoir écrire \emph{dans le code \LaTeX} des tableaux comportant des calculs, alors que ces tableaux sont généralement exportés\footnote{On peut signaler les 2 principaux programmes d'exportation : \href{http://calc2latex.sourceforge.net/}{\texttt{\textbf{cacl2latex}}} pour «calc» de Open Office, et \href{https://ctan.org/pkg/excel2latex}{\texttt{\textbf{excel2latex}}} pour «excel» de Microsoft Office.} d'une feuille de calcul d'un tableur vers le code \LaTeX. On évite ainsi les désagréments des programmes d'exportation : mise en forme souvent à retoucher pour obtenir exactement ce que l'on veut, non compatibilité avec tous les environnements de tableaux, obtention de tableaux ne contenant que les valeurs (les formules sont perdues à l'exportation), exportation à recommencer si l'on modifie un seul nombre ou formule dans le tableau.
\subsection{Motivation}
Quelques mois avant de commencer à m'attaquer à ce package, Derek \textsc{O'Connor} m'avait fait remarquer que rien n'était disponible dans le monde des extensions de \LaTeX{} pour imiter ---~ne serait-ce qu'un peu~--- le calcul de formules dans des tableaux, comme cela se fait couramment avec des tableurs. J'ai trouvé le défi intéressant et je me suis lancé dans l'écriture de ce package qui en fait, n'est qu'un exercice de programmation.
@@ -256,7 +255,7 @@
\subsection{Références relatives}
Pour faire référence à une cellule, il peut être commode de spécifier sa position par rapport à la cellule où se trouve la formule. Ainsi, les coordonnées «relatives» d'une cellule sont 2 nombres relatifs écrits selon cette syntaxe : \falseverb{[x,y]}, où \falseverb x est le décalage horizontal par rapport à la cellule contenant la formule et \falseverb y est le décalage vertical. Ainsi, \falseverb{[-2,3]} fait référence à la cellule se trouvant 2 colonnes avant (à gauche) et 3 lignes après (plus bas) la cellule où se trouve la formule.
-Voici à nouveau le triangle de Pascal vu ci-dessus, mais les références sont relatives et l'environnement «\verbinline-matrix-» du package \href{http://www.ctan.org/tex-archive/macros/latex/required/amslatex/math/}{\texttt{\textbf{amsmath}}} est utilisé :\par\nobreak
+Voici à nouveau le triangle de Pascal vu ci-dessus, mais les références sont relatives et l'environnement «\verbinline-matrix-» du package \href{https://ctan.org/pkg/amsmath}{\texttt{\textbf{amsmath}}} est utilisé :\par\nobreak
\begin{minipage}{0.82\linewidth}
\begin{lstlisting}
$
@@ -508,11 +507,11 @@
\end{minipage}
\subsection{Mise en forme des nombres avec le moteur \fp}
-Comme cela a été précisé avec l'option \fp, tous les calculs sont faits par le package \href{http://www.ctan.org/tex-archive/macros/latex/contrib/fp/}{\texttt{\textbf{fp}}} et sa macro \falseverb{\FPeval}\footnote{À ce propos, les notations infixe ou postfixe sont acceptées par {\ttfamily\string\FPeval} ce qui signifie que les formules dans \ST peuvent être indifféremment sous forme infixe ou postfixe. Par exemple, la formule infixe «\falseverb{a1+b1}» est équivalente aux formules postfixes «\falseverb{a1 b1 add}» ou «\falseverb{a1 b1 +}».}. Ce package fournit d'extraordinaires possibilités de calcul pour \TeX{} et dispose de toutes les fonctions arithmétiques, scientifiques et trigonométriques usuelles. Les calculs sont faits avec une précision de $10^{-18}$, et les 18 décimales sont affichées lorsqu'un calcul ne tombe pas juste ! Sans prendre des précautions, on peut se retrouver avec beaucoup de chiffres dans les parties décimales de certains résultats. Toute cette section est compilée avec \verbinline|\STusefp|.\STusefp
+Comme cela a été précisé avec l'option \fp, tous les calculs sont faits par le package \href{https://ctan.org/pkg/fp}{\texttt{\textbf{fp}}} et sa macro \falseverb{\FPeval}\footnote{À ce propos, les notations infixe ou postfixe sont acceptées par {\ttfamily\string\FPeval} ce qui signifie que les formules dans \ST peuvent être indifféremment sous forme infixe ou postfixe. Par exemple, la formule infixe «\falseverb{a1+b1}» est équivalente aux formules postfixes «\falseverb{a1 b1 add}» ou «\falseverb{a1 b1 +}».}. Ce package fournit d'extraordinaires possibilités de calcul pour \TeX{} et dispose de toutes les fonctions arithmétiques, scientifiques et trigonométriques usuelles. Les calculs sont faits avec une précision de $10^{-18}$, et les 18 décimales sont affichées lorsqu'un calcul ne tombe pas juste ! Sans prendre des précautions, on peut se retrouver avec beaucoup de chiffres dans les parties décimales de certains résultats. Toute cette section est compilée avec \verbinline|\STusefp|.\STusefp
Pour se prémunir de ce problème, plusieurs solutions existent :
\begin{itemize}
- \item on peut utiliser le package \href{http://www.ctan.org/tex-archive/macros/latex/contrib/numprint/}{\texttt{\textbf{numprint}}} qui est ce qui se fait de mieux dans l'affichage des nombres;
+ \item on peut utiliser le package \href{https://ctan.org/pkg/numprint}{\texttt{\textbf{numprint}}} qui est ce qui se fait de mieux dans l'affichage des nombres;
\item on peut demander à \fp d'arrondir un résultat avec sa fonction \verb-round(nombre,entier)- qui arrondit \verb=nombre= avec \verb=entier= chiffres après la virgule;
\item on peut également demander à \ST d'arrondir \emph{tous} les nombres placés dans le tableau à une certaine précision avec la macro \verbinline-\STautoround- dont l'argument est le nombre de chiffres demandés après la virgule. Si l'argument est vide, aucun arrondi n'est fait. Si on utilise la macro étoilée \verbinline-\STautoround*-, la partie décimale est remplie si besoin avec des 0 inutiles (uniquement avec \fp).
\end{itemize}
@@ -573,7 +572,7 @@
Voici un autre exemple similaire où l'on teste si le nombre à afficher est négatif avec la commande \verbinline-\FPifneg- du package \fp. Si tel est le cas, le nombre est affiché en rouge. La commande \verbinline-\STautoround- a été préférée à \verbinline-\nprounddigits- du package \verb-numprint- puisque cette dernière ajoute des 0 inutiles. On a également remis le point décimal par défaut puisque \verbinline-\numprint- est en charge de l'affichage des nombres.
\begin{lstlisting}
\STsetdecimalsep{.}
-\renewcommand\STprintnum[1]{\FPifneg{#1}\color{red}\fi\numprint{#1}}
+\renewcommand\STprintnum[1]{\STifneg{#1}{\color{red}}{}\numprint{#1}}
\STautoround{6}
\begin{spreadtab}{{tabular}{cccccccc}}
@$x$ & -1 & 2 & -3 & 4 & -5 & 6 & -7 \\\hline
@@ -582,7 +581,7 @@
\end{lstlisting}
\begin{center}
\STsetdecimalsep{.}
-\renewcommand\STprintnum[1]{\STifneg{#1}\color{red}\fi\numprint{#1}}
+\renewcommand\STprintnum[1]{\STifneg{#1}{\color{red}}{}\numprint{#1}}
\STautoround{6}
\begin{spreadtab}{{tabular}{cccccccc}}
@$x$ & -1 & 2 & -3 & 4 & -5 & 6 & -7 \\\hline
@@ -597,8 +596,8 @@
\begin{itemize}
\item \verb-\hline-;
\item \verb=\cline{x-y}= où \falseverb x et \falseverb y sont les numéro des colonnes de départ et d'arrivée du filet;
- \item \verb=\hhline{<type>}= où \verb=<type>= est le type de ligne désirée (voir la documentation du package \href{http://www.ctan.org/tex-archive/macros/latex/required/tools/}{\texttt{\textbf{hhline}}}).
- \item n'importe quelle commande du package \href{http://www.ctan.org/tex-archive/macros/latex/contrib/booktabs/}{\texttt{\textbf{booktabs}}}, à savoir \verb-\toprule-, \verb-\midrule-, \verb-\bottomrule-, \verb-\cmidrule-, \verb-\addlinespace-, \verb-\morecmidrule- et \verb-\specialrule-. Tous les arguments de ces macros, optionnels ou pas sont gérés;
+ \item \verb=\hhline{<type>}= où \verb=<type>= est le type de ligne désirée (voir la documentation du package \href{https://ctan.org/pkg/hhline}{\texttt{\textbf{hhline}}}).
+ \item n'importe quelle commande du package \href{https://ctan.org/pkg/booktabs}{\texttt{\textbf{booktabs}}}, à savoir \verb-\toprule-, \verb-\midrule-, \verb-\bottomrule-, \verb-\cmidrule-, \verb-\addlinespace-, \verb-\morecmidrule- et \verb-\specialrule-. Tous les arguments de ces macros, optionnels ou pas sont gérés;
\item \verbinline-\noalign- et son argument peuvent être placés après \verb-\\- et pris en compte.
\end{itemize}
Voici le triangle de Pascal inversé, et massacré pour l'exemple :\par\nobreak
@@ -813,7 +812,7 @@
\end{minipage}%
\subsubsection{Macro-fonction \ttfamily fact}
-La macro-fonction \verbinline=fact(<nombre>)= permet de calculer la factorielle de son argument. Avec le moteur de calcul \href{https://www.ctan.org/pkg/fp}{\fp} le nombre doit être un entier compris entre 0 et 18 inclus pour éviter des débordements. Le \falseverb{<nombre>} peut aussi être une référence vers une cellule contenant un nombre entier.
+La macro-fonction \verbinline=fact(<nombre>)= permet de calculer la factorielle de son argument. Avec le moteur de calcul \href{https://ctan.org/pkg/fp}{\fp} le nombre doit être un entier compris entre 0 et 18 inclus pour éviter des débordements. Le \falseverb{<nombre>} peut aussi être une référence vers une cellule contenant un nombre entier.
Voici les factorielles de 0 à 8 :\par\nobreak
\begin{lstlisting}
@@ -1449,7 +1448,7 @@
\end{center}
Ces 3 tableaux de débogage peuvent aider à comprendre un peu mieux le fonctionnement interne de \ST. On peut observer dans le tableau 2 que toutes les cellules ayant un champ numérique ont un code interne de 1 ou 2 (voir tableau 3) et ont un marqueur de champ numérique "\verb-:=-" qui leur est associé (voir tableau 1). Ce marqueur représente l'endroit où sera inséré ---~par substitution~--- le résultat du calcul du champ numérique. C'est donc à partir des contenus des champs textuels du tableau 1 et par simple substitution, qu'une fois les champs numériques calculés, les cellules sont reconstituées pour donner celles du tableau final.
-Dans les tableaux ci-dessus, les cellules contenant les coordonnées ne sont grisées que si le package \href{http://www.ctan.org/tex-archive/macros/latex/contrib/colortbl/}{\texttt{\textbf{colortbl}}} a été chargé.
+Dans les tableaux ci-dessus, les cellules contenant les coordonnées ne sont grisées que si le package \href{https://ctan.org/pkg/colortbl}{\texttt{\textbf{colortbl}}} a été chargé.
\section{Exemples}
Voici quelques tableaux pour finir !
Modified: trunk/Master/texmf-dist/tex/latex/spreadtab/spreadtab.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/spreadtab/spreadtab.sty 2023-09-12 20:15:17 UTC (rev 68255)
+++ trunk/Master/texmf-dist/tex/latex/spreadtab/spreadtab.sty 2023-09-12 20:15:26 UTC (rev 68256)
@@ -1,12 +1,11 @@
-% !TeX encoding = ISO-8859-1
% Ce fichier contient le code de l'extension "spreadtab"
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
\def\STname {spreadtab} %
-\def\STver {0.5} %
+\def\STver {0.52} %
% %
-\def\STdate {2019/02/27} %
+\def\STdate {2023/09/11} %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
@@ -17,7 +16,7 @@
% Package URL: https://www.ctan.org/pkg/spreadtab %
% Bug tracker: https://framagit.org/unbonpetit/spreadtab/issues %
% Repository : https://framagit.org/unbonpetit/spreadtab/tree/master %
-% Copyright : Christian Tellechea 2009-2019 %
+% Copyright : Christian Tellechea 2009-2023 %
% Licence : Released under the LaTeX Project Public License v1.3c %
% or later, see http://www.latex-project.org/lppl.txt %
% Files : 1) spreadtab.sty %
@@ -30,9 +29,9 @@
\ProvidesPackage{spreadtab}[\STdate\space v\STver\space Spreadsheet features for table environments (CT)]
\NeedsTeXFormat{LaTeX2e}
\def\ST at cslet#1#2{\expandafter\let\expandafter#1\csname#2\endcsname}
-\RequirePackage{xstring}[2013/07/29]% version n\xE9cessaire
+\RequirePackage{xstring}[2013/07/29]% version nécessaire
-% liste des fonctions dont l'argument est num\xE9rique
+% liste des fonctions dont l'argument est numérique
\def\ST at functions@with at num@arg{%
id,fact,ifeq,ifgt,iflt,numtofrshortdate,numtoengshortdate,numtofrlongdate,gcd,lcm,%
numtoenglongdate,numtofrmonth,numtoengmonth,numtofrday,numtoengday}
@@ -40,20 +39,17 @@
% liste des fonctions dont l'argument est un texte
\def\ST at functions@with at text@arg{frshortdatetonum,engshortdatetonum,englongdatetonum,frlongdatetonum,scitodec,tag,row,col,cell,value}
-% liste des fonctions dont l'argument ne doit pas \xEAtre calcul\xE9
+% liste des fonctions dont l'argument ne doit pas être calculé
\def\ST at functions@no at calc@arg{ifeq,ifgt,iflt,gcd,lcm,value}
-% liste des fonctions dont l'argument est une variable -> il ne faut donc pas aller chercher des r\xE9f\xE9rences dans l'argument
+% liste des fonctions dont l'argument est une variable -> il ne faut donc pas aller chercher des références dans l'argument
\def\ST at functions@with at assign@argument{tag,row,col,cell,value}
-% liste des fonctions dont le r\xE9sultat est un texte
+% liste des fonctions dont le résultat est un texte
\def\ST at functions@with at textresult{%
numtofrshortdate,numtoengshortdate,numtofrlongdate,numtoenglongdate,%
numtofrmonth,numtoengmonth,numtofrday,numtoengday}
-% liste totale des fonctions
-%\edef\ST at functions@list{\ST at functions@with at range@arg,\ST at functions@with at num@arg,\ST at functions@with at text@arg}
-
\newif\if at fp \@fpfalse
\newif\if at xfp\@xfpfalse
\newif\if at STfpactive
@@ -65,7 +61,7 @@
\ProcessOptions\relax
\ifnum0\if at fp1\fi\if at xfp1\fi=0 \@fptrue\fi% charger fp si aucune option
-\if at fp\expandafter\@firstofone\else\expandafter\@gobble\fi% car les \fi ne sont pas \xE9quilibr\xE9s
+\if at fp\expandafter\@firstofone\else\expandafter\@gobble\fi% car les \fi ne sont pas équilibrés
{ \RequirePackage{fp}%
\def\STusefp{%
\let\STeval\FPeval
@@ -77,15 +73,15 @@
\let\STdiv\FPdiv
\def\STseed{\FPseed\number\time\number\day\number\month}%
\let\STrandom\FPrandom
- \let\STifzero\FPifzero
- \let\STifgt\FPifgt
- \let\STiflt\FPiflt
- \let\STifeq\FPifeq
- \let\STifint\FPifint
+ \def\STifzero##1{\FPifzero{##1}\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}%
+ \def\STifgt##1##2{\FPifgt{##1}{##2}\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}%
+ \def\STiflt##1##2{\FPiflt{##1}{##2}\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}%
+ \def\STifeq##1##2{\FPifeq{##1}{##2}\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}%
+ \def\STifint##1{\FPifint{##1}\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}%
\def\STifneg##1{\STiflt{##1}{0}}%
\def\ST at functions@with at range@arg{sum,randint,rand,sumprod}% liste des fonctions dont l'argument est une plage ou est vide
\edef\ST at functions@list{\ST at functions@with at range@arg,\ST at functions@with at num@arg,\ST at functions@with at text@arg}% liste totale des fonctions
- % Calcule la factorielle du nombre ##1 et met le r\xE9sultat dans la sc ##2
+ % Calcule la factorielle du nombre ##1 et met le résultat dans la sc ##2
\def\ST at func@fact##1##2{%
\edef##2{%
\ifcase##1 1\or1\or2\or6\or24\or120\or720\or5040\or40320\or362880\or3628800\or39916800\or479001600\or
@@ -112,10 +108,10 @@
\let\STseed\relax
\def\STrandom##1{\edef##1{\fpeval{rand()}}}
\ST at cslet\ST at iftrue{iftrue}\ST at cslet\ST at iffalse{iffalse}
- \def\STifgt##1##2{\fp_compare:nNnTF{##1}>{##2}\ST at iftrue\ST at iffalse}
- \def\STiflt##1##2{\fp_compare:nNnTF{##1}<{##2}\ST at iftrue\ST at iffalse}
- \def\STifeq##1##2{\fp_compare:nNnTF{##1}={##2}\ST at iftrue\ST at iffalse}
- \def\STifint ##1{\fp_compare:nNnTF{##1-trunc(##1,0)}={0}\ST at iftrue\ST at iffalse}
+ \def\STifgt##1##2{\fp_compare:nNnTF{##1}>{##2}}
+ \def\STiflt##1##2{\fp_compare:nNnTF{##1}<{##2}}
+ \def\STifeq##1##2{\fp_compare:nNnTF{##1}={##2}}
+ \def\STifint##1{\fp_compare:nNnTF{##1-trunc(##1,0)}={0}}
\def\STifzero##1{\STifeq{##1}{0}}
\def\STifneg##1{\STiflt{##1}{0}}
\ifdefined\XeTeXrevision% si on compile avec XeLaTeX
@@ -148,7 +144,8 @@
\newcount\ST at colcount@i
\newcount\ST at rowcount
\newcount\ST at rowcount@i
-\newcount\ST at intpart
+\newcount\ST at integerpart
+\newcount\ST at decimalpart
\newif\ifST at hiddencol
\newif\ifST at debugmode
@@ -155,24 +152,104 @@
\newif\ifST at colortblloaded
\AtBeginDocument{\@ifpackageloaded{colortbl}\ST at colortblloadedtrue\ST at colortblloadedfalse}
-% D\xE9finit le marqueur qui signale le commencement du champ num\xE9rique
+% Définit le marqueur qui signale le commencement du champ numérique
\def\STnumericfieldmarker{:=}
-% D\xE9finit la macro qui va afficher les valeurs num\xE9riques dans le tableau
+% Définit la macro qui va afficher les valeurs numériques dans le tableau
\def\STprintnum#1{#1}
-% D\xE9finit les caract\xE8res entre lesquels doivent entre envelopp\xE9es les r\xE9f\xE9rences des cellules
+% Définit les caractères entre lesquels doivent entre enveloppées les références des cellules
% que l'on veut afficher dans les champs textuels
\def\STsetdisplaymarks#1#2{\def\ST at startdisplay{#1}\def\ST at enddisplay{#2}}
-\STsetdisplaymarks{<<}{>>}% d\xE9limiteurs par d\xE9faut
+\STsetdisplaymarks{<<}{>>}% délimiteurs par défaut
-% d\xE9finit le marqueur qui signale une cellule de texte
+% définit le marqueur qui signale une cellule de texte
\edef\STtextcell{\string @}
-% Commande qui permet \xE0 l'utilisateur de d\xE9finir le caract\xE8re qui conserve une r\xE9f\xE9rence lors de la copie d'une formule
+% Commande qui permet à l'utilisateur de définir le caractère qui conserve une référence lors de la copie d'une formule
\AtBeginDocument{\def\STtransposecar{!}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Anciennes macros de xstring sinon spreadtab est cassé
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\edef\restoreunderscorecatcode{\catcode\number`\_ =\number\catcode`\_\relax}
+\catcode`\_=11
+\long\def\ST at formatnumber#1#2{%
+ \xs_ifempty{#1}%
+ {\def#2{0X}% si vide, renvoie 0X
+ }
+ {\xs_returnfirstsyntaxunit{#1}\xs_reserved_A
+ \def\xs_reserved_B{+}%
+ \xs_ifx{\xs_reserved_A\xs_reserved_B}
+ {\xs_removefirstsyntaxunit{#1}\xs_reserved_C
+ \xs_exparg\xs_ifempty{\xs_reserved_C}%
+ {\def#2{+0X}}
+ {\xs_exparg{\def#2}{\expandafter+\expandafter0\xs_reserved_C}}%
+ }
+ {\def\xs_reserved_B{-}%
+ \xs_ifx{\xs_reserved_A\xs_reserved_B}
+ {\xs_removefirstsyntaxunit{#1}\xs_reserved_A
+ \xs_exparg\xs_ifempty{\xs_reserved_A}%
+ {\def#2{-0X}}%
+ {\xs_exparg{\def#2}{\expandafter-\expandafter0\xs_reserved_A}}%
+ }
+ {\def#2{0#1}%
+ }%
+ }%
+ }%
+}
+\def\ST at IfInteger#1{%
+ \expandafter\ST at formatnumber\expandafter{\expanded{#1}}\xs_reserved_A
+ \ST at decimalpart0
+ \afterassignment\xs_defafterinteger\ST at integerpart\xs_reserved_A\relax\_nil
+ \let\xs_after_intpart\afterinteger
+ \expandafter\ST at testdot\afterinteger\_nil
+ \xs_ifx{\empty\afterdecimal}
+ {\xs_ifnum{\ST at decimalpart=0 }
+ {\xs_execfirst% partie décimale constituée de 0 --> seul cas où on renvoie vrai
+ }
+ {\expandafter\xs_defafterinteger\xs_after_intpart\relax\_nil
+ \xs_execsecond
+ }%
+ }
+ {\expandafter\xs_defafterinteger\xs_after_intpart\relax\_nil
+ \xs_execsecond
+ }%
+}
+\def\ST at IfDecimal#1{%
+ \expandafter\ST at formatnumber\expandafter{\expanded{#1}}\xs_reserved_A
+ \ST at decimalpart0
+ \afterassignment\xs_defafterinteger\ST at integerpart\xs_reserved_A\relax\_nil
+ \expandafter\ST at testdot\afterinteger\_nil
+ \xs_ifx{\empty\afterdecimal}
+}
+
+\long\def\xs_defafterinteger#1\relax\_nil{\def\@xs at afterinteger{#1}\let\afterinteger\@xs at afterinteger}
+\long\def\xs_defafterdecimal#1\_nil{\def\@xs at afterdecimal{#1}\let\afterdecimal\@xs at afterinteger}
+
+\def\ST at testdot{%
+ \let\xs_decsep\empty
+ \xs_ifnxttok.
+ {\def\xs_decsep{.}\ST at readdecimalpart}%
+ {\ST at testcomma}%
+}
+
+\def\ST at testcomma{%
+ \xs_ifnxttok,
+ {\def\xs_dessep{,}\ST at readdecimalpart}%
+ {\xs_defafterdecimal}%
+}
+
+\long\def\ST at readdecimalpart#1#2\_nil{%
+ \xs_ifempty{#2}
+ {\def\xs_reserved_A{0X}}
+ {\def\xs_reserved_A{0#2}}%
+ \afterassignment\xs_defafterinteger\ST at decimalpart\xs_reserved_A\relax\_nil
+ \expandafter\xs_defafterdecimal\afterinteger\_nil
+}
+\restoreunderscorecatcode
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Messages d'erreur %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -255,7 +332,7 @@
\def\ST at intarg@required{\PackageError\STname{Macro function randint require integer argument}\STseedoc at i}
-% transforme la chaine de cellules "(1,3)(4,5)(3,2)(1,3)" rencontr\xE9 en r\xE9f\xE9rence circulaire en "A3-D5-C2-A3"
+% transforme la chaine de cellules "(1,3)(4,5)(3,2)(1,3)" rencontré en référence circulaire en "A3-D5-C2-A3"
\def\ST at show@dependance at tree{%
\ST at between\ST at dependance@tree()\ST at currentref
\ST at right\ST at dependance@tree)\ST at dependance@tree
@@ -267,7 +344,7 @@
\fi
}
-% transforme la s\xE9quence de contr\xF4le #1 qui contient par exemple \xAB4,5\xBB en \xABD5\xBB
+% transforme la séquence de contrôle #1 qui contient par exemple «4,5» en «D5»
\def\ST at coord@toref#1{%
\ST at split#1,\ST at temp@a#1%
\edef#1{\ifcase\ST at temp@a\or A\or B\or C\or D\or E\or F\or G\or H\or I\or J\or K\or L\or M\or
@@ -297,7 +374,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%% Macros de manipulation de chaines %%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\ST at gobble@remain{% mange tous jusqu'\xE0 \ST at nil. M\xE9thode LENTE privil\xE9gi\xE9e car il peut y avoir des ) de catcode 2 isol\xE9es
+\def\ST at gobble@remain{% mange tous jusqu'à \ST at nil. Méthode LENTE privilégiée car il peut y avoir des ) de catcode 2 isolées
\afterassignment\ST at gobble@remain at i
\let\ST at toks=
}
@@ -308,7 +385,7 @@
\expandafter\ST at splitatfirstcar@i#1\@nil
}
-% dans la sc #1, remplace le . par le s\xE9parateur d\xE9cimal
+% dans la sc #1, remplace le . par le séparateur décimal
\def\ST at substdecsep#1{%
\ST at Ifinstr#1.
{\expandafter\ST at substdecsep@i\expandafter#1\expandafter{\ST at decsep}}
@@ -319,7 +396,7 @@
\expandafter\ST at substdecsep@ii#1\@nil
}
-% enl\xE8ve tous les espaces de la sc #1 et assigne le r\xE9sultat \xE0 #1
+% enlève tous les espaces de la sc #1 et assigne le résultat à #1
\def\ST at remove@firST at spaces#1{%
\IfBeginWith#1\space
{\StrGobbleLeft#11[#1]\ST at remove@firST at spaces{#1}}%
@@ -326,17 +403,17 @@
{}%
}
-\def\ST at keep@firstcar#1{% on ne garde dans la sc #1 que le 1er caract\xE8re de la sc #1 ou on enl\xE8ve les accolades
+\def\ST at keep@firstcar#1{% on ne garde dans la sc #1 que le 1er caractère de la sc #1 ou on enlève les accolades
\expandafter\expandafter\expandafter\def
\expandafter\expandafter\expandafter#1\expandafter\expandafter\expandafter{\expandafter\@car#1\@nil}%
}
-\def\ST at firstarg@after#1#2#3{% assigne \xE0 la sc #3 l'argument qui suit #2 dans le d\xE9veloppement de la sc #1
+\def\ST at firstarg@after#1#2#3{% assigne à la sc #3 l'argument qui suit #2 dans le développement de la sc #1
\def\ST at firstarg@after at i##1#2##2##3\@nil{\def#3{##2}}%
\expandafter\ST at firstarg@after at i#1\@nil
}
-\def\ST at thirdarg@after#1#2#3{% assigne \xE0 la sc #3 le 3\xE8 argument qui suit #2 dans le d\xE9veloppement de la sc #1
+\def\ST at thirdarg@after#1#2#3{% assigne à la sc #3 le 3è argument qui suit #2 dans le développement de la sc #1
\def\ST at thirdarg@after at i##1#2##2##3##4##5\@nil{\def#3{##4}}%
\expandafter\ST at thirdarg@after at i#1\@nil
}
@@ -348,7 +425,7 @@
\ST at Ifinstr@ii#1\@@nil#2\@nil
}
-% Est ce que la sc #1 commence par les caract\xE8res #2 ?
+% Est ce que la sc #1 commence par les caractères #2 ?
\def\ST at Iffirstis#1#2{%
\expandafter\ST at Ifinstr@i\expandafter{#1}{#2}%
{\def\ST at Iffirstis@i##1#2##2\@nil{%
@@ -359,14 +436,14 @@
\expandafter\ST at Iffirstis@i#1\@@nil#2\@nil
}
-% Coupe la sc #1 au caract\xE8re #2
-% ce qui est avant est assign\xE9 \xE0 #3 et ce qui est apr\xE8s \xE0 #4
+% Coupe la sc #1 au caractère #2
+% ce qui est avant est assigné à #3 et ce qui est après à #4
\def\ST at split#1#2#3#4{%
\def\ST at split@i##1#2##2\@nil{\def#3{##1}\def#4{##2}}%
\expandafter\ST at split@i#1\@nil
}
-% Dans la sc #1, assigne ce qui est avant le d\xE9veloppement de la sc #2 \xE0 la sc #3
+% Dans la sc #1, assigne ce qui est avant le développement de la sc #2 à la sc #3
\def\ST at left#1#2#3{\ST at exp@two at args\ST at left@i{#1}{#2}#3}
\def\ST at left@i#1#2#3{%
\def\ST at left@ii##1#2##2\@nil{\def#3{##1}}%
@@ -373,7 +450,7 @@
\ST at left@ii#1\@nil
}
-% Dans la sc #1, assigne ce qui est apr\xE8s le d\xE9veloppement de la sc #2 \xE0 la sc #3
+% Dans la sc #1, assigne ce qui est après le développement de la sc #2 à la sc #3
\def\ST at right#1#2#3{\ST at exp@two at args\ST at right@i{#1}{#2}#3}
\def\ST at right@i#1#2#3{%
\def\ST at right@ii##1#2##2\@nil{\def#3{##2}}%
@@ -380,13 +457,13 @@
\ST at right@ii#1\@nil
}
-% Dans la sc #1, assigne \xE0 la sc #4 ce qui est entre les caract\xE8res #2 et #3
+% Dans la sc #1, assigne à la sc #4 ce qui est entre les caractères #2 et #3
\def\ST at between#1#2#3#4{%
\def\ST at between@i##1#2##2#3##3\@nil{\def#4{##2}}%
\expandafter\ST at between@i#1\@nil
}
-% Dans la sc #1, substitue la premi\xE8re occurrence du pattern #2 par le pattern #3
+% Dans la sc #1, substitue la première occurrence du pattern #2 par le pattern #3
\def\ST at subST@once#1#2#3{%
\def\ST at subST@once at i##1#2##2\@nil{\def#1{##1#3##2}}%
\ST at Ifinstr#1{\@empty#2}
@@ -426,11 +503,11 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Lecture du tableau %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% lit le tableau : consid\xE8re que \\ s\xE9pare les lignes
+% lit le tableau : considère que \\ sépare les lignes
\def\ST at read@tab{%
\def\ST at total@colnumber{0}%
\ST at rowcount\z@
- \ST at search@hline% on met de c\xF4t\xE9 la (ou les) ligne sup\xE9rieure du tableau
+ \ST at search@hline% on met de côté la (ou les) ligne supérieure du tableau
\ST at read@tab at i
}
@@ -439,12 +516,12 @@
\ST at Ifinstr\ST at tab{\ST at eol}% si contient \\, il reste encore des lignes
{\expandafter\ST at split\expandafter\ST at tab\expandafter{\ST at eol}\ST at current@row\ST at tab
\@namedef{endrow@\number\ST at rowcount\expandafter}\expandafter{\ST at eol}% est la fin de cette ligne, pour l'instant
- \ST at Iffirstis\ST at tab[% on prend en compte l'\xE9ventuel argument optionnel de \\
+ \ST at Iffirstis\ST at tab[% on prend en compte l'éventuel argument optionnel de \\
{\ST at between\ST at tab[]\ST at temp@a% prend ce qui est entre crochet
- \ST at Ifinstr\ST at temp@a,% si c'est une r\xE9f\xE9rence (on teste juste la pr\xE9sence de la virgule, \xE7a devrait suffire)
+ \ST at Ifinstr\ST at temp@a,% si c'est une référence (on teste juste la présence de la virgule, ça devrait suffire)
{}% on ne fait rien
{\ST at split\ST at tab]\ST at temp@a\ST at tab% sinon, coupe au crocher fermant
- \expandafter\ST at expadd@tomacro\csname endrow@\number\ST at rowcount\endcsname{\ST at temp@a]}}% ajoute l'argument optionnel \xE0 la fin de ligne
+ \expandafter\ST at expadd@tomacro\csname endrow@\number\ST at rowcount\endcsname{\ST at temp@a]}}% ajoute l'argument optionnel à la fin de ligne
}%
{}%
\ST at search@hline% on va purger les hlines et les mettre dans la fin de ligne
@@ -455,11 +532,11 @@
\let\ST at next@readrows\ST at read@tab at i
\fi
}%
- {\let\ST at current@row\ST at tab% plus de ligne ? on prend le tout c-\xE0-d la ligne incompl\xE8te qui finit le tableau
+ {\let\ST at current@row\ST at tab% plus de ligne ? on prend le tout c-à-d la ligne incomplète qui finit le tableau
\let\ST at next@readrows\relax
\edef\ST at total@rownumber{\number\ST at rowcount}}%
- \ST at Ifinstr\ST at current@row{\@empty\SThiderow}% il est demand\xE9 de masquer la colonne ?
- {\edef\ST at row@skiplist{(\number\ST at rowcount)\ST at row@skiplist}% on ajoute le num\xE9ro de ligne \xE0 masquer \xE0 la skiplist
+ \ST at Ifinstr\ST at current@row{\@empty\SThiderow}% il est demandé de masquer la colonne ?
+ {\edef\ST at row@skiplist{(\number\ST at rowcount)\ST at row@skiplist}% on ajoute le numéro de ligne à masquer à la skiplist
\StrDel\ST at current@row{\@empty\SThiderow}[\ST at current@row]%
}%
{}%
@@ -481,9 +558,9 @@
\ifnum\ST at colcount>\ST at total@colnumber\edef\ST at total@colnumber{\number\ST at colcount}\fi
}%
\ST at Ifinstr\ST at current@cell{\@empty\SThidecol}% on doit masquer cette colonnes ?
- {\ST at Ifinstr\ST at col@skiplist{\expandafter(\number\ST at colcount)}% \xE7a a d\xE9j\xE0 \xE9t\xE9 demand\xE9 ?
+ {\ST at Ifinstr\ST at col@skiplist{\expandafter(\number\ST at colcount)}% ça a déjà été demandé ?
{}% on fait rien
- {\edef\ST at col@skiplist{(\number\ST at colcount)\ST at col@skiplist}% sinon -> ajout \xE0 la skiplist
+ {\edef\ST at col@skiplist{(\number\ST at colcount)\ST at col@skiplist}% sinon -> ajout à la skiplist
\ifnum\ST at colcount>\ST at laST@skipcol\edef\ST at laST@skipcol{\number\ST at colcount}\fi
}%
\StrDel\ST at current@cell{\@empty\SThidecol}[\ST at current@cell]%
@@ -490,11 +567,11 @@
}%
{}%
\exploregroups
- \ST at Ifinstr\ST at current@cell{\@empty\multicolumn}% tester la pr\xE9sence d'un \multicol
+ \ST at Ifinstr\ST at current@cell{\@empty\multicolumn}% tester la présence d'un \multicol
{\ST at firstarg@after\ST at current@cell\multicolumn\STmulticol at number}%
{\let\STmulticol at number\@empty}%
- \IfSubStr\ST at current@cell\STnumericfieldmarker% il y a un marqueur de champ num\xE9rique ?
- {\IfSubStr\ST at current@cell{\@empty\STcopy}\ST at invalidSTcopy{}% s'il y a un \STcopy, erreur (pas de champ num\xE9rique et de \STcopy dans une m\xEAme cellule)
+ \IfSubStr\ST at current@cell\STnumericfieldmarker% il y a un marqueur de champ numérique ?
+ {\IfSubStr\ST at current@cell{\@empty\STcopy}\ST at invalidSTcopy{}% s'il y a un \STcopy, erreur (pas de champ numérique et de \STcopy dans une même cellule)
\StrBehind\ST at current@cell\STnumericfieldmarker[\ST at current@formula]%
\noexploregroups
\StrChar\ST at current@formula1[\ST at temp@a]% \ST at temp@a contient {<formule}
@@ -503,58 +580,58 @@
\ST at expadd@tomacro\ST at temp@b\ST at temp@a
\StrSubstitute[1]\ST at current@cell\ST at temp@b\STnumericfieldmarker[\ST at current@cell]% on remplace :={<formule>} par ":="
\noexploregroups
- \ST at keep@firstcar\ST at temp@a% dans la formule, on enl\xE8ve les accolades
+ \ST at keep@firstcar\ST at temp@a% dans la formule, on enlève les accolades
\ST at removespaces\ST at temp@a% et tous les espaces
\ifx\ST at temp@a\@empty% \ST at temp@a contient la formule : si la formule est vide
\ifx\ST at copylist\@empty% pas de copylist ?
- \@namedef{code@\number\ST at colcount @\number\ST at rowcount}{0}% met le code \xE0 0
+ \@namedef{code@\number\ST at colcount @\number\ST at rowcount}{0}% met le code à 0
\else% si la copylist existe
\ST at lookincopylist{\number\ST at colcount}{\number\ST at rowcount}\ST at celltocopy% on cherche si la cellule en cours est dans une plage de copie
\ifx\ST at celltocopy\@empty
- \@namedef{code@\number\ST at colcount @\number\ST at rowcount}{0}% si c'est non, met le code \xE0 0
+ \@namedef{code@\number\ST at colcount @\number\ST at rowcount}{0}% si c'est non, met le code à 0
\StrDel[1]\ST at current@cell\STnumericfieldmarker[\ST at current@cell]% on supprime aussi ":="
\else
- \ST at letname{formula@\number\ST at colcount @\number\ST at rowcount}\ST at celltocopy% il y a une cellule \xE0 copier : on l'assigne au champ num\xE9rique
- \@namedef{code@\number\ST at colcount @\number\ST at rowcount}{1}% et on met le code \xE0 1
+ \ST at letname{formula@\number\ST at colcount @\number\ST at rowcount}\ST at celltocopy% il y a une cellule à copier : on l'assigne au champ numérique
+ \@namedef{code@\number\ST at colcount @\number\ST at rowcount}{1}% et on met le code à 1
\fi
\fi
\else% la formule n'est pas vide
- \ST at letname{formula@\number\ST at colcount @\number\ST at rowcount}\ST at temp@a% et on assigne \xE0 la formule
- \@namedef{code@\number\ST at colcount @\number\ST at rowcount}{1}% code 1 \xE0 priori
+ \ST at letname{formula@\number\ST at colcount @\number\ST at rowcount}\ST at temp@a% et on assigne à la formule
+ \@namedef{code@\number\ST at colcount @\number\ST at rowcount}{1}% code 1 à priori
\fi
- }% ci dessous, il n'y a pas de marqueur de champ num\xE9rique
+ }% ci dessous, il n'y a pas de marqueur de champ numérique
{\IfSubStr\ST at current@cell\STtextcell% si c'est une cellule de texte
{\StrDel\ST at current@cell\STtextcell[\ST at current@cell]% on le(s) supprime les flags
- \@namedef{code@\number\ST at colcount @\number\ST at rowcount}{0}% met le code \xE0 0
- }% ci dessous, ce n'est pas une cellule texte, c'est donc une cellule purement champ num\xE9rique sans marqueur
+ \@namedef{code@\number\ST at colcount @\number\ST at rowcount}{0}% met le code à 0
+ }% ci dessous, ce n'est pas une cellule texte, c'est donc une cellule purement champ numérique sans marqueur
{\StrDel\ST at current@cell\space[\ST at temp@a]%
\ifx\@empty\ST at temp@a% il n'y a que des espaces, c'est donc une cellule vide
\ifx\ST at copylist\@empty% pas de copylist ?
- \@namedef{code@\number\ST at colcount @\number\ST at rowcount}{0}% met le code \xE0 0
+ \@namedef{code@\number\ST at colcount @\number\ST at rowcount}{0}% met le code à 0
\else% si la copylist existe
\ST at lookincopylist{\number\ST at colcount}{\number\ST at rowcount}\ST at celltocopy% on cherche si la cellule en cours est dans un oplage de copie
\ifx\ST at celltocopy\@empty
- \@namedef{code@\number\ST at colcount @\number\ST at rowcount}{0}% si c'est non, met le code \xE0 0
+ \@namedef{code@\number\ST at colcount @\number\ST at rowcount}{0}% si c'est non, met le code à 0
\else
- \let\ST at current@cell\STnumericfieldmarker% il y a une cellule \xE0 copier ici
- \ST at letname{formula@\number\ST at colcount @\number\ST at rowcount}\ST at celltocopy% on l'assigne au champ num\xE9rique
- \@namedef{code@\number\ST at colcount @\number\ST at rowcount}{1}% et on met le code \xE0 1
+ \let\ST at current@cell\STnumericfieldmarker% il y a une cellule à copier ici
+ \ST at letname{formula@\number\ST at colcount @\number\ST at rowcount}\ST at celltocopy% on l'assigne au champ numérique
+ \@namedef{code@\number\ST at colcount @\number\ST at rowcount}{1}% et on met le code à 1
\fi
\fi
- \else% ici, la cellule est compos\xE9e d'une champ num\xE9rique sans marqueur
- \@namedef{code@\number\ST at colcount @\number\ST at rowcount}{1}% toute la cellule est consid\xE9r\xE9e comme champ num\xE9rique
+ \else% ici, la cellule est composée d'une champ numérique sans marqueur
+ \@namedef{code@\number\ST at colcount @\number\ST at rowcount}{1}% toute la cellule est considérée comme champ numérique
\ST at remove@firST at spaces\ST at current@cell
\ST at Ifinstr\ST at current@cell{\@empty\STcopy}%
{\ST at findcopyargs\ST at current@cell\ST at copyrange\ST at copyformula% on chope les arguments de \STcopy
- \ST at seekcopyoffset\ST at copyrange% cherche les d\xE9calages
- \edef\ST at copyrange{\ST at hoffest,\ST at voffest}% et affecte sous forme a,b o\xF9 a et b sont des nombres ou sont vides
- \expandafter\def\expandafter\ST at newtocopylist\expandafter{\expandafter|\ST at copyformula|}% \ST at newtocopylist est le nouvel \xE9l\xE9ment \xE0 ajouter \xE0 la copylist
+ \ST at seekcopyoffset\ST at copyrange% cherche les décalages
+ \edef\ST at copyrange{\ST at hoffest,\ST at voffest}% et affecte sous forme a,b où a et b sont des nombres ou sont vides
+ \expandafter\def\expandafter\ST at newtocopylist\expandafter{\expandafter|\ST at copyformula|}% \ST at newtocopylist est le nouvel élément à ajouter à la copylist
\ST at edefadd@tomacro\ST at newtocopylist{[\number\ST at colcount,\number\ST at rowcount]}%
\ST at expadd@tomacro\ST at newtocopylist{\expandafter(\ST at copyrange)}%
- \ST at expadd@tomacro\ST at newtocopylist\ST at copylist% ajoute la copylist \xE0 la fin
- \let\ST at copylist\ST at newtocopylist% et l'assigne \xE0 copylist
- \ST at transposeformula00\ST at copyformula\ST at copyformula% on transpose \xE9ventuellement pour g\xE9rer les "!"
- \ST at letname{formula@\number\ST at colcount @\number\ST at rowcount}\ST at copyformula% affecte la formule inchang\xE9e au champ num\xE9rique courant
+ \ST at expadd@tomacro\ST at newtocopylist\ST at copylist% ajoute la copylist à la fin
+ \let\ST at copylist\ST at newtocopylist% et l'assigne à copylist
+ \ST at transposeformula00\ST at copyformula\ST at copyformula% on transpose éventuellement pour gérer les "!"
+ \ST at letname{formula@\number\ST at colcount @\number\ST at rowcount}\ST at copyformula% affecte la formule inchangée au champ numérique courant
}%
{\ST at letname{formula@\number\ST at colcount @\number\ST at rowcount}\ST at current@cell% et on assigne toute la cellule
\let\ST at current@cell\STnumericfieldmarker% et on met le flag pour la formule
@@ -568,7 +645,7 @@
\fi
\ST at letname{text@\number\ST at colcount @\number\ST at rowcount}\ST at current@cell
\unless\ifx\@empty\STmulticol at number% si c'est une cellule qui contient \multicolumn
- \loop% on met tous les codes des cellules fusion\xE9es qui suivent la cellule en cours \xE0 -1
+ \loop% on met tous les codes des cellules fusionées qui suivent la cellule en cours à -1
\ifnum\STmulticol at number>\@ne
\edef\STmulticol at number{\number\numexpr\STmulticol at number-1}%
\advance\ST at colcount\@ne
@@ -579,7 +656,7 @@
}
% On va essayer de purger dans #1 toutes les \hline, \clines, \hhline etc, et ajouter tout ce beau monde
-% et leur ev\xE9ntuels arguments dans des sc sp\xE9ciales (par ex \endrow at 3 pour la fin de la 3e ligne.)
+% et leur evéntuels arguments dans des sc spéciales (par ex \endrow at 3 pour la fin de la 3e ligne.)
\def\ST at search@hline{%
\ST at ifvalid@csname{endrow@\number\ST at rowcount}%
{}
@@ -588,39 +665,39 @@
}
\def\ST at search@hline at i{%
- \ST at remove@firST at spaces\ST at tab% on enl\xE8ve les espaces au d\xE9but
+ \ST at remove@firST at spaces\ST at tab% on enlève les espaces au début
\StrChar\ST at tab1[\ST at temp@a]% \ST at temp@a est le 1er car
\let\ST at next\ST at search@hline at i
- \IfStrEqCase\ST at temp@a{% on envisage tous les cas de trac\xE9 de ligne horizontale
+ \IfStrEqCase\ST at temp@a{% on envisage tous les cas de tracé de ligne horizontale
{\@empty\hline}{\StrGobbleLeft\ST at tab1[\ST at tab]\expandafter\STadd at tomacro\csname endrow@\number\ST at rowcount\endcsname\hline}%
{\@empty\cline}{\StrSplit\ST at tab2\ST at temp@a\ST at tab\expandafter\ST at expadd@tomacro\csname endrow@\number\ST at rowcount\endcsname\ST at temp@a}%
{\@empty\hhline}{\StrSplit\ST at tab2\ST at temp@a\ST at tab\expandafter\ST at expadd@tomacro\csname endrow@\number\ST at rowcount\endcsname\ST at temp@a}%
{\@empty\noalign}{\StrSplit\ST at tab2\ST at temp@a\ST at tab\expandafter\ST at expadd@tomacro\csname endrow@\number\ST at rowcount\endcsname\ST at temp@a}%
{\@empty\toprule}{% les commandes de booktabs
- \StrSplit\ST at tab1\ST at temp@a\ST at tab% chope le 1er lex\xE8me : la commande \toprule
+ \StrSplit\ST at tab1\ST at temp@a\ST at tab% chope le 1er lexème : la commande \toprule
\IfBeginWith\ST at tab[{\StrBefore\ST at tab][\ST at temp@b]\ST at expadd@tomacro\ST at temp@a{\ST at temp@b]}\StrBehind\ST at tab][\ST at tab]}{}%
\expandafter\ST at expadd@tomacro\csname endrow@\number\ST at rowcount\endcsname\ST at temp@a
}%
{\@empty\midrule}{%
- \StrSplit\ST at tab1\ST at temp@a\ST at tab% chope le 1er lex\xE8me : la commande \midrule
+ \StrSplit\ST at tab1\ST at temp@a\ST at tab% chope le 1er lexème : la commande \midrule
\IfBeginWith\ST at tab[{\StrBefore\ST at tab][\ST at temp@b]\ST at expadd@tomacro\ST at temp@a{\ST at temp@b]}\StrBehind\ST at tab][\ST at tab]}{}%
\expandafter\ST at expadd@tomacro\csname endrow@\number\ST at rowcount\endcsname\ST at temp@a
}%
{\@empty\bottomrule}{%
- \StrSplit\ST at tab1\ST at temp@a\ST at tab% chope le 1er lex\xE8me : la commande \bottomrule
+ \StrSplit\ST at tab1\ST at temp@a\ST at tab% chope le 1er lexème : la commande \bottomrule
\IfBeginWith\ST at tab[{\StrBefore\ST at tab][\ST at temp@b]\ST at expadd@tomacro\ST at temp@a{\ST at temp@b]}\StrBehind\ST at tab][\ST at tab]}{}%
\expandafter\ST at expadd@tomacro\csname endrow@\number\ST at rowcount\endcsname\ST at temp@a
}%
{\@empty\cmidrule}{%
- \StrSplit\ST at tab1\ST at temp@a\ST at tab% chope le 1er lex\xE8me : la commande \cmidrule
+ \StrSplit\ST at tab1\ST at temp@a\ST at tab% chope le 1er lexème : la commande \cmidrule
\IfBeginWith\ST at tab[{\StrBefore\ST at tab][\ST at temp@b]\ST at expadd@tomacro\ST at temp@a{\ST at temp@b]}\StrBehind\ST at tab][\ST at tab]}{}%
\IfBeginWith\ST at tab({\StrBefore\ST at tab)[\ST at temp@b]\ST at expadd@tomacro\ST at temp@a{\ST at temp@b)}\StrBehind\ST at tab)[\ST at tab]}{}%
\StrSplit\ST at tab1\ST at temp@b\ST at tab% chope l'argument obligatoire : {a-b}
- \ST at expadd@tomacro\ST at temp@a\ST at temp@b% l'ajoute \xE0 \ST at temp@b
- \expandafter\ST at expadd@tomacro\csname endrow@\number\ST at rowcount\endcsname\ST at temp@a% et on ajoute le tout \xE0 endrow
+ \ST at expadd@tomacro\ST at temp@a\ST at temp@b% l'ajoute à \ST at temp@b
+ \expandafter\ST at expadd@tomacro\csname endrow@\number\ST at rowcount\endcsname\ST at temp@a% et on ajoute le tout à endrow
}%
{\@empty\addlinespace}{%
- \StrSplit\ST at tab1\ST at temp@a\ST at tab% chope le 1er lex\xE8me : la commande \addlinespace
+ \StrSplit\ST at tab1\ST at temp@a\ST at tab% chope le 1er lexème : la commande \addlinespace
\IfBeginWith\ST at tab[{\StrBefore\ST at tab][\ST at temp@b]\ST at expadd@tomacro\ST at temp@a{\ST at temp@b]}\StrBehind\ST at tab][\ST at tab]}{}%
\expandafter\ST at expadd@tomacro\csname endrow@\number\ST at rowcount\endcsname\ST at temp@a
}%
@@ -630,9 +707,9 @@
\ST at next
}
-% Cette macro transpose toutes les r\xE9f\xE9rences (absolues et relatives) de la sc #3.
-% Le d\xE9calage est de #1 (nombre sign\xE9) pour les colonnes et de #2 (nombre sign\xE9) pour les lignes.
-% La sc #4 recoit la formule transpos\xE9e.
+% Cette macro transpose toutes les références (absolues et relatives) de la sc #3.
+% Le décalage est de #1 (nombre signé) pour les colonnes et de #2 (nombre signé) pour les lignes.
+% La sc #4 recoit la formule transposée.
\def\ST at transposeformula#1#2#3#4{%
\def\STaddcol{#1}\def\STaddrow{#2}\let\ST at temp@formula#3%
\let\ST at transposed@formula\@empty
@@ -643,30 +720,30 @@
\def\ST at transposeformula@i{%
\unless\ifx\@empty\ST at temp@formula% tant que l'on n'a pas parcouru \ST at temp@formula
\ST at splitatfirstcar\ST at temp@formula\ST at firstcar\ST at temp@formula% prend le 1er car de \ST at temp@formula
- \if\expandafter\noexpand\STtransposecar\expandafter\noexpand\ST at firstcar% si ce caract\xE8re est un !
+ \if\expandafter\noexpand\STtransposecar\expandafter\noexpand\ST at firstcar% si ce caractère est un !
\let\STaddcol@\z@% pas de tranposition sur la colonne
- \ST at splitatfirstcar\ST at temp@formula\ST at firstcar\ST at temp@formula% on prend le premier caract\xE8re qui suit le !
+ \ST at splitatfirstcar\ST at temp@formula\ST at firstcar\ST at temp@formula% on prend le premier caractère qui suit le !
\else
\let\STaddcol@\STaddcol% sinon, on copie le vecteur
\fi
\expandafter\ST at ifcar@isletter\expandafter{\ST at firstcar}% est-ce que le 1er car est une lettre ?
- {\if\expandafter\noexpand\STtransposecar\expandafter\expandafter\expandafter\noexpand\expandafter\@car\ST at temp@formula\@nil% le caract\xE8re suivant est un "!" ?
+ {\if\expandafter\noexpand\STtransposecar\expandafter\expandafter\expandafter\noexpand\expandafter\@car\ST at temp@formula\@nil% le caractère suivant est un "!" ?
\let\STaddrow@\z@% pas de tranposition sur la ligne
- \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\ST at temp@formula\expandafter\expandafter\expandafter{\expandafter\@cdr\ST at temp@formula\@nil}% on prend ce qui est apr\xE8s le !
+ \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\ST at temp@formula\expandafter\expandafter\expandafter{\expandafter\@cdr\ST at temp@formula\@nil}% on prend ce qui est après le !
\else
\let\STaddrow@\STaddrow% sinon, on copie le vecteur
\fi
- \IfInteger\ST at temp@formula{}{}% on prend le nombre qui suit
- \ifnum\integerpart>\z@% si ce nombre est plus grand que 0 -> r\xE9f\xE9rence valide
- \let\ST at temp@formula\@xs at afterinteger% on prend ce qui est apr\xE8s le nombre
+ \ST at IfInteger\ST at temp@formula{}{}% on prend le nombre qui suit
+ \ifnum\ST at integerpart>\z@% si ce nombre est plus grand que 0 -> référence valide
+ \let\ST at temp@formula\@xs at afterinteger% on prend ce qui est après le nombre
\expandafter\lowercase\expandafter{\expandafter\def\expandafter\ST at firstcar\expandafter{\ST at firstcar}}% met en minuscules
- \edef\ST at firstcar{\number\numexpr\expandafter`\ST at firstcar-`a+1+\STaddcol@}% est le num\xE9ro de la colonne
+ \edef\ST at firstcar{\number\numexpr\expandafter`\ST at firstcar-`a+1+\STaddcol@}% est le numéro de la colonne
\ifnum\ST at firstcar<\@ne\ST at illegal@copy\fi% erreur de copie ?
\ST at edefadd@tomacro\ST at transposed@formula{%
\ifcase\ST at firstcar \or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or l\or m\or
n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or z\fi
- \number\numexpr\integerpart+\STaddrow@}%
- \ifnum\numexpr\integerpart+\STaddrow@<\@ne\ST at illegal@copy\fi% erreur de copie ?
+ \number\numexpr\ST at integerpart+\STaddrow@}%
+ \ifnum\numexpr\ST at integerpart+\STaddrow@<\@ne\ST at illegal@copy\fi% erreur de copie ?
\else
\let\ST at temp@formula\@xs at afterinteger
\ST at expadd@tomacro\ST at transposed@formula\ST at firstcar
@@ -674,24 +751,24 @@
}%
{\if[\expandafter\noexpand\ST at firstcar% si le 1er car est [
\ST at left\ST at temp@formula]\ST at temp@ref% on prend ce qui est entre crochet
- \ST at right\ST at temp@formula]\ST at temp@formula% pour la suite, on prend ce qui apr\xE8s le crochet
+ \ST at right\ST at temp@formula]\ST at temp@formula% pour la suite, on prend ce qui après le crochet
\ST at left\ST at temp@ref,\ST at rel@num% ce qui est avant la virgule
\if\expandafter\noexpand\STtransposecar\expandafter\expandafter\expandafter\noexpand\expandafter\@car\ST at rel@num\@nil% commence par un "!" ?
\let\STaddcol@\STaddcol% compensation pour conserver la cellule initiale
- \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\ST at rel@num\expandafter\expandafter\expandafter{\expandafter\@cdr\ST at rel@num\@nil}% on prend ce qui est apr\xE8s le !
+ \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\ST at rel@num\expandafter\expandafter\expandafter{\expandafter\@cdr\ST at rel@num\@nil}% on prend ce qui est après le !
\else
\let\STaddcol@\z@% sinon, on n'ajoute rien
\fi
- \IfInteger\ST at rel@num
+ \ST at IfInteger\ST at rel@num
{\edef\STaddcol@{\number\numexpr\ST at rel@num-\STaddcol@}%
- \ST at right\ST at temp@ref,\ST at rel@num% ce qui est apr\xE8s la virgule
+ \ST at right\ST at temp@ref,\ST at rel@num% ce qui est après la virgule
\if\expandafter\noexpand\STtransposecar\expandafter\expandafter\expandafter\noexpand\expandafter\@car\ST at rel@num\@nil% commence par un "!"?
\let\STaddrow@\STaddrow% on compense pour conserver la cellule initiale
- \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\ST at rel@num\expandafter\expandafter\expandafter{\expandafter\@cdr\ST at rel@num\@nil}% on prend ce qui est apr\xE8s le !
+ \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\ST at rel@num\expandafter\expandafter\expandafter{\expandafter\@cdr\ST at rel@num\@nil}% on prend ce qui est après le !
\else
\let\STaddrow@\z@% sinon, on n'ajoute rien
\fi
- \IfInteger\ST at rel@num
+ \ST at IfInteger\ST at rel@num
{\ST at edefadd@tomacro\ST at transposed@formula{[\STaddcol@,\number\numexpr\ST at rel@num-\STaddrow@]}%
}%
\ST at illegal@relativeref
@@ -705,8 +782,8 @@
\fi
}
-% Cherche dans la sc #1 les 3 arguments qui se trouvent apr\xE8s \STcopy
-% Affecte le 1er \xE0 #2, le 2\xE8 \xE0 #3 et le 3\xE8 \xE0 #4
+% Cherche dans la sc #1 les 3 arguments qui se trouvent après \STcopy
+% Affecte le 1er à #2, le 2è à #3 et le 3è à #4
\def\ST at findcopyargs#1#2#3{%
\def\ST at argaftercopy##1\STcopy##2##3##4\@nil{%
\def#1{##1}\ST at expadd@tomacro#1{\STnumericfieldmarker##4}% dans #1,supprime \STcopy{<arg1>}{<arg2>} et le remplace par :=
@@ -755,9 +832,9 @@
\ST at next
}
-% Regarde dans la liste de copie si la cellule de coodonn\xE9es #1 #2 est dans une plage de copie
-% si oui, affecte \xE0 #3 la formule transpos\xE9e
-% La liste de copy est parcourue de gauche \xE0 droite avec sortie d\xE8s qu'une plage qui convient est rencontr\xE9e
+% Regarde dans la liste de copie si la cellule de coodonnées #1 #2 est dans une plage de copie
+% si oui, affecte à #3 la formule transposée
+% La liste de copy est parcourue de gauche à droite avec sortie dès qu'une plage qui convient est rencontrée
\def\ST at lookincopylist#1#2#3{%
\let\ST at alias@copylist\ST at copylist
\let\ST at returnedformula\@empty
@@ -780,26 +857,26 @@
\ST at next
}
-% Teste si un \xE9l\xE9ment de la copylist contient une plage qui inclus la cellule en cours.
+% Teste si un élément de la copylist contient une plage qui inclus la cellule en cours.
\def\ST at testfirstincopylist|#1|[#2,#3](#4,#5)#6\@nil{%
- \def\ST at alias@copylist{#6}% on enl\xE8ve le premier \xE9l\xE9ment de la copylist
- \ST at Ifin\ST at copycol\ST at copyrow[#2,#3](#4,#5)% si \xE7a correspond
+ \def\ST at alias@copylist{#6}% on enlève le premier élément de la copylist
+ \ST at Ifin\ST at copycol\ST at copyrow[#2,#3](#4,#5)% si ça correspond
{\def\ST at returnedformula{#1}%
\ST at transposeformula{\numexpr\ST at copycol-#2}{\numexpr\ST at copyrow-#3}\ST at returnedformula\ST at returnedformula
}%
{\ifx\@empty#5\@empty\else
\ifnum\ST at copyrow>\numexpr#3+#5\relax
- \ST at subst\ST at copylist{|#1|[#2,#3](#4,#5)}{}% si on a d\xE9pass\xE9 la ligne, on retire ce premier \xE9l\xE9ment de la copylist
+ \ST at subst\ST at copylist{|#1|[#2,#3](#4,#5)}{}% si on a dépassé la ligne, on retire ce premier élément de la copylist
\fi
\fi
}%
}
-% Cherche dans la sc#1 du type ">4,v9" les d\xE9calages horizontaux et verticaux
-% sp\xE9cifi\xE9s avec > et v
-% S'il trouve > ou v sans nombre derri\xE8re, le d\xE9calage correspondant est vide
-% S'il ne trouve pas > ou v, le d\xE9calage correspond est \xE9gal \xE0 0
-% Assigne les d\xE9calages trouv\xE9s dans \ST at hoffest et \ST at voffest
+% Cherche dans la sc#1 du type ">4,v9" les décalages horizontaux et verticaux
+% spécifiés avec > et v
+% S'il trouve > ou v sans nombre derrière, le décalage correspondant est vide
+% S'il ne trouve pas > ou v, le décalage correspond est égal à 0
+% Assigne les décalages trouvés dans \ST at hoffest et \ST at voffest
\def\ST at seekcopyoffset#1{%
\ST at Ifinstr#1>%
{\ST at findcopyoffest#1>\ST at hoffest}%
@@ -816,7 +893,7 @@
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%% Recherche d'une r\xE9f\xE9rence %%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%% Recherche d'une référence %%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% teste si le token #1 est une lettre (majuscule ou minuscule)
\def\ST at ifcar@isletter#1{%
@@ -828,8 +905,8 @@
\ifnum\numexpr(`#1-`a)*(`#1-`z)\relax>\z@\expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi
}
-% cherche une r\xE9f\xE9rence du type lettre+nombre dans la sc #1
-% si on trouve, renvoie les coordonn\xE9es dans #2 sous la forme x at y
+% cherche une référence du type lettre+nombre dans la sc #1
+% si on trouve, renvoie les coordonnées dans #2 sous la forme x at y
% si on ne trouve pas, #2 est vide.
\def\ST at findref@informula#1#2{%
\let\ST at temp@formula#1%
@@ -849,14 +926,14 @@
\else
\StrSplit\ST at temp@formula1\ST at firstcar\ST at temp@formula% prend le 1er car de ce qui reste
\expandafter\ST at ifcar@isletter\expandafter{\ST at firstcar}% est-ce que le 1er car est une lettre ?
- {\IfInteger\ST at temp@formula{}{}% on prend le nombre qui suit
- \ifnum\integerpart>\z@% si ce nombre est plus grand que 0 -> r\xE9f\xE9rence valide
+ {\ST at IfInteger\ST at temp@formula{}{}% on prend le nombre qui suit
+ \ifnum\ST at integerpart>\z@% si ce nombre est plus grand que 0 -> référence valide
\let\ST at after@ref at found\@xs at afterinteger
- \edef\ST at ref@found{\ST at firstcar\number\integerpart}% est la r\xE9f\xE9rence trouv\xE9e
- \edef\ST at distant@rownumber{\number\integerpart}% on chope ce nombre pour le num\xE9ro de colonne
+ \edef\ST at ref@found{\ST at firstcar\number\ST at integerpart}% est la référence trouvée
+ \edef\ST at distant@rownumber{\number\ST at integerpart}% on chope ce nombre pour le numéro de colonne
\edef\ST at distant@colnumber{\number\numexpr\expandafter`\ST at firstcar-`a+1}% traduction lettre->chiffre
\ifnum\ST at distant@colnumber<\z@\edef\ST at distant@colnumber{\number\numexpr\ST at distant@colnumber+32}\fi% met les majuscules en minuscules
- \edef\ST at temp@formula{\ST at distant@colnumber @\ST at distant@rownumber}% les coordonn\xE9es de la r\xE9f\xE9rence
+ \edef\ST at temp@formula{\ST at distant@colnumber @\ST at distant@rownumber}% les coordonnées de la référence
\let\ST at next@search\relax
\fi
}%
@@ -865,12 +942,12 @@
\ST at left\ST at temp@formula]\ST at temp@formula% on prend ce qui est entre crochet
\expandafter\def\expandafter\ST at ref@found\expandafter{\expandafter[\ST at temp@formula]}%
\ST at left\ST at temp@formula,\ST at rel@num
- \IfInteger\ST at rel@num
+ \ST at IfInteger\ST at rel@num
{\edef\ST at distant@colnumber{\number\numexpr\ST at current@colnumber+\ST at rel@num}%
\ST at right\ST at temp@formula,\ST at rel@num
- \IfInteger\ST at rel@num
+ \ST at IfInteger\ST at rel@num
{\edef\ST at distant@rownumber{\number\numexpr\ST at current@rownumber+\ST at rel@num}%
- \edef\ST at temp@formula{\ST at distant@colnumber @\ST at distant@rownumber}% les coordonn\xE9es de la r\xE9f\xE9rence
+ \edef\ST at temp@formula{\ST at distant@colnumber @\ST at distant@rownumber}% les coordonnées de la référence
\let\ST at next@search\relax
}%
\ST at illegal@relativeref
@@ -882,7 +959,7 @@
\ST at next@search
}
-% cette commande teste si la sc #1 est syntaxiquement une r\xE9f\xE9rence
+% cette commande teste si la sc #1 est syntaxiquement une référence
\def\ST at ifref#1{%
\let\ST at temp@formula#1%
\let\ST at ref@found\@empty
@@ -900,19 +977,19 @@
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%% Le noyau : \xE9valuation de toutes les cellules %%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%% Le noyau : évaluation de toutes les cellules %%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Essaie de calculer la cellule (#1,#2)
\def\ST at try@calc at cell(#1,#2){%
- \ST at ifvalid@csname{formula@#1@#2}% on v\xE9rifie que la formule existe
+ \ST at ifvalid@csname{formula@#1@#2}% on vérifie que la formule existe
{\expandafter\ifx\csname formula@#1@#2\endcsname\@empty
- \@namedef{code@#1@#2}{0}% si vide, code \xE0 0
+ \@namedef{code@#1@#2}{0}% si vide, code à 0
\else% et qu'elle est non vide
\def\ST at current@colnumber{#1}\def\ST at current@rownumber{#2}%
\expandafter\ST at find@firST at func\csname formula@#1@#2\endcsname% cherche une fonction dans la formule
\ifx\@empty\ST at function@namefound% s'il n'y a pas de fonction
\expandafter\ST at findref@informula\csname formula@#1@#2\endcsname\ST at coord
- \ifx\@empty\ST at coord% ni de r\xE9f\xE9rence
+ \ifx\@empty\ST at coord% ni de référence
\ST at calc@cell(#1,#2)% on va la calculer la cellule
\fi
\fi
@@ -921,7 +998,7 @@
{}%
}
-\def\ST at calc@cell(#1,#2){% calcule la formule num\xE9rique de la cellule (#1,#2)
+\def\ST at calc@cell(#1,#2){% calcule la formule numérique de la cellule (#1,#2)
\unless\ifnum\csname code@#1@#2\endcsname<\@ne% si le code est >= 1
\ST at cslet\ST at temp@a{formula@#1@#2}% \ST at temp@a est le contenu de la formule
\ST at Iffirstis\ST at temp@a-{\expandafter\def\expandafter\ST at temp@a\expandafter{\expandafter0\ST at temp@a}}{}%
@@ -934,8 +1011,8 @@
\STtrunc\ST at temp@a\ST at temp@a\STrounddigit
\fi
\fi
- \ST at letname{formula@#1@#2}\ST at temp@a% assigne le r\xE9sultat \xE0 la formule
- \@namedef{code@#1@#2}{2}% et met le code \xE0 2 (cellule calcul\xE9e)
+ \ST at letname{formula@#1@#2}\ST at temp@a% assigne le résultat à la formule
+ \@namedef{code@#1@#2}{2}% et met le code à 2 (cellule calculée)
\fi
}
@@ -963,7 +1040,7 @@
}
% la sc #1 est le nom d'une fonction.
-% La macro renvoie dans la sc #2 : 1, 2 ou 2 selon que #1 est le nom d'une macro \xE0 argument num\xE9rique, \xE0 argument plage ou \xE0 argument texte.
+% La macro renvoie dans la sc #2 : 1, 2 ou 2 selon que #1 est le nom d'une macro à argument numérique, à argument plage ou à argument texte.
% #2 est vaut 0 si #1 n'est pas le nom d'une fonction
\def\ST at determine@function at code#1#2{%
\ST at Ifinstr{\ST at functions@with at num@arg,}{#1,}%
@@ -977,12 +1054,12 @@
}%
}
-% \xE9value la cellule (#1#2) par ses coordonn\xE9es num\xE9riques (col,row)
+% évalue la cellule (#1#2) par ses coordonnées numériques (col,row)
\def\STeval at cell(#1,#2){%
\edef\ST at dependance@tree{(#1,#2)}% FIXME : mettre \edef
\let\ST at stackcall\@empty
\let\ST at function@namesaved\@empty
- \STeval at cell@i(#1,#2)% on appelle la macro r\xE9cursive
+ \STeval at cell@i(#1,#2)% on appelle la macro récursive
\ifST at message
\let\ST at deptree\@empty
\ST at show@dependance at tree
@@ -991,87 +1068,87 @@
\fi
}
-% Ceci est la macro principale : elle \xE9value la cellule (#1,#2)
+% Ceci est la macro principale : elle évalue la cellule (#1,#2)
\def\STeval at cell@i(#1,#2){% #1 = no colonne #2 = no ligne
- \ifnum\csname code@#1@#2\endcsname=\@ne% on ne fait quelque chose que si le code est 1 : cellule non calcul\xE9e
+ \ifnum\csname code@#1@#2\endcsname=\@ne% on ne fait quelque chose que si le code est 1 : cellule non calculée
\def\ST at current@colnumber{#1}\def\ST at current@rownumber{#2}%
\expandafter\ST at find@firST at func\csname formula@#1@#2\endcsname% cherche une fonction dans la formule
\ifx\@empty\ST at function@namefound% il n'y a pas de fonction
\IfSubStr[2]\ST at dependance@tree{(#1,#2)}%
- {\edef\ST at coord{#1,#2}\ST at circular@reference}% message et on s'arr\xEAte si r\xE9f\xE9rence circulaire
+ {\edef\ST at coord{#1,#2}\ST at circular@reference}% message et on s'arrête si référence circulaire
{}%
- \expandafter\ST at findref@informula\csname formula@#1@#2\endcsname\ST at coord% y a t-il une r\xE9f\xE9rence dans l'argument ?
- \ifx\ST at coord\@empty% pas de r\xE9f\xE9rence dans l'argument
- \ifx\ST at function@namesaved\@empty% si aucune fonction n'a \xE9t\xE9 d\xE9cel\xE9e
+ \expandafter\ST at findref@informula\csname formula@#1@#2\endcsname\ST at coord% y a t-il une référence dans l'argument ?
+ \ifx\ST at coord\@empty% pas de référence dans l'argument
+ \ifx\ST at function@namesaved\@empty% si aucune fonction n'a été décelée
\ST at calc@cell(#1,#2)% on calcule la cellule en cours
\else
- \ST at Ifinstr{\ST at functions@with at textresult,}{\ST at function@namesaved,}% si la derni\xE8re fonction rend du texte
+ \ST at Ifinstr{\ST at functions@with at textresult,}{\ST at function@namesaved,}% si la dernière fonction rend du texte
{\ifx\ST at stackcall\@empty% et si on est dans la cellule source
- \@namedef{code@#1@#2}{0}% on met le code \xE0 0, la cellule devient textuelle
+ \@namedef{code@#1@#2}{0}% on met le code à 0, la cellule devient textuelle
\exploregroups
\expandafter\StrSubstitute\expandafter[\expandafter\@ne\expandafter]\csname text@#1@#2\expandafter\endcsname\expandafter\STnumericfieldmarker\csname formula@#1@#2\expandafter\endcsname\expandafter[\csname text@#1@#2\endcsname]% copie de la formule vers la zone texte
\noexploregroups
\ST at letname{formula@#1@#2}\@empty% et plus rien dans la formule
\else
- \ST at calc@cell(#1,#2)% sinon, on se trouve dans une cellule appel\xE9e par une macrofonction et donc, on la calcule
+ \ST at calc@cell(#1,#2)% sinon, on se trouve dans une cellule appelée par une macrofonction et donc, on la calcule
\fi
}%
- {\ST at calc@cell(#1,#2)}% c'est une fonction qui donne un arg num\xE9rique : on calcule la cellule en cours
+ {\ST at calc@cell(#1,#2)}% c'est une fonction qui donne un arg numérique : on calcule la cellule en cours
\fi
\else
\ST at ifvalid@csname{code@\ST at coord}% le code distant exite ?
{\ifcase\csname code@\ST at coord\endcsname% code distant = 0 ==> cellule vide ou textuelle, pas bon du tout !
- \edef\ST at temp@callcell{#1,#2}% coordonn\xE9es de la cellule appelante
- \edef\ST at coord{\ST at distant@colnumber,\ST at distant@rownumber}% coordonn\xE9es appel\xE9es
- \ST at zerocodecell@cell% erreur : r\xE9f\xE9rence \xE0 une cellule de code 0
+ \edef\ST at temp@callcell{#1,#2}% coordonnées de la cellule appelante
+ \edef\ST at coord{\ST at distant@colnumber,\ST at distant@rownumber}% coordonnées appelées
+ \ST at zerocodecell@cell% erreur : référence à une cellule de code 0
\or% code distant = 1
- \edef\ST at dependance@tree{\ST at dependance@tree(\ST at distant@colnumber,\ST at distant@rownumber)}% on l'ajoute \xE0 l'arbre des d\xE9pendances
- % on doit \xE9valuer cette formule distante et ensuite, on doit encore recommence avec la formule en cours : on les ajoute sur la pile lifo
+ \edef\ST at dependance@tree{\ST at dependance@tree(\ST at distant@colnumber,\ST at distant@rownumber)}% on l'ajoute à l'arbre des dépendances
+ % on doit évaluer cette formule distante et ensuite, on doit encore recommence avec la formule en cours : on les ajoute sur la pile lifo
\edef\ST at stackcall{(\ST at distant@colnumber,\ST at distant@rownumber)(#1,#2)\ST at stackcall}%
- \or% code distant = 2, la cellule distante est calcul\xE9e, on cr\xE9\xE9 un alias pour le contenu de la formule distante
+ \or% code distant = 2, la cellule distante est calculée, on créé un alias pour le contenu de la formule distante
\ST at cslet\ST at distant@formula{formula@\ST at coord}%
- % si la valeur distante est <0, on la met entre parenth\xE8ses
+ % si la valeur distante est <0, on la met entre parenthèses
\ST at Iffirstis\ST at distant@formula-%
{\expandafter\def\expandafter\ST at distant@formula\expandafter{\expandafter(\ST at distant@formula)}}%
{}%
- % on remplace toutes les r\xE9f\xE9rences par la valeur distante
+ % on remplace toutes les références par la valeur distante
\expandafter\ST at expsubst\csname formula@#1@#2\endcsname{\ST at ref@found|}\ST at distant@formula
- \edef\ST at stackcall{(#1,#2)\ST at stackcall}% puis, on \xE9value \xE0 nouveau cette cellule
+ \edef\ST at stackcall{(#1,#2)\ST at stackcall}% puis, on évalue à nouveau cette cellule
\else% code distant n'est pas {0,1,2} donc est -1, pas bon du tout !
- \edef\ST at temp@callcell{#1,#2}% coordonn\xE9es de la cellule appelante
- \ST at subst\ST at coord @,% coordonn\xE9es appel\xE9es
+ \edef\ST at temp@callcell{#1,#2}% coordonnées de la cellule appelante
+ \ST at subst\ST at coord @,% coordonnées appelées
\STmulticol at cell
\fi}%
- {\edef\ST at temp@callcell{#1,#2}% coordonn\xE9es de la cellule appelante
- \ST at subst\ST at coord @,% coordonn\xE9es appel\xE9es
+ {\edef\ST at temp@callcell{#1,#2}% coordonnées de la cellule appelante
+ \ST at subst\ST at coord @,% coordonnées appelées
\ST at undefined@cell% code distant inexistant -> cellule hors limite du tableau
}%
\fi
\else% il y a une fonction dans la formule
\let\ST at function@namesaved\ST at function@namefound
- \ST at determine@function at code\ST at function@namefound\ST at codefunc% d\xE9termine le code de la fonction
+ \ST at determine@function at code\ST at function@namefound\ST at codefunc% détermine le code de la fonction
\ifcase\ST at codefunc\relax
\PackageError\STname{This error should not occur! Please email the author. Thanks.}{}%
- \or% le code vaut 1, c'est une fonction \xE0 argument num\xE9rique
- \ST at findref@informula\ST at function@argfound\ST at temp@formula% y a t-il une r\xE9f\xE9rence dans l'argument de la formule ?
- \ifx\ST at temp@formula\@empty% pas de r\xE9f\xE9rence dans l'argument de la fonction
+ \or% le code vaut 1, c'est une fonction à argument numérique
+ \ST at findref@informula\ST at function@argfound\ST at temp@formula% y a t-il une référence dans l'argument de la formule ?
+ \ifx\ST at temp@formula\@empty% pas de référence dans l'argument de la fonction
\ST at cslet\ST at current@formula{formula@#1@#2}% alias pour la formule
\let\ST at tobereplaced\ST at function@namefound
- \ST at expadd@tomacro\ST at tobereplaced{\expandafter(\ST at function@argfound)}% ce qui va \xEAtre replac\xE9 : fonction(argument)
+ \ST at expadd@tomacro\ST at tobereplaced{\expandafter(\ST at function@argfound)}% ce qui va être replacé : fonction(argument)
\ST at Ifinstr{\ST at functions@no at calc@arg,}{\ST at function@namefound,}% doit-on calculer l'argument de cette fonction ?
{}%
{\STeval\ST at function@argfound\ST at function@argfound\STclip\ST at function@argfound\ST at function@argfound}%
- \csname ST at func@\ST at function@namefound\endcsname\ST at function@argfound\ST at result@func% puis on \xE9value la fonctionfound
+ \csname ST at func@\ST at function@namefound\endcsname\ST at function@argfound\ST at result@func% puis on évalue la fonctionfound
\ST at Iffirstis\ST at result@func-{\expandafter\def\expandafter\ST at result@func\expandafter{\expandafter(\ST at result@func)}}{}%
\ST at expsubst\ST at current@formula\ST at tobereplaced\ST at result@func% on replace dans l'alias
\ST at letname{formula@#1@#2}\ST at current@formula% on l'assigne dans la formule
- \ifx\@empty\ST at current@formula% pour cause de macro fonction "tag" qui est seule et qui a disparue apr\xE8s substitution
+ \ifx\@empty\ST at current@formula% pour cause de macro fonction "tag" qui est seule et qui a disparue après substitution
\@namedef{code@#1@#2}{0}%
\else
- \edef\ST at stackcall{(#1,#2)\ST at stackcall}% puis, on \xE9value \xE0 nouveau cette cellule
+ \edef\ST at stackcall{(#1,#2)\ST at stackcall}% puis, on évalue à nouveau cette cellule
\fi
\else
- \ifnum\csname code@\ST at temp@formula\endcsname=\tw@% si la r\xE9f\xE9rence est calcul\xE9e, on la replace par sa valeur
+ \ifnum\csname code@\ST at temp@formula\endcsname=\tw@% si la référence est calculée, on la replace par sa valeur
\ST at cslet\ST at current@formula{formula@\ST at temp@formula}% alias pour la formule distante
\ST at Iffirstis\ST at current@formula-%
{\expandafter\def\expandafter\ST at current@formula\expandafter{\expandafter(\ST at current@formula)}}%
@@ -1083,36 +1160,36 @@
\ST at subst\ST at tobereplaced|{}%
\expandafter\ST at expsubst\csname formula@#1@#2\endcsname\ST at tobereplaced\ST at replaced
\edef\ST at stackcall{(#1,#2)\ST at stackcall}%
- \else% la r\xE9f\xE9rence n'est pas calcul\xE9e, donc d'abord il faut
- \edef\ST at stackcall{(\ST at distant@colnumber,\ST at distant@rownumber)(#1,#2)\ST at stackcall}% l'\xE9valuer, et ensuite r\xE9-evaluer la cellule courante
- \edef\ST at dependance@tree{\ST at dependance@tree(\ST at distant@colnumber,\ST at distant@rownumber)}% mise \xE0 jour de l'arbre des d\xE9pendances
+ \else% la référence n'est pas calculée, donc d'abord il faut
+ \edef\ST at stackcall{(\ST at distant@colnumber,\ST at distant@rownumber)(#1,#2)\ST at stackcall}% l'évaluer, et ensuite ré-evaluer la cellule courante
+ \edef\ST at dependance@tree{\ST at dependance@tree(\ST at distant@colnumber,\ST at distant@rownumber)}% mise à jour de l'arbre des dépendances
\fi
\fi
- \or% le code vaut 2, c'est une fonction \xE0 argument \xABplage de cellules\xBB
+ \or% le code vaut 2, c'est une fonction à argument «plage de cellules»
\let\ST at tobereplaced\ST at function@namefound\ST at expadd@tomacro\ST at tobereplaced{\expandafter(\ST at function@argfound)}%
- \csname ST at func@\ST at function@namefound\endcsname\ST at function@argfound\ST at result@func% puis on essaie d'\xE9valuer la fonction
+ \csname ST at func@\ST at function@namefound\endcsname\ST at function@argfound\ST at result@func% puis on essaie d'évaluer la fonction
\unless\ifx\ST at result@func\@empty% si le calcul a abouti
\ST at Iffirstis\ST at result@func-{\expandafter\def\expandafter\ST at result@func\expandafter{\expandafter(\ST at result@func)}}{}%
\expandafter\ST at expsubst\csname formula@#1@#2\endcsname\ST at tobereplaced\ST at result@func% on replace dans la formule
- \edef\ST at stackcall{(#1,#2)\ST at stackcall}% puis, on \xE9value \xE0 nouveau cette cellule
+ \edef\ST at stackcall{(#1,#2)\ST at stackcall}% puis, on évalue à nouveau cette cellule
\fi
\or% le code vaut 3, c'est un fonction dont l'argument est textuel
\let\ST at function@argfound at edefed\ST at function@argfound
\ST at Ifinstr{\ST at functions@with at assign@argument,}{\ST at function@namefound,}%
{\let\ST at temp@formula\@empty}%
- {\ST at findref@informula\ST at function@argfound\ST at temp@formula}% y a t-il une r\xE9f\xE9rence dans l'argument de la fonction ?
- \ifx\ST at temp@formula\@empty% pas de r\xE9f\xE9rence dans l'argument de la fonction
+ {\ST at findref@informula\ST at function@argfound\ST at temp@formula}% y a t-il une référence dans l'argument de la fonction ?
+ \ifx\ST at temp@formula\@empty% pas de référence dans l'argument de la fonction
\ST at cslet\ST at current@formula{formula@#1@#2}% alias pour la formule
\let\ST at tobereplaced\ST at function@namefound
- \ST at expadd@tomacro\ST at tobereplaced{\expandafter(\ST at function@argfound)}% ce qui va \xEAtre remplac\xE9 : fonction(argument)
- \csname ST at func@\ST at function@namefound\endcsname\ST at function@argfound at edefed\ST at result@func% puis on \xE9value la fonction
+ \ST at expadd@tomacro\ST at tobereplaced{\expandafter(\ST at function@argfound)}% ce qui va être remplacé : fonction(argument)
+ \csname ST at func@\ST at function@namefound\endcsname\ST at function@argfound at edefed\ST at result@func% puis on évalue la fonction
\ST at expsubst\ST at current@formula\ST at tobereplaced\ST at result@func% on replace dans l'alias
\ST at letname{formula@#1@#2}\ST at current@formula% on l'assigne dans la formule
- \edef\ST at stackcall{(#1,#2)\ST at stackcall}% puis, on \xE9value \xE0 nouveau cette cellule
- \else% il y a une r\xE9f\xE9rence dans l'argument de la fontion
- \ifnum\csname code@\ST at temp@formula\endcsname=\z@% si la r\xE9f\xE9rence est une cellule texte
+ \edef\ST at stackcall{(#1,#2)\ST at stackcall}% puis, on évalue à nouveau cette cellule
+ \else% il y a une référence dans l'argument de la fontion
+ \ifnum\csname code@\ST at temp@formula\endcsname=\z@% si la référence est une cellule texte
\ST at cslet\ST at current@formula{text@\ST at temp@formula}% alias pour la zone texte distante
- \StrDel[1]\ST at current@formula\STnumericfieldmarker[\ST at current@formula]% on enl\xE8ve le := si besoin
+ \StrDel[1]\ST at current@formula\STnumericfieldmarker[\ST at current@formula]% on enlève le := si besoin
\ST at Ifinstr\ST at current@formula{\@empty\multicolumn}% on ne prend que le texte s'il y a un \multicolumn qui traine
{\ST at thirdarg@after\ST at current@formula\multicolumn\ST at current@formula}
{}%
@@ -1119,9 +1196,9 @@
\let\ST at tobereplaced\ST at function@namefound
\ST at expadd@tomacro\ST at tobereplaced{\expandafter(\ST at function@argfound)}%
\ST at subst\ST at tobereplaced|{}%
- \csname ST at func@\ST at function@namefound\endcsname\ST at current@formula\ST at result@func% puis on \xE9value la fonction
+ \csname ST at func@\ST at function@namefound\endcsname\ST at current@formula\ST at result@func% puis on évalue la fonction
\expandafter\ST at expsubst\csname formula@#1@#2\endcsname\ST at tobereplaced\ST at result@func
- \edef\ST at stackcall{(#1,#2)\ST at stackcall}% puis, on \xE9value \xE0 nouveau cette cellule
+ \edef\ST at stackcall{(#1,#2)\ST at stackcall}% puis, on évalue à nouveau cette cellule
\else
\PackageError\STname{Macro function \ST at function@namefound\space requires a reference to a text cell!}\STseedoc at i
\fi
@@ -1133,7 +1210,7 @@
}
% On regarde s'il y a des appels de calcul de cellules en attente
-% Si oui, on enl\xE8ve le 1er appel de la pile lifo et on l'ex\xE9cute
+% Si oui, on enlève le 1er appel de la pile lifo et on l'exécute
\def\ST at next@onstack{%
\unless\ifx\ST at stackcall\@empty
\ST at split\ST at stackcall)\ST at temp@a\ST at stackcall
@@ -1144,7 +1221,7 @@
\fi
}
-\def\ST at sanitize@stack{% enl\xE8ve de \ST at stackcall toutes les occurrences de \ST at temp@a
+\def\ST at sanitize@stack{% enlève de \ST at stackcall toutes les occurrences de \ST at temp@a
\ST at Ifinstr\ST at stackcall\ST at temp@a
{\expandafter\ST at subst\expandafter\ST at stackcall\expandafter{\ST at temp@a}{}%
\ST at sanitize@stack
@@ -1156,14 +1233,14 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Macro-fonctions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\ST at for#1#2{% \ST at for{#1}{code} -> ex\xE9cute le code pour toutes les cellules des plages pass\xE9es en argument #1
+\def\ST at for#1#2{% \ST at for{#1}{code} -> exécute le code pour toutes les cellules des plages passées en argument #1
\def\ST at forcode{#2}%
\expandafter\def\expandafter\ST at for@rangelist\expandafter{#1;}%
\ST at for@i
}
-\def\ST at for@loopcode{% #2 est le code \xE0 ex\xE9cuter dans la boucle for
- \ST at forcode% on ex\xE9cute le code
+\def\ST at for@loopcode{% #2 est le code à exécuter dans la boucle for
+ \ST at forcode% on exécute le code
\let\ST at nextfor\ST at for@loopcode
\advance\ST at colcount@i\@ne
\ifnum\ST at colcount@i>\ST at for@col at end
@@ -1205,9 +1282,9 @@
\ST at nextfor
}
-% Cette macro cherche dans la sc #1 la premi\xE8re fonction qu'elle trouve ne contenant pas d'autre fonction dans son argument
-% En sortie, \ST at function@namefound contient le nom de la fonction trouv\xE9e et \ST at function@argfound son argument.
-% Si aucune fonction mot-cl\xE9 n'est trouv\xE9, ces 2 derni\xE8res s\xE9quences de contr\xF4les sont vides.
+% Cette macro cherche dans la sc #1 la première fonction qu'elle trouve ne contenant pas d'autre fonction dans son argument
+% En sortie, \ST at function@namefound contient le nom de la fonction trouvée et \ST at function@argfound son argument.
+% Si aucune fonction mot-clé n'est trouvé, ces 2 dernières séquences de contrôles sont vides.
\def\ST at find@firST at func#1{%
\let\ST at function@namefound\@empty\let\ST at function@argfound\@empty
\let\ST at function@namefound@\@empty\let\ST at function@argfound@\@empty
@@ -1216,17 +1293,17 @@
}
\def\ST at find@firST at func@i{%
- \edef\ST at tempfunctions@list{\ST at functions@list,}% r\xE9initialise la liste
- \let\ST at tempfunc@\ST at tempfunc% sauveagrde pour restauration ult\xE9rieure
- \let\ST at function@namefound\@empty% initialise avant appel \xE0 la macro
- \ST at Ifinstr\ST at tempfunc(% s'il y a une parenth\xE8se
+ \edef\ST at tempfunctions@list{\ST at functions@list,}% réinitialise la liste
+ \let\ST at tempfunc@\ST at tempfunc% sauveagrde pour restauration ultérieure
+ \let\ST at function@namefound\@empty% initialise avant appel à la macro
+ \ST at Ifinstr\ST at tempfunc(% s'il y a une parenthèse
{\ST at find@firST at func@ii% cherche la 1ere fonction dans l'argument
\ifx\ST at function@namefound\@empty% elle n'existe pas ?
- \let\ST at function@namefound\ST at function@namefound@\let\ST at function@argfound\ST at function@argfound@% on restaure les valeurs pr\xE9c\xE9dentes
+ \let\ST at function@namefound\ST at function@namefound@\let\ST at function@argfound\ST at function@argfound@% on restaure les valeurs précédentes
\else% si il y a une fonction dans l'argument
- \ST at right\ST at tempfunc@\ST at function@namefound\ST at tempfunc% prend ce qui est apr\xE8s le nom de la fonction
- \ST at seekfunc@arg\ST at tempfunc\ST at function@argfound% isole l'argument entre parenth\xE8ses
- \let\ST at function@namefound@\ST at function@namefound\let\ST at function@argfound@\ST at function@argfound% met \xE0 jour les valeurs pr\xE9c\xE9dentes
+ \ST at right\ST at tempfunc@\ST at function@namefound\ST at tempfunc% prend ce qui est après le nom de la fonction
+ \ST at seekfunc@arg\ST at tempfunc\ST at function@argfound% isole l'argument entre parenthèses
+ \let\ST at function@namefound@\ST at function@namefound\let\ST at function@argfound@\ST at function@argfound% met à jour les valeurs précédentes
\let\ST at tempfunc\ST at function@argfound% recommence avec l'argument
\expandafter\ST at find@firST at func@i
\fi}%
@@ -1235,11 +1312,11 @@
\def\ST at find@firST at func@ii{%
\unless\ifx\ST at tempfunc\@empty% tant que le contenu n'est pas vide
- \unless\ifx\ST at tempfunctions@list\@empty% et tant que tous les noms de fonctions n'ont pas \xE9t\xE9 explor\xE9s
+ \unless\ifx\ST at tempfunctions@list\@empty% et tant que tous les noms de fonctions n'ont pas été explorés
\ST at split\ST at tempfunctions@list,\ST at current@funcname\ST at tempfunctions@list
\ST at Ifinstr\ST at tempfunc{\ST at current@funcname(}% si l'argument contient le nom de fonction courant
{\let\ST at function@namefound\ST at current@funcname
- \ST at left\ST at tempfunc{\ST at current@funcname(}\ST at tempfunc% on r\xE9duit l'argument \xE0 ce qui est avant ce nom
+ \ST at left\ST at tempfunc{\ST at current@funcname(}\ST at tempfunc% on réduit l'argument à ce qui est avant ce nom
}%
{}%
\expandafter\expandafter\expandafter\ST at find@firST at func@ii
@@ -1247,25 +1324,25 @@
\fi
}
-% la sc #1 commence normalement (sinon, \xE7a va gueuler) par une parenth\xE8se
-% La macro trouve l'argument se trouvant entre les parenth\xE8ses les plus ext\xE9rieures
-% et l'assigne \xE0 la sc #2
+% la sc #1 commence normalement (sinon, ça va gueuler) par une parenthèse
+% La macro trouve l'argument se trouvant entre les parenthèses les plus extérieures
+% et l'assigne à la sc #2
\def\ST at seekfunc@arg#1#2{%
\begingroup
- \everyeof{\ST at nil}% met un \@nil \xE0 la fin du fichier virtuel
+ \everyeof{\ST at nil}% met un \@nil à la fin du fichier virtuel
\endlinechar\m at ne
\catcode\z at 12
\catcode`(=1 \catcode`)=2
\afterassignment\ST at gobble@remain
- \expandafter\def\expandafter\ST at temp@a\scantokens\expandafter{#1}% Attentionn !!! Il peut rester des ) non \xE9quilibr\xE9es
+ \expandafter\def\expandafter\ST at temp@a\scantokens\expandafter{#1}% Attentionn !!! Il peut rester des ) non équilibrées
\catcode`(=12 \catcode`)=12
\def\ST at assign@result##1\ST at nil{\endgroup\def#2{##1}}%
\expandafter\ST at assign@result\scantokens\expandafter{\ST at temp@a}% on fait l'assignation
}
-\def\ST at func@sum#1#2{% #1 est la sc contenant la plage de valeurs, #2 est la sc recevant le r\xE9sultat
- \def#2{0}% r\xE9sultat nul pour l'instant
- \let\ST at temp@stack\@empty% pile d'appel temporaire vide aussi au d\xE9but
+\def\ST at func@sum#1#2{% #1 est la sc contenant la plage de valeurs, #2 est la sc recevant le résultat
+ \def#2{0}% résultat nul pour l'instant
+ \let\ST at temp@stack\@empty% pile d'appel temporaire vide aussi au début
\ST at for{#1}% on parcourt la <plage de cellules>
{\ifnum\numexpr10000*(\ST at colcount@i-\ST at current@colnumber)+\ST at rowcount@i-\ST at current@rownumber=\z@
\ST at invalid@range% si la cellule courante est dans la plage, erreur
@@ -1274,21 +1351,21 @@
\or% code=1
\edef\ST at temp@stack{\ST at temp@stack(\number\ST at colcount@i,\number\ST at rowcount@i)}%
\or% code=2
- \ifx\ST at temp@stack\@empty% on ne prend la peine d'additionner que si toutes les cellules sont calcul\xE9es
+ \ifx\ST at temp@stack\@empty% on ne prend la peine d'additionner que si toutes les cellules sont calculées
\expandafter\STadd\expandafter#2\expandafter#2\csname formula@\number\ST at colcount@i @\number\ST at rowcount@i\endcsname
- \edef\ST at dependance@tree{\ST at dependance@tree(\number\ST at colcount@i,\number\ST at rowcount@i)}% mise \xE0 jour de l'arbre des d\xE9pendances
+ \edef\ST at dependance@tree{\ST at dependance@tree(\number\ST at colcount@i,\number\ST at rowcount@i)}% mise à jour de l'arbre des dépendances
\fi
\fi
}%
- \ifx\ST at temp@stack\@empty% toutes les cellules dans la plage \xE9taient calcul\xE9es ?
- \STclip#2#2% on \xF4te les 0 inutiles si le calcul a \xE9t\xE9 men\xE9 au bout
+ \ifx\ST at temp@stack\@empty% toutes les cellules dans la plage étaient calculées ?
+ \STclip#2#2% on ôte les 0 inutiles si le calcul a été mené au bout
\else
\let#2\@empty
- \edef\ST at stackcall{\ST at temp@stack(\ST at current@colnumber,\ST at current@rownumber)\ST at stackcall}% on met \xE0 jour la pile d'appel
+ \edef\ST at stackcall{\ST at temp@stack(\ST at current@colnumber,\ST at current@rownumber)\ST at stackcall}% on met à jour la pile d'appel
\fi
}
-\def\ST at func@sumprod#1#2{% #1 est la sc contenant la plage de valeurs, #2 est la sc recevant le r\xE9sultat
+\def\ST at func@sumprod#1#2{% #1 est la sc contenant la plage de valeurs, #2 est la sc recevant le résultat
\ST at left{#1;};\ST at firstmat
\ST at right#1;\ST at othermat
\ST at left\ST at firstmat{\@empty:}\ST at temp@a
@@ -1300,7 +1377,7 @@
\edef\ST at matcol{\number\numexpr\ST at distant@colnumber-\ST at mat@firstcol}%
\edef\ST at matrow{\number\numexpr\ST at distant@rownumber-\ST at mat@firstrow}%
\ST at count\@ne
- \loop% regarde si toutes les matrices ont la m\xEAme dimension que la 1ere et pour chacune, calcule les vecteurs de d\xE9calage par rapport \xE0 la premi\xE8re
+ \loop% regarde si toutes les matrices ont la même dimension que la 1ere et pour chacune, calcule les vecteurs de décalage par rapport à la première
\unless\ifx\ST at othermat\@empty
\ST at left{\ST at othermat;};\ST at currentmat
\ST at right{\ST at othermat;};\ST at othermat
@@ -1318,15 +1395,15 @@
\unless\ifnum\ST at matrow=\ST at currentmatrow\ST at unmatch@matrixdim\fi% la dimension verticale ne correspond pas
\advance\ST at count\@ne
\repeat
- \let\ST at temp@stack\@empty% pile d'appel temporaire vide au d\xE9but
- \edef\ST at numbermat{\number\ST at count}% c'est le nombre de matrices \xE0 multiplier
- \def#2{0}% r\xE9sultat nul pour l'instant
+ \let\ST at temp@stack\@empty% pile d'appel temporaire vide au début
+ \edef\ST at numbermat{\number\ST at count}% c'est le nombre de matrices à multiplier
+ \def#2{0}% résultat nul pour l'instant
\ST at for{\ST at firstmat}% pour chaque cellule de la 1ere matrice
- {\def\ST at inter@result{0}% r\xE9sultat partiel nul pour l'instant
+ {\def\ST at inter@result{0}% résultat partiel nul pour l'instant
\ifcase\csname code@\number\ST at colcount@i @\number\ST at rowcount@i\endcsname
\or% code =1
\edef\ST at temp@stack{\ST at temp@stack(\number\ST at colcount@i,\number\ST at rowcount@i)}%
- \edef\ST at dependance@tree{\ST at dependance@tree(\number\ST at colcount@i,\number\ST at rowcount@i)}% mise \xE0 jour de l'arbre des d\xE9pendances
+ \edef\ST at dependance@tree{\ST at dependance@tree(\number\ST at colcount@i,\number\ST at rowcount@i)}% mise à jour de l'arbre des dépendances
\or% code=2
\ST at cslet\ST at inter@result{formula@\number\ST at colcount@i @\number\ST at rowcount@i}%
\fi
@@ -1334,15 +1411,15 @@
\loop% on multiplie tous les nombres qui se correspondent dans les matrices
\edef\ST at tempcoord{\number\numexpr\ST at colcount@i+\csname ST at vectorcol@\romannumeral\ST at count\endcsname @\number\numexpr\ST at rowcount@i+\csname ST at vectorrow@\romannumeral\ST at count\endcsname}%
\ifcase\csname code@\ST at tempcoord\endcsname
- \def\ST at inter@result{0}% code =0 -> on met le r\xE9sultat partiel \xE0 0
+ \def\ST at inter@result{0}% code =0 -> on met le résultat partiel à 0
\or% code =1
\ST at subst\ST at tempcoord @,%
\edef\ST at temp@stack{\ST at temp@stack(\ST at tempcoord)}%
- \edef\ST at dependance@tree{\ST at dependance@tree(\ST at tempcoord)}% mise \xE0 jour de l'arbre des d\xE9pendances
+ \edef\ST at dependance@tree{\ST at dependance@tree(\ST at tempcoord)}% mise à jour de l'arbre des dépendances
\or% code=2
\expandafter\STmul\expandafter\ST at inter@result\expandafter\ST at inter@result\csname formula@\ST at tempcoord\endcsname
\else
- \def\ST at inter@result{0}% code = autre -> on met le r\xE9sultat partiel \xE0 0
+ \def\ST at inter@result{0}% code = autre -> on met le résultat partiel à 0
\fi
\advance\ST at count\@ne
\ifnum\ST at count<\ST at numbermat
@@ -1349,11 +1426,11 @@
\repeat
\STadd#2#2\ST at inter@result
}%
- \ifx\ST at temp@stack\@empty% toutes les cellules dans la plage \xE9taient calcul\xE9es ?
- \STclip#2#2% on \xF4te les 0 inutiles si le calcul a \xE9t\xE9 men\xE9 au bout
+ \ifx\ST at temp@stack\@empty% toutes les cellules dans la plage étaient calculées ?
+ \STclip#2#2% on ôte les 0 inutiles si le calcul a été mené au bout
\else
\let#2\@empty
- \edef\ST at stackcall{\ST at temp@stack(\ST at current@colnumber,\ST at current@rownumber)\ST at stackcall}% on met \xE0 jour la pile d'appel
+ \edef\ST at stackcall{\ST at temp@stack(\ST at current@colnumber,\ST at current@rownumber)\ST at stackcall}% on met à jour la pile d'appel
\fi
}
@@ -1360,69 +1437,70 @@
\def\ST at func@id#1#2{\expandafter\def\expandafter#2\expandafter{#1}}
\newif\ifST at gcd
-\def\ST at arithmetic#1#2{% #1 est une liste de nombres s\xE9par\xE9s par des virgules, #2 la sc qui re\xE7oit leur pgcd ou ppcm selon \ifST at gcd
+\def\ST at arithmetic#1#2{% #1 est une liste de nombres séparés par des virgules, #2 la sc qui reçoit leur pgcd ou ppcm selon \ifST at gcd
\ST at split{#1},#2\ST at argB
- \ST at Ifinstr\ST at argB,{\ST at split\ST at argB,\ST at argB\ST at remain\let\ST at next\ST at arithmetic}{\let\ST at remain\@empty\let\ST at next\@gobbletwo}%
+ \ST at Ifinstr\ST at argB,
+ {\ST at split\ST at argB,\ST at argB\ST at remain\let\ST at next\ST at arithmetic}
+ {\let\ST at remain\@empty\let\ST at next\@gobbletwo}%
\let\ST at argA#2%
- \STeval\ST at argA\ST at argA\STeval\ST at argB\ST at argB% \xE9value les 2 nombres au cas o\xF9 il y ait des op\xE9rations
+ \STeval\ST at argA\ST at argA\STeval\ST at argB\ST at argB% évalue les 2 nombres au cas où il y ait des opérations
\STeval#2{trunc(abs(max(\ST at argB,\ST at argA)),0)}%
\STeval\ST at argB{trunc(abs(min(\ST at argB,\ST at argA)),0)}%
- \STifzero\ST at argB\else% si 0, on ignore puisque tous les nombres divisent 0 ou en sont leur multiple
- \ifST at gcd\else\STmul\ST at argC#2\ST at argB\fi
- \loop
- \let\ST at argA\ST at argB
- \STeval\ST at argB{trunc(#2-trunc(#2/\ST at argB,0)*\ST at argB,0)}% reste de la division #2/\ST at argB
- \let#2\ST at argA
- \STifzero\ST at argB\else
- \repeat
+ \STifzero\ST at argB
+ {}% si 0, on ignore puisque tous les nombres divisent 0 ou en sont leur multiple
+ {\ifST at gcd\else\STmul\ST at argC#2\ST at argB\fi
+ \ST at arithmetic@i#2%
\ifST at gcd\else\STeval#2{trunc(\ST at argC/#2,0)}\fi
+ }%
+ \ifST at gcd
+ \STifeq#21{\let\ST at next\@gobbletwo}{}% pour le pgcd, inutile de continuer si le pgcd est 1
\fi
- \csname @\ifST at gcd firstofone\else gobble\fi\endcsname{\STifeq#21\let\ST at next\@gobbletwo\fi}% pour le pgcd, inutile de continuer si le pgcd est 1
\expandafter\expandafter\expandafter\ST at next\expandafter\expandafter\expandafter{\expandafter#2\expandafter,\ST at remain}#2%
}
-
-\def\ST at func@gcd#1#2{% #1 est une liste de nombres s\xE9par\xE9s par des virgules, #2 la sc qui re\xE7oit leur pgcd
- \ST at gcdtrue\ST at arithmetic{#1}#2%
+\def\ST at arithmetic@i#1{%
+ \let\ST at argA\ST at argB
+ \STeval\ST at argB{trunc(#1-trunc(#1/\ST at argB,0)*\ST at argB,0)}% reste de la division #2/\ST at argB
+ \let#1\ST at argA
+ \STifzero\ST at argB{}{\ST at arithmetic@i#1}%
}
-\def\ST at func@lcm#1#2{% #1 est une liste de nombres s\xE9par\xE9s par des virgules, #2 la sc qui re\xE7oit leur ppcm
- \ST at gcdfalse\ST at arithmetic{#1}#2%
-}
+\def\ST at func@gcd{\ST at gcdtrue\ST at arithmetic}
+\def\ST at func@lcm{\ST at gcdfalse\ST at arithmetic}
% la fonction randint
-\def\ST at func@randint#1#2{% #1=sc contenant l'argument #2: sc recevant le r\xE9sultat
+\def\ST at func@randint#1#2{% #1=sc contenant l'argument #2: sc recevant le résultat
\ST at Ifinstr#1,% s'il y a 2 nombres -> intervalle [nb1;nb2]
{\ST at split#1,\ST at limita\ST at limitb
- \STifeq\ST at limita\ST at limitb\PackageError\STname{Macro function randint require two different numbers}\STseedoc at i\fi
+ \STifeq\ST at limita\ST at limitb{\PackageError\STname{Macro function randint require two different numbers}\STseedoc at i}%
\STifgt\ST at limita\ST at limitb
- \let\ST at temp@a\ST at limitb\let\ST at limitb\ST at limita\let\ST at limita\ST at temp@a
- \fi
- \STifint\ST at limita\else\ST at intarg@required\fi
- \STifint\ST at limitb\else\ST at intarg@required\fi
+ {\let\ST at temp@a\ST at limitb\let\ST at limitb\ST at limita\let\ST at limita\ST at temp@a}
+ {}%
+ \STifint\ST at limita{}\ST at intarg@required
+ \STifint\ST at limitb{}\ST at intarg@required
\STrandom#2%
\STeval#2{trunc(trunc(#2*(\ST at limitb-\ST at limita+1),0)+\ST at limita,0)}%
}%
- {\STifint#1\else\ST at intarg@required\fi
+ {\STifint#1{}\ST at intarg@required
\STrandom#2% s'il n'y a qu'un nombre -> intervalle [0;nb2]
\STeval#2{trunc(#2*(#1+1),0)}%
}%
}
-\def\ST at func@rand#1#2{\STrandom#2}% #1=sc contenant l'argument (ignor\xE9) #2: sc recevant le r\xE9sultat
+\def\ST at func@rand#1#2{\STrandom#2}% #1=sc contenant l'argument (ignoré) #2: sc recevant le résultat
\def\ST at genzeros#1{\if#1m0\expandafter\ST at genzeros\fi}
-\def\ST at powerten#1#2{% g\xE9n\xE8re 10^abs(#1) dans la sc #2
+\def\ST at powerten#1#2{% génère 10^abs(#1) dans la sc #2
\edef#2{1\expandafter\ST at genzeros\romannumeral\number\ifnum#1<\z at -\fi#1000\relax}%
}
-\def\ST at func@scitodec#1#2{% #1=sc contenant l'argument #2: sc recevant le r\xE9sultat
+\def\ST at func@scitodec#1#2{% #1=sc contenant l'argument #2: sc recevant le résultat
\expandafter\lowercase\expandafter{\expandafter\def\expandafter#1\expandafter{#1}}%
\ST at Ifinstr#1{ee}% on regarde s'il y a "ee"
{\ST at split#1{ee}\ST at mantissa\ST at exposant
\ST at powerten\ST at exposant\ST at tenpow
\csname ST\ifnum\ST at exposant<\z@ div\else mul\fi\endcsname#2\ST at mantissa\ST at tenpow}%
- {\IfDecimal#1%
+ {\ST at IfDecimal#1%
{\let#2#1}%
{\PackageError\STname{Illegal number in scitodec argument}\STseedoc at i}}%
}
@@ -1435,10 +1513,8 @@
\expandafter\ST at liST@offour#1\@nil
\STeval\ST at argA\ST at argA\STeval\ST at argB\ST at argB
\csname STif#3\endcsname\ST at argA\ST at argB
- \let#2\ST at argC
- \else
- \let#2\ST at argD
- \fi
+ {\let#2\ST at argC}
+ {\let#2\ST at argD}%
}
\def\ST at func@ifeq#1#2{\ST at def@funcif#1#2{eq}}
@@ -1446,7 +1522,7 @@
\def\ST at func@iflt#1#2{\ST at def@funcif#1#2{lt}}
% Transforme une date en nombre
-\def\STdatetonum#1#2#3#4{% #1=sc recevant le r\xE9sultat #2=jj #3=mm #4=aa
+\def\STdatetonum#1#2#3#4{% #1=sc recevant le résultat #2=jj #3=mm #4=aa
\STeval#1{#3+9-12*trunc((#3+9)/12,0)}%
\STeval\ST@@@year{#4-trunc(#1/10,0)}%
\STeval#1{365*\ST@@@year+trunc(\ST@@@year/4,0)-trunc(\ST@@@year/100,0)+trunc(\ST@@@year/400,0)+trunc((#1*306+5)/10,0)+#2-1}%
@@ -1454,13 +1530,14 @@
}
% Transforme un nombre en une date
-\def\ST at numtodate#1#2#3#4{% #1=nombre repr\xE9sentant la date #2=jour #3=mois #4=ann\xE9e
+\def\ST at numtodate#1#2#3#4{% #1=nombre représentant la date #2=jour #3=mois #4=année
\STeval#4{trunc((10000*#1+14780)/3652425,0)}%
\STeval#2{#1-(365*#4+trunc(#4/4,0)-trunc(#4/100,0)+trunc(#4/400,0))}%
\STiflt{#2}0%
- \STadd#4#4{-1}%
- \STeval#2{#1-(365*#4+trunc(#4/4,0)-trunc(#4/100,0)+trunc(#4/400,0))}%
- \fi
+ {\STadd#4#4{-1}%
+ \STeval#2{#1-(365*#4+trunc(#4/4,0)-trunc(#4/100,0)+trunc(#4/400,0))}
+ }
+ {}%
\STeval#3{trunc((100*#2+52)/3060,0)}%
\STeval#4{#4+trunc((#3+2)/12,0)}\STclip#4#4%
\STeval#2{#2-trunc((#3*306+5)/10,0)+1}\STclip#2#2%
@@ -1471,89 +1548,89 @@
\def\ST at parse@dateeng#1/#2/#3\@nil{\def\ST@@@day{#3}\def\ST@@@month{#2}\def\ST@@@year{#1}}
-% transforme une date fran\xE7aise courte du type jj/mm/aaaa en nombre
-\def\ST at func@frshortdatetonum#1#2{% #1=sc \xE9tant l'argument jj/mm/aaaa #2=sc recevant le r\xE9sultat
+% transforme une date française courte du type jj/mm/aaaa en nombre
+\def\ST at func@frshortdatetonum#1#2{% #1=sc étant l'argument jj/mm/aaaa #2=sc recevant le résultat
\expandafter\ST at parse@datefr#1\@nil
\STdatetonum#2\ST@@@day\ST@@@month\ST@@@year
}
-% Transforme un nombre en une date fran\xE7aise de type jj/mm/aaaa
-\def\ST at func@numtofrshortdate#1#2{% % #1=nombre repr\xE9sentant la date #2=sc recevant le r\xE9sultat
+% Transforme un nombre en une date française de type jj/mm/aaaa
+\def\ST at func@numtofrshortdate#1#2{% % #1=nombre représentant la date #2=sc recevant le résultat
\ST at numtodate#1\ST@@@day\ST@@@month\ST@@@year
\edef#2{\ST@@@day/\ST@@@month/\ST@@@year}%
}
-% Transforme un nombre en une date longue fran\xE7aise du type \xAB14 juillet 1789\xBB
-\def\ST at func@numtofrlongdate#1#2{% % #1=nombre repr\xE9sentant la date #2=sc recevant le r\xE9sultat
+% Transforme un nombre en une date longue française du type «14 juillet 1789»
+\def\ST at func@numtofrlongdate#1#2{% % #1=nombre représentant la date #2=sc recevant le résultat
\ST at numtodate#1\ST@@@day\ST@@@month\ST@@@year
\edef#2{\ST@@@day\space\ifcase\ST@@@month\or janvier\or f\'evrier\or mars\or avril\or mai\or
juin\or juillet\or ao\^ut\or septembre\or octobre \or novembre\or d\'ecembre\fi\space\ST@@@year}%
}
-% Extrait d'un nombre repr\xE9sentant une date le mois en toutes lettres en fran\xE7ais
-\def\ST at func@numtofrmonth#1#2{% % #1=nombre repr\xE9sentant la date #2=sc recevant le r\xE9sultat
+% Extrait d'un nombre représentant une date le mois en toutes lettres en français
+\def\ST at func@numtofrmonth#1#2{% % #1=nombre représentant la date #2=sc recevant le résultat
\ST at numtodate#1\ST@@@day\ST@@@month\ST@@@year
\edef#2{\ifcase\ST@@@month\or janvier\or f\'evrier\or mars\or avril\or mai\or
juin\or juillet\or ao\^ut\or septembre\or octobre \or novembre\or d\'ecembre\fi}%
}
-% Extrait d'un nombre rep\xE9sentant une date le nom du jour en fran\xE7ais
-\def\ST at func@numtofrday#1#2{% % #1=nombre repr\xE9sentant la date #2=sc recevant le r\xE9sultat
+% Extrait d'un nombre repésentant une date le nom du jour en français
+\def\ST at func@numtofrday#1#2{% % #1=nombre représentant la date #2=sc recevant le résultat
\STeval\ST@@@day{#1-7*trunc(#1/7,0)}\STclip\ST@@@day\ST@@@day
\edef#2{\ifcase\ST@@@day mercredi\or jeudi\or vendredi\or samedi\or dimanche\or lundi\or mardi\fi}
}
% transforme une date anglaise courte du type aaaa/mm/jj en nombre
-\def\ST at func@engshortdatetonum#1#2{% #1=sc \xE9tant l'argument aaaa/mm/jj #2=sc recevant le r\xE9sultat
+\def\ST at func@engshortdatetonum#1#2{% #1=sc étant l'argument aaaa/mm/jj #2=sc recevant le résultat
\expandafter\ST at parse@dateeng#1\@nil
\STdatetonum#2\ST@@@day\ST@@@month\ST@@@year
}
% Transforme un nombre en une date anglaise de type aaaa/mm/jj
-\def\ST at func@numtoengshortdate#1#2{% % #1=nombre repr\xE9sentant la date #2=sc recevant le r\xE9sultat
+\def\ST at func@numtoengshortdate#1#2{% % #1=nombre représentant la date #2=sc recevant le résultat
\ST at numtodate#1\ST@@@day\ST@@@month\ST@@@year
\edef#2{\ST@@@year/\ST@@@month/\ST@@@day}
}
-% Transforme un nombre en une date longue anglaise du type \xABJuly 14, 1789\xBB
-\def\ST at func@numtoenglongdate#1#2{% % #1=nombre repr\xE9sentant la date #2=sc recevant le r\xE9sultat
+% Transforme un nombre en une date longue anglaise du type «July 14, 1789»
+\def\ST at func@numtoenglongdate#1#2{% % #1=nombre représentant la date #2=sc recevant le résultat
\ST at numtodate#1\ST@@@day\ST@@@month\ST@@@year
\edef#2{\ifcase\ST@@@month\or January\or February\or March\or April\or May\or
June\or July\or August\or September\or October\or November\or December\fi\space\ST@@@day,\space\ST@@@year}%
}
-% Extrait d'un nombre repr\xE9sentant une date le mois en toutes lettres en anglais
-\def\ST at func@numtoengmonth#1#2{% % #1=nombre repr\xE9sentant la date #2=sc recevant le r\xE9sultat
+% Extrait d'un nombre représentant une date le mois en toutes lettres en anglais
+\def\ST at func@numtoengmonth#1#2{% % #1=nombre représentant la date #2=sc recevant le résultat
\ST at numtodate#1\ST@@@day\ST@@@month\ST@@@year
\edef#2{\ifcase\ST@@@month\or January\or February\or March\or April\or May\or
June\or July\or August\or September\or October\or November\or December\fi}%
}
-% Extrait d'un nombre rep\xE9sentant une date le nom du jour en anglais
-\def\ST at func@numtoengday#1#2{% % #1=nombre repr\xE9sentant la date #2=sc recevant le r\xE9sultat
+% Extrait d'un nombre repésentant une date le nom du jour en anglais
+\def\ST at func@numtoengday#1#2{% % #1=nombre représentant la date #2=sc recevant le résultat
\STeval\ST@@@day{#1-7*trunc(#1/7,0)}\STclip\ST@@@day\ST@@@day
\edef#2{\ifcase\ST@@@day wednesday\or thursday\or friday\or saturday\or sunday\or monday\or tuesday\fi}
}
-% Teste si la date contenue dans les 3 sc #1 (jour) #2(mois) #3(ann\xE9e) est valide. Sinon, envoie un message d'erreur
+% Teste si la date contenue dans les 3 sc #1 (jour) #2(mois) #3(année) est valide. Sinon, envoie un message d'erreur
\def\ST at teST@date at validity#1#2#3{%
- \IfInteger#1{}\ST at invalid@date
- \IfInteger#2{}\ST at invalid@date
- \IfInteger#3{}\ST at invalid@date
+ \ST at IfInteger#1{}\ST at invalid@date
+ \ST at IfInteger#2{}\ST at invalid@date
+ \ST at IfInteger#3{}\ST at invalid@date
\ifnum#2<\@ne\ST at invalid@date\fi
\ifnum#2>12 \ST at invalid@date\fi
\ifnum#1<\@ne\ST at invalid@date\fi
\ifnum#1>\ifcase#2\or31\or29\or31\or30\or31\or30\or31\or31\or30\or31\or30\or31\fi\ST at invalid@date\fi
- \ifnum#3<\@ne\ST at invalid@date\fi% on va s'arr\xEAter \xE0 JC quand m\xEAme :-)
+ \ifnum#3<\@ne\ST at invalid@date\fi% on va s'arrêter à JC quand même :-)
}
-% Transforme une date anglaise longue du type \xABJuly 14, 1789\xBB en un nombre
-\def\ST at func@englongdatetonum#1#2{% #1=sc contenant la date longue #2=sc recevant le r\xE9sultat
+% Transforme une date anglaise longue du type «July 14, 1789» en un nombre
+\def\ST at func@englongdatetonum#1#2{% #1=sc contenant la date longue #2=sc recevant le résultat
\ST at analyse@text at engdate#1\ST@@@day\ST@@@month\ST@@@year
\STdatetonum#2\ST@@@day\ST@@@month\ST@@@year
}
-\def\ST at analyse@text at engdate#1#2#3#4{% #1=texte repr\xE9sentant la date #2=jour #3=n\xB0 mois #4=ann\xE9e
+\def\ST at analyse@text at engdate#1#2#3#4{% #1=texte représentant la date #2=jour #3=n° mois #4=année
\ST at remove@firST at spaces#1%
\def\ST at today{\today}%
\ifx#1\ST at today
@@ -1578,14 +1655,14 @@
}[\def#3{-1}]%
\ST at right#1\space#2%
\ST at Ifinstr#2,{\ST at split#2,#2#4}{\ST at split#2{ }#2#4}%
- \IfInteger#2{}{\edef#2{\number\integerpart}}%
+ \ST at IfInteger#2{}{\edef#2{\number\ST at integerpart}}%
\ST at removespaces#4%
\ST at teST@date at validity#2#3#4%
\fi
}
-% Transforme une date anglaise longue du type \xAB14 juillet 1789\xBB en un nombre
-\def\ST at func@frlongdatetonum#1#2{% #1=sc contenant la date longue #2=sc recevant le r\xE9sultat
+% Transforme une date anglaise longue du type «14 juillet 1789» en un nombre
+\def\ST at func@frlongdatetonum#1#2{% #1=sc contenant la date longue #2=sc recevant le résultat
\ST at analyse@text at frdate#1\ST@@@day\ST@@@month\ST@@@year
\STdatetonum#2\ST@@@day\ST@@@month\ST@@@year
}
@@ -1592,7 +1669,7 @@
\def\ST at utfencoding{utf8}
-\def\ST at analyse@text at frdate#1#2#3#4{% #1=texte repr\xE9sentant la date #2=jour #3=n\xB0 mois #4=ann\xE9e
+\def\ST at analyse@text at frdate#1#2#3#4{% #1=texte représentant la date #2=jour #3=n° mois #4=année
\ST at remove@firST at spaces#1%
\def\ST at today{\today}%
\ifx#1\ST at today
@@ -1599,12 +1676,12 @@
\edef#2{\number\day}\edef#3{\number\month}\edef#4{\number\year}%
\else
\ST at split#1{ }#2#3%
- \IfInteger#2{}{\edef#2{\number\integerpart}}%
+ \ST at IfInteger#2{}{\edef#2{\number\ST at integerpart}}%
\ST at split#3{ }#3#4%
\ST at removespaces#3%
- \def\ST at e{^^e9}\def\ST at u{^^fb}% \xE9 et \xFB en latin1
+ \def\ST at e{^^e9}\def\ST at u{^^fb}% é et û en latin1
\ifdefined\inputencodingname\ifx\ST at utfencoding\inputencodingname
- \def\ST at e{^^c3^^a9}\def\ST at u{^^c3^^bb}% \xE9 et \xFB en utf8
+ \def\ST at e{^^c3^^a9}\def\ST at u{^^c3^^bb}% é et û en utf8
\fi\fi
\expandafter\ST at subst\expandafter#3\expandafter{\ST at e}e\ST at subst#3\'{}%
\expandafter\ST at subst\expandafter#3\expandafter{\ST at u}u\ST at subst#3\^{}%
@@ -1657,6 +1734,10 @@
\def#2{0}% use 0 if tag undefined
\fi
}
+
+\def\ST at func@exp#1#2{%
+
+}
% \def\ST at func@timetosec#1#2{%
% \ST at left{#1}:\ST at nb@hours
% \ST at right{#1}:\ST at nb@min
@@ -1680,9 +1761,9 @@
% }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%% Construction du tableau \xE0 afficher %%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%% Construction du tableau à afficher %%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\ST at search@lastshowcol{% cherche le num\xE9ro de la derni\xE8re colonne non masqu\xE9e
+\def\ST at search@lastshowcol{% cherche le numéro de la dernière colonne non masquée
\ST at colcount\ST at total@colnumber% on commence par la fin
\ST at search@lastshowcol at i
}
@@ -1693,20 +1774,20 @@
{\edef\ST at lastshowcol{\number\ST at colcount}}%
}
-% cherche "<<ref>>" dans la sc #1 et remplace toutes ces occurences par le champ num\xE9rique de "ref"
+% cherche "<<ref>>" dans la sc #1 et remplace toutes ces occurences par le champ numérique de "ref"
\def\ST at displaynumfields#1{%
\StrBehind#1\ST at startdisplay[\ST at dipslaycell]%
\StrBefore\ST at dipslaycell\ST at enddisplay[\ST at dipslaycell]%
- \let\ST at next\@gobble% \xE0 priori, on ne reboucle pas
+ \let\ST at next\@gobble% à priori, on ne reboucle pas
\unless\ifx\@empty\ST at dipslaycell% si ce qui a entre les marqueurs n'est pas vide
\edef\ST at current@colnumber{\number\ST at colcount}\edef\ST at current@rownumber{\number\ST at rowcount}%
- \ST at ifref\ST at dipslaycell% et si c'est une r\xE9f\xE9rence valide
+ \ST at ifref\ST at dipslaycell% et si c'est une référence valide
{\let\ST at next\ST at startdisplay
\ST at expadd@tomacro\ST at next\ST at dipslaycell
\ST at expadd@tomacro\ST at next\ST at enddisplay
\ST at cslet\ST at dipslaycell{formula@\ST at temp@formula}% alias pour la formule distante
- \unless\ifx\ST at decsep\ST at decsepfp\ST at substdecsep\ST at dipslaycell\fi% subsitution du s\xE9parateur d\xE9cimal s'il y a lieu
- \StrSubstitute#1\ST at next\ST at dipslaycell[#1]% on substitue <<ref>> par le champ num\xE9rique de la formule distante
+ \unless\ifx\ST at decsep\ST at decsepfp\ST at substdecsep\ST at dipslaycell\fi% subsitution du séparateur décimal s'il y a lieu
+ \StrSubstitute#1\ST at next\ST at dipslaycell[#1]% on substitue <<ref>> par le champ numérique de la formule distante
\let\ST at next\ST at displaynumfields
}
{}%
@@ -1716,17 +1797,17 @@
\def\ST at build@tab{%
\ST at rowcount\@ne\ST at colcount\@ne
- \expandafter\ST at expadd@tomacro\expandafter\ST at tab\csname endrow at 0\endcsname% la (ou les) \xE9ventuelle ligne sup\xE9rieure du tableau
+ \expandafter\ST at expadd@tomacro\expandafter\ST at tab\csname endrow at 0\endcsname% la (ou les) éventuelle ligne supérieure du tableau
\ST at build@tab at i
}
-\def\ST at build@tab at i{% reconstitue le tableau \xE0 partir des valeurs calcul\xE9es et des cellules
+\def\ST at build@tab at i{% reconstitue le tableau à partir des valeurs calculées et des cellules
\ifnum\ST at rowcount>\ST at total@rownumber
\let\ST at nextcell\relax
\else
\let\ST at nextcell\ST at build@tab at i
\ST at Ifinstr\ST at row@skiplist{\expandafter(\number\ST at rowcount)}% la ligne fait partie de la skiplist ?
- {\advance\ST at rowcount\@ne}% on passe \xE0 la ligne suivante
+ {\advance\ST at rowcount\@ne}% on passe à la ligne suivante
{%
\ST at Ifinstr\ST at col@skiplist{\expandafter(\number\ST at colcount)}% la colonne fait partie de la skiplist ?
\ST at hiddencoltrue
@@ -1733,33 +1814,33 @@
{%
\ST at hiddencolfalse
\ST at ifvalid@csname{text@\number\ST at colcount @\number\ST at rowcount}% si la cellule existe
- {\ST at cslet\ST at temp@b{text@\number\ST at colcount @\number\ST at rowcount}% on cr\xE9\xE9 un alias pour le texte
+ {\ST at cslet\ST at temp@b{text@\number\ST at colcount @\number\ST at rowcount}% on créé un alias pour le texte
\exploregroups
- \ifnum\csname code@\number\ST at colcount @\number\ST at rowcount\endcsname=\tw@% si la cellule contient un champ num\xE9rique
+ \ifnum\csname code@\number\ST at colcount @\number\ST at rowcount\endcsname=\tw@% si la cellule contient un champ numérique
\ST at cslet\ST at temp@a{formula@\number\ST at colcount @\number\ST at rowcount}% alias pour la valeur
- \unless\ifx\ST at decsep\ST at decsepfp\ST at substdecsep\ST at temp@a\fi% et si le "." doit \xEAtre remplac\xE9 par "," on substitue
- \StrSubstitute[1]\ST at temp@b\STnumericfieldmarker{\expandafter\STprintnum\expandafter{\ST at temp@a}}[\ST at temp@a]% on remplace le flag de formule par la valeur calcul\xE9e
- \else% si la cellule ne contient pas de champ num\xE9rique
- \StrDel[1]\ST at temp@b\STnumericfieldmarker[\ST at temp@a]% on enl\xE8ve l'\xE9ventuel marqueur
+ \unless\ifx\ST at decsep\ST at decsepfp\ST at substdecsep\ST at temp@a\fi% et si le "." doit être remplacé par "," on substitue
+ \StrSubstitute[1]\ST at temp@b\STnumericfieldmarker{\expandafter\STprintnum\expandafter{\ST at temp@a}}[\ST at temp@a]% on remplace le flag de formule par la valeur calculée
+ \else% si la cellule ne contient pas de champ numérique
+ \StrDel[1]\ST at temp@b\STnumericfieldmarker[\ST at temp@a]% on enlève l'éventuel marqueur
\fi
- \ST at displaynumfields\ST at temp@a% affiche les champs num\xE9riques des cellules entre << et >>
+ \ST at displaynumfields\ST at temp@a% affiche les champs numériques des cellules entre << et >>
\noexploregroups
\ST at expadd@tomacro\ST at tab\ST at temp@a% on ajoute la cellule au tableau
}
{}%
}%
- \advance\ST at colcount\@ne% on passe \xE0 la colonne suivante !
- \ST at ifvalid@csname{code@\number\ST at colcount @\number\ST at rowcount}% y a t-il encore un code d\xE9fini ensuite ?
+ \advance\ST at colcount\@ne% on passe à la colonne suivante !
+ \ST at ifvalid@csname{code@\number\ST at colcount @\number\ST at rowcount}% y a t-il encore un code défini ensuite ?
{\ifnum\csname code@\number\ST at colcount @\number\ST at rowcount\endcsname<\z@% on est dans une cellule contenant \multicol ?
\expandafter\ST at firstarg@after\csname text@\number\numexpr\ST at colcount-1@\number\ST at rowcount\endcsname\multicolumn\STmulticol at number% combien de cellules ?
- \advance\ST at colcount\STmulticol at number% on va voir apr\xE8s le multicol en sautant toutes les valeurs des colonnes interm\xE9diaires
+ \advance\ST at colcount\STmulticol at number% on va voir après le multicol en sautant toutes les valeurs des colonnes intermédiaires
\advance\ST at colcount\m at ne
- \ST at ifvalid@csname{code@\number\ST at colcount @\number\ST at rowcount}% y a t-il un code d\xE9fini apr\xE8s le multicol ?
+ \ST at ifvalid@csname{code@\number\ST at colcount @\number\ST at rowcount}% y a t-il un code défini après le multicol ?
{\STadd at tomacro\ST at tab&}% on ajoute la tabulation
{}%
\else% pas de \multicolumn
- \unless\ifST at hiddencol% si la cellule n'est pas masqu\xE9e
- \unless\ifnum\ST at colcount>\ST at lastshowcol% si ce n'est pas la derni\xE8re cellule affich\xE9e
+ \unless\ifST at hiddencol% si la cellule n'est pas masquée
+ \unless\ifnum\ST at colcount>\ST at lastshowcol% si ce n'est pas la dernière cellule affichée
\STadd at tomacro\ST at tab&%on ajoute la tabulation
\fi
\fi
@@ -1767,8 +1848,8 @@
{\ST at ifvalid@csname{endrow@\number\ST at rowcount}%
{\expandafter\ST at expadd@tomacro\expandafter\ST at tab\csname endrow@\number\ST at rowcount\endcsname}% ajoute la fin de la ligne
{}%
- \ST at colcount\@ne% on remet la colonne \xE0 1
- \advance\ST at rowcount\@ne% on passe \xE0 la ligne suivante
+ \ST at colcount\@ne% on remet la colonne à 1
+ \advance\ST at rowcount\@ne% on passe à la ligne suivante
}%
}%
\fi
@@ -1775,16 +1856,16 @@
\ST at nextcell
}
-% format des lettres et nombres repr\xE9sentant les coordonn\xE9es (helvetica gras tr\xE8s petit)
+% format des lettres et nombres représentant les coordonnées (helvetica gras très petit)
\def\ST at debugformat@headers{\usefont{T1}{phv}{b}{n}}
-% format utilis\xE9 pour les cellules
+% format utilisé pour les cellules
\def\ST at debug@format at cells{\usefont{T1}{lmtt}{m}{n}}
\def\ST at colorcell{\ifST at colortblloaded\noexpand\cellcolor[gray]{.6}\fi}
\def\STdebug#1{%
- \ST at debugmodetrue% on se met en mode d\xE9bogage
+ \ST at debugmodetrue% on se met en mode débogage
\begingroup
\def\ST at debuginfo{#1}%
\ifmmode\scriptscriptstyle\else\scriptsize\fi
@@ -1809,7 +1890,7 @@
\repeat
\ST at colcount\@ne
\ST at edefadd@tomacro\ST at debugtab{%
- &% passe \xE0 la derni\xE8re colonne de la premi\xE8re ligne
+ &% passe à la dernière colonne de la première ligne
\noexpand\multicolumn1l{%
\ifx\ST at temp@a\ST at debuginfo
\ST at ifvalid@csname{endrow@\number\ST at rowcount}%
@@ -1821,11 +1902,11 @@
\ST at debug@tab at i
}
-\def\ST at debug@tab at i{% affiche le tableau de d\xE9bobage
+\def\ST at debug@tab at i{% affiche le tableau de débobage
\ifnum\ST at rowcount>\ST at total@rownumber
\ST at edefadd@tomacro\ST at debugtab{\noexpand\cline{2-\number\numexpr\ST at lastshowcol+1}\noexpand\end{tabular}}%
- \ST at debugtab% affichage du tableau de d\xE9bogage
- \ifmmode\\[0.5ex]\else\par\smallskip\fi% retour \xE0 la ligne
+ \ST at debugtab% affichage du tableau de débogage
+ \ifmmode\\[0.5ex]\else\par\smallskip\fi% retour à la ligne
\expandafter\endgroup
\else
\ifnum\ST at colcount=\@ne
@@ -1832,14 +1913,14 @@
\ST at edefadd@tomacro\ST at debugtab{%
\noexpand\multicolumn1{c|}{\ST at colorcell\noexpand\ST at debugformat@headers\number\ST at rowcount}&}%
\fi
- \ifcsname\ST at debuginfo @\number\ST at colcount @\number\ST at rowcount\endcsname% si l'info existe pour la cellule concern\xE9e
+ \ifcsname\ST at debuginfo @\number\ST at colcount @\number\ST at rowcount\endcsname% si l'info existe pour la cellule concernée
\ifx\ST at temp@a\ST at debuginfo
\expandafter\ST at subst\csname\ST at debuginfo @\number\ST at colcount @\number\ST at rowcount\endcsname|{}%
\fi
- \ST at edefadd@tomacro\ST at debugtab{\detokenize\expandafter\expandafter\expandafter{\csname\ST at debuginfo @\number\ST at colcount @\number\ST at rowcount\endcsname}}% on ajoute la cellule au tableau que l'on a detokenis\xE9e au pr\xE9alable
+ \ST at edefadd@tomacro\ST at debugtab{\detokenize\expandafter\expandafter\expandafter{\csname\ST at debuginfo @\number\ST at colcount @\number\ST at rowcount\endcsname}}% on ajoute la cellule au tableau que l'on a detokenisée au préalable
\fi
- \advance\ST at colcount\@ne% on passe \xE0 la colonne suivante !
- \ifnum\ST at colcount>\ST at lastshowcol% si c'est la derni\xE8re cellule affich\xE9e
+ \advance\ST at colcount\@ne% on passe à la colonne suivante !
+ \ifnum\ST at colcount>\ST at lastshowcol% si c'est la dernière cellule affichée
\ST at edefadd@tomacro\ST at debugtab{%
&\noexpand\multicolumn1l{%
\ifx\ST at temp@a\ST at debuginfo
@@ -1848,8 +1929,8 @@
{}%
\fi}%
\noexpand\\\noexpand\cline{2-\number\numexpr\ST at lastshowcol+1}}%
- \ST at colcount\@ne% on remet la colonne \xE0 1
- \advance\ST at rowcount\@ne% on passe \xE0 la ligne suivante
+ \ST at colcount\@ne% on remet la colonne à 1
+ \advance\ST at rowcount\@ne% on passe à la ligne suivante
\else% il reste encore des cellules dans la ligne
\STadd at tomacro\ST at debugtab&% on ajoute la tabulation
\fi
@@ -1861,12 +1942,12 @@
%%%%%%%%%%%%%%%%%% Environnement spreadtab et macros publiques %%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% d\xE9finit quelle sera le s\xE9quence de conytr\xF4le qui finira les lignes
+% définit quelle sera le séquence de conytrôle qui finira les lignes
% dans les tableaux de spreadtab
\def\STeol#1{\def\ST at eol{#1}}
\STeol\\
-% renvoie la valeur num\xE9rique de la cellule de tag #1
+% renvoie la valeur numérique de la cellule de tag #1
\def\STtag#1{%
\ifcsname ST at celltag@\detokenize\expandafter{#1}\endcsname\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
{\csname ST at celltag@\detokenize\expandafter{#1}\endcsname}
@@ -1893,24 +1974,24 @@
\fi
}
-% d\xE9finit le s\xE9parateur d\xE9cimal
+% définit le séparateur décimal
\def\STsetdecimalsep#1{\def\ST at decsep{#1}}
-\def\ST at decsepfp{.}% le s\xE9parateur d\xE9cimal donn\xE9 par fp
-\STsetdecimalsep.% le point par d\xE9faut
+\def\ST at decsepfp{.}% le séparateur décimal donné par fp
+\STsetdecimalsep.% le point par défaut
-\STmessage{true}% affiche les messages par d\xE9faut
+\STmessage{true}% affiche les messages par défaut
\newif\ifST at clipround
\def\STautoround{\@ifstar{\ST at cliproundfalse\ST at autoround}{\ST at cliproundtrue\ST at autoround}}
\def\ST at autoround#1{\def\STrounddigit{#1}}
-\STautoround{}% pas d'arrondi par d\xE9faut
+\STautoround{}% pas d'arrondi par défaut
-\def\STsavecell#1#2{% met dans la sc #1 la valeur du champ num\xE9rique de la cellule sp\xE9cifi\xE9e par sa r\xE9f\xE9rence ABSOLUE
+\def\STsavecell#1#2{% met dans la sc #1 la valeur du champ numérique de la cellule spécifiée par sa référence ABSOLUE
\def\ST at temp@ref{#2}%
\ST at ifref\ST at temp@ref{}\ST at illegal@ref
\ST at Ifinstr\ST at temp@ref[\ST at illegal@ref{}%
- \ST at cslet#1{formula@\ST at temp@formula}% le nombre est assign\xE9 \xE0 #1
- \unless\ifx\ST at decsep\ST at decsepfp\ST at substdecsep#1\fi% et si le "." doit \xEAtre remplac\xE9 par "," on substitue
+ \ST at cslet#1{formula@\ST at temp@formula}% le nombre est assigné à #1
+ \unless\ifx\ST at decsep\ST at decsepfp\ST at substdecsep#1\fi% et si le "." doit être remplacé par "," on substitue
\global\let#1#1% on rend l'assignation globale
}
@@ -1937,11 +2018,11 @@
\fi
\let\ST at FPmessages\ifFPmessages
\if at STfpactive\ifST at message\FPmessagesfalse\fi\fi% pas de message de calcul de FP
- \saveexpandmode\expandarg% 1-d\xE9veloppement des arguments (r\xE9glages de xstring)
- \saveexploremode\noexploregroups% pas d'exploration des groupes (r\xE9glages de xstring)
+ \saveexpandmode\expandarg% 1-développement des arguments (réglages de xstring)
+ \saveexploremode\noexploregroups% pas d'exploration des groupes (réglages de xstring)
\edef\ST at catocde@saved{\catcode`:=\the\catcode`:\relax\catcode`;=\the\catcode`;\relax}%
- \@makeother\:\@makeother\;% changer les catcodes pour \xE9viter les incompatibilit\xE9s avec frenchb
- \def\ST at tab@preamble{#2}% pr\xE9ambule du tableau
+ \@makeother\:\@makeother\;% changer les catcodes pour éviter les incompatibilités avec frenchb
+ \def\ST at tab@preamble{#2}% préambule du tableau
\StrChar{\@empty#2}\@ne[\ST at tab@name]%
\def\ST at optcode{#1}%
\let\ST at copylist\@empty
@@ -1962,12 +2043,12 @@
\let\ST at ref@found\@empty
\ST at read@tab% analyse le tableau contenu dans \ST at tab
\ST at emit@message{ok^^J}%
- \ST at search@lastshowcol% cherche la derni\xE8re colonne affich\xE9e
- \ST at debugmodefalse% \xE0 priori, on n'est pas en mode d\xE9bogage
+ \ST at search@lastshowcol% cherche la dernière colonne affichée
+ \ST at debugmodefalse% à priori, on n'est pas en mode débogage
\let\ST at savecell\STsavecell
\let\STsavecell\@gobbletwo
\let\STdisplaytab\relax
- \ST at optcode% ex\xE9cute l'argument optionnel en ne tenant compte que de \STdebug
+ \ST at optcode% exécute l'argument optionnel en ne tenant compte que de \STdebug
\let\STdebug\@gobble
\def\STdisplaytab{%
\ST at debugmodefalse
@@ -1974,12 +2055,12 @@
\ST at emit@message{\space\space\space\space\space Debug mode: display final tab^^J}%
\let\STdisplaytab\relax
}%
- \ST at optcode% ex\xE9cute l'argument optionnel en ne tenant compte que de \STdisplaytab s'il y figure
+ \ST at optcode% exécute l'argument optionnel en ne tenant compte que de \STdisplaytab s'il y figure
\unless\ifST at debugmode% si on doit afficher le tableau, on fait le boulot
\ST at emit@message{* computing formulas:^^J}%
\STeval at tab
\let\STsavecell\ST at savecell
- \ST at optcode% ex\xE9cute l'argument optionnel en ne tenant compte que de \STsavecell
+ \ST at optcode% exécute l'argument optionnel en ne tenant compte que de \STsavecell
\expandafter\def\expandafter\ST at tab\expandafter{\expandafter\begin\ST at tab@preamble}%
\ST at emit@message{* building tab:}%
\ST at build@tab
@@ -2030,164 +2111,172 @@
v0.1beta1 2009/06/06
-------------------------------------------------------------------------------
v0.1beta2 2009/06/07
- 1 Une valeur n\xE9gative dans une cellule provoque un bug.
- Les valeurs n\xE9gatives sont d\xE9sormais mises entre parenth\xE8ses
- 2 Espaces supprim\xE9s en d\xE9but de formules.
+ 1 Une valeur négative dans une cellule provoque un bug.
+ Les valeurs négatives sont désormais mises entre parenthèses
+ 2 Espaces supprimés en début de formules.
-------------------------------------------------------------------------------
v0.1beta3 2009/06/12
- 1 Espaces laiss\xE9s dans les formules pour pouvoir utiliser la notation
- postfix\xE9e de fp.
- 2 Les r\xE9f\xE9rences ne sont plus \xAB@(B4)\xBB mais indiff\xE9remment \xABb4\xBB ou
- \xABB4\xBB.
- 3 R\xE9f\xE9rences relatives possibles par [x,y] ou x et y sont les
- d\xE9calages de la colonne et de la ligne par rapport \xE0 la cellule
- o\xF9 est la formule.
- 4 Bugs corrig\xE9s pour rendre le package compatible avec tabularx ou
+ 1 Espaces laissés dans les formules pour pouvoir utiliser la notation
+ postfixée de fp.
+ 2 Les références ne sont plus «@(B4)» mais indifféremment «b4» ou
+ «B4».
+ 3 Références relatives possibles par [x,y] ou x et y sont les
+ décalages de la colonne et de la ligne par rapport à la cellule
+ où est la formule.
+ 4 Bugs corrigés pour rendre le package compatible avec tabularx ou
tabulary (entre autres).
-------------------------------------------------------------------------------
v0.1beta4 2009/06/21
- 1 Les espaces sont supprim\xE9s au d\xE9but de chaque cellule, cela
- cr\xE9ait un bug lorsque la cellule commen\xE7ait par un nombre n\xE9gatif.
- 2 Mise en place de la compatibilit\xE9 avec la commande
- \multicolumn{nbre}{type}{contenu} du package \xE9ponyme
- 3 Possibilit\xE9 de masquer des lignes ou des colonnes enti\xE8res avec les
+ 1 Les espaces sont supprimés au début de chaque cellule, cela
+ créait un bug lorsque la cellule commençait par un nombre négatif.
+ 2 Mise en place de la compatibilité avec la commande
+ \multicolumn{nbre}{type}{contenu} du package éponyme
+ 3 Possibilité de masquer des lignes ou des colonnes entières avec les
commandes \SThiderow et \SThidecol
- Seule condition : aucune colonne masqu\xE9e ne doit se trouver dans les
- colonnes impliqu\xE9es dans un \multicolum \xE0 moins de prendre de
- grandes pr\xE9cautions et savoir les cons\xE9quences que cela occasionne.
+ Seule condition : aucune colonne masquée ne doit se trouver dans les
+ colonnes impliquées dans un \multicolum à moins de prendre de
+ grandes précautions et savoir les conséquences que cela occasionne.
-------------------------------------------------------------------------------
v0.1beta5 2009/06/29
- 1 Am\xE9lioration des messages d'erreur et d'information
+ 1 Amélioration des messages d'erreur et d'information
2 Suppression de tests superflus
- 3 Red\xE9finition de \STtextcell en \xAB@\xBB qui est plus simple
- 4 Impl\xE9mentation de \STsavecell
- 5 \xE9criture de la documentation provisoire en fran\xE7ais
+ 3 Redéfinition de \STtextcell en «@» qui est plus simple
+ 4 Implémentation de \STsavecell
+ 5 écriture de la documentation provisoire en français
-------------------------------------------------------------------------------
v0.1beta6 2009/08/23
- 1 Correction d'un bug : dans une cellule, on ne pouvait pas \xE9crire
- plusieurs fois la m\xEAme r\xE9f\xE9rence.
- 2 Correction d'un bug avec \multicolumn : cette commande \xE9tait mal
- g\xE9r\xE9e lorsqu'employ\xE9e avec une cellule de texte.
- 3 Impl\xE9mentation de macro-fonctions avec diff\xE9renciation selon le
- type d'argument et le type de donn\xE9e renvoy\xE9e.
- 4 Possibilit\xE9 d'imbrication des macro-fonctions.
- 5 Mise en place d'un environnement \xAB spreadtab \xBB
- 6 Nombreuses optimisations pour une meilleure vitesse d'ex\xE9cution
+ 1 Correction d'un bug : dans une cellule, on ne pouvait pas écrire
+ plusieurs fois la même référence.
+ 2 Correction d'un bug avec \multicolumn : cette commande était mal
+ gérée lorsqu'employée avec une cellule de texte.
+ 3 Implémentation de macro-fonctions avec différenciation selon le
+ type d'argument et le type de donnée renvoyée.
+ 4 Possibilité d'imbrication des macro-fonctions.
+ 5 Mise en place d'un environnement « spreadtab »
+ 6 Nombreuses optimisations pour une meilleure vitesse d'exécution
-------------------------------------------------------------------------------
v0.1pre 2009/09/02
- 1 Mise au point des messages d'erreurs et des arr\xEAts de compilation
- selon les erreurs rencontr\xE9es.
+ 1 Mise au point des messages d'erreurs et des arrêts de compilation
+ selon les erreurs rencontrées.
2 Correction d'un bug dans \ST at coord@toref
3 Les cellules vides, textuelles ou jointes par un \multicolumn sont
- ignor\xE9es dans les plages de cellules concern\xE9es par les fonctions
+ ignorées dans les plages de cellules concernées par les fonctions
sum et sumprod
- 4 Les noms de mois accentu\xE9s et \today sont d\xE9sormais permis en
+ 4 Les noms de mois accentués et \today sont désormais permis en
argument de la fonction frlongdatetonum
- 5 somprod corrig\xE9 en sumprod, plus anglais !
- 6 La macro fonction rnd, trop complexe est supprim\xE9e au profit de rand
+ 5 somprod corrigé en sumprod, plus anglais !
+ 6 La macro fonction rnd, trop complexe est supprimée au profit de rand
et randint
- 7 Am\xE9liorations et optimisations
+ 7 Améliorations et optimisations
-------------------------------------------------------------------------------
-v0.1 2009/11/03 Premi\xE8re version publique sur le CTAN
+v0.1 2009/11/03 Première version publique sur le CTAN
-------------------------------------------------------------------------------
v0.2 2010/01/24
- 1 On peut d\xE9finir le s\xE9parateur d\xE9cimal par la macro
- \STsetdecimalsep{<caract\xE8re>}
- 2 Il est possible de copier une formule dans le tableau \xE0 l'aide de
- \STcopy{>a,vb}{formule} o\xF9 a et b sont les nombres de cellules
- horizontaux et verticaux vers lesquels la formule sera copi\xE9e.
- 3 D\xE9sormais, spreadtab est enti\xE8rement compatible avec toutes les
+ 1 On peut définir le séparateur décimal par la macro
+ \STsetdecimalsep{<caractère>}
+ 2 Il est possible de copier une formule dans le tableau à l'aide de
+ \STcopy{>a,vb}{formule} où a et b sont les nombres de cellules
+ horizontaux et verticaux vers lesquels la formule sera copiée.
+ 3 Désormais, spreadtab est entièrement compatible avec toutes les
commandes du package booktabs
4 La commande \noalign et son argument est prise en compte lorsqu'elle se
- trouve apr\xE8s un \\
- 5 Suppression d'espaces ind\xE9sirables
- 6 Mise en place d'un mode d\xE9bogage o\xF9 l'on peut visualiser les champs
- num\xE9riques, les champs textuels ou les codes des cellules du tableau
+ trouve après un \\
+ 5 Suppression d'espaces indésirables
+ 6 Mise en place d'un mode débogage où l'on peut visualiser les champs
+ numériques, les champs textuels ou les codes des cellules du tableau
-------------------------------------------------------------------------------
v0.2a 2010/02/02
1 Ajout de la traduction en vietnamien et correction d'erreurs dans la
- documentation fran\xE7aise.
+ documentation française.
2 Implementation beta et donc non visible des macros fonctions gcd, lcm
- Ces macro-fonctions ne sont pas encore document\xE9es.
+ Ces macro-fonctions ne sont pas encore documentées.
-------------------------------------------------------------------------------
v0.3 2010/03/28
- 1 La macro \STautoround{x} admet une version \xE9toil\xE9e pour laquelle
- les nombres sont arrondis et format\xE9s pour avoir x chiffres apr\xE8s
+ 1 La macro \STautoround{x} admet une version étoilée pour laquelle
+ les nombres sont arrondis et formatés pour avoir x chiffres après
la virgule en rajoutant des 0 inutiles si besoin
- 2 La valeur sauvegard\xE9e par \STsavecell tient d\xE9sormais compte du
- s\xE9parateur d\xE9cimal
+ 2 La valeur sauvegardée par \STsavecell tient désormais compte du
+ séparateur décimal
3 Macro fonctions "gcd" (PGCD), "lcm" (PPCM) et "scitodec" pour convertir
- une \xE9criture scientifique en une \xE9criture d\xE9cimale
- 4 Dans le champ textuel d'une cellule, on peut d\xE9sormais afficher le
- champ num\xE9rique d'une cellule avec <<ref>>
- 5 Am\xE9lioration de l'algorithme pour \STcopy : enleve une formule de
- \ST at copylist lorsqu'on a d\xE9pass\xE9 la derni\xE8re ligne de la plage
- o\xF9 elle doit \xEAtre copi\xE9e
+ une écriture scientifique en une écriture décimale
+ 4 Dans le champ textuel d'une cellule, on peut désormais afficher le
+ champ numérique d'une cellule avec <<ref>>
+ 5 Amélioration de l'algorithme pour \STcopy : enleve une formule de
+ \ST at copylist lorsqu'on a dépassé la dernière ligne de la plage
+ où elle doit être copiée
6 Correction d'un bug lorsque la macro-fonction admettant un argument
- textuel a un argument faisant r\xE9f\xE9rence \xE0 une autre cellule :
+ textuel a un argument faisant référence à une autre cellule :
enlever ":=" si besoin
7 Correction d'un bug dans xstring qui changeait les catcodes des tokens
- de \@xs at afterinteger lorsqu'on appelle \IfInteger
+ de \@xs at afterinteger lorsqu'on appelle \ST at IfInteger
8 Correction d'un bug dans \ST at build@tab at i pour prendre en compte les
- cellules de code 0 dans lesquelles ":=" doit \xEAtre supprim\xE9
+ cellules de code 0 dans lesquelles ":=" doit être supprimé
-------------------------------------------------------------------------------
v0.3a 2010/05/15
- 1 Correction d'un bug dans \ST at gobble@remain : ce qui reste \xE0 manger
+ 1 Correction d'un bug dans \ST at gobble@remain : ce qui reste à manger
peut contenir des tokens de catcode 1 ou 2 ce qui fait que
- l'utilisation d'arguments d\xE9limit\xE9s ne fonctionnerait pas dans ces
+ l'utilisation d'arguments délimités ne fonctionnerait pas dans ces
cas.
-------------------------------------------------------------------------------
v0.3b 2010/06/06
1 Correction d'un bug concernant les macro-fonctions renvoyant un texte.
- Lorsque leur argument contenait une r\xE9f\xE9rence, celle-ci devenait
+ Lorsque leur argument contenait une référence, celle-ci devenait
une cellule texte.
2 Correction d'un bug sur la macro \ST at stackcall : il faut y enlever
- toutes les occurrences de la cellule en train d'\xEAtre calcul\xE9e
- 3 Modification de l'ordre de calcul des cellules concern\xE9es par les
+ toutes les occurrences de la cellule en train d'être calculée
+ 3 Modification de l'ordre de calcul des cellules concernées par les
macro fonctions sum et somprod
- 4 Correction d'un bug dans la fa\xE7on dont sont produites les skiplist
+ 4 Correction d'un bug dans la façon dont sont produites les skiplist
\ST at row@skiplist et \STcol at skiplist
- 5 Impl\xE9mentation de la macro fonction "id"
+ 5 Implémentation de la macro fonction "id"
-------------------------------------------------------------------------------
v0.3c 2011/04/08
- 1 Correction d'un gros bug lors de la substitution d'une r\xE9f\xE9rence de
- type <lettre><nbre> lorsque nbre>10 : a10 \xE9tait vu comme "a1" suivi
- de 0, et m\xEAme pour tous les nbre>10 !
+ 1 Correction d'un gros bug lors de la substitution d'une référence de
+ type <lettre><nbre> lorsque nbre>10 : a10 était vu comme "a1" suivi
+ de 0, et même pour tous les nbre>10 !
2 Macro \STprintnum
-------------------------------------------------------------------------------
v0.4 2011/07/04
- 1 Les calculs se font en dehors d'un groupe pour \xE9viter l'erreur de
+ 1 Les calculs se font en dehors d'un groupe pour éviter l'erreur de
save-satck
- 2 Possibilit\xE9 d'\xE9crire aussi \spreadtab<code tableau>\endspreadtab
+ 2 Possibilité d'écrire aussi \spreadtab<code tableau>\endspreadtab
3 Macros fonctions tag, cell, row, col et la macro \STtag qui permet de
- faire appel \xE0 la valeur de la cellule marqu\xE9e par la macro fonction
+ faire appel à la valeur de la cellule marquée par la macro fonction
tag. \STmakegtag rend les sauvegardes globales.
4 La commande \STeol permet de choisir quel est le marqueur de
fin de ligne dans les tableau de spreadtab
5 dans une cellule mixte, les macro fonctions renvoyant du texte ont leur
- r\xE9sultat qui prend la place de :={<formule>}
+ résultat qui prend la place de :={<formule>}
-------------------------------------------------------------------------------
v0.4a 2011/08/11
- 1 Un bug corrig\xE9 dans \ST at search@hline at i
+ 1 Un bug corrigé dans \ST at search@hline at i
-------------------------------------------------------------------------------
v0.4b 2012/05/13
- 1 Un bug corrig\xE9 dans \ST at func@sum
+ 1 Un bug corrigé dans \ST at func@sum
-------------------------------------------------------------------------------
v0.4c 2014/11/06
- 1 Un bug corrig\xE9 dans \ST at analyse@text at frdate et
+ 1 Un bug corrigé dans \ST at analyse@text at frdate et
\ST at analyse@text at engdate : si #1 commence par un espace parasite,
- celui-ci est d\xE9sormais retir\xE9.
- 2 Bug corrig\xE9 dans \ST at displaynumfields : les macros
- \ST at current@colnumber et \ST at current@rownumber sont d\xE9finies avant
+ celui-ci est désormais retiré.
+ 2 Bug corrigé dans \ST at displaynumfields : les macros
+ \ST at current@colnumber et \ST at current@rownumber sont définies avant
d'appeler \ST at ifref
-------------------------------------------------------------------------------
v0.4d 2018/01/02
- 1 Bug corrig\xE9 dans \STeval at cell : le \edef\ST at dependance@tree corrige
+ 1 Bug corrigé dans \STeval at cell : le \edef\ST at dependance@tree corrige
le \def !
2 Ajout d'un message d'erreur si une la fonction sum a une plage qui
- contient la cellule courante elle-m\xEAme
+ contient la cellule courante elle-même
3 Nouvelle macro fonction "value"
4 Nettoyage du code
-------------------------------------------------------------------------------
v0.5 2019/02/27
- 1 Choix du moteur de calcul : fp ou xfp
\ No newline at end of file
+ 1 Choix du moteur de calcul : fp ou xfp
+ -------------------------------------------------------------------------------
+v0.51 2020/06/09
+ 1 Bug corrigé : les \if..\fi n'étaient pas équilibrés lors des appels aux
+ macros \STif.. avec le moteur fp
+-------------------------------------------------------------------------------
+v0.51 2023/09/11
+ 1 Bug corrigé : les anciennes macros de xstring \IfInteger et
+ \IfDecimal sont incorporées à spreadtab qui sinon est cassé
\ No newline at end of file
More information about the tex-live-commits
mailing list.