summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/doc/latex/spreadtab/README12
-rw-r--r--Master/texmf-dist/doc/latex/spreadtab/spreadtab_doc_en.pdfbin770610 -> 856956 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spreadtab/spreadtab_doc_en.tex405
-rw-r--r--Master/texmf-dist/doc/latex/spreadtab/spreadtab_doc_fr.pdfbin805275 -> 882719 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spreadtab/spreadtab_doc_fr.tex398
-rw-r--r--Master/texmf-dist/tex/latex/spreadtab/spreadtab.sty905
6 files changed, 928 insertions, 792 deletions
diff --git a/Master/texmf-dist/doc/latex/spreadtab/README b/Master/texmf-dist/doc/latex/spreadtab/README
index d974dae7693..d41f670317f 100644
--- a/Master/texmf-dist/doc/latex/spreadtab/README
+++ b/Master/texmf-dist/doc/latex/spreadtab/README
@@ -1,8 +1,8 @@
_____________________
spreadtab package
- v0.3b
- 2010/06/06
+ v0.3c
+ 2011/04/08
_____________________
This package provides spreadsheet features for LaTeX table environments.
@@ -14,11 +14,11 @@ generate values in other cells.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Ce package permet d'imiter le fonctionnement d'un tableur dans les
-environnements tableau de LateX.
+environnements tableau de LaTeX.
-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.
+Les cellules d'un tableau ont des coordonnées 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 d'autres cellules.
Christian Tellechea
<unbonpetit@gmail.com> \ No newline at end of file
diff --git a/Master/texmf-dist/doc/latex/spreadtab/spreadtab_doc_en.pdf b/Master/texmf-dist/doc/latex/spreadtab/spreadtab_doc_en.pdf
index 2cac0295c12..6d33d05d57b 100644
--- a/Master/texmf-dist/doc/latex/spreadtab/spreadtab_doc_en.pdf
+++ b/Master/texmf-dist/doc/latex/spreadtab/spreadtab_doc_en.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spreadtab/spreadtab_doc_en.tex b/Master/texmf-dist/doc/latex/spreadtab/spreadtab_doc_en.tex
index aaa0398f468..54317c5ba9e 100644
--- a/Master/texmf-dist/doc/latex/spreadtab/spreadtab_doc_en.tex
+++ b/Master/texmf-dist/doc/latex/spreadtab/spreadtab_doc_en.tex
@@ -1,16 +1,16 @@
% ____________________________________________________________________________
% | |
% | |
-% | spreadtab v0.3a |
+% | spreadtab v0.3c |
% | |
-% | May 15, 2010 |
+% | April 8, 2011 |
% | |
% |___________________________________________________________________________|
%
% This file is spreadtab_doc_en.tex, the source code of the english manual of
% the spreadtab package.
%
-% Copyright Christian Tellechea 2009-2010
+% Copyright Christian Tellechea 2009-2011
% email : unbonpetit@gmail.com
%
% -------------------------------------------------------------------
@@ -27,7 +27,9 @@
\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
-\usepackage{lmodern}
+\usepackage{libertine}
+\renewcommand*\oldstylenums[1]{{\fontfamily{fxlj}\selectfont #1}}
+\usepackage[scaled=0.8]{luximono}
\usepackage[a4paper,margin=2.6cm]{geometry}
\usepackage{amsmath,amssymb}
\usepackage{textcomp}
@@ -37,7 +39,7 @@
\usepackage{tabularx}
\usepackage{xcolor}
\usepackage{listings}
-\usepackage{numprint}
+\usepackage[autolanguage]{numprint}
\usepackage{xspace}
\usepackage[bottom]{footmisc}
\usepackage{spreadtab}
@@ -69,7 +71,7 @@
numbersep=1em,classoffset=1,%
morekeywords={% les macros et commandes de spreadtab
spreadtab,SThiderow,SThidecol,STsavecell,STautoround,STmessage,STsetdecimalsep,STtransposecar,STdebug,STdisplaytab,STsetdisplaymarks,%
- STnumericfieldmarker,STtextcell,STcopy,id,fact,ifeq,ifgt,iflt,numtofrshortdate,%
+ STnumericfieldmarker,STprintnum,STtextcell,STcopy,fact,id,ifeq,ifgt,iflt,numtofrshortdate,%
numtoengshortdate,numtofrlongdate,numtoenglongdate,numtofrmonth,%
numtoengmonth,numtofrday,numtoengday,sum,rand,randint,sumprod,%
frshortdatetonum,engshortdatetonum,englongdatetonum,frlongdatetonum,gcd,lcm},%
@@ -163,7 +165,7 @@
\end{titlepage}
\tableofcontents\newpage
-\parskip\medskipamount This manual is a translation of the french manual. I apologize for my poor english but I did my best and I hope that the following is comprehensible! Any help improve this translation will be greatly appreciated.
+\parskip\medskipamount {\bfseries\color{red}This manual is a translation of the french manual. I apologize for my poor english but I did my best and I hope that the following is comprehensible! Any help improve this translation will be greatly appreciated.}
\section{Introduction}
\subsection{Presentation}
This package allows us to construct tables in a manner similar to a spreadsheet. The cells of a table have row and column indices and these can be used in formulas to generate values in other cells.
@@ -454,6 +456,149 @@ X\STcopy{>}{a1+1}Y & @XY & X:={}Y & \textbf{:={}} & & \\\hline
\end{center}
\section{Features for formatting the table}
+\subsection{Decimal seprarator}
+The \verb-fp- return its results with the decimal point separator. After the job of \verb-fp-, \ST can change this decimal separator: everything happens as if the results returned by \verb-fp- were taking this into account. The command \verbinline-\STsetdecimalsep- take a mandatory argument which is the char used as decimal separator:
+\begin{center}
+\verbinline-\STsetdecimalsep-\verb-{<char}-
+\end{center}
+For exemple, french users should write this in the preamble of the document:
+\begin{center}
+\verbinline-\STsetdecimalsep{,}-
+\end{center}
+For numeric field located in math mode, the comma is considered as a math punctuation, which explains why it is followed by a space. To pevent this behaviour, it can be written inside brackets:
+
+\begin{minipage}{0.65\linewidth}
+\begin{lstlisting}[backgroundcolor=\color{ST@codebckgcolor}]
+3,14 is not displayed like $3,14$.\par
+3,14 is displayed like $3{,}14$
+\end{lstlisting}
+\end{minipage}\hfill
+\begin{minipage}{0.35\linewidth}
+3,14 is not displayed like $3,14$.\par
+3,14 is displayed like $3{,}14$
+\end{minipage}%
+
+When cells are in math mode, you can\footnote{It is preferable to use the \texttt{numprint} package to format the results. You can also change the math code of the comma: \texttt{\textbackslash mathcode`,="013B\textbackslash relax}. This trick puts the comma in the class 0 of the ordinary signs while its naturally class is 6 (punctuation signs).} use this feature and ask \ST to replace the decimal point by a comma inside braces with the command \verbinline-\STsetdecimalsep{{,}}-. In these tables where each cell is in math mode, the space after the commas are neutralized in the second table:
+
+\begin{minipage}{0.65\linewidth}
+\begin{lstlisting}
+\STsetdecimalsep{,}
+\begin{spreadtab}{{tabular}{|*3{>{$}r<{$}}|}}\hline
+@x & @y & @\text{Average}\\\hline
+5 & -4 & (a2+b2)/2\\
+-6.1 & -8 & (a3+b3)/2\\
+9.85 & 3.7 & (a4+b4)/2\\\hline
+\end{spreadtab}\par\smallskip
+\STsetdecimalsep{{,}}
+\begin{spreadtab}{{tabular}{|*3{>{$}r<{$}}|}}\hline
+@x & @y & @\text{Average}\\\hline
+5 & -4 & (a2+b2)/2\\
+-6.1 & -8 & (a3+b3)/2\\
+9.85 & 3.7 & (a4+b4)/2\\\hline
+\end{spreadtab}
+\end{lstlisting}
+\end{minipage}%
+\begin{minipage}{0.35\linewidth}
+\centering
+\STsetdecimalsep{,}
+\begin{spreadtab}{{tabular}{|*3{>{$}r<{$}}|}}\hline
+@x & @y & @\text{Average}\\\hline
+5 & -4 & (a2+b2)/2\\
+-6.1 & -8 & (a3+b3)/2\\
+9.85 & 3.7 & (a4+b4)/2\\\hline
+\end{spreadtab}\par\smallskip
+\STsetdecimalsep{{,}}
+\begin{spreadtab}{{tabular}{|*3{>{$}r<{$}}|}}\hline
+@x & @y & @\text{Average}\\\hline
+5 & -4 & (a2+b2)/2\\
+-6.1 & -8 & (a3+b3)/2\\
+9.85 & 3.7 & (a4+b4)/2\\\hline
+\end{spreadtab}
+\end{minipage}
+
+\subsection{Number formatting and the {\ttfamily fp} package}
+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/}{\texttt{\textbf{fp}}} package. This package provides all necessary along with various scientific and trigonometric functions. Calculations are made with 18 decimal digits of precision, and \falseverb{fp} displays \emph{all} the decimals!
+
+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 \verb=fp= can round or truc 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 if necessary.
+\end{itemize}
+In this example, floating point numbers are rounded to 6 digits:\par\nobreak
+\begin{lstlisting}
+\STautoround{6}
+\begin{spreadtab}{{tabular}{|l|*7{>{\centering\arraybackslash}m{1.35cm}|}}}
+\hline
+@$x$ & 1 & 2 & 3 & 4 & 5 & 6 & 7 \\\hline
+@$x^{-1}$& 1/b1 & 1/c1 & 1/d1 & 1/e1 & 1/f1 & 1/g1 & 1/h1\\\hline
+\end{spreadtab}\medskip
+
+\STautoround*{6}
+\begin{spreadtab}{{tabular}{|l|*7{>{\centering\arraybackslash}m{1.35cm}|}}}
+\hline
+@$x$ & 1 & 2 & 3 & 4 & 5 & 6 & 7 \\\hline
+@$x^{-1}$& 1/b1 & 1/c1 & 1/d1 & 1/e1 & 1/f1 & 1/g1 & 1/h1\\\hline
+\end{spreadtab}
+\end{lstlisting}
+\begin{center}
+\STautoround{6}
+\begin{spreadtab}{{tabular}{|l|*7{>{\centering\arraybackslash}m{1.35cm}|}}}
+\hline
+@$x$ & 1 & 2 & 3 & 4 & 5 & 6 & 7 \\\hline
+@$x^{-1}$& 1/b1 & 1/c1 & 1/d1 & 1/e1 & 1/f1 & 1/g1 & 1/h1\\\hline
+\end{spreadtab}\medskip
+
+\STautoround*{6}
+\begin{spreadtab}{{tabular}{|l|*7{>{\centering\arraybackslash}m{1.35cm}|}}}
+\hline
+@$x$ & 1 & 2 & 3 & 4 & 5 & 6 & 7 \\\hline
+@$x^{-1}$& 1/b1 & 1/c1 & 1/d1 & 1/e1 & 1/f1 & 1/g1 & 1/h1\\\hline
+\end{spreadtab}
+\end{center}
+
+All the numbers contained in the final table, either typed as is or coming from a calculation are processed by the macro\verbinline-\STprintnum-. By default, this macro has no effect on its argument and is defined this way:
+\begin{center}
+ \verbinline-\newcommand\STprintnum[1]{#1}-
+\end{center}
+It is possible to round all the numbers via the \verbinline-\numprint- command from the \verb-numprint- package. To achive this, the \verbinline-\STprintnum- command must be redefined:\par\nobreak
+\begin{lstlisting}
+\renewcommand\STprintnum[1]{\numprint{#1}}
+\nprounddigits{6}
+\begin{spreadtab}{{tabular}{cccccccc}}
+@$x$ & 1 & 2 & 3 & 4 & 5 & 6 &7 \\\hline
+@$1/x$ &1/b1&1/c1&1/d1&1/e1&1/f1&1/g1&1/h1
+\end{spreadtab}
+\end{lstlisting}
+\begin{center}
+\renewcommand\STprintnum[1]{\numprint{#1}}
+\nprounddigits{6}
+\begin{spreadtab}{{tabular}{cccccccc}}
+@$x$ & 1 & 2 & 3 & 4 & 5 & 6 &7 \\\hline
+@$1/x$ &1/b1&1/c1&1/d1&1/e1&1/f1&1/g1&1/h1
+\end{spreadtab}
+\end{center}
+
+Here is another similar example where we test if the number to display is negative with the command \verbinline-\FPifneg- from the \verb-fp- package. If this happens, the number is displayed in red. The command \verbinline-\STautoround- was preferred to \verbinline-\nprounddigits- from the \verb-numprint- package because the latter it adds unnecessary 0's.
+\begin{lstlisting}
+\STsetdecimalsep{.}
+\renewcommand\STprintnum[1]{\FPifneg{#1}\color{red}\fi\numprint{#1}}
+\STautoround{6}
+\begin{spreadtab}{{tabular}{cccccccc}}
+@$x$ & -1 & 2 & -3 & 4 & -5 & 6 & -7 \\\hline
+@$1/x$ &1/b1&1/c1&1/d1&1/e1&1/f1&1/g1&1/h1
+\end{spreadtab}
+\end{lstlisting}
+\begin{center}
+\STsetdecimalsep{.}
+\renewcommand\STprintnum[1]{\FPifneg{#1}\color{red}\fi\numprint{#1}}
+\STautoround{6}
+\begin{spreadtab}{{tabular}{cccccccc}}
+@$x$ & -1 & 2 & -3 & 4 & -5 & 6 & -7 \\\hline
+@$1/x$ &1/b1&1/c1&1/d1&1/e1&1/f1&1/g1&1/h1
+\end{spreadtab}
+\end{center}
+
\subsection{End of lines and horizontal rules}
\ST recognizes the usual line breaks and horizontal rules \verb|\\| and \verb|\hline|. It is also possible to specify the optional argument in line break: \verb-\\[<dimension>]-.
@@ -602,7 +747,7 @@ Example in the mixed cell \verb-c1-:
The chars used to delimit the reference are set to "\verb-<<-" and "\verb->>-" by default. They can be modified with the \verbinline-\STsetdisplaymarks- command whose arguments contain the left and right delimiters. For example, if you write \verbinline-\STsetdisplaymarks{|}{|}-, you will write \verb-|reference|- in order to display the content of the numeric field of the cell \verb-reference-.
\subsection{The use of \ttfamily\textbackslash multicolumn}
-\ST is compatible with the syntax \verbinline=\multicolumn{<number>}{<type>}{<content>}= which merges \falseverb{<number>} cells in unique cell whose type and content are specified in the arguments.
+\ST is compatible with the syntax \verbinline=\multicolumn{<n>}{<type>}{<content>}= which merges \falseverb{<n>} cells in a unique cell whose type and content are specified in the arguments.
Even when using \verbinline=\multicolumn=, \ST maintains some consistency in the references. In this table where \verbinline-\multicolumn- is used, the absolute references are displayed:\par\nobreak
\begin{center}
@@ -636,107 +781,6 @@ In this example, every number in the top line is the product of the 2 numbers be
\end{center}
The marker `\falseverb{:=}' is necessary in every cell where the command \verbinline-\multicolumn- is written. Without it, \ST would consider that the whole cell (i.e. \verb-\multicolumn{2}{|c|}{<formula>}-) as the formula, which is impossible to calculate.
-\subsection{Number formatting and the {\ttfamily fp} package}
-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/}{\texttt{\textbf{fp}}} package. This package provides all necessary along with various scientific and trigonometric functions. Calculations are made with 18 decimal digits of precision, and \falseverb{fp} displays \emph{all} the decimals!
-
-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 \verb=fp= can round or truc 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 if necessary.
-\end{itemize}
-In this example, floating point numbers are rounded to 6 digits:\par\nobreak
-\begin{lstlisting}
-\STautoround{6}
-\begin{spreadtab}{{tabular}{|l|*7{>{\centering\arraybackslash}m{1.35cm}|}}}
-\hline
-@$x$ & 1 & 2 & 3 & 4 & 5 & 6 & 7 \\\hline
-@$x^{-1}$& 1/b1 & 1/c1 & 1/d1 & 1/e1 & 1/f1 & 1/g1 & 1/h1\\\hline
-\end{spreadtab}\medskip
-
-\STautoround*{6}
-\begin{spreadtab}{{tabular}{|l|*7{>{\centering\arraybackslash}m{1.35cm}|}}}
-\hline
-@$x$ & 1 & 2 & 3 & 4 & 5 & 6 & 7 \\\hline
-@$x^{-1}$& 1/b1 & 1/c1 & 1/d1 & 1/e1 & 1/f1 & 1/g1 & 1/h1\\\hline
-\end{spreadtab}
-\end{lstlisting}
-\begin{center}
-\STautoround{6}
-\begin{spreadtab}{{tabular}{|l|*7{>{\centering\arraybackslash}m{1.35cm}|}}}
-\hline
-@$x$ & 1 & 2 & 3 & 4 & 5 & 6 & 7 \\\hline
-@$x^{-1}$& 1/b1 & 1/c1 & 1/d1 & 1/e1 & 1/f1 & 1/g1 & 1/h1\\\hline
-\end{spreadtab}\medskip
-
-\STautoround*{6}
-\begin{spreadtab}{{tabular}{|l|*7{>{\centering\arraybackslash}m{1.35cm}|}}}
-\hline
-@$x$ & 1 & 2 & 3 & 4 & 5 & 6 & 7 \\\hline
-@$x^{-1}$& 1/b1 & 1/c1 & 1/d1 & 1/e1 & 1/f1 & 1/g1 & 1/h1\\\hline
-\end{spreadtab}
-\end{center}
-
-\subsection{Decimal seprarator}
-The \verb-fp- return its results with the decimal point separator. After the job of \verb-fp-, \ST can change this decimal separator: everything happens as if the results returned by \verb-fp- were taking this into account. The command \verbinline-\STsetdecimalsep- take a mandatory argument which is the char used as decimal separator:
-\begin{center}
-\verbinline-\STsetdecimalsep-\verb-{<char}-
-\end{center}
-For exemple, french users should write this in the preamble of the document:
-\begin{center}
-\verbinline-\STsetdecimalsep{,}-
-\end{center}
-For numeric field located in math mode, the comma is considered as a math punctuation, which explains why it is followed by a space. To pevent this behaviour, it can be written inside brackets:
-
-\begin{minipage}{0.65\linewidth}
-\begin{lstlisting}[backgroundcolor=\color{ST@codebckgcolor}]
-3,14 is not displayed like $3,14$.\par
-3,14 is displayed like $3{,}14$
-\end{lstlisting}
-\end{minipage}\hfill
-\begin{minipage}{0.35\linewidth}
-3,14 is not displayed like $3,14$.\par
-3,14 is displayed like $3{,}14$
-\end{minipage}%
-
-When cells are in math mode, you can\footnote{It is preferable to use the \texttt{numprint} package to format the results. You can also change the math code of the comma: \texttt{\textbackslash mathcode`,="013B\textbackslash relax}. This trick puts the comma in the class 0 of the ordinary signs while its naturally class is 6 (punctuation signs).} use this feature and ask \ST to replace the decimal point by a comma inside braces with the command \verbinline-\STsetdecimalsep{{,}}-. In these tables where each cell is in math mode, the space after the commas are neutralized in the second table:
-
-\begin{minipage}{0.65\linewidth}
-\begin{lstlisting}
-\STsetdecimalsep{,}
-\begin{spreadtab}{{tabular}{|*3{>{$}r<{$}}|}}\hline
-@x & @y & @\text{Average}\\\hline
-5 & -4 & (a2+b2)/2\\
--6.1 & -8 & (a3+b3)/2\\
-9.85 & 3.7 & (a4+b4)/2\\\hline
-\end{spreadtab}\par\smallskip
-\STsetdecimalsep{{,}}
-\begin{spreadtab}{{tabular}{|*3{>{$}r<{$}}|}}\hline
-@x & @y & @\text{Average}\\\hline
-5 & -4 & (a2+b2)/2\\
--6.1 & -8 & (a3+b3)/2\\
-9.85 & 3.7 & (a4+b4)/2\\\hline
-\end{spreadtab}
-\end{lstlisting}
-\end{minipage}%
-\begin{minipage}{0.35\linewidth}
-\centering
-\STsetdecimalsep{,}
-\begin{spreadtab}{{tabular}{|*3{>{$}r<{$}}|}}\hline
-@x & @y & @\text{Average}\\\hline
-5 & -4 & (a2+b2)/2\\
--6.1 & -8 & (a3+b3)/2\\
-9.85 & 3.7 & (a4+b4)/2\\\hline
-\end{spreadtab}\par\smallskip
-\STsetdecimalsep{{,}}
-\begin{spreadtab}{{tabular}{|*3{>{$}r<{$}}|}}\hline
-@x & @y & @\text{Average}\\\hline
-5 & -4 & (a2+b2)/2\\
--6.1 & -8 & (a3+b3)/2\\
-9.85 & 3.7 & (a4+b4)/2\\\hline
-\end{spreadtab}
-\end{minipage}
-
\section{Macro-functions}
The \falseverb{fp} package provides a limited set of operations and functions. If these are not sufficient then \ST allows the advanced programmer to write macros using the operations and functions of \falseverb{fp}. This section presents the macro-functions currently available\footnote{Many others should be written soon and be available in future versions of the package.}. There will be more details on how to program macro functions in the next version of this manual.
@@ -880,7 +924,7 @@ The macro function "scitodec" enables to convert a number written in scientific
\item a sequence of characters with the syntax \verb-<mantissa>EE<exponent>- where \verb-<mantissa>- is a decimal number and the \verb-<exponent>- is an integer. The "E" may be written uppercase or lowercase.
\verb-<mantissa>EE<exponent>- means the number $\text{\ttfamily <mantissa>}\times10^{\text{\ttfamily <exponent>}}$
- \item a reference to the \emph{textual} field of a cell which must contain characters written with the syntax \verb-<mantissa>EE<exponent>-
+ \item a reference to the \emph{textual} field of a cell which containing \verb-<mantissa>EE<exponent>-
\end{itemize}
Example :
\begin{lstlisting}
@@ -910,6 +954,7 @@ Example :
The simplest macro functions is "\verbinline=id(<number>)=". It returns the number in its argument. Mathematically, it is not very usefull, but with \ST, it makes possible to write mathematical expressions in arguments of macro function where they are not allowed. In the argument of \verbinline=sum= for example.
In the code below, the \verbinline-id- macro function is used to compute the range of cell to add with \verbinline-sum-. In this example, the numeric field of the cell "a2" contains 8. Therefore, "\verbinline=sum([0,-1]:[id(a2-1),-1])/a2=" is equivalent to \verbinline=sum([0,-1]:[7,-1])/8=:
+
\begin{lstlisting}
\begin{spreadtab}{{tabular}{r*{10}c}}
@Integers & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\\
@@ -1251,7 +1296,7 @@ In the debugging tables, cells containing the coordinates are grayed if the pack
\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}
-In these tables, lots of tricks (struts, \verbinline-\multicolumn- commands) and packages (including the numprint package and its columns 'N`, which aligns the decimal points) were used to obtain a satisfactory result. The code is sometimes cumbersome and difficult to read, but these tables are not basic but well-groomed examples! For readability, the command \verbinline-\STcopy- is not used.
+In these tables, lots of tricks (struts, \verbinline-\multicolumn- commands) and packages (including the numprint package and its columns 'N`, which aligns the decimal points) were used to obtain a satisfactory result. The code is sometimes cumbersome and difficult to read, but these tables are not basic but well-groomed examples!
\subsection{The Pascal's triangle again!}
\begin{lstlisting}
@@ -1283,36 +1328,38 @@ For people familiar with maths, here is the series of the exponential. Indeed,
and this table shows the speed of convergence for $x=0.5$
\begin{lstlisting}
\STautoround{15}
-\begin{spreadtab}[\STsavecell\xvalue{a1}]{{tabular}{cN{2}{15}}}
-\multicolumn{2}{c}{Convergence for $x=\color{red}{\numprint{:={0.5}}}$}\\[1.5ex]
-@$n$ & e^a1\SThidecol & \hfill{@ $\displaystyle e^{\numprint\xvalue}-\sum_{k=0}^n\frac{\numprint\xvalue^k}{k!}$}\hfill\\[3ex]\hline
-\color{red}:={0}& a1^[-1,0]/fact([-1,0]) & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\\hline
+\renewcommand\STprintnum[1]{\numprint{#1}}
+\begin{spreadtab}{{tabular}{cc}}
+\multicolumn{2}{c}{Convergence at $x=\color{red}:={0.5}$}\\[1.5ex]
+@$n$ & e^a1\SThidecol & @ $\displaystyle e^{\numprint{<<a1>>}}-\sum_{k=0}^n\frac{\numprint{<<a1>>}^k}{k!}$\\[3ex]\hline
+\color{red}:={0}& a1^[-1,0]/fact([-1,0]) & \STcopy{v}{b!2-b3}\\
+\STcopy{v}{a3+1}& \STcopy{v}{a!1^a4/fact(a4)+b3}& \\
+ & & \\
+ & & \\
+ & & \\
+ & & \\
+ & & \\
+ & & \\
+ & & \\
+ & & \\\hline
\end{spreadtab}
\end{lstlisting}
\begin{center}
\STautoround{15}
-\begin{spreadtab}[\STsavecell\xvalue{a1}]{{tabular}{cN{2}{15}}}
-\multicolumn{2}{c}{Convergence for $x=\color{red}{\numprint{:={0.5}}}$}\\[1.5ex]
-@$n$ & e^a1\SThidecol & \hfill{@ $\displaystyle e^{\numprint\xvalue}-\sum_{k=0}^n\frac{\numprint\xvalue^k}{k!}$}\hfill\\[3ex]\hline
-\color{red}:={0}& a1^[-1,0]/fact([-1,0]) & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\\hline
+\renewcommand\STprintnum[1]{\numprint{#1}}
+\begin{spreadtab}{{tabular}{cc}}
+\multicolumn{2}{c}{Convergence at $x=\color{red}:={0.5}$}\\[1.5ex]
+@$n$ & e^a1\SThidecol & @ $\displaystyle e^{\numprint{<<a1>>}}-\sum_{k=0}^n\frac{\numprint{<<a1>>}^k}{k!}$\\[3ex]\hline
+\color{red}:={0}& a1^[-1,0]/fact([-1,0]) & \STcopy{v}{b!2-b3}\\
+\STcopy{v}{a3+1}& \STcopy{v}{a!1^a4/fact(a4)+b3}& \\
+ & & \\
+ & & \\
+ & & \\
+ & & \\
+ & & \\
+ & & \\
+ & & \\
+ & & \\\hline
\end{spreadtab}
\end{center}
@@ -1322,53 +1369,49 @@ In mathematical terms, the sequence $F_n$ of Fibonacci numbers is defined by the
The golden ratio is the limit of the ratios of successive terms of the Fibonacci sequence. We show here that the quotients $F_{n+1}/F_n$ approximate the golden ration $\varphi=\frac{1+\sqrt{5}}{2}$ alternately lower and higher than $\varphi$.\par\nobreak
\begin{lstlisting}
\STautoround{9}
-$
-\begin{spreadtab}{{matrix}{}}
-@n & @F_n & @\dfrac{F_n}{F_{n-1}} & @\varphi-\dfrac{F_n}{F_{n-1}}\\[2ex]\hline
-\color{red}:=1 & \color{red}:=1 & & \\
-[0,-1]+1 & \color{red}:=1 & [-1,0]/[-1,-1] & (1+5^0.5)/2-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\\hline
-\end{spreadtab}
-$
+$\begin{spreadtab}{{array}{ccN39N{3}{9}}}
+@n & @F_n & @\hfill{\dfrac{F_n}{F_{n-1}}}\hfill\null& @\hfill{\varphi-\dfrac{F_n}{F_{n-1}}}\hfill\null\\[2ex]\hline
+\color{red}:=1 & \color{red}:=1 & & \\
+\STcopy{v}{a2+1} & \color{red}:=1 & \STcopy{v}{b3/b2} & (1+5^0.5)/2-[-1,0] \\
+ & \STcopy{v}{b2+b3} & & \STcopy{v}{d!3+1-c4} \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\\hline
+\end{spreadtab}$
\end{lstlisting}
\begin{center}
\STautoround{9}
-$
-\begin{spreadtab}{{matrix}{}}
-@n & @F_n & @\dfrac{F_n}{F_{n-1}} & @\varphi-\dfrac{F_n}{F_{n-1}}\\[2ex]\hline
-\color{red}:=1 & \color{red}:=1 & & \\
-[0,-1]+1 & \color{red}:=1 & [-1,0]/[-1,-1] & (1+5^0.5)/2-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\\hline
-\end{spreadtab}
-$
+$\begin{spreadtab}{{array}{ccN39N{3}{9}}}
+@n & @F_n & @\hfill{\dfrac{F_n}{F_{n-1}}}\hfill\null& @\hfill{\varphi-\dfrac{F_n}{F_{n-1}}}\hfill\null\\[2ex]\hline
+\color{red}:=1 & \color{red}:=1 & & \\
+\STcopy{v}{a2+1} & \color{red}:=1 & \STcopy{v}{b3/b2} & (1+5^0.5)/2-[-1,0] \\
+ & \STcopy{v}{b2+b3} & & \STcopy{v}{d!3+1-c4} \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\\hline
+\end{spreadtab}$
\end{center}
\subsection{A billing table}
diff --git a/Master/texmf-dist/doc/latex/spreadtab/spreadtab_doc_fr.pdf b/Master/texmf-dist/doc/latex/spreadtab/spreadtab_doc_fr.pdf
index 4da9abbdcd0..66f4838f5d5 100644
--- a/Master/texmf-dist/doc/latex/spreadtab/spreadtab_doc_fr.pdf
+++ b/Master/texmf-dist/doc/latex/spreadtab/spreadtab_doc_fr.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spreadtab/spreadtab_doc_fr.tex b/Master/texmf-dist/doc/latex/spreadtab/spreadtab_doc_fr.tex
index ec155119bd1..7436cc0a385 100644
--- a/Master/texmf-dist/doc/latex/spreadtab/spreadtab_doc_fr.tex
+++ b/Master/texmf-dist/doc/latex/spreadtab/spreadtab_doc_fr.tex
@@ -1,9 +1,9 @@
% ____________________________________________________________________________
% | |
% | |
-% | spreadtab v0.3a |
+% | spreadtab v0.3c |
% | |
-% | May 15, 2010 |
+% | 8 avril 2011 |
% | |
% |___________________________________________________________________________|
%
@@ -27,7 +27,9 @@
\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
-\usepackage{lmodern}
+\usepackage{libertine}
+\renewcommand*\oldstylenums[1]{{\fontfamily{fxlj}\selectfont #1}}
+\usepackage[scaled=0.8]{luximono}
\usepackage[a4paper,margin=2.6cm]{geometry}
\usepackage{amsmath,amssymb}
\usepackage{textcomp}
@@ -70,7 +72,7 @@
numbersep=1em,classoffset=1,%
morekeywords={% les macros et commandes de spreadtab
spreadtab,SThiderow,SThidecol,STsavecell,STautoround,STmessage,STsetdecimalsep,STtransposecar,STdebug,STdisplaytab,STsetdisplaymarks,%
- STnumericfieldmarker,STtextcell,STcopy,fact,id,ifeq,ifgt,iflt,numtofrshortdate,%
+ STnumericfieldmarker,STprintnum,STtextcell,STcopy,fact,id,ifeq,ifgt,iflt,numtofrshortdate,%
numtoengshortdate,numtofrlongdate,numtoenglongdate,numtofrmonth,%
numtoengmonth,numtofrday,numtoengday,sum,rand,randint,sumprod,%
frshortdatetonum,engshortdatetonum,englongdatetonum,frlongdatetonum,gcd,lcm},%
@@ -454,6 +456,149 @@ X\STcopy{>}{a1+1}Y & @XY & X:={}Y & \textbf{:={}} & & \\\hline
\end{center}
\section{Mise en forme du tableau}
+\subsection{Séparateur décimal}
+Le package \verb-fp- renvoie ses résultats décimaux avec le point comme séparateur décimal. Il est possible de changer ce séparateur décimal de telle sorte que tout se passe comme si les résultats retournés par \verb-fp- en tenaient compte. L'instruction \verbinline-\STsetdecimalsep- permet de changer le séparateur décimal en n'importe quel caractère en utilisant la syntaxe :
+\begin{center}
+\verbinline-\STsetdecimalsep-\verb-{<caractère>}-
+\end{center}
+Pour une utilisation en langue française, il faut donc inclure dans le préambule cette ligne :
+\begin{center}
+\verbinline-\STsetdecimalsep{,}-
+\end{center}
+Pour les champs numériques se trouvant en mode math, il faut noter que la virgule n'est pas neutre dans ce mode. En effet, elle est considérée comme une ponctuation ce qui explique qu'elle est suivie d'une espace. Pour neutraliser cet espace, on peut mettre cette virgule entre accolades comme on le voit dans ce code :
+
+\begin{minipage}{0.65\linewidth}
+\begin{lstlisting}[escapechar=Z,backgroundcolor=\color{ST@codebckgcolor}]
+3,14 n'est pas affichZéZ comme $3,14$.\par
+3,14 est affichZéZ comme $3{,}14$
+\end{lstlisting}
+\end{minipage}\hfill
+\begin{minipage}{0.35\linewidth}
+3,14 n'est pas affiché comme $3,14$.\par
+3,14 est affiché comme $3{,}14$
+\end{minipage}%
+
+Lorsque des cellules sont en mode math, on peut\footnote{Il est cependant préférable d'utiliser le package \texttt{numprint} pour formatter les résultats. On peut aussi modifier le code mathématique de la virgule : \texttt{\textbackslash mathcode`,="013B\textbackslash relax}. Cette modification, réservée aux utilisateurs avertis, fait entrer la virgule dans la classe 0 des signes ordinaires alors qu'elle est naturellement dans la classe 6 des signes de ponctuation.} s'inspirer de cette propriété et demander à \ST de remplacer le point décimal par une virgule entre accolades avec la commande \verbinline-\STsetdecimalsep{{,}}-. Dans ces deux tableaux où chaque cellule est en mode math, on constate que l'espacement après la virgule est neutralisé pour le second :
+
+\begin{minipage}{0.65\linewidth}
+\begin{lstlisting}
+\STsetdecimalsep{,}
+\begin{spreadtab}{{tabular}{|*3{>{$}r<{$}}|}}\hline
+@x & @y & @\text{Moyenne}\\\hline
+5 & -4 & (a2+b2)/2\\
+-6.1 & -8 & (a3+b3)/2\\
+9.85 & 3.7 & (a4+b4)/2\\\hline
+\end{spreadtab}\par\smallskip
+\STsetdecimalsep{{,}}
+\begin{spreadtab}{{tabular}{|*3{>{$}r<{$}}|}}\hline
+@x & @y & @\text{Moyenne}\\\hline
+5 & -4 & (a2+b2)/2\\
+-6.1 & -8 & (a3+b3)/2\\
+9.85 & 3.7 & (a4+b4)/2\\\hline
+\end{spreadtab}
+\end{lstlisting}
+\end{minipage}%
+\begin{minipage}{0.35\linewidth}
+\centering
+\STsetdecimalsep{,}
+\begin{spreadtab}{{tabular}{|*3{>$r<$}|}}\hline
+@x & @y & @\text{Moyenne}\\\hline
+5 & -4 & (a2+b2)/2\\
+-6.1 & -8 & (a3+b3)/2\\
+9.85 & 3.7 & (a4+b4)/2\\\hline
+\end{spreadtab}\par\smallskip
+\STsetdecimalsep{{,}}
+\begin{spreadtab}{{tabular}{|*3{>$r<$}|}}\hline
+@x & @y & @\text{Moyenne}\\\hline
+5 & -4 & (a2+b2)/2\\
+-6.1 & -8 & (a3+b3)/2\\
+9.85 & 3.7 & (a4+b4)/2\\\hline
+\end{spreadtab}
+\end{minipage}
+
+\subsection{Mise en forme des nombres}
+Comme cela a été précisé, 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 \og\falseverb{a1+b1}\fg{} est équivalente aux formules postfixes \og\falseverb{a1 b1 add}\fg{} ou \og\falseverb{a1 b1 +}\fg.}. 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.
+
+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 demander à \verb=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.
+\end{itemize}
+Voici un exemple simple des nombres de 1 à 7 et leurs inverses, arrondis à $10^{-6}$ :\par\nobreak
+\begin{lstlisting}
+\STautoround{6}
+\begin{spreadtab}{{tabular}{|l|*7{>{\centering\arraybackslash}m{1.35cm}|}}}
+\hline
+@$x$ & 1 & 2 & 3 & 4 & 5 & 6 & 7 \\\hline
+@$x^{-1}$& 1/b1 & 1/c1 & 1/d1 & 1/e1 & 1/f1 & 1/g1 & 1/h1\\\hline
+\end{spreadtab}\medskip
+
+\STautoround*{6}
+\begin{spreadtab}{{tabular}{|l|*7{>{\centering\arraybackslash}m{1.35cm}|}}}
+\hline
+@$x$ & 1 & 2 & 3 & 4 & 5 & 6 & 7 \\\hline
+@$x^{-1}$& 1/b1 & 1/c1 & 1/d1 & 1/e1 & 1/f1 & 1/g1 & 1/h1\\\hline
+\end{spreadtab}
+\end{lstlisting}
+\begin{center}
+\STautoround{6}
+\begin{spreadtab}{{tabular}{|l|*7{>{\centering\arraybackslash}m{1.35cm}|}}}
+\hline
+@$x$ & 1 & 2 & 3 & 4 & 5 & 6 & 7 \\\hline
+@$x^{-1}$& 1/b1 & 1/c1 & 1/d1 & 1/e1 & 1/f1 & 1/g1 & 1/h1\\\hline
+\end{spreadtab}\medskip
+
+\STautoround*{6}
+\begin{spreadtab}{{tabular}{|l|*7{>{\centering\arraybackslash}m{1.35cm}|}}}
+\hline
+@$x$ & 1 & 2 & 3 & 4 & 5 & 6 & 7 \\\hline
+@$x^{-1}$& 1/b1 & 1/c1 & 1/d1 & 1/e1 & 1/f1 & 1/g1 & 1/h1\\\hline
+\end{spreadtab}
+\end{center}
+
+Tous les nombres contenus dans le tableau final, qu'ils aient été saisis tels quels ou qu'ils proviennent du résultat d'un calcul sont traités par la macro \verbinline-\STprintnum-. Par défaut, cette macro n'a aucun effet et est programmée de la façon suivante :
+\begin{center}
+ \verbinline-\newcommand\STprintnum[1]{#1}-
+\end{center}
+Il est possible d'arrondir tous les nombres via la commande \verbinline-\numprint- du package \verb-\numprint-. Pour ce faire, il faut redéfinir la macro \verbinline-\STprintnum- de cette façon :\par\nobreak
+\begin{lstlisting}
+\renewcommand\STprintnum[1]{\numprint{#1}}
+\nprounddigits{6}
+\begin{spreadtab}{{tabular}{cccccccc}}
+@$x$ & 1 & 2 & 3 & 4 & 5 & 6 &7 \\\hline
+@$1/x$ &1/b1&1/c1&1/d1&1/e1&1/f1&1/g1&1/h1
+\end{spreadtab}
+\end{lstlisting}
+\begin{center}
+\renewcommand\STprintnum[1]{\numprint{#1}}
+\nprounddigits{6}
+\begin{spreadtab}{{tabular}{cccccccc}}
+@$x$ & 1 & 2 & 3 & 4 & 5 & 6 &7 \\\hline
+@$1/x$ &1/b1&1/c1&1/d1&1/e1&1/f1&1/g1&1/h1
+\end{spreadtab}
+\end{center}
+
+Voici un autre exemple similaire où l'on teste si le nombre à afficher est négatif avec la commande \verbinline-\FPifneg- du package \verb-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}}
+\STautoround{6}
+\begin{spreadtab}{{tabular}{cccccccc}}
+@$x$ & -1 & 2 & -3 & 4 & -5 & 6 & -7 \\\hline
+@$1/x$ &1/b1&1/c1&1/d1&1/e1&1/f1&1/g1&1/h1
+\end{spreadtab}
+\end{lstlisting}
+\begin{center}
+\STsetdecimalsep{.}
+\renewcommand\STprintnum[1]{\FPifneg{#1}\color{red}\fi\numprint{#1}}
+\STautoround{6}
+\begin{spreadtab}{{tabular}{cccccccc}}
+@$x$ & -1 & 2 & -3 & 4 & -5 & 6 & -7 \\\hline
+@$1/x$ &1/b1&1/c1&1/d1&1/e1&1/f1&1/g1&1/h1
+\end{spreadtab}
+\end{center}
+
\subsection{Retours à la ligne et filets horizontaux}
Pour bien délimiter la fin d'une ligne, \ST est contraint de reconnaître les retours à la ligne et les filets horizontaux. Ce package permet d'utiliser dans le tableau l'argument optionnel de \verb-\\- de cette façon : \verb-\\[<dimension>]-.
@@ -634,108 +779,7 @@ Voici un exemple où chaque nombre de la ligne du haut est le produit des 2 nomb
\multicolumn{2}{|K{1}}{:=8}&\multicolumn{2}{|K{1}}{:=7}&\multicolumn{2}{|K{1}|}{:=6}\\\hline
\end{spreadtab}
\end{center}
-On remarque que le marqueur de champ numérique \og\falseverb{:=}\fg{} est nécessaire dans chaque cellule où se trouve la commande \verbinline-\multicolumn-. En effet, si ce marquer n'existait pas la totalite de la cellule, c'est-à-dire \verb-\multicolumn{2}{|c|}{<formule>}- serait considérée comme étant une formule.
-
-\subsection{Package \ttfamily fp}
-Comme cela a été précisé, 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 \og\falseverb{a1+b1}\fg{} est équivalente aux formules postfixes \og\falseverb{a1 b1 add}\fg{} ou \og\falseverb{a1 b1 +}\fg.}. 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.
-
-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 demander à \verb=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.
-\end{itemize}
-Voici un exemple simple des nombres de 1 à 7 et leurs inverses, arrondis à $10^{-6}$ :\par\nobreak
-\begin{lstlisting}
-\STautoround{6}
-\begin{spreadtab}{{tabular}{|l|*7{>{\centering\arraybackslash}m{1.35cm}|}}}
-\hline
-@$x$ & 1 & 2 & 3 & 4 & 5 & 6 & 7 \\\hline
-@$x^{-1}$& 1/b1 & 1/c1 & 1/d1 & 1/e1 & 1/f1 & 1/g1 & 1/h1\\\hline
-\end{spreadtab}\medskip
-
-\STautoround*{6}
-\begin{spreadtab}{{tabular}{|l|*7{>{\centering\arraybackslash}m{1.35cm}|}}}
-\hline
-@$x$ & 1 & 2 & 3 & 4 & 5 & 6 & 7 \\\hline
-@$x^{-1}$& 1/b1 & 1/c1 & 1/d1 & 1/e1 & 1/f1 & 1/g1 & 1/h1\\\hline
-\end{spreadtab}
-\end{lstlisting}
-\begin{center}
-\STautoround{6}
-\begin{spreadtab}{{tabular}{|l|*7{>{\centering\arraybackslash}m{1.35cm}|}}}
-\hline
-@$x$ & 1 & 2 & 3 & 4 & 5 & 6 & 7 \\\hline
-@$x^{-1}$& 1/b1 & 1/c1 & 1/d1 & 1/e1 & 1/f1 & 1/g1 & 1/h1\\\hline
-\end{spreadtab}\medskip
-
-\STautoround*{6}
-\begin{spreadtab}{{tabular}{|l|*7{>{\centering\arraybackslash}m{1.35cm}|}}}
-\hline
-@$x$ & 1 & 2 & 3 & 4 & 5 & 6 & 7 \\\hline
-@$x^{-1}$& 1/b1 & 1/c1 & 1/d1 & 1/e1 & 1/f1 & 1/g1 & 1/h1\\\hline
-\end{spreadtab}
-\end{center}
-
-\subsection{Séparateur décimal}
-Le package \verb-fp- renvoie ses résultats décimaux avec le point comme séparateur décimal. Il est possible de changer ce séparateur décimal de telle sorte que tout se passe comme si les résultats retournés par \verb-fp- en tenaient compte. L'instruction \verbinline-\STsetdecimalsep- permet de changer le séparateur décimal en n'importe quel caractère en utilisant la syntaxe :
-\begin{center}
-\verbinline-\STsetdecimalsep-\verb-{<caractère>}-
-\end{center}
-Pour une utilisation en langue française, il faut donc inclure dans le préambule cette ligne :
-\begin{center}
-\verbinline-\STsetdecimalsep{,}-
-\end{center}
-Pour les champs numériques se trouvant en mode math, il faut noter que la virgule n'est pas neutre dans ce mode. En effet, elle est considérée comme une ponctuation ce qui explique qu'elle est suivie d'une espace. Pour neutraliser cet espace, on peut mettre cette virgule entre accolades comme on le voit dans ce code :
-
-\begin{minipage}{0.65\linewidth}
-\begin{lstlisting}[escapechar=Z,backgroundcolor=\color{ST@codebckgcolor}]
-3,14 n'est pas affichZéZ comme $3,14$.\par
-3,14 est affichZéZ comme $3{,}14$
-\end{lstlisting}
-\end{minipage}\hfill
-\begin{minipage}{0.35\linewidth}
-3,14 n'est pas affiché comme $3,14$.\par
-3,14 est affiché comme $3{,}14$
-\end{minipage}%
-
-Lorsque des cellules sont en mode math, on peut\footnote{Il est cependant préférable d'utiliser le package \texttt{numprint} pour formatter les résultats. On peut aussi modifier le code mathématique de la virgule : \texttt{\textbackslash mathcode`,="013B\textbackslash relax}. Cette modification, réservée aux utilisateurs avertis, fait entrer la virgule dans la classe 0 des signes ordinaires alors qu'elle est naturellement dans la classe 6 des signes de ponctuation.} s'inspirer de cette propriété et demander à \ST de remplacer le point décimal par une virgule entre accolades avec la commande \verbinline-\STsetdecimalsep{{,}}-. Dans ces deux tableaux où chaque cellule est en mode math, on constate que l'espacement après la virgule est neutralisé pour le second :
-
-\begin{minipage}{0.65\linewidth}
-\begin{lstlisting}
-\STsetdecimalsep{,}
-\begin{spreadtab}{{tabular}{|*3{>{$}r<{$}}|}}\hline
-@x & @y & @\text{Moyenne}\\\hline
-5 & -4 & (a2+b2)/2\\
--6.1 & -8 & (a3+b3)/2\\
-9.85 & 3.7 & (a4+b4)/2\\\hline
-\end{spreadtab}\par\smallskip
-\STsetdecimalsep{{,}}
-\begin{spreadtab}{{tabular}{|*3{>{$}r<{$}}|}}\hline
-@x & @y & @\text{Moyenne}\\\hline
-5 & -4 & (a2+b2)/2\\
--6.1 & -8 & (a3+b3)/2\\
-9.85 & 3.7 & (a4+b4)/2\\\hline
-\end{spreadtab}
-\end{lstlisting}
-\end{minipage}%
-\begin{minipage}{0.35\linewidth}
-\centering
-\STsetdecimalsep{,}
-\begin{spreadtab}{{tabular}{|*3{>$r<$}|}}\hline
-@x & @y & @\text{Moyenne}\\\hline
-5 & -4 & (a2+b2)/2\\
--6.1 & -8 & (a3+b3)/2\\
-9.85 & 3.7 & (a4+b4)/2\\\hline
-\end{spreadtab}\par\smallskip
-\STsetdecimalsep{{,}}
-\begin{spreadtab}{{tabular}{|*3{>$r<$}|}}\hline
-@x & @y & @\text{Moyenne}\\\hline
-5 & -4 & (a2+b2)/2\\
--6.1 & -8 & (a3+b3)/2\\
-9.85 & 3.7 & (a4+b4)/2\\\hline
-\end{spreadtab}
-\end{minipage}
+On remarque que le marqueur de champ numérique \og\falseverb{:=}\fg{} est nécessaire dans chaque cellule où se trouve la commande \verbinline-\multicolumn-. On comprend en effet que si ce marqueur n'existait pas, la totalite de la cellule, c'est-à-dire \verb-\multicolumn{2}{|c|}{<formule>}- serait considérée comme étant une formule.
\section{Macro-fonctions}
L'extension \falseverb{fp} fournit un nombre conséquent d'opérations et de fonctions. Malgré tout, dans le cadre d'un package comme \ST, celles-ci peuvent être insuffisantes et il est possible au programmeur averti d'écrire des macro-fonctions supplémentaires en utilisant celles fournies par \falseverb{fp}. Cette section présente les macro-fonctions pour l'instant disponibles\footnote{Bien d'autres restent à écrire ! Elles seront disponibles dans des versions futures de \ST.}. Il y aura plus de précisions sur la méthode pour programmer des macro-fonctions dans la prochaine version de ce manuel.
@@ -909,7 +953,7 @@ Exemple :
\subsubsection{Identité}
La plus simple des macros fonctions est \og\verbinline=id(<nombre>)=\fg. Celle-ci renvoie le nombre qui se trouve entre parenthèses. Mathématiquement, elle ne sert pas à grand chose, mais avec \ST, elle permet de passer des expressions mathématiques à des macros qui n'en admettent pas. On peut ainsi s'en servir dans les plages de cellules de \verbinline=sum= par exemple.
-Dans le code ci dessous, la macro \verbinline=id= est utilisée pour déterminer la plage de cellules à additionner avec \verbinline-sum-. Dans cet exemple, la valeur du champ numérique de la cellule a2 vaut 8. Par conséquent, "\verbinline=sum([0,-1]:[id(a2-1),-1])/a2=" est équivalent à \verbinline=sum([0,-1]:[7,-1])/8= :
+Dans le code ci dessous, la macro \verbinline=id= est utilisée pour déterminer la plage de cellules à additionner avec \verbinline-sum-. Dans cet exemple, la valeur du champ numérique de la cellule a2 vaut 8. Et donc, "\verbinline=sum([0,-1]:[id(a2-1),-1])/a2=" est équivalent à \verbinline=sum([0,-1]:[7,-1])/8= :
\begin{lstlisting}
\begin{spreadtab}{{tabular}{r*{10}c}}
@@ -1253,7 +1297,7 @@ Dans les tableaux ci-dessus, les cellules contenant les coordonnées ne sont gri
\section{Exemples}
Voici quelques tableaux pour finir !
-Afin que l'on sache quels nombres sont calculés, seuls les nombres non calculés sont en \textcolor{red}{rouge}. Dans ces tableaux, beaucoup d'artifices (des struts, des multicolumn) et des packages (notamment numprint et ses colonnes \og N\fg{} qui alignent les séparateurs décimaux) ont été utilisés pour obtenir un résultat satisfaisant. Le code est parfois lourd et peu lisible, mais il ne s'agit pas ici d'exemples basiques mais de tableaux peaufinés ! Par souci de lisibilité, la commande \verbinline-\STcopy- n'a pas été utilisée.
+Afin que l'on sache quels nombres sont calculés, seuls les nombres non calculés sont en \textcolor{red}{rouge}. Dans ces tableaux, beaucoup d'artifices (des struts, des multicolumn) et des packages (notamment numprint et ses colonnes \og N\fg{} qui alignent les séparateurs décimaux) ont été utilisés pour obtenir un résultat satisfaisant. Le code est parfois lourd et peu lisible, mais il ne s'agit pas ici d'exemples basiques mais de tableaux peaufinés !
\subsection{Encore un triangle de Pascal}
\begin{lstlisting}
@@ -1285,36 +1329,38 @@ Pour les matheux, il s'agit du développement limité de la fonction exponentiel
et le tableau illustre la rapidité de la convergence au fur et à mesure de l'ordre du développement limité.\par\nobreak
\begin{lstlisting}
\STautoround{15}
-\begin{spreadtab}[\STsavecell\xvalue{a1}]{{tabular}{cN{2}{15}}}
-\multicolumn{2}{c}{Convergence en $x=\color{red}{\numprint{:={0.5}}}$}\\[1.5ex]
-@$n$ & e^a1\SThidecol & \hfill{@ $\displaystyle e^{\numprint\xvalue}-\sum_{k=0}^n\frac{\numprint\xvalue^k}{k!}$}\hfill\\[3ex]\hline
-\color{red}:={0}& a1^[-1,0]/fact([-1,0]) & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\\hline
+\renewcommand\STprintnum[1]{\numprint{#1}}
+\begin{spreadtab}{{tabular}{cc}}
+\multicolumn{2}{c}{Convergence en $x=\color{red}:={0.5}$}\\[1.5ex]
+@$n$ & e^a1\SThidecol & @ $\displaystyle e^{\numprint{<<a1>>}}-\sum_{k=0}^n\frac{\numprint{<<a1>>}^k}{k!}$\\[3ex]\hline
+\color{red}:={0}& a1^[-1,0]/fact([-1,0]) & \STcopy{v}{b!2-b3}\\
+\STcopy{v}{a3+1}& \STcopy{v}{a!1^a4/fact(a4)+b3}& \\
+ & & \\
+ & & \\
+ & & \\
+ & & \\
+ & & \\
+ & & \\
+ & & \\
+ & & \\\hline
\end{spreadtab}
\end{lstlisting}
\begin{center}
\STautoround{15}
-\begin{spreadtab}[\STsavecell\xvalue{a1}]{{tabular}{cN{2}{15}}}
-\multicolumn{2}{c}{Convergence en $x=\color{red}{\numprint{:={0.5}}}$}\\[1.5ex]
-@$n$ & e^a1\SThidecol & \hfill{@ $\displaystyle e^{\numprint\xvalue}-\sum_{k=0}^n\frac{\numprint\xvalue^k}{k!}$}\hfill\\[3ex]\hline
-\color{red}:={0}& a1^[-1,0]/fact([-1,0]) & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\
- [0,-1]+1 & a1^[-1,0]/fact([-1,0])+[0,-1] & b2-[-1,0] \\\hline
+\renewcommand\STprintnum[1]{\numprint{#1}}
+\begin{spreadtab}{{tabular}{cc}}
+\multicolumn{2}{c}{Convergence en $x=\color{red}:={0.5}$}\\[1.5ex]
+@$n$ & e^a1\SThidecol & @ $\displaystyle e^{\numprint{<<a1>>}}-\sum_{k=0}^n\frac{\numprint{<<a1>>}^k}{k!}$\\[3ex]\hline
+\color{red}:={0}& a1^[-1,0]/fact([-1,0]) & \STcopy{v}{b!2-b3}\\
+\STcopy{v}{a3+1}& \STcopy{v}{a!1^a4/fact(a4)+b3}& \\
+ & & \\
+ & & \\
+ & & \\
+ & & \\
+ & & \\
+ & & \\
+ & & \\
+ & & \\\hline
\end{spreadtab}
\end{center}
@@ -1324,53 +1370,49 @@ Voici la définition des nombres de Fibonacci : $F_0=1\qquad F_1=1\qquad F_{n+2}
On va mettre ici en évidence que le quotient de 2 nombres de Fibonacci consécutifs $F_n$ et $F_{n-1}$ tend vers le nombre d'or $\varphi=\frac{1+\sqrt{5}}{2}$ de telle sorte que la suite $u_n=\varphi-\frac{F_n}{F_{n-1}}$ soit alternativement positive et négative.\par\nobreak
\begin{lstlisting}
\STautoround{9}
-$
-\begin{spreadtab}{{matrix}{}}
-@n & @F_n & @\dfrac{F_n}{F_{n-1}} & @\varphi-\dfrac{F_n}{F_{n-1}}\\[2ex]\hline
-\color{red}:=1 & \color{red}:=1 & & \\
-[0,-1]+1 & \color{red}:=1 & [-1,0]/[-1,-1] & (1+5^0.5)/2-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\\hline
-\end{spreadtab}
-$
+$\begin{spreadtab}{{array}{ccN39N{3}{9}}}
+@n & @F_n & @\hfill{\dfrac{F_n}{F_{n-1}}}\hfill\null& @\hfill{\varphi-\dfrac{F_n}{F_{n-1}}}\hfill\null\\[2ex]\hline
+\color{red}:=1 & \color{red}:=1 & & \\
+\STcopy{v}{a2+1} & \color{red}:=1 & \STcopy{v}{b3/b2} & (1+5^0.5)/2-[-1,0] \\
+ & \STcopy{v}{b2+b3} & & \STcopy{v}{d!3+1-c4} \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\\hline
+\end{spreadtab}$
\end{lstlisting}
\begin{center}
\STautoround{9}
-$
-\begin{spreadtab}{{matrix}{}}
-@n & @F_n & @\dfrac{F_n}{F_{n-1}} & @\varphi-\dfrac{F_n}{F_{n-1}}\\[2ex]\hline
-\color{red}:=1 & \color{red}:=1 & & \\
-[0,-1]+1 & \color{red}:=1 & [-1,0]/[-1,-1] & (1+5^0.5)/2-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\
-[0,-1]+1 & [0,-1]+[0,-2] & [-1,0]/[-1,-1] & d3+1-[-1,0] \\\hline
-\end{spreadtab}
-$
+$\begin{spreadtab}{{array}{ccN39N{3}{9}}}
+@n & @F_n & @\hfill{\dfrac{F_n}{F_{n-1}}}\hfill\null& @\hfill{\varphi-\dfrac{F_n}{F_{n-1}}}\hfill\null\\[2ex]\hline
+\color{red}:=1 & \color{red}:=1 & & \\
+\STcopy{v}{a2+1} & \color{red}:=1 & \STcopy{v}{b3/b2} & (1+5^0.5)/2-[-1,0] \\
+ & \STcopy{v}{b2+b3} & & \STcopy{v}{d!3+1-c4} \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\
+ & & & \\\hline
+\end{spreadtab}$
\end{center}
\subsection{Tableau de facturation}
diff --git a/Master/texmf-dist/tex/latex/spreadtab/spreadtab.sty b/Master/texmf-dist/tex/latex/spreadtab/spreadtab.sty
index 049a2910181..39cd205b573 100644
--- a/Master/texmf-dist/tex/latex/spreadtab/spreadtab.sty
+++ b/Master/texmf-dist/tex/latex/spreadtab/spreadtab.sty
@@ -1,15 +1,15 @@
% ____________________________________________________________________________
% | |
% | |
-% | spreadtab v0.3b |
+% | spreadtab v0.3c |
% | |
-% | June 6, 2010 |
+% | April 8, 2011 |
% | |
% |___________________________________________________________________________|
%
% This is spreadtab.sty, the code of the spreadtab package.
%
-% Copyright Christian Tellechea 2009-2010
+% Copyright Christian Tellechea 2009-2011
% email : unbonpetit@gmail.com
%
% The "spreadtab" package consists of the 6 following files:
@@ -35,17 +35,17 @@
% -------------------------------------------------------------------
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%% Définitions préalables %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%% D\'efinitions pr\'ealables %%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newcommand\ST@ver {0.3b}
-\newcommand\ST@date {2010/06/06}
-\newcommand\ST@fr@date {6 juin 2010}
-\newcommand\ST@eng@date{June $6^\text{th}$ 2010}
+\newcommand\ST@ver {0.3c}
+\newcommand\ST@date {2011/04/08}
+\newcommand\ST@fr@date {8 avril 2011}
+\newcommand\ST@eng@date{April $8^\text{th}$ 2011}
\ProvidesPackage{spreadtab}[\ST@date\space v\ST@ver\space Spreadsheet features for table environments]
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{fp}% pour les calculs scientifiques
-\RequirePackage{xstring}[2010/0/28]% version nécessaire
+\RequirePackage{xstring}[2010/0/28]% version n\'ecessaire
\newcount\ST@count
\newcount\ST@colcount
@@ -59,20 +59,23 @@
\newif\ifST@colortblloaded
\AtBeginDocument{\@ifpackageloaded{colortbl}\ST@colortblloadedtrue\ST@colortblloadedfalse}
-% Définit le marqueur qui signale le commencement du champ numérique
+% D\'efinit le marqueur qui signale le commencement du champ num\'erique
\newcommand\STnumericfieldmarker{:=}
-% Définit les caractères entre lesquels doivent entre enveloppées les références des cellules
+% D\'efinit la macro qui va afficher les valeurs num\'eriques dans le tableau
+\newcommand\STprintnum[1]{#1}
+
+% D\'efinit les caract\`eres entre lesquels doivent entre envelopp\'ees les r\'ef\'erences des cellules
% que l'on veut afficher dans les champs textuels
\newcommand\STsetdisplaymarks[2]{%
\def\ST@startdisplay{#1}\def\ST@enddisplay{#2}%
}
-\STsetdisplaymarks{<<}{>>}% délimiteurs par défaut
+\STsetdisplaymarks{<<}{>>}% d\'elimiteurs par d\'efaut
-% définit le marqueur qui signale une cellule de texte
+% d\'efinit le marqueur qui signale une cellule de texte
\makeatother\newcommand\STtextcell{@}\makeatletter
-% Commande qui permet à l'utilisateur de définir le caractère qui conserve une référence lors de la copie d'une formule
+% Commande qui permet \'a l'utilisateur de d\'efinir le caract\`ere qui conserve une r\'ef\'erence lors de la copie d'une formule
\AtBeginDocument{\newcommand\STtransposecar{!}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -156,7 +159,7 @@
\@latex@error{\ST@errname Numeric field marker found, \string\STcopy\space forbidden in cell \ST@temp@callcell.}\ST@seedoc@i\stop
}
-% transforme la chaine de cellules "(1,3)(4,5)(3,2)(1,3)" rencontré en référence circulaire en "A3-D5-C2-A3"
+% transforme la chaine de cellules "(1,3)(4,5)(3,2)(1,3)" rencontr\'e en r\'ef\'erence circulaire en "A3-D5-C2-A3"
\newcommand\ST@show@dependance@tree{%
\ST@between\ST@dependance@tree()\ST@currentref
\ST@right\ST@dependance@tree)\ST@dependance@tree
@@ -168,7 +171,7 @@
\fi
}
-% transforme la séquence de contrôle #1 qui contient par exemple «4,5» en «D5»
+% transforme la s\'equence de contrôle #1 qui contient par exemple «4,5» en «D5»
\newcommand\ST@coord@toref[1]{%
\ST@split#1,\ST@temp@a#1%
\edef#1{\ifcase\ST@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
@@ -185,8 +188,14 @@
\newcommand\ST@letname[1]{\expandafter\let\csname#1\endcsname}
\newcommand\ST@exp@two@args[3]{%
- \expandafter\def\expandafter\ST@tmpstr\expandafter{\expandafter#1\expandafter{#2}}%
- \expandafter\ST@tmpstr\expandafter{#3}%
+ \begingroup
+ \def\ST@tmpstr{#1}%
+ \ST@expadd@tomacro\ST@tmpstr{\expandafter{#2}}%
+ \ST@expadd@tomacro\ST@tmpstr{\expandafter{#3}}%
+ \expandafter\endgroup
+ \ST@tmpstr
+% \expandafter\def\expandafter\ST@tmpstr\expandafter{\expandafter#1\expandafter{#2}}%
+% \expandafter\ST@tmpstr\expandafter{#3}%
}
\newcommand\ST@add@tomacro[2]{\expandafter\def\expandafter#1\expandafter{#1#2}}
@@ -215,7 +224,7 @@
\expandafter\ST@splitatfirstcar@i#1\@nil
}
-% dans la sc #1, remplace le . par le séparateur décimal
+% dans la sc #1, remplace le . par le s\'eparateur d\'ecimal
\newcommand\ST@substdecsep[1]{%
\ST@Ifinstr#1.{\expandafter\ST@substdecsep@i\expandafter#1\expandafter{\ST@decsep}}\relax
}
@@ -224,7 +233,7 @@
\expandafter\ST@substdecsep@ii#1\@nil
}
-% enlève tous les espaces de la sc #1 et assigne le résultat à #1
+% enl\`eve tous les espaces de la sc #1 et assigne le r\'esultat \'a #1
\newcommand\ST@remove@first@spaces[1]{%
\IfBeginWith#1\space
{\StrGobbleLeft#11[#1]\def\ST@nextspace{\ST@remove@first@spaces{#1}}}%
@@ -232,16 +241,16 @@
\ST@nextspace
}
-\newcommand\ST@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
+\newcommand\ST@keep@firstcar[1]{% on ne garde dans la sc #1 que le 1er caract\`ere de la sc #1 ou on enl\`eve les accolades
\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter#1\expandafter\expandafter\expandafter{\expandafter\@car#1\@nil}%
}
-\newcommand\ST@firstarg@after[3]{% assigne à la sc #3 l'argument qui suit #2 dans le développement de la sc #1
+\newcommand\ST@firstarg@after[3]{% assigne \'a la sc #3 l'argument qui suit #2 dans le d\'eveloppement de la sc #1
\def\ST@firstarg@after@i##1#2##2##3\@nil{\def#3{##2}}%
\expandafter\ST@firstarg@after@i#1\@nil
}
-\newcommand\ST@thirdarg@after[3]{% assigne à la sc #3 le 3è argument qui suit #2 dans le développement de la sc #1
+\newcommand\ST@thirdarg@after[3]{% assigne \'a la sc #3 le 3\`e argument qui suit #2 dans le d\'eveloppement de la sc #1
\def\ST@thirdarg@after@i##1#2##2##3##4##5\@nil{\def#3{##4}}%
\expandafter\ST@thirdarg@after@i#1\@nil
}
@@ -249,50 +258,54 @@
% est ce que la sc #1 contient la sc #2 ?
\newcommand\ST@Ifinstr[2]{\ST@exp@two@args\ST@Ifinstr@i{#1}{#2}}
\newcommand\ST@Ifinstr@i[2]{%
- \def\ST@Ifinstr@ii##1#2##2\@nil{%
- \csname @\ifx\@empty##2\@empty second\else first\fi oftwo\endcsname
- }%
+ \def\ST@Ifinstr@ii##1#2##2\@nil{\ifx\@empty##2\@empty\expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi}%
\ST@Ifinstr@ii#1\@@nil#2\@nil
}
-% Est ce que la sc #1 commence par les caractères #2 ?
+% Est ce que la sc #1 commence par les caract\`eres #2 ?
\newcommand\ST@Iffirstis[2]{%
\expandafter\ST@Ifinstr@i\expandafter{#1}{#2}%
{\def\ST@Iffirstis@i##1#2##2\@nil{%
- \csname @\ifx\@empty##1\@empty first\else second\fi oftwo\endcsname
+ \ifx\@empty##1\@empty\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
}%
}%
{\def\ST@Iffirstis@i##1\@nil{\@secondoftwo}}%
\expandafter\ST@Iffirstis@i#1\@@nil#2\@nil
}
-% Coupe la sc #1 au caractère #2
-% ce qui est avant est assigné à #3 et ce qui est après à #4
+% Coupe la sc #1 au caract\`ere #2
+% ce qui est avant est assign\'e \'a #3 et ce qui est apr\`es \'a #4
\newcommand\ST@split[4]{%
\def\ST@split@i##1#2##2\@nil{\def#3{##1}\def#4{##2}}%
\expandafter\ST@split@i#1\@nil
}
-% Dans la sc #1, assigne ce qui est avant le développement de la sc #2 à la sc #3
+% Dans la sc #1, assigne ce qui est avant le d\'eveloppement de la sc #2 \'a la sc #3
\newcommand\ST@left[3]{\ST@exp@two@args\ST@left@i{#1}{#2}#3}
\newcommand\ST@left@i[3]{%
\def\ST@left@ii##1#2##2\@nil{\def#3{##1}}%
\ST@left@ii#1\@nil
}
-% Dans la sc #1, assigne ce qui est après le développement de la sc #2 à la sc #3
+% Dans la sc #1, assigne ce qui est apr\`es le d\'eveloppement de la sc #2 \'a la sc #3
\newcommand\ST@right[3]{\ST@exp@two@args\ST@right@i{#1}{#2}#3}
\newcommand\ST@right@i[3]{%
\def\ST@right@ii##1#2##2\@nil{\def#3{##2}}%
\ST@right@ii#1\@nil
}
-% Dans la sc #1, assigne à la sc #4 ce qui est entre les caractères #2 et #3
+% Dans la sc #1, assigne \'a la sc #4 ce qui est entre les caract\`eres #2 et #3
\newcommand\ST@between[4]{%
\def\ST@between@i##1#2##2#3##3\@nil{\def#4{##2}}%
\expandafter\ST@between@i#1\@nil
}
+% Dans la sc #1, substitue la premi\`ere occurrence du pattern #2 par le pattern #3
+\newcommand\ST@subst@once[3]{%
+ \def\ST@subst@once@i##1#2##2\@nil{\def#1{##1#3##2}}%
+ \ST@Ifinstr#1{\@empty#2}{\expandafter\ST@subst@once@i#1\@nil}\relax
+}
+
% Dans la sc #1, substitue le pattern #2 par le pattern #3
\newcommand\ST@subst[3]{%
\def\ST@subst@i##1#2##2\@nnil{%
@@ -306,23 +319,18 @@
\expandafter\ST@subst@i#1#2\@nnil
}
-\newcommand\ST@expsubst[3]{%
- \expandafter\expandafter\expandafter
- \ST@subst\expandafter\expandafter\expandafter
- #1\expandafter\expandafter\expandafter
- {\expandafter#2\expandafter}\expandafter{#3}%
-}
+\newcommand\ST@expsubst[3]{\ST@exp@two@args{\ST@subst#1}{#2}{#3}}
\newcommand\ST@removespaces[1]{\ST@subst#1{ }{}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Lecture du tableau %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% lit le tableau : considère que \\ sépare les lignes
+% lit le tableau : consid\`ere que \\ s\'epare les lignes
\newcommand\ST@read@tab{%
\def\ST@total@colnumber{0}%
\ST@rowcount\z@
- \ST@search@hline\ST@tab% on met de côté la (ou les) ligne supérieure du tableau
+ \ST@search@hline\ST@tab% on met de côt\'e la (ou les) ligne sup\'erieure du tableau
\ST@read@tab@i
}
@@ -331,21 +339,21 @@
\ST@Ifinstr\ST@tab{\@empty\\}% si contient \\, il reste encore des lignes
{\ST@split\ST@tab\\\ST@current@row\ST@tab
\@namedef{endrow@\number\ST@rowcount}{\\}% est la fin de cette ligne, pour l'instant
- \ST@Iffirstis\ST@tab[% on prend en compte l'éventuel argument optionnel de \\
+ \ST@Iffirstis\ST@tab[% on prend en compte l'\'eventuel argument optionnel de \\
{\ST@between\ST@tab[]\ST@temp@a% prend ce qui est entre crochet
- \ST@Ifinstr\ST@temp@a,% si c'est une référence (on teste juste la présence de la virgule, ça devrait suffire)
+ \ST@Ifinstr\ST@temp@a,% si c'est une r\'ef\'erence (on teste juste la pr\'esence de la virgule, ça devrait suffire)
\relax% on ne fait rien
{\ST@split\ST@tab]\ST@temp@a\ST@tab% sinon, coupe au crocher fermant
- \expandafter\ST@expadd@tomacro\csname endrow@\number\ST@rowcount\endcsname{\ST@temp@a]}}% ajoute l'argument optionnel à la fin de ligne
+ \expandafter\ST@expadd@tomacro\csname endrow@\number\ST@rowcount\endcsname{\ST@temp@a]}}% ajoute l'argument optionnel \'a la fin de ligne
}%
\relax
\ST@search@hline\ST@tab% on va purger les hlines et les mettre dans la fin de ligne
\ifx\ST@tab\@empty\let\ST@next@readrows\relax\edef\ST@total@rownumber{\number\ST@rowcount}\else\let\ST@next@readrows\ST@read@tab@i\fi}%
- {\let\ST@current@row\ST@tab% plus de ligne ? on prend le tout c-à-d la ligne incomplète qui finit le tableau
+ {\let\ST@current@row\ST@tab% plus de ligne ? on prend le tout c-\'a-d la ligne incompl\`ete qui finit le tableau
\let\ST@next@readrows\relax
\edef\ST@total@rownumber{\number\ST@rowcount}}%
- \ST@Ifinstr\ST@current@row{\@empty\SThiderow}% il est demandé de masquer la colonne ?
- {\edef\ST@row@skiplist{(\number\ST@rowcount)\ST@row@skiplist}% on ajoute le numéro de ligne à masquer à la skiplist
+ \ST@Ifinstr\ST@current@row{\@empty\SThiderow}% il est demand\'e de masquer la colonne ?
+ {\edef\ST@row@skiplist{(\number\ST@rowcount)\ST@row@skiplist}% on ajoute le num\'ero de ligne \'a masquer \'a la skiplist
\StrDel\ST@current@row{\@empty\SThiderow}[\ST@current@row]%
}%
\relax
@@ -365,20 +373,20 @@
\let\ST@next@readcells\relax
\ifnum\ST@colcount>\ST@total@colnumber\edef\ST@total@colnumber{\number\ST@colcount}\fi}%
\ST@Ifinstr\ST@current@cell{\@empty\SThidecol}% on doit masquer cette colonnes ?
- {\ST@Ifinstr\ST@col@skiplist{\expandafter(\number\ST@colcount)}% ça a déjà été demandé ?
+ {\ST@Ifinstr\ST@col@skiplist{\expandafter(\number\ST@colcount)}% ça a d\'ej\'a \'et\'e demand\'e ?
\relax% on fait rien
- {\edef\ST@col@skiplist{(\number\ST@colcount)\ST@col@skiplist}% sinon -> ajout à la skiplist
+ {\edef\ST@col@skiplist{(\number\ST@colcount)\ST@col@skiplist}% sinon -> ajout \'a la skiplist
\ifnum\ST@colcount>\ST@last@skipcol\edef\ST@last@skipcol{\number\ST@colcount}\fi
}%
\StrDel\ST@current@cell{\@empty\SThidecol}[\ST@current@cell]%
}%
\relax
\exploregroups
- \ST@Ifinstr\ST@current@cell{\@empty\multicolumn}% tester la présence d'un \multicol
+ \ST@Ifinstr\ST@current@cell{\@empty\multicolumn}% tester la pr\'esence d'un \multicol
{\ST@firstarg@after\ST@current@cell\multicolumn\ST@multicol@number}%
{\let\ST@multicol@number\@empty}%
- \IfSubStr\ST@current@cell\STnumericfieldmarker% il y a un marqueur de champ numérique ?
- {\IfSubStr\ST@current@cell{\@empty\STcopy}\ST@invalidSTcopy\relax% s'il y a un \STcopy, erreur (pas de champ numérique et de \STcopy dans une même cellule)
+ \IfSubStr\ST@current@cell\STnumericfieldmarker% il y a un marqueur de champ num\'erique ?
+ {\IfSubStr\ST@current@cell{\@empty\STcopy}\ST@invalidSTcopy\relax% s'il y a un \STcopy, erreur (pas de champ num\'erique et de \STcopy dans une m\^eme cellule)
\StrBehind\ST@current@cell\STnumericfieldmarker[\ST@current@formula]%
\noexploregroups
\StrChar\ST@current@formula1[\ST@temp@a]% \ST@temp@a contient {<formule}
@@ -387,58 +395,58 @@
\ST@expadd@tomacro\ST@temp@b\ST@temp@a
\StrSubstitute[1]\ST@current@cell\ST@temp@b\STnumericfieldmarker[\ST@current@cell]% on remplace \={<formule>} par ":="
\noexploregroups
- \ST@keep@firstcar\ST@temp@a% dans la formule, on enlève les accolades
+ \ST@keep@firstcar\ST@temp@a% dans la formule, on enl\`eve les accolades
\ST@removespaces\ST@temp@a% et tous les espaces
\ifx\ST@temp@a\@empty% \ST@temp@a contient la formule : si la formule est vide
\ifx\ST@copylist\@empty% pas de copylist ?
- \@namedef{code@\number\ST@colcount @\number\ST@rowcount}{0}% met le code à 0
+ \@namedef{code@\number\ST@colcount @\number\ST@rowcount}{0}% met le code \'a 0
\else% si la copylist existe
\ST@lookincopylist{\number\ST@colcount}{\number\ST@rowcount}\ST@celltocopy% on cherche si la cellule en cours est dans une plage de copie
\ifx\ST@celltocopy\@empty
- \@namedef{code@\number\ST@colcount @\number\ST@rowcount}{0}% si c'est non, met le code à 0
+ \@namedef{code@\number\ST@colcount @\number\ST@rowcount}{0}% si c'est non, met le code \'a 0
\StrDel[1]\ST@current@cell\STnumericfieldmarker[\ST@current@cell]% on supprime aussi ":="
\else
- \ST@letname{formula@\number\ST@colcount @\number\ST@rowcount}\ST@celltocopy% il y a une cellule à copier : on l'assigne au champ numérique
- \@namedef{code@\number\ST@colcount @\number\ST@rowcount}{1}% et on met le code à 1
+ \ST@letname{formula@\number\ST@colcount @\number\ST@rowcount}\ST@celltocopy% il y a une cellule \'a copier : on l'assigne au champ num\'erique
+ \@namedef{code@\number\ST@colcount @\number\ST@rowcount}{1}% et on met le code \'a 1
\fi
\fi
\else% la formule n'est pas vide
- \ST@letname{formula@\number\ST@colcount @\number\ST@rowcount}\ST@temp@a% et on assigne à la formule
- \@namedef{code@\number\ST@colcount @\number\ST@rowcount}{1}% code 1 à priori
+ \ST@letname{formula@\number\ST@colcount @\number\ST@rowcount}\ST@temp@a% et on assigne \'a la formule
+ \@namedef{code@\number\ST@colcount @\number\ST@rowcount}{1}% code 1 \'a priori
\fi
- }% ci dessous, il n'y a pas de marqueur de champ numérique
+ }% ci dessous, il n'y a pas de marqueur de champ num\'erique
{\IfSubStr\ST@current@cell\STtextcell% si c'est une cellule de texte
{\StrDel\ST@current@cell\STtextcell[\ST@current@cell]% on le(s) supprime les flags
- \@namedef{code@\number\ST@colcount @\number\ST@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
+ \@namedef{code@\number\ST@colcount @\number\ST@rowcount}{0}% met le code \'a 0
+ }% ci dessous, ce n'est pas une cellule texte, c'est donc une cellule purement champ num\'erique sans marqueur
{\StrDel\ST@current@cell\space[\ST@temp@a]%
\ifx\@empty\ST@temp@a% il n'y a que des espaces, c'est donc une cellule vide
\ifx\ST@copylist\@empty% pas de copylist ?
- \@namedef{code@\number\ST@colcount @\number\ST@rowcount}{0}% met le code à 0
+ \@namedef{code@\number\ST@colcount @\number\ST@rowcount}{0}% met le code \'a 0
\else% si la copylist existe
\ST@lookincopylist{\number\ST@colcount}{\number\ST@rowcount}\ST@celltocopy% on cherche si la cellule en cours est dans un oplage de copie
\ifx\ST@celltocopy\@empty
- \@namedef{code@\number\ST@colcount @\number\ST@rowcount}{0}% si c'est non, met le code à 0
+ \@namedef{code@\number\ST@colcount @\number\ST@rowcount}{0}% si c'est non, met le code \'a 0
\else
- \let\ST@current@cell\STnumericfieldmarker% il y a une cellule à copier ici
- \ST@letname{formula@\number\ST@colcount @\number\ST@rowcount}\ST@celltocopy% on l'assigne au champ numérique
- \@namedef{code@\number\ST@colcount @\number\ST@rowcount}{1}% et on met le code à 1
+ \let\ST@current@cell\STnumericfieldmarker% il y a une cellule \'a copier ici
+ \ST@letname{formula@\number\ST@colcount @\number\ST@rowcount}\ST@celltocopy% on l'assigne au champ num\'erique
+ \@namedef{code@\number\ST@colcount @\number\ST@rowcount}{1}% et on met le code \'a 1
\fi
\fi
- \else% ici, la cellule est composée d'une champ numérique sans marqueur
- \@namedef{code@\number\ST@colcount @\number\ST@rowcount}{1}% toute la cellule est considérée comme champ numérique
+ \else% ici, la cellule est compos\'ee d'une champ num\'erique sans marqueur
+ \@namedef{code@\number\ST@colcount @\number\ST@rowcount}{1}% toute la cellule est consid\'er\'ee comme champ num\'erique
\ST@remove@first@spaces\ST@current@cell
\ST@Ifinstr\ST@current@cell{\@empty\STcopy}%
{\ST@findcopyargs\ST@current@cell\ST@copyrange\ST@copyformula% on chope les arguments de \STcopy
- \ST@seekcopyoffset\ST@copyrange% cherche les décalages
- \edef\ST@copyrange{\ST@hoffest,\ST@voffest}% et affecte sous forme a,b où a et b sont des nombres ou sont vides
- \expandafter\def\expandafter\ST@newtocopylist\expandafter{\expandafter|\ST@copyformula|}% \ST@newtocopylist est le nouvel élément à ajouter à la copylist
+ \ST@seekcopyoffset\ST@copyrange% cherche les d\'ecalages
+ \edef\ST@copyrange{\ST@hoffest,\ST@voffest}% et affecte sous forme a,b o\`u a et b sont des nombres ou sont vides
+ \expandafter\def\expandafter\ST@newtocopylist\expandafter{\expandafter|\ST@copyformula|}% \ST@newtocopylist est le nouvel \'el\'ement \'a ajouter \'a la copylist
\ST@edefadd@tomacro\ST@newtocopylist{[\number\ST@colcount,\number\ST@rowcount]}%
\ST@expadd@tomacro\ST@newtocopylist{\expandafter(\ST@copyrange)}%
- \ST@expadd@tomacro\ST@newtocopylist\ST@copylist% ajoute la copylist à la fin
- \let\ST@copylist\ST@newtocopylist% et l'assigne à copylist
- \ST@transposeformula00\ST@copyformula\ST@copyformula% on transpose éventuellement pour gérer les "!"
- \ST@letname{formula@\number\ST@colcount @\number\ST@rowcount}\ST@copyformula% affecte la formule inchangée au champ numérique courant
+ \ST@expadd@tomacro\ST@newtocopylist\ST@copylist% ajoute la copylist \'a la fin
+ \let\ST@copylist\ST@newtocopylist% et l'assigne \'a copylist
+ \ST@transposeformula00\ST@copyformula\ST@copyformula% on transpose \'eventuellement pour g\'erer les "!"
+ \ST@letname{formula@\number\ST@colcount @\number\ST@rowcount}\ST@copyformula% affecte la formule inchang\'ee au champ num\'erique courant
}%
{\ST@letname{formula@\number\ST@colcount @\number\ST@rowcount}\ST@current@cell% et on assigne toute la cellule
\let\ST@current@cell\STnumericfieldmarker}%% et on met le flag pour la formule
@@ -451,7 +459,7 @@
\fi
\ST@letname{text@\number\ST@colcount @\number\ST@rowcount}\ST@current@cell
\unless\ifx\@empty\ST@multicol@number% si c'est une cellule qui contient \multicolumn
- \loop% on met tous les codes des cellules fusionées qui suivent la cellule en cours à -1
+ \loop% on met tous les codes des cellules fusion\'ees qui suivent la cellule en cours \'a -1
\ifnum\ST@multicol@number>\@ne
\edef\ST@multicol@number{\number\numexpr\ST@multicol@number-1}%
\advance\ST@colcount1
@@ -462,43 +470,42 @@
}
% On va essayer de purger dans #1 toutes les \hline, \clines, \hhline etc, et ajouter tout ce beau monde
-% et leur evéntuels arguments dans des sc spéciales (par ex \endrow@3 pour la fin de la 3e ligne.)
+% et leur ev\'entuels arguments dans des sc sp\'eciales (par ex \endrow@3 pour la fin de la 3e ligne.)
\newcommand\ST@search@hline[1]{%
\unless\ifcsname endrow@\number\ST@rowcount\endcsname\ST@letname{endrow@\number\ST@rowcount}\@empty\fi
- \ST@remove@first@spaces#1% on enlève les espaces au début
- %\let\ST@temp@a#1\ST@keep@firstcar\ST@temp@a
+ \ST@remove@first@spaces#1% on enl\`eve les espaces au d\'ebut
\StrChar#11[\ST@temp@a]% \ST@temp@a est le 1er car
\let\next\ST@search@hline
- \IfStrEqCase\ST@temp@a{% on envisage tous les cas de tracé de ligne horizontale
+ \IfStrEqCase\ST@temp@a{% on envisage tous les cas de trac\'e de ligne horizontale
{\@empty\hline}{\StrGobbleLeft#11[#1]\expandafter\ST@add@tomacro\csname endrow@\number\ST@rowcount\endcsname\hline}%
{\@empty\cline}{\StrSplit#12\ST@temp@a#1\expandafter\ST@expadd@tomacro\csname endrow@\number\ST@rowcount\endcsname\ST@temp@a}%
{\@empty\hhline}{\StrSplit#12\ST@temp@a#1\expandafter\ST@expadd@tomacro\csname endrow@\number\ST@rowcount\endcsname\ST@temp@a}%
{\@empty\noalign}{\StrSplit#12\ST@temp@a#1\expandafter\ST@expadd@tomacro\csname endrow@\number\ST@rowcount\endcsname\ST@temp@a}%
{\@empty\toprule}{% les commandes de booktabs
- \StrSplit#11\ST@temp@a#1% chope le 1er lexème : la commande \toprule
+ \StrSplit#11\ST@temp@a#1% chope le 1er lex\`eme : la commande \toprule
\IfBeginWith#1[{\StrBefore#1][\ST@temp@b]\ST@expadd@tomacro\ST@temp@a{\ST@temp@b]}\StrBehind#1][#1]}\relax
\expandafter\ST@expadd@tomacro\csname endrow@\number\ST@rowcount\endcsname\ST@temp@a
}%
{\@empty\midrule}{%
- \StrSplit#11\ST@temp@a#1% chope le 1er lexème : la commande \midrule
+ \StrSplit#11\ST@temp@a#1% chope le 1er lex\`eme : la commande \midrule
\IfBeginWith#1[{\StrBefore#1][\ST@temp@b]\ST@expadd@tomacro\ST@temp@a{\ST@temp@b]}\StrBehind#1][#1]}\relax
\expandafter\ST@expadd@tomacro\csname endrow@\number\ST@rowcount\endcsname\ST@temp@a
}%
{\@empty\bottomrule}{%
- \StrSplit#11\ST@temp@a#1% chope le 1er lexème : la commande \bottomrule
+ \StrSplit#11\ST@temp@a#1% chope le 1er lex\`eme : la commande \bottomrule
\IfBeginWith#1[{\StrBefore#1][\ST@temp@b]\ST@expadd@tomacro\ST@temp@a{\ST@temp@b]}\StrBehind#1][#1]}\relax
\expandafter\ST@expadd@tomacro\csname endrow@\number\ST@rowcount\endcsname\ST@temp@a
}%
{\@empty\cmidrule}{%
- \StrSplit#11\ST@temp@a#1% chope le 1er lexème : la commande \cmidrule
+ \StrSplit#11\ST@temp@a#1% chope le 1er lex\`eme : la commande \cmidrule
\IfBeginWith#1[{\StrBefore#1][\ST@temp@b]\ST@expadd@tomacro\ST@temp@a{\ST@temp@b]}\StrBehind#1][#1]}\relax
\IfBeginWith#1({\StrBefore#1)[\ST@temp@b]\ST@expadd@tomacro\ST@temp@a{\ST@temp@b)}\StrBehind#1)[#1]}\relax
\StrSplit#11\ST@temp@b#1% chope l'argument obligatoire : {a-b}
- \ST@expadd@tomacro\ST@temp@a\ST@temp@b% l'ajoute à \ST@temp@b
- \expandafter\ST@expadd@tomacro\csname endrow@\number\ST@rowcount\endcsname\ST@temp@a% et on ajoute le tout à endrow
+ \ST@expadd@tomacro\ST@temp@a\ST@temp@b% l'ajoute \'a \ST@temp@b
+ \expandafter\ST@expadd@tomacro\csname endrow@\number\ST@rowcount\endcsname\ST@temp@a% et on ajoute le tout \'a endrow
}%
{\@empty\addlinespace}{%
- \StrSplit#11\ST@temp@a#1% chope le 1er lexème : la commande \addlinespace
+ \StrSplit#11\ST@temp@a#1% chope le 1er lex\`eme : la commande \addlinespace
\IfBeginWith#1[{\StrBefore#1][\ST@temp@b]\ST@expadd@tomacro\ST@temp@a{\ST@temp@b]}\StrBehind#1][#1]}\relax
\expandafter\ST@expadd@tomacro\csname endrow@\number\ST@rowcount\endcsname\ST@temp@a
}%
@@ -508,9 +515,9 @@
\next#1%
}
-% 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.
+% Cette macro transpose toutes les r\'ef\'erences (absolues et relatives) de la sc #3.
+% Le d\'ecalage est de #1 (nombre sign\'e) pour les colonnes et de #2 (nombre sign\'e) pour les lignes.
+% La sc #4 recoit la formule transpos\'ee.
\newcommand\ST@transposeformula[4]{%
\def\ST@addcol{#1}\def\ST@addrow{#2}\let\ST@temp@formula#3%
\let\ST@transposed@formula\@empty
@@ -521,24 +528,24 @@
\newcommand\ST@transposeformula@i{%
\unless\ifx\@empty\ST@temp@formula% tant que l'on n'a pas parcouru \ST@temp@formula
\ST@splitatfirstcar\ST@temp@formula\ST@firstcar\ST@temp@formula% prend le 1er car de \ST@temp@formula
- \if\expandafter\noexpand\STtransposecar\expandafter\noexpand\ST@firstcar% si ce caractère est un !
+ \if\expandafter\noexpand\STtransposecar\expandafter\noexpand\ST@firstcar% si ce caract\`ere est un !
\let\ST@addcol@\z@% pas de tranposition sur la colonne
- \ST@splitatfirstcar\ST@temp@formula\ST@firstcar\ST@temp@formula% on prend le premier caractère qui suit le !
+ \ST@splitatfirstcar\ST@temp@formula\ST@firstcar\ST@temp@formula% on prend le premier caract\`ere qui suit le !
\else
\let\ST@addcol@\ST@addcol% sinon, on copie le vecteur
\fi
\expandafter\ST@ifcar@isletter\expandafter{\ST@firstcar}% est-ce que le 1er car est une lettre ?
- {\if\expandafter\noexpand\STtransposecar\expandafter\expandafter\expandafter\noexpand\expandafter\@car\ST@temp@formula\@nil% le caractère suivant est un "!" ?
+ {\if\expandafter\noexpand\STtransposecar\expandafter\expandafter\expandafter\noexpand\expandafter\@car\ST@temp@formula\@nil% le caract\`ere suivant est un "!" ?
\let\ST@addrow@\z@% pas de tranposition sur la ligne
- \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\ST@temp@formula\expandafter\expandafter\expandafter{\expandafter\@cdr\ST@temp@formula\@nil}% on prend ce qui est après le !
+ \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\ST@temp@formula\expandafter\expandafter\expandafter{\expandafter\@cdr\ST@temp@formula\@nil}% on prend ce qui est apr\`es le !
\else
\let\ST@addrow@\ST@addrow% sinon, on copie le vecteur
\fi
\IfInteger\ST@temp@formula\relax\relax% on prend le nombre qui suit
- \ifnum\integerpart>\z@% si ce nombre est plus grand que 0 -> référence valide
- \let\ST@temp@formula\@xs@afterinteger% on prend ce qui est après le nombre
+ \ifnum\integerpart>\z@% si ce nombre est plus grand que 0 -> r\'ef\'erence valide
+ \let\ST@temp@formula\@xs@afterinteger% on prend ce qui est apr\`es le nombre
\expandafter\lowercase\expandafter{\expandafter\def\expandafter\ST@firstcar\expandafter{\ST@firstcar}}% met en minuscules
- \edef\ST@firstcar{\number\numexpr\expandafter`\ST@firstcar-`a+1+\ST@addcol@}% est le numéro de la colonne
+ \edef\ST@firstcar{\number\numexpr\expandafter`\ST@firstcar-`a+1+\ST@addcol@}% est le num\'ero de la colonne
\ifnum\ST@firstcar<\@ne\ST@illegal@copy\fi% erreur de copie ?
\ST@edefadd@tomacro\ST@transposed@formula{%
\ifcase\ST@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
@@ -552,20 +559,20 @@
}%
{\if[\expandafter\noexpand\ST@firstcar% si le 1er car est [
\ST@left\ST@temp@formula]\ST@temp@ref% on prend ce qui est entre crochet
- \ST@right\ST@temp@formula]\ST@temp@formula% pour la suite, on prend ce qui après le crochet
+ \ST@right\ST@temp@formula]\ST@temp@formula% pour la suite, on prend ce qui apr\`es le crochet
\ST@left\ST@temp@ref,\ST@rel@num% ce qui est avant la virgule
\if\expandafter\noexpand\STtransposecar\expandafter\expandafter\expandafter\noexpand\expandafter\@car\ST@rel@num\@nil% commence par un "!" ?
\let\ST@addcol@\ST@addcol% compensation pour conserver la cellule initiale
- \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\ST@rel@num\expandafter\expandafter\expandafter{\expandafter\@cdr\ST@rel@num\@nil}% on prend ce qui est après le !
+ \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\ST@rel@num\expandafter\expandafter\expandafter{\expandafter\@cdr\ST@rel@num\@nil}% on prend ce qui est apr\`es le !
\else
\let\ST@addcol@\z@% sinon, on n'ajoute rien
\fi
\IfInteger\ST@rel@num
{\edef\ST@addcol@{\number\numexpr\ST@rel@num-\ST@addcol@}%
- \ST@right\ST@temp@ref,\ST@rel@num% ce qui est après la virgule
+ \ST@right\ST@temp@ref,\ST@rel@num% ce qui est apr\`es la virgule
\if\expandafter\noexpand\STtransposecar\expandafter\expandafter\expandafter\noexpand\expandafter\@car\ST@rel@num\@nil% commence par un "!"?
\let\ST@addrow@\ST@addrow% on compense pour conserver la cellule initiale
- \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\ST@rel@num\expandafter\expandafter\expandafter{\expandafter\@cdr\ST@rel@num\@nil}% on prend ce qui est après le !
+ \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\ST@rel@num\expandafter\expandafter\expandafter{\expandafter\@cdr\ST@rel@num\@nil}% on prend ce qui est apr\`es le !
\else
\let\ST@addrow@\z@% sinon, on n'ajoute rien
\fi
@@ -583,8 +590,8 @@
\fi
}
-% 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
+% Cherche dans la sc #1 les 3 arguments qui se trouvent apr\`es \STcopy
+% Affecte le 1er \'a #2, le 2\`e \'a #3 et le 3\`e \'a #4
\newcommand\ST@findcopyargs[3]{%
\def\ST@argaftercopy##1\STcopy##2##3##4\@nil{%
\def#1{##1}\ST@expadd@tomacro#1{\STnumericfieldmarker##4}% dans #1,supprime \STcopy{<arg1>}{<arg2>} et le remplace par :=
@@ -597,36 +604,45 @@
% si #5 est vide, c'est l'intervalle [#3,+inf] et si #6 est vide, c'est [#4,+inf]
\def\ST@Ifin#1#2[#3,#4](#5,#6)%
{%
- \csname @%
- \ifnum#1<#3 second%
+ \ifnum#1<#3
+ \let\ST@next\@secondoftwo
\else
- \ifnum#2<#4 second%
+ \ifnum#2<#4
+ \let\ST@next\@secondoftwo
\else
\ifx\@empty#5\@empty
- \ifx\@empty#6\@empty first%
+ \ifx\@empty#6\@empty
+ \let\ST@next\@firstoftwo
\else
- \ifnum#2>\numexpr#4+#6 second%
- \else first%
+ \ifnum#2>\numexpr#4+#6
+ \let\ST@next\@secondoftwo
+ \else
+ \let\ST@next\@firstoftwo
\fi
\fi
\else
- \ifnum#1>\numexpr#3+#5 second%
+ \ifnum#1>\numexpr#3+#5
+ \let\ST@next\@secondoftwo
\else
- \ifx\@empty#6\@empty first%
+ \ifx\@empty#6\@empty
+ \let\ST@next\@firstoftwo
\else
- \ifnum#2>\numexpr#4+#6 second%
- \else first%
+ \ifnum#2>\numexpr#4+#6
+ \let\ST@next\@secondoftwo
+ \else
+ \let\ST@next\@firstoftwo
\fi
\fi
\fi
\fi
\fi
- \fi oftwo\endcsname
+ \fi
+ \ST@next
}
-% 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
+% Regarde dans la liste de copie si la cellule de coodonn\'ees #1 #2 est dans une plage de copie
+% si oui, affecte \'a #3 la formule transpos\'ee
+% La liste de copy est parcourue de gauche \'a droite avec sortie d\`es qu'une plage qui convient est rencontr\'ee
\newcommand\ST@lookincopylist[3]{%
\let\ST@alias@copylist\ST@copylist
\let\ST@returnedformula\@empty
@@ -637,36 +653,39 @@
\newcommand\ST@lookincopylist@i{%
\expandafter\ST@testfirstincopylist\ST@alias@copylist\@nil
- \csname
- \ifx\@empty\ST@alias@copylist relax%
+ \ifx\@empty\ST@alias@copylist
+ \let\ST@next\relax
\else
- \ifx\@empty\ST@returnedformula ST@lookincopylist@i%
- \else relax%
+ \ifx\@empty\ST@returnedformula
+ \let\ST@next\ST@lookincopylist@i
+ \else
+ \let\ST@next\relax
\fi
- \fi\endcsname
+ \fi
+ \ST@next
}
-% Teste si un élément de la copylist contient une plage qui inclus la cellule en cours.
+% Teste si un \'el\'ement de la copylist contient une plage qui inclus la cellule en cours.
\def\ST@testfirstincopylist|#1|[#2,#3](#4,#5)#6\@nil%
{%
- \def\ST@alias@copylist{#6}% on enlève le premier élément de la copylist
+ \def\ST@alias@copylist{#6}% on enl\`eve le premier \'el\'ement de la copylist
\ST@Ifin\ST@copycol\ST@copyrow[#2,#3](#4,#5)% si ça correspond
{\def\ST@returnedformula{#1}%
\ST@transposeformula{\numexpr\ST@copycol-#2}{\numexpr\ST@copyrow-#3}\ST@returnedformula\ST@returnedformula
}%
{\ifx\@empty#5\@empty\else
\ifnum\ST@copyrow>\numexpr#3+#5\relax
- \ST@subst\ST@copylist{|#1|[#2,#3](#4,#5)}{}% si on a dépassé la ligne, on retire ce premier élément de la copylist
+ \ST@subst\ST@copylist{|#1|[#2,#3](#4,#5)}{}% si on a d\'epass\'e la ligne, on retire ce premier \'el\'ement de la copylist
\fi
\fi
}%
}
-% 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@hoffest et \ST@voffest
+% Cherche dans la sc#1 du type ">4,v9" les d\'ecalages horizontaux et verticaux
+% sp\'ecifi\'es avec > et v
+% S'il trouve > ou v sans nombre derri\`ere, le d\'ecalage correspondant est vide
+% S'il ne trouve pas > ou v, le d\'ecalage correspond est \'egal \'a 0
+% Assigne les d\'ecalages trouv\'es dans \ST@hoffest et \ST@voffest
\newcommand\ST@seekcopyoffset[1]{%
\ST@Ifinstr#1>%
{\ST@findcopyoffest#1>\ST@hoffest}%
@@ -683,30 +702,38 @@
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%% Recherche d'une référence %%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%% Recherche d'une r\'ef\'erence %%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% teste si le token #1 est une lettre (majuscule ou minuscule)
\newcommand\ST@ifcar@isletter[1]{%
- \csname @%
- \ifcat\relax\noexpand#1second% faux si c'est une sc
+ \ifcat\relax\noexpand#1
+ \let\ST@next\@secondoftwo% faux si c'est une sc
\else
- \ifnum`#1<\ifnum`#1<`a`A\else`a\fi second%
+ \ifnum`#1<\ifnum`#1<`a`A\else`a\fi
+ \let\ST@next\@secondoftwo
\else
- \ifnum`#1>\ifnum`#1<`a`Z\else`z\fi second%
- \else first%
+ \ifnum`#1>\ifnum`#1<`a`Z\else`z\fi
+ \let\ST@next\@secondoftwo
+ \else
+ \let\ST@next\@firstoftwo
\fi
\fi
\fi
- oftwo\endcsname
+ \ST@next
}
-% 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@y
+% cherche une r\'ef\'erence du type lettre+nombre dans la sc #1
+% si on trouve, renvoie les coordonn\'ees dans #2 sous la forme x@y
% si on ne trouve pas, #2 est vide.
\newcommand\ST@findref@informula[2]{%
\let\ST@temp@formula#1%
\ST@findref@informula@i
\let#2\ST@temp@formula
+ \unless\ifx\@empty\ST@ref@found
+ \ST@Iffirstis\ST@after@ref@found|\relax{%
+ \ST@exp@two@args{\ST@subst@once#1}\ST@ref@found{\ST@ref@found|}%
+ }%
+ \fi
}
\newcommand\ST@findref@informula@i{%
@@ -717,16 +744,18 @@
\StrSplit\ST@temp@formula1\ST@firstcar\ST@temp@formula% prend le 1er car de ce qui reste
\expandafter\ST@ifcar@isletter\expandafter{\ST@firstcar}% est-ce que le 1er car est une lettre ?
{\IfInteger\ST@temp@formula\relax\relax% on prend le nombre qui suit
- \ifnum\integerpart>\z@% si ce nombre est plus grand que 0 -> référence valide
- \edef\ST@ref@found{\ST@firstcar\number\integerpart}% est la référence trouvée
- \edef\ST@distant@rownumber{\number\integerpart}% on chope ce nombre pour le numéro de colonne
- \edef\ST@distant@colnumber{\expandafter\number\expandafter\numexpr\expandafter`\ST@firstcar-`a+1}% traduction lettre->chiffre
+ \ifnum\integerpart>\z@% si ce nombre est plus grand que 0 -> r\'ef\'erence valide
+ \let\ST@after@ref@found\@xs@afterinteger
+ \edef\ST@ref@found{\ST@firstcar\number\integerpart}% est la r\'ef\'erence trouv\'ee
+ \edef\ST@distant@rownumber{\number\integerpart}% on chope ce nombre pour le num\'ero de colonne
+ \edef\ST@distant@colnumber{\number\numexpr\expandafter`\ST@firstcar-`a+1}% traduction lettre->chiffre
\ifnum\ST@distant@colnumber<\z@\edef\ST@distant@colnumber{\number\numexpr\ST@distant@colnumber+32}\fi% met les majuscules en minuscules
- \edef\ST@temp@formula{\ST@distant@colnumber @\ST@distant@rownumber}% les coordonnées de la référence
+ \edef\ST@temp@formula{\ST@distant@colnumber @\ST@distant@rownumber}% les coordonn\'ees de la r\'ef\'erence
\let\ST@next@search\relax
\fi
}%
{\if[\expandafter\noexpand\ST@firstcar% si le 1er car est [
+ \ST@right\ST@temp@formula]\ST@after@ref@found
\ST@left\ST@temp@formula]\ST@temp@formula% on prend ce qui est entre crochet
\expandafter\def\expandafter\ST@ref@found\expandafter{\expandafter[\ST@temp@formula]}%
\ST@left\ST@temp@formula,\ST@rel@num
@@ -735,7 +764,7 @@
\ST@right\ST@temp@formula,\ST@rel@num
\IfInteger\ST@rel@num
{\edef\ST@distant@rownumber{\number\numexpr\ST@current@rownumber+\ST@rel@num}%
- \edef\ST@temp@formula{\ST@distant@colnumber @\ST@distant@rownumber}% les coordonnées de la référence
+ \edef\ST@temp@formula{\ST@distant@colnumber @\ST@distant@rownumber}% les coordonn\'ees de la r\'ef\'erence
\let\ST@next@search\relax
}%
\ST@illegal@relativeref
@@ -747,35 +776,38 @@
\ST@next@search
}
-% cette commande teste si la sc #1 est syntaxiquement une référence
+% cette commande teste si la sc #1 est syntaxiquement une r\'ef\'erence
\newcommand\ST@ifref[1]{%
\let\ST@temp@formula#1%
\let\ST@ref@found\@empty
\ST@findref@informula@i
- \csname @%
- \ifx\@empty\ST@ref@found
- second%
+ \ifx\@empty\ST@ref@found
+ \let\ST@next\@secondoftwo
\else
- \ifx#1\ST@ref@found first\else second\fi
+ \ifx#1\ST@ref@found
+ \let\ST@next\@firstoftwo
+ \else
+ \let\ST@next\@secondoftwo
+ \fi
\fi
- oftwo\endcsname
+ \ST@next
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%% Le noyau : évaluation de toutes les cellules %%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%% Le noyau : \'evaluation de toutes les cellules %%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Essaie de calculer la cellule (#1,#2)
\def\ST@try@calc@cell(#1,#2)%
{%
- \ifcsname formula@#1@#2\endcsname% on vérifie que la formule existe
+ \ifcsname formula@#1@#2\endcsname% on v\'erifie que la formule existe
\expandafter\ifx\csname formula@#1@#2\endcsname\@empty% et qu'elle est non vide
- \@namedef{code@#1@#2}{0}% si vide, code à 0
+ \@namedef{code@#1@#2}{0}% si vide, code \'a 0
\else
\def\ST@current@colnumber{#1}\def\ST@current@rownumber{#2}%
\expandafter\ST@find@first@func\csname formula@#1@#2\endcsname% cherche une fonction dans la formule
\ifx\@empty\ST@function@namefound% s'il n'y a pas de fonction
\expandafter\ST@findref@informula\csname formula@#1@#2\endcsname\ST@coord
- \ifx\@empty\ST@coord% ni de référence
+ \ifx\@empty\ST@coord% ni de r\'ef\'erence
\ST@calc@cell(#1,#2)% on va la calculer la cellule
\fi
\fi
@@ -784,7 +816,7 @@
}
\def\ST@calc@cell(#1,#2)%
-{% calcule la formule numérique de la cellule (#1,#2)
+{% calcule la formule num\'erique de la cellule (#1,#2)
\unless\ifnum\csname code@#1@#2\endcsname<\@ne% si le code est >= 1
\expandafter\let\expandafter\ST@temp@a\csname formula@#1@#2\endcsname% \ST@temp@a est le contenu de la formule
\ST@Iffirstis\ST@temp@a-{\expandafter\def\expandafter\ST@temp@a\expandafter{\expandafter0\ST@temp@a}}\relax
@@ -797,8 +829,8 @@
\FPtrunc\ST@temp@a\ST@temp@a\ST@rounddigit
\fi
\fi
- \ST@letname{formula@#1@#2}\ST@temp@a% assigne le résultat à la formule
- \@namedef{code@#1@#2}{2}% et met le code à 2 (cellule calculée)
+ \ST@letname{formula@#1@#2}\ST@temp@a% assigne le r\'esultat \'a la formule
+ \@namedef{code@#1@#2}{2}% et met le code \'a 2 (cellule calcul\'ee)
\fi
}
@@ -827,7 +859,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 à argument numérique, à argument plage ou à argument texte.
+% La macro renvoie dans la sc #2 : 1, 2 ou 2 selon que #1 est le nom d'une macro \'a argument num\'erique, \'a argument plage ou \'a argument texte.
% #2 est vaut 0 si #1 n'est pas le nom d'une fonction
\newcommand\ST@determine@function@code[2]{%
\ST@Ifinstr{\ST@functions@with@num@arg,}{#1,}%
@@ -841,13 +873,13 @@
}%
}
-% Évalue la cellule (#1#2) par ses coordonnées numériques (col,row)
+% Évalue la cellule (#1#2) par ses coordonn\'ees num\'eriques (col,row)
\def\ST@eval@cell(#1,#2)%
{%
\def\ST@dependance@tree{(#1,#2)}%
\let\ST@stackcall\@empty
\let\ST@function@namesaved\@empty
- \ST@eval@cell@i(#1,#2)% on appelle la macro récursive
+ \ST@eval@cell@i(#1,#2)% on appelle la macro r\'ecursive
\ifST@message
\let\ST@deptree\@empty
\ST@show@dependance@tree
@@ -856,128 +888,132 @@
\fi
}
-% Ceci est la macro principale : elle évalue la cellule (#1,#2)
+% Ceci est la macro principale : elle \'evalue la cellule (#1,#2)
\def\ST@eval@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ée
+ \ifnum\csname code@#1@#2\endcsname=\@ne% on ne fait quelque chose que si le code est 1 : cellule non calcul\'ee
\def\ST@current@colnumber{#1}\def\ST@current@rownumber{#2}%
\expandafter\ST@find@first@func\csname formula@#1@#2\endcsname% cherche une fonction dans la formule
\ifx\@empty\ST@function@namefound% il n'y a pas de fonction
\IfSubStr[2]\ST@dependance@tree{(#1,#2)}%
- {\edef\ST@coord{#1,#2}\ST@circular@reference}% message et on s'arrête si référence circulaire
+ {\edef\ST@coord{#1,#2}\ST@circular@reference}% message et on s'arr\^ete si r\'ef\'erence circulaire
\relax
- \expandafter\ST@findref@informula\csname formula@#1@#2\endcsname\ST@coord% y a t-il une référence dans l'argument ?
- \ifx\ST@coord\@empty% pas de référence dans l'argument
- \ifx\ST@function@namesaved\@empty% si aucune fonction n'a été décelée
+ \expandafter\ST@findref@informula\csname formula@#1@#2\endcsname\ST@coord% y a t-il une r\'ef\'erence dans l'argument ?
+ \ifx\ST@coord\@empty% pas de r\'ef\'erence dans l'argument
+ \ifx\ST@function@namesaved\@empty% si aucune fonction n'a \'et\'e d\'ecel\'ee
\ST@calc@cell(#1,#2)% on calcule la cellule en cours
\else
- \ST@Ifinstr{\ST@functions@with@textresult,}{\ST@function@namesaved,}% si la dernière fonction rend du texte
+ \ST@Ifinstr{\ST@functions@with@textresult,}{\ST@function@namesaved,}% si la derni\`ere fonction rend du texte
{\ifx\ST@stackcall\@empty% et si on est dans la cellule source
- \@namedef{code@#1@#2}{0}% on met le code à 0, la cellule devient textuelle
- \expandafter\let\csname text@#1@#2\expandafter\endcsname\csname formula@#1@#2\endcsname% copie de la formule vers la zone texte (avec écrasement de ce qui s'y trouvait)
+ \@namedef{code@#1@#2}{0}% on met le code \'a 0, la cellule devient textuelle
+ \expandafter\let\csname text@#1@#2\expandafter\endcsname\csname formula@#1@#2\endcsname% copie de la formule vers la zone texte (avec \'ecrasement de ce qui s'y trouvait)
\ST@letname{formula@#1@#2}\@empty% et plus rien dansla formule
\else
- \ST@calc@cell(#1,#2)% sinon, on se trouve dans une cellule appelée par une macrofonction et donc, on la calcule
+ \ST@calc@cell(#1,#2)% sinon, on se trouve dans une cellule appel\'ee par une macrofonction et donc, on la calcule
\fi
}%
- {\ST@calc@cell(#1,#2)}% c'est une fonction qui donne un arg numérique : on calcule la cellule en cours
+ {\ST@calc@cell(#1,#2)}% c'est une fonction qui donne un arg num\'erique : on calcule la cellule en cours
\fi
\else
\ifcsname code@\ST@coord\endcsname% le code distant exite ?
\ifcase\csname code@\ST@coord\endcsname% code distant = 0 ==> cellule vide ou textuelle, pas bon du tout !
- \edef\ST@temp@callcell{#1,#2}% coordonnées de la cellule appelante
- \edef\ST@coord{\ST@distant@colnumber,\ST@distant@rownumber}% coordonnées appelées
- \ST@zerocodecell@cell% erreur : référence à une cellule de code 0
+ \edef\ST@temp@callcell{#1,#2}% coordonn\'ees de la cellule appelante
+ \edef\ST@coord{\ST@distant@colnumber,\ST@distant@rownumber}% coordonn\'ees appel\'ees
+ \ST@zerocodecell@cell% erreur : r\'ef\'erence \'a une cellule de code 0
\or% code distant = 1
- \edef\ST@dependance@tree{\ST@dependance@tree(\ST@distant@colnumber,\ST@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@dependance@tree{\ST@dependance@tree(\ST@distant@colnumber,\ST@distant@rownumber)}% on l'ajoute \'a l'arbre des d\'ependances
+ % on doit \'evaluer cette formule distante et ensuite, on doit encore recommence avec la formule en cours : on les ajoute sur la pile lifo
\edef\ST@stackcall{(\ST@distant@colnumber,\ST@distant@rownumber)(#1,#2)\ST@stackcall}%
- \or% code distant = 2, la cellule distante est calculée, on créé un alias pour le contenu de la formule distante
+ \or% code distant = 2, la cellule distante est calcul\'ee, on cr\'e\'e un alias pour le contenu de la formule distante
\expandafter\let\expandafter\ST@distant@formula\csname formula@\ST@coord\endcsname
- % si la valeur distante est <0, on la met entre parenthèses
+ % si la valeur distante est <0, on la met entre parenth\`eses
\ST@Iffirstis\ST@distant@formula-%
{\expandafter\def\expandafter\ST@distant@formula\expandafter{\expandafter(\ST@distant@formula)}}%
\relax
- % on remplace toutes les références par la valeur distante
- \expandafter\ST@expsubst\csname formula@#1@#2\endcsname\ST@ref@found\ST@distant@formula
- \edef\ST@stackcall{(#1,#2)\ST@stackcall}% puis, on évalue à nouveau cette cellule
+ % on remplace toutes les r\'ef\'erences par la valeur distante
+ \expandafter\ST@expsubst\csname formula@#1@#2\endcsname{\ST@ref@found|}\ST@distant@formula
+ \edef\ST@stackcall{(#1,#2)\ST@stackcall}% puis, on \'evalue \'a nouveau cette cellule
\else% code distant n'est pas {0,1,2} donc est -1, pas bon du tout !
- \edef\ST@temp@callcell{#1,#2}% coordonnées de la cellule appelante
- \ST@subst\ST@coord @,% coordonnées appelées
+ \edef\ST@temp@callcell{#1,#2}% coordonn\'ees de la cellule appelante
+ \ST@subst\ST@coord @,% coordonn\'ees appel\'ees
\ST@multicol@cell
\fi
- \else% le code distant n'est pas défini
- \edef\ST@temp@callcell{#1,#2}% coordonnées de la cellule appelante
- \ST@subst\ST@coord @,% coordonnées appelées
+ \else% le code distant n'est pas d\'efini
+ \edef\ST@temp@callcell{#1,#2}% coordonn\'ees de la cellule appelante
+ \ST@subst\ST@coord @,% coordonn\'ees appel\'ees
\ST@undefined@cell% code distant inexistant -> cellule hors limite du tableau
\fi
\fi
\else% il y a une fonction dans la formule
\let\ST@function@namesaved\ST@function@namefound
- \ST@determine@function@code\ST@function@namefound\ST@codefunc% détermine le code de la fonction
+ \ST@determine@function@code\ST@function@namefound\ST@codefunc% d\'etermine le code de la fonction
\ifcase\ST@codefunc
\@latex@error{\ST@errname This error should not occur! Please email the author. Thanks.}{}%
- \or% le code vaut 1, c'est une fonction à argument numérique
- \ST@findref@informula\ST@function@argfound\ST@temp@formula% y a t-il une référence dans l'argument de la formule ?
- \ifx\ST@temp@formula\@empty% pas de référence dans l'argument de la fonction
+ \or% le code vaut 1, c'est une fonction \'a argument num\'erique
+ \ST@findref@informula\ST@function@argfound\ST@temp@formula% y a t-il une r\'ef\'erence dans l'argument de la formule ?
+ \ifx\ST@temp@formula\@empty% pas de r\'ef\'erence dans l'argument de la fonction
\expandafter\let\expandafter\ST@current@formula\csname formula@#1@#2\endcsname% alias pour la formule
\let\ST@tobereplaced\ST@function@namefound
- \ST@expadd@tomacro\ST@tobereplaced{\expandafter(\ST@function@argfound)}% ce qui va être replacé : fonction(argument)
+ \ST@expadd@tomacro\ST@tobereplaced{\expandafter(\ST@function@argfound)}% ce qui va \^etre replac\'e : fonction(argument)
\ST@Ifinstr{\ST@functions@no@calc@arg,}{\ST@function@namefound,}% doit-on calculer l'argument de cette fonction ?
\relax
{\FPeval\ST@function@argfound\ST@function@argfound\FPclip\ST@function@argfound\ST@function@argfound}%
- \csname ST@func@\ST@function@namefound\endcsname\ST@function@argfound\ST@result@func% puis on évalue la fonctionfound
+ \csname ST@func@\ST@function@namefound\endcsname\ST@function@argfound\ST@result@func% puis on \'evalue la fonctionfound
\ST@Iffirstis\ST@result@func-{\expandafter\def\expandafter\ST@result@func\expandafter{\expandafter(\ST@result@func)}}\relax
\ST@expsubst\ST@current@formula\ST@tobereplaced\ST@result@func% on replace dans l'alias
\ST@letname{formula@#1@#2}\ST@current@formula% on l'assigne dans la formule
- \edef\ST@stackcall{(#1,#2)\ST@stackcall}% puis, on évalue à nouveau cette cellule
+ \edef\ST@stackcall{(#1,#2)\ST@stackcall}% puis, on \'evalue \'a nouveau cette cellule
\else
- \ifnum\csname code@\ST@temp@formula\endcsname=\tw@% si la référence est calculée, on la replace par sa valeur
+ \ifnum\csname code@\ST@temp@formula\endcsname=\tw@% si la r\'ef\'erence est calcul\'ee, on la replace par sa valeur
\expandafter\let\expandafter\ST@current@formula\csname formula@\ST@temp@formula\endcsname% alias pour la formule distante
\ST@Iffirstis\ST@current@formula-%
{\expandafter\def\expandafter\ST@current@formula\expandafter{\expandafter(\ST@current@formula)}}%
\relax
- \let\ST@tobereplaced\ST@function@namefound\ST@expadd@tomacro\ST@tobereplaced{\expandafter(\ST@function@argfound)}%
+ \let\ST@tobereplaced\ST@function@namefound
+ \ST@expadd@tomacro\ST@tobereplaced{\expandafter(\ST@function@argfound)}%
\let\ST@replaced\ST@tobereplaced
- \ST@expsubst\ST@replaced\ST@ref@found\ST@current@formula
+ \ST@expsubst\ST@replaced{\ST@ref@found|}\ST@current@formula
+ \ST@subst\ST@tobereplaced|{}%
\expandafter\ST@expsubst\csname formula@#1@#2\endcsname\ST@tobereplaced\ST@replaced
\edef\ST@stackcall{(#1,#2)\ST@stackcall}%
- \else% la référence n'est pas calculée, donc d'abord il faut
- \edef\ST@stackcall{(\ST@distant@colnumber,\ST@distant@rownumber)(#1,#2)\ST@stackcall}% l'évaluer, et ensuite ré-evaluer la cellule courante
- \edef\ST@dependance@tree{\ST@dependance@tree(\ST@distant@colnumber,\ST@distant@rownumber)}% mise à jour de l'arbre des dépendances
+ \else% la r\'ef\'erence n'est pas calcul\'ee, donc d'abord il faut
+ \edef\ST@stackcall{(\ST@distant@colnumber,\ST@distant@rownumber)(#1,#2)\ST@stackcall}% l'\'evaluer, et ensuite r\'e-evaluer la cellule courante
+ \edef\ST@dependance@tree{\ST@dependance@tree(\ST@distant@colnumber,\ST@distant@rownumber)}% mise \'a jour de l'arbre des d\'ependances
\fi
\fi
- \or% le code vaut 2, c'est une fonction à argument «plage de cellules»
+ \or% le code vaut 2, c'est une fonction \'a argument «plage de cellules»
\expandafter\let\expandafter\ST@current@formula\csname formula@#1@#2\endcsname% alias pour la formule
\let\ST@tobereplaced\ST@function@namefound\ST@expadd@tomacro\ST@tobereplaced{\expandafter(\ST@function@argfound)}%
- \csname ST@func@\ST@function@namefound\endcsname\ST@function@argfound\ST@result@func% puis on essaie d'évaluer la fonction
+ \csname ST@func@\ST@function@namefound\endcsname\ST@function@argfound\ST@result@func% puis on essaie d'\'evaluer la fonction
\unless\ifx\ST@result@func\@empty% si le calcul a abouti
\ST@Iffirstis\ST@result@func-{\expandafter\def\expandafter\ST@result@func\expandafter{\expandafter(\ST@result@func)}}\relax
\ST@expsubst\ST@current@formula\ST@tobereplaced\ST@result@func% on replace dans l'alias
\ST@letname{formula@#1@#2}\ST@current@formula% on l'assigne dans la formule
- \edef\ST@stackcall{(#1,#2)\ST@stackcall}% puis, on évalue à nouveau cette cellule
+ \edef\ST@stackcall{(#1,#2)\ST@stackcall}% puis, on \'evalue \'a nouveau cette cellule
\fi
\or% le code vaut 3, c'est un fonction dont l'argument est textuel
\let\ST@function@argfound@edefed\ST@function@argfound
- \ST@findref@informula\ST@function@argfound\ST@temp@formula% y a t-il une référence dans l'argument de la fonction ?
- \ifx\ST@temp@formula\@empty% pas de référence dans l'argument de la fonction
+ \ST@findref@informula\ST@function@argfound\ST@temp@formula% y a t-il une r\'ef\'erence dans l'argument de la fonction ?
+ \ifx\ST@temp@formula\@empty% pas de r\'ef\'erence dans l'argument de la fonction
\expandafter\let\expandafter\ST@current@formula\csname formula@#1@#2\endcsname% alias pour la formule
\let\ST@tobereplaced\ST@function@namefound
- \ST@expadd@tomacro\ST@tobereplaced{\expandafter(\ST@function@argfound)}% ce qui va être remplacé : fonction(argument)
- \csname ST@func@\ST@function@namefound\endcsname\ST@function@argfound@edefed\ST@result@func% puis on évalue la fonction
+ \ST@expadd@tomacro\ST@tobereplaced{\expandafter(\ST@function@argfound)}% ce qui va \^etre remplac\'e : fonction(argument)
+ \csname ST@func@\ST@function@namefound\endcsname\ST@function@argfound@edefed\ST@result@func% puis on \'evalue la fonction
\ST@expsubst\ST@current@formula\ST@tobereplaced\ST@result@func% on replace dans l'alias
\ST@letname{formula@#1@#2}\ST@current@formula% on l'assigne dans la formule
- \edef\ST@stackcall{(#1,#2)\ST@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@temp@formula\endcsname=\z@% si la référence est une cellule texte
+ \edef\ST@stackcall{(#1,#2)\ST@stackcall}% puis, on \'evalue \'a nouveau cette cellule
+ \else% il y a une r\'ef\'erence dans l'argument de la fontion
+ \ifnum\csname code@\ST@temp@formula\endcsname=\z@% si la r\'ef\'erence est une cellule texte
\expandafter\let\expandafter\ST@current@formula\csname text@\ST@temp@formula\endcsname% alias pour la zone texte distante
- \StrDel[1]\ST@current@formula\STnumericfieldmarker[\ST@current@formula]% on enlève le := si besoin
+ \StrDel[1]\ST@current@formula\STnumericfieldmarker[\ST@current@formula]% on enl\`eve le := si besoin
\ST@Ifinstr\ST@current@formula{\@empty\multicolumn}% on ne prend que le texte s'il y a un \multicolumn qui traine
{\ST@thirdarg@after\ST@current@formula\multicolumn\ST@current@formula}\relax
- \let\ST@tobereplaced\ST@function@namefound\ST@expadd@tomacro\ST@tobereplaced{\expandafter(\ST@function@argfound)}%
- \csname ST@func@\ST@function@namefound\endcsname\ST@current@formula\ST@result@func% puis on évalue la fonction
+ \let\ST@tobereplaced\ST@function@namefound
+ \ST@expadd@tomacro\ST@tobereplaced{\expandafter(\ST@function@argfound)}%
+ \ST@subst\ST@tobereplaced|{}%
+ \csname ST@func@\ST@function@namefound\endcsname\ST@current@formula\ST@result@func% puis on \'evalue la fonction
\expandafter\ST@expsubst\csname formula@#1@#2\endcsname\ST@tobereplaced\ST@result@func
- \edef\ST@stackcall{(#1,#2)\ST@stackcall}% puis, on évalue à nouveau cette cellule
+ \edef\ST@stackcall{(#1,#2)\ST@stackcall}% puis, on \'evalue \'a nouveau cette cellule
\else
\@latex@error{\ST@errname Macro function \ST@function@namefound\space requires a reference to a text cell!}\ST@seedoc@i
\fi
@@ -989,7 +1025,7 @@
}
% On regarde s'il y a des appels de calcul de cellules en attente
-% Si oui, on enlève le 1er appel de la pile lifo et on l'exécute
+% Si oui, on enl\`eve le 1er appel de la pile lifo et on l'ex\'ecute
\newcommand\ST@next@onstack{%
\unless\ifx\ST@stackcall\@empty
\ST@split\ST@stackcall)\ST@temp@a\ST@stackcall
@@ -999,10 +1035,11 @@
\fi
}
-\newcommand\ST@sanitize@stack{% enlève de \ST@stackcall toutes les occurrences de \ST@temp@a
+\newcommand\ST@sanitize@stack{% enl\`eve de \ST@stackcall toutes les occurrences de \ST@temp@a
\ST@Ifinstr\ST@stackcall\ST@temp@a
{\expandafter\ST@subst\expandafter\ST@stackcall\expandafter{\ST@temp@a}{}%
- \ST@sanitize@stack}%
+ \ST@sanitize@stack
+ }%
\relax
}
@@ -1010,7 +1047,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Macro-fonctions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% liste des fonctions dont l'argument est numérique
+% liste des fonctions dont l'argument est num\'erique
\newcommand\ST@functions@with@num@arg{%
id,fact,ifeq,ifgt,iflt,numtofrshortdate,numtoengshortdate,numtofrlongdate,gcd,lcm,%
numtoenglongdate,numtofrmonth,numtoengmonth,numtofrday,numtoengday}
@@ -1018,13 +1055,13 @@
% liste des fonctions dont l'argument est une plage ou est vide
\newcommand\ST@functions@with@range@arg{sum,rand,randint,sumprod}
-% liste des fonctions dont l'argument ne doit pas être calculé
+% liste des fonctions dont l'argument ne doit pas \^etre calcul\'e
\newcommand\ST@functions@no@calc@arg{ifeq,ifgt,iflt,gcd,lcm}
% liste des fonctions dont l'argument est un texte
\newcommand\ST@functions@with@text@arg{frshortdatetonum,engshortdatetonum,englongdatetonum,frlongdatetonum,scitodec}
-% liste des fonctions dont le résultat est un texte
+% liste des fonctions dont le r\'esultat est un texte
\newcommand\ST@functions@with@textresult{%
numtofrshortdate,numtoengshortdate,numtofrlongdate,numtoenglongdate,%
numtofrmonth,numtoengmonth,numtofrday,numtoengday}
@@ -1032,14 +1069,14 @@
% liste totale des fonctions
\edef\ST@functions@list{\ST@functions@with@num@arg,\ST@functions@with@range@arg,\ST@functions@with@text@arg}
-\newcommand\ST@for[2]{% \ST@for{#1}{code} -> exécute le code pour toutes les cellules des plages passées en argument #1
+\newcommand\ST@for[2]{% \ST@for{#1}{code} -> ex\'ecute le code pour toutes les cellules des plages pass\'ees en argument #1
\def\ST@forcode{#2}%
\expandafter\def\expandafter\ST@for@rangelist\expandafter{#1;}%
\ST@for@i
}
-\newcommand\ST@for@loopcode{% #2 est le code à exécuter dans la boucle for
- \ST@forcode% on exécute le code
+\newcommand\ST@for@loopcode{% #2 est le code \'a ex\'ecuter dans la boucle for
+ \ST@forcode% on ex\'ecute le code
\let\ST@nextfor\ST@for@loopcode
\advance\ST@colcount@i\@ne
\ifnum\ST@colcount@i>\ST@for@col@end
@@ -1077,9 +1114,9 @@
\ST@nextfor
}
-% 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@function@namefound contient le nom de la fonction trouvée et \ST@function@argfound son argument.
-% Si aucune fonction mot-clé n'est trouvé, ces 2 dernières séquences de contrôles sont vides.
+% Cette macro cherche dans la sc #1 la premi\`ere fonction qu'elle trouve ne contenant pas d'autre fonction dans son argument
+% En sortie, \ST@function@namefound contient le nom de la fonction trouv\'ee et \ST@function@argfound son argument.
+% Si aucune fonction mot-cl\'e n'est trouv\'e, ces 2 derni\`eres s\'equences de contrôles sont vides.
\newcommand\ST@find@first@func[1]{%
\let\ST@function@namefound\@empty\let\ST@function@argfound\@empty
\let\ST@function@namefound@\@empty\let\ST@function@argfound@\@empty
@@ -1088,17 +1125,17 @@
}
\newcommand\ST@find@first@func@i{%
- \edef\ST@tempfunctions@list{\ST@functions@list,}% réinitialise la liste
- \let\ST@tempfunc@\ST@tempfunc% sauveagrde pour restauration ultérieure
- \let\ST@function@namefound\@empty% initialise avant appel à la macro
- \ST@Ifinstr\ST@tempfunc(% s'il y a une parenthèse
+ \edef\ST@tempfunctions@list{\ST@functions@list,}% r\'einitialise la liste
+ \let\ST@tempfunc@\ST@tempfunc% sauveagrde pour restauration ult\'erieure
+ \let\ST@function@namefound\@empty% initialise avant appel \'a la macro
+ \ST@Ifinstr\ST@tempfunc(% s'il y a une parenth\`ese
{\ST@find@first@func@ii% cherche la 1ere fonction dans l'argument
\ifx\ST@function@namefound\@empty% elle n'existe pas ?
- \let\ST@function@namefound\ST@function@namefound@\let\ST@function@argfound\ST@function@argfound@% on restaure les valeurs précédentes
+ \let\ST@function@namefound\ST@function@namefound@\let\ST@function@argfound\ST@function@argfound@% on restaure les valeurs pr\'ec\'edentes
\else% si il y a une fonction dans l'argument
- \ST@right\ST@tempfunc@\ST@function@namefound\ST@tempfunc% prend ce qui est après le nom de la fonction
- \ST@seekfunc@arg\ST@tempfunc\ST@function@argfound% isole l'argument entre parenthèses
- \let\ST@function@namefound@\ST@function@namefound\let\ST@function@argfound@\ST@function@argfound% met à jour les valeurs précédentes
+ \ST@right\ST@tempfunc@\ST@function@namefound\ST@tempfunc% prend ce qui est apr\`es le nom de la fonction
+ \ST@seekfunc@arg\ST@tempfunc\ST@function@argfound% isole l'argument entre parenth\`eses
+ \let\ST@function@namefound@\ST@function@namefound\let\ST@function@argfound@\ST@function@argfound% met \'a jour les valeurs pr\'ec\'edentes
\let\ST@tempfunc\ST@function@argfound% recommence avec l'argument
\expandafter\ST@find@first@func@i
\fi}%
@@ -1107,11 +1144,11 @@
\newcommand\ST@find@first@func@ii{%
\unless\ifx\ST@tempfunc\@empty% tant que le contenu n'est pas vide
- \unless\ifx\ST@tempfunctions@list\@empty% et tant que tous les noms de fonctions n'ont pas été explorés
+ \unless\ifx\ST@tempfunctions@list\@empty% et tant que tous les noms de fonctions n'ont pas \'et\'e explor\'es
\ST@split\ST@tempfunctions@list,\ST@current@funcname\ST@tempfunctions@list
\ST@Ifinstr\ST@tempfunc{\ST@current@funcname(}% si l'argument contient le nom de fonction courant
{\let\ST@function@namefound\ST@current@funcname
- \ST@left\ST@tempfunc{\ST@current@funcname(}\ST@tempfunc% on réduit l'argument à ce qui est avant ce nom
+ \ST@left\ST@tempfunc{\ST@current@funcname(}\ST@tempfunc% on r\'eduit l'argument \'a ce qui est avant ce nom
}%
\relax
\expandafter\expandafter\expandafter\ST@find@first@func@ii
@@ -1119,9 +1156,9 @@
\fi
}
-% 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
+% la sc #1 commence normalement (sinon, ça va gueuler) par une parenth\`ese
+% La macro trouve l'argument se trouvant entre les parenth\`eses les plus ext\'erieures
+% et l'assigne \'a la sc #2
\newcommand\ST@seekfunc@arg[2]{%
\edef\ST@openbrace@catcode{\number\catcode`\(}\edef\ST@closebrace@catcode{\number\catcode`\)}%
\catcode`\(1 \catcode`\)2
@@ -1133,29 +1170,29 @@
\expandafter\ST@assignarg\scantokens\expandafter{#2}%
}
-\newcommand\ST@func@sum[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@temp@stack\@empty% pile d'appel temporaire vide aussi au début
+\newcommand\ST@func@sum[2]{% #1 est la sc contenant la plage de valeurs, #2 est la sc recevant le r\'esultat
+ \def#2{0}% r\'esultat nul pour l'instant
+ \let\ST@temp@stack\@empty% pile d'appel temporaire vide aussi au d\'ebut
\ST@for{#1}% on parcourt la <plage de cellules>
{\ifcase\csname code@\number\ST@colcount@i @\number\ST@rowcount@i\endcsname% on ne prend en compte que les code 1 et 2
\or% code=1
\edef\ST@temp@stack{\ST@temp@stack(\number\ST@colcount@i,\number\ST@rowcount@i)}%
\or% code=2
- \ifx\ST@temp@stack\@empty% on ne prend la peine d'additionner que si toutes les cellules sont calculées
+ \ifx\ST@temp@stack\@empty% on ne prend la peine d'additionner que si toutes les cellules sont calcul\'ees
\expandafter\FPadd\expandafter#2\expandafter#2\csname formula@\number\ST@colcount@i @\number\ST@rowcount@i\endcsname
- \edef\ST@dependance@tree{\ST@dependance@tree(\number\ST@colcount@i,\number\ST@rowcount@i)}% mise à jour de l'arbre des dépendances
+ \edef\ST@dependance@tree{\ST@dependance@tree(\number\ST@colcount@i,\number\ST@rowcount@i)}% mise \'a jour de l'arbre des d\'ependances
\fi
\fi
}%
- \ifx\ST@temp@stack\@empty% toutes les cellules dans la plage étaient calculées ?
- \FPclip#2#2% on ôte les 0 inutiles si le calcul a été mené au bout
+ \ifx\ST@temp@stack\@empty% toutes les cellules dans la plage \'etaient calcul\'ees ?
+ \FPclip#2#2% on ôte les 0 inutiles si le calcul a \'et\'e men\'e au bout
\else
\let#2\@empty
- \edef\ST@stackcall{\ST@temp@stack(\ST@current@colnumber,\ST@current@rownumber)\ST@stackcall}% on met à jour la pile d'appel
+ \edef\ST@stackcall{\ST@temp@stack(\ST@current@colnumber,\ST@current@rownumber)\ST@stackcall}% on met \'a jour la pile d'appel
\fi
}
-\newcommand\ST@func@sumprod[2]{% #1 est la sc contenant la plage de valeurs, #2 est la sc recevant le résultat
+\newcommand\ST@func@sumprod[2]{% #1 est la sc contenant la plage de valeurs, #2 est la sc recevant le r\'esultat
\ST@left{#1;};\ST@firstmat
\ST@right#1;\ST@othermat
\ST@left\ST@firstmat{\@empty:}\ST@temp@a
@@ -1167,7 +1204,7 @@
\edef\ST@matcol{\number\numexpr\ST@distant@colnumber-\ST@mat@firstcol}%
\edef\ST@matrow{\number\numexpr\ST@distant@rownumber-\ST@mat@firstrow}%
\ST@count\@ne
- \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
+ \loop% regarde si toutes les matrices ont la m\^eme dimension que la 1ere et pour chacune, calcule les vecteurs de d\'ecalage par rapport \'a la premi\`ere
\unless\ifx\ST@othermat\@empty
\ST@left{\ST@othermat;};\ST@currentmat
\ST@right{\ST@othermat;};\ST@othermat
@@ -1185,15 +1222,15 @@
\unless\ifnum\ST@matrow=\ST@currentmatrow\ST@unmatch@matrixdim\fi% la dimension verticale ne correspond pas
\advance\ST@count\@ne
\repeat
- \let\ST@temp@stack\@empty% pile d'appel temporaire vide au début
- \edef\ST@numbermat{\number\ST@count}% c'est le nombre de matrices à multiplier
- \def#2{0}% résultat nul pour l'instant
+ \let\ST@temp@stack\@empty% pile d'appel temporaire vide au d\'ebut
+ \edef\ST@numbermat{\number\ST@count}% c'est le nombre de matrices \'a multiplier
+ \def#2{0}% r\'esultat nul pour l'instant
\ST@for{\ST@firstmat}% pour chaque cellule de la 1ere matrice
- {\def\ST@inter@result{0}% résultat partiel nul pour l'instant
+ {\def\ST@inter@result{0}% r\'esultat partiel nul pour l'instant
\ifcase\csname code@\number\ST@colcount@i @\number\ST@rowcount@i\endcsname
\or% code =1
\edef\ST@temp@stack{\ST@temp@stack(\number\ST@colcount@i,\number\ST@rowcount@i)}%
- \edef\ST@dependance@tree{\ST@dependance@tree(\number\ST@colcount@i,\number\ST@rowcount@i)}% mise à jour de l'arbre des dépendances
+ \edef\ST@dependance@tree{\ST@dependance@tree(\number\ST@colcount@i,\number\ST@rowcount@i)}% mise \'a jour de l'arbre des d\'ependances
\or% code=2
\expandafter\let\expandafter\ST@inter@result\csname formula@\number\ST@colcount@i @\number\ST@rowcount@i\endcsname
\fi
@@ -1201,32 +1238,32 @@
\loop% on multiplie tous les nombres qui se correspondent dans les matrices
\edef\ST@tempcoord{\number\numexpr\ST@colcount@i+\csname ST@vectorcol@\romannumeral\ST@count\endcsname @\number\numexpr\ST@rowcount@i+\csname ST@vectorrow@\romannumeral\ST@count\endcsname}%
\ifcase\csname code@\ST@tempcoord\endcsname
- \def\ST@inter@result{0}% code =0 -> on met le résultat partiel à 0
+ \def\ST@inter@result{0}% code =0 -> on met le r\'esultat partiel \'a 0
\or% code =1
\ST@subst\ST@tempcoord @,%
\edef\ST@temp@stack{\ST@temp@stack(\ST@tempcoord)}%
- \edef\ST@dependance@tree{\ST@dependance@tree(\ST@tempcoord)}% mise à jour de l'arbre des dépendances
+ \edef\ST@dependance@tree{\ST@dependance@tree(\ST@tempcoord)}% mise \'a jour de l'arbre des d\'ependances
\or% code=2
\expandafter\FPmul\expandafter\ST@inter@result\expandafter\ST@inter@result\csname formula@\ST@tempcoord\endcsname
\else
- \def\ST@inter@result{0}% code = autre -> on met le résultat partiel à 0
+ \def\ST@inter@result{0}% code = autre -> on met le r\'esultat partiel \'a 0
\fi
\advance\ST@count\@ne
\ifnum\ST@count<\ST@numbermat
\repeat
\FPadd#2#2\ST@inter@result
}%
- \ifx\ST@temp@stack\@empty% toutes les cellules dans la plage étaient calculées ?
- \FPclip#2#2% on ôte les 0 inutiles si le calcul a été mené au bout
+ \ifx\ST@temp@stack\@empty% toutes les cellules dans la plage \'etaient calcul\'ees ?
+ \FPclip#2#2% on ôte les 0 inutiles si le calcul a \'et\'e men\'e au bout
\else
\let#2\@empty
- \edef\ST@stackcall{\ST@temp@stack(\ST@current@colnumber,\ST@current@rownumber)\ST@stackcall}% on met à jour la pile d'appel
+ \edef\ST@stackcall{\ST@temp@stack(\ST@current@colnumber,\ST@current@rownumber)\ST@stackcall}% on met \'a jour la pile d'appel
\fi
}
\newcommand\ST@func@id[2]{\expandafter\def\expandafter#2\expandafter{#1}}
-% Calcule la factorielle du nombre #1 et met le résultat dans la sc #2
+% Calcule la factorielle du nombre #1 et met le r\'esultat dans la sc #2
\newcommand\ST@func@fact[2]{%
\FPifint{#1}%
\FPifgt{#1}{18}%
@@ -1246,11 +1283,11 @@
}
\newif\ifST@gcd
-\newcommand\ST@arithmetic[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@gcd
+\newcommand\ST@arithmetic[2]{% #1 est une liste de nombres s\'epar\'es par des virgules, #2 la sc qui reçoit leur pgcd ou ppcm selon \ifST@gcd
\ST@split{#1},#2\ST@argB
\ST@Ifinstr\ST@argB,{\ST@split\ST@argB,\ST@argB\ST@remain\let\ST@next\ST@arithmetic}{\let\ST@remain\@empty\let\ST@next\@gobbletwo}%
\let\ST@argA#2%
- \FPeval\ST@argA\ST@argA\FPeval\ST@argB\ST@argB% évalue les 2 nombres au cas où il y ait des opérations
+ \FPeval\ST@argA\ST@argA\FPeval\ST@argB\ST@argB% \'evalue les 2 nombres au cas o\`u il y ait des op\'erations
\FPeval#2{trunc(abs(max(\ST@argB,\ST@argA)),0)}%
\FPeval\ST@argB{trunc(abs(min(\ST@argB,\ST@argA)),0)}%
\FPifzero\ST@argB\else% si 0, on ignore puisque tous les nombres divisent 0 ou en sont leur multiple
@@ -1267,19 +1304,19 @@
\expandafter\expandafter\expandafter\ST@next\expandafter\expandafter\expandafter{\expandafter#2\expandafter,\ST@remain}#2%
}
-\newcommand\ST@func@gcd[2]{% #1 est une liste de nombres séparés par des virgules, #2 la sc qui reçoit leur pgcd
+\newcommand\ST@func@gcd[2]{% #1 est une liste de nombres s\'epar\'es par des virgules, #2 la sc qui reçoit leur pgcd
\ST@gcdtrue\ST@arithmetic{#1}#2%
}
-\newcommand\ST@func@lcm[2]{% #1 est une liste de nombres séparés par des virgules, #2 la sc qui reçoit leur ppcm
+\newcommand\ST@func@lcm[2]{% #1 est une liste de nombres s\'epar\'es par des virgules, #2 la sc qui reçoit leur ppcm
\ST@gcdfalse\ST@arithmetic{#1}#2%
}
-% détermine la graine pour fp en fonction de la date et de l'heure
+% d\'etermine la graine pour fp en fonction de la date et de l'heure
\newcommand\ST@seed{\FPseed\number\time\number\day\number\month}
% la fonction randint
-\newcommand\ST@func@randint[2]{% #1=sc contenant l'argument #2: sc recevant le résultat
+\newcommand\ST@func@randint[2]{% #1=sc contenant l'argument #2: sc recevant le r\'esultat
\ST@Ifinstr#1,% s'il y a 2 nombres -> intervalle [nb1;nb2]
{\ST@split#1,\ST@limita\ST@limitb
\FPifeq\ST@limita\ST@limitb\@latex@error{\ST@errname Macro function randint require two different numbers}\ST@seedoc@i\fi
@@ -1297,15 +1334,15 @@
}%
}
-\newcommand\ST@func@rand[2]{% #1=sc contenant l'argument (ignoré) #2: sc recevant le résultat
- \FPrandom#2%
+\newcommand\ST@func@rand[2]{% #1=sc contenant l'argument (ignor\'e) #2: sc recevant le r\'esultat
+ \FPrandom#2%
}
\newcommand\ST@genzeros[1]{\if#1m0\expandafter\ST@genzeros\fi}
-\newcommand\ST@powerten[2]{% génère 10^abs(#1) dans la sc #2
+\newcommand\ST@powerten[2]{% g\'en\`ere 10^abs(#1) dans la sc #2
\edef#2{1\expandafter\ST@genzeros\romannumeral\number\ifnum#1<\z@-\fi#1000\relax}%
}
-\newcommand\ST@func@scitodec[2]{% #1=sc contenant l'argument #2: sc recevant le résultat
+\newcommand\ST@func@scitodec[2]{% #1=sc contenant l'argument #2: sc recevant le r\'esultat
\expandafter\lowercase\expandafter{\expandafter\def\expandafter#1\expandafter{#1}}%
\ST@Ifinstr#1{ee}% on regarde s'il y a "ee"
{\ST@split#1{ee}\ST@mantissa\ST@exposant
@@ -1336,7 +1373,7 @@
\newcommand\ST@func@iflt[2]{\ST@def@funcif#1#2{lt}}
% Transforme une date en nombre
-\newcommand\ST@datetonum[4]{% #1=sc recevant le résultat #2=jj #3=mm #4=aa
+\newcommand\ST@datetonum[4]{% #1=sc recevant le r\'esultat #2=jj #3=mm #4=aa
\FPeval#1{#3+9-12*trunc((#3+9)/12,0)}%
\FPeval\ST@@@year{#4-trunc(#1/10,0)}%
\FPeval#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}%
@@ -1344,7 +1381,7 @@
}
% Transforme un nombre en une date
-\newcommand\ST@numtodate[4]{% #1=nombre représentant la date #2=jour #3=mois #4=année
+\newcommand\ST@numtodate[4]{% #1=nombre repr\'esentant la date #2=jour #3=mois #4=ann\'ee
\FPeval#4{trunc((10000*#1+14780)/3652425,0)}%
\FPeval#2{#1-(365*#4+trunc(#4/4,0)-trunc(#4/100,0)+trunc(#4/400,0))}%
\FPifneg#2%
@@ -1366,70 +1403,70 @@
}
% transforme une date française courte du type jj/mm/aaaa en nombre
-\newcommand\ST@func@frshortdatetonum[2]{% #1=sc étant l'argument jj/mm/aaaa #2=sc recevant le résultat
+\newcommand\ST@func@frshortdatetonum[2]{% #1=sc \'etant l'argument jj/mm/aaaa #2=sc recevant le r\'esultat
\expandafter\ST@parse@datefr#1\@nil
\ST@datetonum#2\ST@@@day\ST@@@month\ST@@@year
}
% Transforme un nombre en une date française de type jj/mm/aaaa
-\newcommand\ST@func@numtofrshortdate[2]{% % #1=nombre représentant la date #2=sc recevant le résultat
+\newcommand\ST@func@numtofrshortdate[2]{% % #1=nombre repr\'esentant la date #2=sc recevant le r\'esultat
\ST@numtodate#1\ST@@@day\ST@@@month\ST@@@year
\edef#2{\ST@@@day/\ST@@@month/\ST@@@year}%
}
% Transforme un nombre en une date longue française du type «14 juillet 1789»
-\newcommand\ST@func@numtofrlongdate[2]{% % #1=nombre représentant la date #2=sc recevant le résultat
+\newcommand\ST@func@numtofrlongdate[2]{% % #1=nombre repr\'esentant la date #2=sc recevant le r\'esultat
\ST@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ésentant une date le mois en toutes lettres en français
-\newcommand\ST@func@numtofrmonth[2]{% % #1=nombre représentant la date #2=sc recevant le résultat
+% Extrait d'un nombre repr\'esentant une date le mois en toutes lettres en français
+\newcommand\ST@func@numtofrmonth[2]{% % #1=nombre repr\'esentant la date #2=sc recevant le r\'esultat
\ST@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ésentant une date le nom du jour en français
-\newcommand\ST@func@numtofrday[2]{% % #1=nombre représentant la date #2=sc recevant le résultat
+% Extrait d'un nombre rep\'esentant une date le nom du jour en français
+\newcommand\ST@func@numtofrday[2]{% % #1=nombre repr\'esentant la date #2=sc recevant le r\'esultat
\FPeval\ST@@@day{#1-7*trunc(#1/7,0)}\FPclip\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
-\newcommand\ST@func@engshortdatetonum[2]{% #1=sc étant l'argument aaaa/mm/jj #2=sc recevant le résultat
+\newcommand\ST@func@engshortdatetonum[2]{% #1=sc \'etant l'argument aaaa/mm/jj #2=sc recevant le r\'esultat
\expandafter\ST@parse@dateeng#1\@nil
\ST@datetonum#2\ST@@@day\ST@@@month\ST@@@year
}
% Transforme un nombre en une date anglaise de type aaaa/mm/jj
-\newcommand\ST@func@numtoengshortdate[2]{% % #1=nombre représentant la date #2=sc recevant le résultat
+\newcommand\ST@func@numtoengshortdate[2]{% % #1=nombre repr\'esentant la date #2=sc recevant le r\'esultat
\ST@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 «July 14, 1789»
-\newcommand\ST@func@numtoenglongdate[2]{% % #1=nombre représentant la date #2=sc recevant le résultat
+\newcommand\ST@func@numtoenglongdate[2]{% % #1=nombre repr\'esentant la date #2=sc recevant le r\'esultat
\ST@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ésentant une date le mois en toutes lettres en anglais
-\newcommand\ST@func@numtoengmonth[2]{% % #1=nombre représentant la date #2=sc recevant le résultat
+% Extrait d'un nombre repr\'esentant une date le mois en toutes lettres en anglais
+\newcommand\ST@func@numtoengmonth[2]{% % #1=nombre repr\'esentant la date #2=sc recevant le r\'esultat
\ST@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ésentant une date le nom du jour en anglais
-\newcommand\ST@func@numtoengday[2]{% % #1=nombre représentant la date #2=sc recevant le résultat
+% Extrait d'un nombre rep\'esentant une date le nom du jour en anglais
+\newcommand\ST@func@numtoengday[2]{% % #1=nombre repr\'esentant la date #2=sc recevant le r\'esultat
\FPeval\ST@@@day{#1-7*trunc(#1/7,0)}\FPclip\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ée) est valide. Sinon, envoie un message d'erreur
+% Teste si la date contenue dans les 3 sc #1 (jour) #2(mois) #3(ann\'ee) est valide. Sinon, envoie un message d'erreur
\newcommand\ST@test@date@validity[3]{%
\IfInteger#1\relax\ST@invalid@date
\IfInteger#2\relax\ST@invalid@date
@@ -1438,16 +1475,16 @@
\ifnum#2>12 \ST@invalid@date\fi
\ifnum#1<\@ne\ST@invalid@date\fi
\ifnum#1>\ifcase#2\or31\or29\or31\or30\or31\or30\or31\or31\or30\or31\or30\or31\fi\ST@invalid@date\fi
- \ifnum#3<\@ne\ST@invalid@date\fi% on va s'arrêter à JC quand même :-)
+ \ifnum#3<\@ne\ST@invalid@date\fi% on va s'arr\^eter \'a JC quand m\^eme :-)
}
% Transforme une date anglaise longue du type «July 14, 1789» en un nombre
-\newcommand\ST@func@englongdatetonum[2]{% #1=sc contenant la date longue #2=sc recevant le résultat
+\newcommand\ST@func@englongdatetonum[2]{% #1=sc contenant la date longue #2=sc recevant le r\'esultat
\ST@analyse@text@engdate#1\ST@@@day\ST@@@month\ST@@@year
\ST@datetonum#2\ST@@@day\ST@@@month\ST@@@year
}
-\newcommand\ST@analyse@text@engdate[4]{% #1=texte représentant la date #2=jour #3=n° mois #4=année
+\newcommand\ST@analyse@text@engdate[4]{% #1=texte repr\'esentant la date #2=jour #3=n° mois #4=ann\'ee
\if\noexpand\today\expandafter\noexpand#1%
\edef#2{\number\day}\edef#3{\number\month}\edef#4{\number\year}%
\else
@@ -1455,10 +1492,18 @@
\ST@removespaces#3%
\expandafter\lowercase\expandafter{\expandafter\def\expandafter#3\expandafter{#3}}%
\IfStrEqCase#3{%
- {january}{\def#3{1}}{february}{\def#3{2}}{march}{\def#3{3}}%
- {april}{\def#3{4}}{may}{\def#3{5}}{june}{\def#3{6}}%
- {july}{\def#3{7}}{august}{\def#3{8}}{september}{\def#3{9}}%
- {october}{\def#3{10}}{november}{\def#3{11}}{december}{\def#3{12}}%
+ {january}{\def#3{1}}%
+ {february}{\def#3{2}}%
+ {march}{\def#3{3}}%
+ {april}{\def#3{4}}%
+ {may}{\def#3{5}}%
+ {june}{\def#3{6}}%
+ {july}{\def#3{7}}%
+ {august}{\def#3{8}}%
+ {september}{\def#3{9}}%
+ {october}{\def#3{10}}%
+ {november}{\def#3{11}}%
+ {december}{\def#3{12}}%
}[\def#3{-1}]%
\ST@right#1\space#2%
\ST@Ifinstr#2,{\ST@split#2,#2#4}{\ST@split#2{ }#2#4}%
@@ -1469,14 +1514,14 @@
}
% Transforme une date anglaise longue du type «14 juillet 1789» en un nombre
-\newcommand\ST@func@frlongdatetonum[2]{% #1=sc contenant la date longue #2=sc recevant le résultat
+\newcommand\ST@func@frlongdatetonum[2]{% #1=sc contenant la date longue #2=sc recevant le r\'esultat
\ST@analyse@text@frdate#1\ST@@@day\ST@@@month\ST@@@year
\ST@datetonum#2\ST@@@day\ST@@@month\ST@@@year
}
\def\ST@utfencoding{utf8}
-\newcommand\ST@analyse@text@frdate[4]{% #1=texte représentant la date #2=jour #3=n° mois #4=année
+\newcommand\ST@analyse@text@frdate[4]{% #1=texte repr\'esentant la date #2=jour #3=n° mois #4=ann\'ee
\if\noexpand\today\expandafter\noexpand#1%
\edef#2{\number\day}\edef#3{\number\month}\edef#4{\number\year}%
\else
@@ -1484,9 +1529,9 @@
\IfInteger#2\relax{\edef#2{\number\integerpart}}%
\ST@split#3{ }#3#4%
\ST@removespaces#3%
- \def\ST@e{^^e9}\def\ST@u{^^fb}% é et û en latin1
+ \def\ST@e{^^e9}\def\ST@u{^^fb}% \'e et û en latin1
\ifdefined\inputencodingname\ifx\ST@utfencoding\inputencodingname
- \def\ST@e{^^c3^^a9}\def\ST@u{^^c3^^bb}% é et û en utf8
+ \def\ST@e{^^c3^^a9}\def\ST@u{^^c3^^bb}% \'e et û en utf8
\fi\fi
\expandafter\ST@subst\expandafter#3\expandafter{\ST@e}e\ST@subst#3\'{}%
\expandafter\ST@subst\expandafter#3\expandafter{\ST@u}u\ST@subst#3\^{}%
@@ -1502,9 +1547,9 @@
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%% Construction du tableau à afficher %%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%% Construction du tableau \'a afficher %%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newcommand\ST@search@lastshowcol{% cherche le numéro de la dernière colonne non masquée
+\newcommand\ST@search@lastshowcol{% cherche le num\'ero de la derni\`ere colonne non masqu\'ee
\ST@colcount\ST@total@colnumber% on commence par la fin
\ST@search@lastshowcol@i
}
@@ -1515,19 +1560,19 @@
{\edef\ST@lastshowcol{\number\ST@colcount}}%
}
-% cherche "<<ref>>" dans la sc #1 et remplace toutes ces occurences par le champ numérique de "ref"
+% cherche "<<ref>>" dans la sc #1 et remplace toutes ces occurences par le champ num\'erique de "ref"
\newcommand\ST@displaynumfields[1]{%
\StrBehind#1\ST@startdisplay[\ST@dipslaycell]%
\StrBefore\ST@dipslaycell\ST@enddisplay[\ST@dipslaycell]%
- \let\ST@next\@gobble% à priori, on ne reboucle pas
+ \let\ST@next\@gobble% \'a priori, on ne reboucle pas
\unless\ifx\@empty\ST@dipslaycell% si ce qui a entre les marqueurs n'est pas vide
- \ST@ifref\ST@dipslaycell% et si c'est une référence valide
+ \ST@ifref\ST@dipslaycell% et si c'est une r\'ef\'erence valide
{\let\ST@next\ST@startdisplay
\ST@expadd@tomacro\ST@next\ST@dipslaycell
\ST@expadd@tomacro\ST@next\ST@enddisplay
\expandafter\let\expandafter\ST@dipslaycell\csname formula@\ST@temp@formula\endcsname% alias pour la formule distante
- \unless\ifx\ST@decsep\ST@decsepfp\ST@substdecsep\ST@dipslaycell\fi% subsitution du séparateur décimal s'il y a lieu
- \StrSubstitute#1\ST@next\ST@dipslaycell[#1]% on substitue <<ref>> par le champ numérique de la formule distante
+ \unless\ifx\ST@decsep\ST@decsepfp\ST@substdecsep\ST@dipslaycell\fi% subsitution du s\'eparateur d\'ecimal s'il y a lieu
+ \StrSubstitute#1\ST@next\ST@dipslaycell[#1]% on substitue <<ref>> par le champ num\'erique de la formule distante
\let\ST@next\ST@displaynumfields
}\relax
\fi
@@ -1536,71 +1581,71 @@
\newcommand\ST@build@tab{%
\ST@rowcount\@ne\ST@colcount\@ne
- \expandafter\ST@expadd@tomacro\expandafter\ST@tab\csname endrow@0\endcsname% la (ou les) éventuelle ligne supérieure du tableau
+ \expandafter\ST@expadd@tomacro\expandafter\ST@tab\csname endrow@0\endcsname% la (ou les) \'eventuelle ligne sup\'erieure du tableau
\ST@build@tab@i
}
-\newcommand\ST@build@tab@i{% reconstitue le tableau à partir des valeurs calculées et des cellules
+\newcommand\ST@build@tab@i{% reconstitue le tableau \'a partir des valeurs calcul\'ees et des cellules
\ifnum\ST@rowcount>\ST@total@rownumber
\let\ST@nextcell\relax
\else
\let\ST@nextcell\ST@build@tab@i
\ST@Ifinstr\ST@row@skiplist{\expandafter(\number\ST@rowcount)}% la ligne fait partie de la skiplist ?
- {\advance\ST@rowcount\@ne}% on passe à la ligne suivante
+ {\advance\ST@rowcount\@ne}% on passe \'a la ligne suivante
{%
\ST@Ifinstr\ST@col@skiplist{\expandafter(\number\ST@colcount)}% la colonne fait partie de la skiplist ?
\ST@hiddencoltrue
{%
\ST@hiddencolfalse
\ifcsname text@\number\ST@colcount @\number\ST@rowcount\endcsname% si la cellule existe
- \expandafter\let\expandafter\ST@temp@b\csname text@\number\ST@colcount @\number\ST@rowcount\endcsname% on créé un alias pour le texte
+ \expandafter\let\expandafter\ST@temp@b\csname text@\number\ST@colcount @\number\ST@rowcount\endcsname% on cr\'e\'e un alias pour le texte
\exploregroups
- \ifnum\csname code@\number\ST@colcount @\number\ST@rowcount\endcsname=\tw@% si la cellule contient un champ numérique
+ \ifnum\csname code@\number\ST@colcount @\number\ST@rowcount\endcsname=\tw@% si la cellule contient un champ num\'erique
\expandafter\let\expandafter\ST@temp@a\csname formula@\number\ST@colcount @\number\ST@rowcount\endcsname% alias pour la valeur
- \unless\ifx\ST@decsep\ST@decsepfp\ST@substdecsep\ST@temp@a\fi% et si le "." doit être remplacé par "," on substitue
- \StrSubstitute[1]\ST@temp@b\STnumericfieldmarker\ST@temp@a[\ST@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@temp@b\STnumericfieldmarker[\ST@temp@a]% on enlève l'éventuel marqueur
+ \unless\ifx\ST@decsep\ST@decsepfp\ST@substdecsep\ST@temp@a\fi% et si le "." doit \^etre remplac\'e par "," on substitue
+ \StrSubstitute[1]\ST@temp@b\STnumericfieldmarker{\expandafter\STprintnum\expandafter{\ST@temp@a}}[\ST@temp@a]% on remplace le flag de formule par la valeur calcul\'ee
+ \else% si la cellule ne contient pas de champ num\'erique
+ \StrDel[1]\ST@temp@b\STnumericfieldmarker[\ST@temp@a]% on enl\`eve l'\'eventuel marqueur
\fi
- \ST@displaynumfields\ST@temp@a% affiche les champs numériques des cellules entre << et >>
+ \ST@displaynumfields\ST@temp@a% affiche les champs num\'eriques des cellules entre << et >>
\noexploregroups
\ST@expadd@tomacro\ST@tab\ST@temp@a% on ajoute la cellule au tableau
\fi
}%
- \advance\ST@colcount\@ne% on passe à la colonne suivante !
- \ifcsname code@\number\ST@colcount @\number\ST@rowcount\endcsname% y a t-il encore un code défini ensuite ?
+ \advance\ST@colcount\@ne% on passe \'a la colonne suivante !
+ \ifcsname code@\number\ST@colcount @\number\ST@rowcount\endcsname% y a t-il encore un code d\'efini ensuite ?
\ifnum\csname code@\number\ST@colcount @\number\ST@rowcount\endcsname<\z@% on est dans une cellule contenant \multicol ?
\expandafter\ST@firstarg@after\csname text@\number\numexpr\ST@colcount-1@\number\ST@rowcount\endcsname\multicolumn\ST@multicol@number% combien de cellules ?
- \advance\ST@colcount\ST@multicol@number% on va voir après le multicol en sautant toutes les valeurs des colonnes intermédiaires
+ \advance\ST@colcount\ST@multicol@number% on va voir apr\`es le multicol en sautant toutes les valeurs des colonnes interm\'ediaires
\advance\ST@colcount\m@ne
- \ifcsname code@\number\ST@colcount @\number\ST@rowcount\endcsname% y a t-il un code défini après le multicol ?
+ \ifcsname code@\number\ST@colcount @\number\ST@rowcount\endcsname% y a t-il un code d\'efini apr\`es le multicol ?
\ST@add@tomacro\ST@tab&% on ajoute la tabulation
\fi
\else% pas de \multicolumn
- \unless\ifST@hiddencol% si la cellule n'est pas masquée
- \unless\ifnum\ST@colcount>\ST@lastshowcol% si ce n'est pas la dernière cellule affichée
+ \unless\ifST@hiddencol% si la cellule n'est pas masqu\'ee
+ \unless\ifnum\ST@colcount>\ST@lastshowcol% si ce n'est pas la derni\`ere cellule affich\'ee
\ST@add@tomacro\ST@tab&%on ajoute la tabulation
\fi
\fi
\fi
- \else% il n'y a plus de code ensuite donc c'était la dernière colonne
+ \else% il n'y a plus de code ensuite donc c'\'etait la derni\`ere colonne
\ifcsname endrow@\number\ST@rowcount\endcsname
\expandafter\ST@expadd@tomacro\expandafter\ST@tab\csname endrow@\number\ST@rowcount\endcsname% ajoute la fin de la ligne
\fi
- \ST@colcount\@ne% on remet la colonne à 1
- \advance\ST@rowcount\@ne% on passe à la ligne suivante
+ \ST@colcount\@ne% on remet la colonne \'a 1
+ \advance\ST@rowcount\@ne% on passe \'a la ligne suivante
\fi
}%
\fi
\ST@nextcell
}
-% format des lettres et nombres représentant les coordonnées (helvetica gras très petit)
+% format des lettres et nombres repr\'esentant les coordonn\'ees (helvetica gras tr\`es petit)
\newcommand\ST@debugformat@headers{%
\usefont{T1}{phv}{b}{n}%
}
-% format utilisé pour les cellules
+% format utilis\'e pour les cellules
\newcommand\ST@debug@format@cells{%
\usefont{T1}{lmtt}{m}{n}%
}
@@ -1610,7 +1655,7 @@
}
\newcommand\STdebug[1]{%
- \ST@debugmodetrue% on se met en mode débogage
+ \ST@debugmodetrue% on se met en mode d\'ebogage
\begingroup
\def\ST@debuginfo{#1}%
\ifmmode\scriptscriptstyle\else\scriptsize\fi
@@ -1633,7 +1678,7 @@
\repeat
\ST@colcount\@ne
\ST@edefadd@tomacro\ST@debugtab{%
- &% passe à la dernière colonne de la première ligne
+ &% passe \'a la derni\`ere colonne de la premi\`ere ligne
\noexpand\multicolumn1l{%
\ifx\ST@temp@a\ST@debuginfo
\ifcsname endrow@\number\ST@rowcount\endcsname
@@ -1645,22 +1690,25 @@
\ST@debug@tab@i
}
-\newcommand\ST@debug@tab@i{% affiche le tableau de débobage
+\newcommand\ST@debug@tab@i{% affiche le tableau de d\'ebobage
\ifnum\ST@rowcount>\ST@total@rownumber
\ST@edefadd@tomacro\ST@debugtab{\noexpand\cline{2-\number\numexpr\ST@lastshowcol+1}\noexpand\end{tabular}}%
- \ST@debugtab% affichage du tableau de débogage
- \ifmmode\\[0.5ex]\else\par\smallskip\fi% retour à la ligne
+ \ST@debugtab% affichage du tableau de d\'ebogage
+ \ifmmode\\[0.5ex]\else\par\smallskip\fi% retour \'a la ligne
\expandafter\endgroup
\else
\ifnum\ST@colcount=\@ne
\ST@edefadd@tomacro\ST@debugtab{%
\noexpand\multicolumn1{c|}{\ST@colorcell\noexpand\ST@debugformat@headers\number\ST@rowcount}&}%
\fi
- \ifcsname\ST@debuginfo @\number\ST@colcount @\number\ST@rowcount\endcsname% si l'info existe pour la cellule concernée
- \ST@edefadd@tomacro\ST@debugtab{\detokenize\expandafter\expandafter\expandafter{\csname\ST@debuginfo @\number\ST@colcount @\number\ST@rowcount\endcsname}}% on ajoute la cellule au tableau que l'on a detokenisée au préalable
+ \ifcsname\ST@debuginfo @\number\ST@colcount @\number\ST@rowcount\endcsname% si l'info existe pour la cellule concern\'ee
+ \ifx\ST@temp@a\ST@debuginfo
+ \expandafter\ST@subst\csname\ST@debuginfo @\number\ST@colcount @\number\ST@rowcount\endcsname|{}%
+ \fi
+ \ST@edefadd@tomacro\ST@debugtab{\detokenize\expandafter\expandafter\expandafter{\csname\ST@debuginfo @\number\ST@colcount @\number\ST@rowcount\endcsname}}% on ajoute la cellule au tableau que l'on a detokenis\'ee au pr\'ealable
\fi
- \advance\ST@colcount\@ne% on passe à la colonne suivante !
- \ifnum\ST@colcount>\ST@lastshowcol% si c'est la dernière cellule affichée
+ \advance\ST@colcount\@ne% on passe \'a la colonne suivante !
+ \ifnum\ST@colcount>\ST@lastshowcol% si c'est la derni\`ere cellule affich\'ee
\ST@edefadd@tomacro\ST@debugtab{%
&\noexpand\multicolumn1l{%
\ifx\ST@temp@a\ST@debuginfo
@@ -1669,8 +1717,8 @@
\fi
\fi}%
\noexpand\\\noexpand\cline{2-\number\numexpr\ST@lastshowcol+1}}%
- \ST@colcount\@ne% on remet la colonne à 1
- \advance\ST@rowcount\@ne% on passe à la ligne suivante
+ \ST@colcount\@ne% on remet la colonne \'a 1
+ \advance\ST@rowcount\@ne% on passe \'a la ligne suivante
\else% il reste encore des cellules dans la ligne
\ST@add@tomacro\ST@debugtab&% on ajoute la tabulation
\fi
@@ -1682,24 +1730,24 @@
%%%%%%%%%%%%%%%%%% Environnement spreadtab et macros publiques %%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% définit le séparateur décimal
+% d\'efinit le s\'eparateur d\'ecimal
\newcommand\STsetdecimalsep[1]{\def\ST@decsep{#1}}
-\def\ST@decsepfp{.}% le séparateur décimal donné par fp
-\STsetdecimalsep.% le point par défaut
+\def\ST@decsepfp{.}% le s\'eparateur d\'ecimal donn\'e par fp
+\STsetdecimalsep.% le point par d\'efaut
-\STmessage{true}% affiche les messages par défaut
+\STmessage{true}% affiche les messages par d\'efaut
\newif\ifST@clipround
\newcommand\STautoround{\@ifstar{\ST@cliproundfalse\ST@autoround}{\ST@cliproundtrue\ST@autoround}}
\newcommand\ST@autoround[1]{\def\ST@rounddigit{#1}}
-\STautoround{}% pas d'arrondi par défaut
+\STautoround{}% pas d'arrondi par d\'efaut
-\newcommand\STsavecell[2]{% met dans la sc #1 la valeur du champ numérique de la cellule spécifiée par sa référence ABSOLUE
+\newcommand\STsavecell[2]{% met dans la sc #1 la valeur du champ num\'erique de la cellule sp\'ecifi\'ee par sa r\'ef\'erence ABSOLUE
\def\ST@temp@ref{#2}%
\ST@ifref\ST@temp@ref\relax\ST@illegal@ref
\ST@Ifinstr\ST@temp@ref[\ST@illegal@ref\relax
- \expandafter\let\expandafter#1\csname formula@\ST@temp@formula\endcsname% le nombre est assigné à #1
- \unless\ifx\ST@decsep\ST@decsepfp\ST@substdecsep#1\fi% et si le "." doit être remplacé par "," on substitue
+ \expandafter\let\expandafter#1\csname formula@\ST@temp@formula\endcsname% le nombre est assign\'e \'a #1
+ \unless\ifx\ST@decsep\ST@decsepfp\ST@substdecsep#1\fi% et si le "." doit \^etre remplac\'e par "," on substitue
\global\let#1#1% on rend l'assignation globale
}
@@ -1720,40 +1768,41 @@
\newenvironment{spreadtab}[2][]{%
\ifST@message\FPmessagesfalse\fi% pas de message de calcul de FP
- \expandarg% 1-développement des arguments (réglages de xstring)
- \noexploregroups% pas d'exploration des groupes (réglages de xstring)
- \@makeother\:\@makeother\;\@makeother\,% changer les catcodes pour éviter les incompatibilités avec frenchb
+ \expandarg% 1-d\'eveloppement des arguments (r\'eglages de xstring)
+ \noexploregroups% pas d'exploration des groupes (r\'eglages de xstring)
+ \@makeother\:\@makeother\;\@makeother\,% changer les catcodes pour \'eviter les incompatibilit\'es avec frenchb
\edef\ST@name@env{\@currenvir}%
- \def\ST@tab@preamble{#2}%% préambule du tableau
+ \def\ST@tab@preamble{#2}%% pr\'eambule du tableau
\StrChar{\@empty#2}1[\ST@tab@name]%
\def\ST@optcode{#1}%
\let\ST@copylist\@empty\let\ST@row@skiplist\@empty\let\ST@col@skiplist\@empty\def\ST@last@skipcol{0}%
\edef\ST@previous@seed{\number\FPseed}% sauvegarde de la graine
\ST@seed% graine variable
- \ST@emit@message{\ST@errname New spreadtab {\detokenize{#2}}^^J* reading tab:}%
+ \ST@emit@message{\ST@errname New spreadtab: \string\begin\detokenize{#2}^^J* reading tab:}%
\let\ST@tab\@empty
\ST@get@body% met le corps de l'environnement dans \ST@tab
}%
{%
+ \let\ST@ref@found\@empty
\ST@read@tab% analyse le tableau contenu dans \ST@tab
\ST@emit@message{ok^^J}%
- \ST@search@lastshowcol% cherche la dernière colonne affichée
- \ST@debugmodefalse% à priori, on n'est pas en mode débogage
+ \ST@search@lastshowcol% cherche la derni\`ere colonne affich\'ee
+ \ST@debugmodefalse% \'a priori, on n'est pas en mode d\'ebogage
\let\ST@savecell\STsavecell
\let\STsavecell\@gobbletwo
\let\STdisplaytab\relax
- \ST@optcode% exécute l'argument optionnel en ne tenant compte que de \STdebug
+ \ST@optcode% ex\'ecute l'argument optionnel en ne tenant compte que de \STdebug
\let\STdebug\@gobble
\def\STdisplaytab{%
\ST@debugmodefalse
\ST@emit@message{\space\space\space\space\space Debug mode: display final tab^^J}%
\let\STdisplaytab\relax}%
- \ST@optcode% exécute l'argument optionnel en ne tenant compte que de \STdisplaytab s'il y figure
+ \ST@optcode% ex\'ecute l'argument optionnel en ne tenant compte que de \STdisplaytab s'il y figure
\unless\ifST@debugmode% si on doit afficher le tableau, on fait le boulot
\ST@emit@message{* computing formulas:^^J}%
\ST@eval@tab
\let\STsavecell\ST@savecell
- \ST@optcode% exécute l'argument optionnel en ne tenant compte que de \STsavecell
+ \ST@optcode% ex\'ecute l'argument optionnel en ne tenant compte que de \STsavecell
\expandafter\def\expandafter\ST@tab\expandafter{\expandafter\begin\ST@tab@preamble}%
\ST@emit@message{* building tab:}%
\ST@build@tab
@@ -1761,7 +1810,7 @@
\ST@expadd@tomacro\ST@tab{\expandafter\end\ST@tab@name}%
\ST@tab% affiche le tableau
\fi
- \ST@emit@message{\ST@errname End of spreadtab^^J^^J}%
+ \ST@emit@message{\ST@errname End of spreadtab: \string\end\detokenize\expandafter{\ST@tab@name}^^J^^J}%
\global\FPseed\ST@previous@seed% restauration de la graine
}
@@ -1775,123 +1824,125 @@ v0.1alpha avril 2009
v0.1beta1 2009/06/06
-------------------------------------------------------------------------------
v0.1beta2 2009/06/07
- 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.
+ 1 Une valeur n\'egative dans une cellule provoque un bug.
+ Les valeurs n\'egatives sont d\'esormais mises entre parenth\`eses
+ 2 Espaces supprim\'es en d\'ebut de formules.
-------------------------------------------------------------------------------
v0.1beta3 2009/06/12
- 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
+ 1 Espaces laiss\'es dans les formules pour pouvoir utiliser la notation
+ postfix\'ee de fp.
+ 2 Les r\'ef\'erences ne sont plus «@(B4)» mais indiff\'eremment «b4» ou «B4».
+ 3 R\'ef\'erences relatives possibles par [x,y] ou x et y sont les d\'ecalages
+ de la colonne et de la ligne par rapport \'a la cellule o\`u est
la formule.
- 4 Bugs corrigés pour rendre le package compatible avec tabularx ou
+ 4 Bugs corrig\'es pour rendre le package compatible avec tabularx ou
tabulary (entre autres).
-------------------------------------------------------------------------------
v0.1beta4 2009/06/21
- 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
+ 1 Les espaces sont supprim\'es au d\'ebut de chaque cellule, cela cr\'eait un
+ bug lorsque la cellule commençait par un nombre n\'egatif.
+ 2 Mise en place de la compatibilit\'e avec la commande
+ \multicolumn{nbre}{type}{contenu} du package \'eponyme
+ 3 Possibilit\'e de masquer des lignes ou des colonnes enti\`eres avec les
commandes \SThiderow et \SThidecol
- 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.
+ Seule condition : aucune colonne masqu\'ee ne doit se trouver dans les
+ colonnes impliqu\'ees dans un \multicolum \'a moins de prendre de grandes
+ pr\'ecautions et savoir les cons\'equences que cela occasionne.
-------------------------------------------------------------------------------
v0.1beta5 2009/06/29
- 1 Amélioration des messages d'erreur et d'information
+ 1 Am\'elioration des messages d'erreur et d'information
2 Suppression de tests superflus
- 3 Redéfinition de \STtextcell en «@» qui est plus simple
- 4 Implémentation de \STsavecell
+ 3 Red\'efinition de \STtextcell en «@» qui est plus simple
+ 4 Impl\'ementation 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 é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.
+ 1 Correction d'un bug : dans une cellule, on ne pouvait pas \'ecrire
+ plusieurs fois la m\^eme r\'ef\'erence.
+ 2 Correction d'un bug avec \multicolumn : cette commande \'etait mal g\'er\'ee
+ lorsqu'employ\'ee avec une cellule de texte.
+ 3 Impl\'ementation de macro-fonctions avec diff\'erenciation selon le type
+ d'argument et le type de donn\'ee renvoy\'ee.
+ 4 Possibilit\'e d'imbrication des macro-fonctions.
5 Mise en place d'un environnement « spreadtab »
- 6 Nombreuses optimisations pour une meilleure vitesse d'exécution
+ 6 Nombreuses optimisations pour une meilleure vitesse d'ex\'ecution
-------------------------------------------------------------------------------
v0.1pre 2009/09/02
- 1 Mise au point des messages d'erreurs et des arrêts de compilation selon
- les erreurs rencontrées.
+ 1 Mise au point des messages d'erreurs et des arr\^ets de compilation selon
+ les erreurs rencontr\'ees.
2 Correction d'un bug dans \ST@coord@toref
3 Les cellules vides, textuelles ou jointes par un \multicolumn sont
- ignorées dans les plages de cellules concernées par les fonctions sum
+ ignor\'ees dans les plages de cellules concern\'ees par les fonctions sum
et sumprod
- 4 Les noms de mois accentués et \today sont désormais permis en argument
+ 4 Les noms de mois accentu\'es et \today sont d\'esormais permis en argument
de la fonction frlongdatetonum
- 5 somprod corrigé en sumprod, plus anglais !
- 6 La macro fonction rnd, trop complexe est supprimée au profit de rand et
+ 5 somprod corrig\'e en sumprod, plus anglais !
+ 6 La macro fonction rnd, trop complexe est supprim\'ee au profit de rand et
randint
- 7 Améliorations et optimisations
+ 7 Am\'eliorations et optimisations
-------------------------------------------------------------------------------
-v0.1 2009/11/03 Première version publique sur le CTAN
+v0.1 2009/11/03 Premi\`ere version publique sur le CTAN
-------------------------------------------------------------------------------
v0.2 2010/01/24
- 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
+ 1 On peut d\'efinir le s\'eparateur d\'ecimal par la macro
+ \STsetdecimalsep{<caract\`ere>}
+ 2 Il est possible de copier une formule dans le tableau \'a l'aide de
+ \STcopy{>a,vb}{formule} o\`u a et b sont les nombres de cellules
+ horizontaux et verticaux vers lesquels la formule sera copi\'ee.
+ 3 D\'esormais, spreadtab est enti\`erement compatible avec toutes les
commandes du package booktabs
4 La commande \noalign et son argument est prise en compte lorsqu'elle se
- 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
+ trouve apr\`es un \\
+ 5 Suppression d'espaces ind\'esirables
+ 6 Mise en place d'un mode d\'ebogage o\`u l'on peut visualiser les champs
+ num\'eriques, 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çaise.
2 Implementation beta et donc non visible des macros fonctions gcd, lcm
- Ces macro-fonctions ne sont pas encore documentées.
+ Ces macro-fonctions ne sont pas encore document\'ees.
-------------------------------------------------------------------------------
v0.3 2010/03/28
- 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
+ 1 La macro \STautoround{x} admet une version \'etoil\'ee pour laquelle les
+ nombres sont arrondis et format\'es pour avoir x chiffres apr\`es la
virgules en rajoutant des 0 inutiles si besoin
- 2 La valeur sauvegardée par \STsavecell tient désormais compte du
- séparateur décimal
+ 2 La valeur sauvegard\'ee par \STsavecell tient d\'esormais compte du
+ s\'eparateur d\'ecimal
3 Macro fonctions "gcd" (PGCD), "lcm" (PPCM) et "scitodec" pour convertir
- 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@copylist lorsqu'on a dépassé la dernière ligne de la plage où elle
- doit être copiée
+ une \'ecriture scientifique en une \'ecriture d\'ecimale
+ 4 Dans le champ textuel d'une cellule, on peut d\'esormais afficher le
+ champ num\'erique d'une cellule avec <<ref>>
+ 5 Am\'elioration de l'algorithme pour \STcopy : enleve une formule de
+ \ST@copylist lorsqu'on a d\'epass\'e la derni\`ere ligne de la plage o\`u elle
+ doit \^etre copi\'ee
6 Correction d'un bug lorsque la macro-fonction admettant un argument
- textuel a un argument faisant référence à une autre cellule : enlever
+ textuel a un argument faisant r\'ef\'erence \'a une autre cellule : enlever
":=" si besoin
7 Correction d'un bug dans xstring qui changeait les catcodes des tokens
de \@xs@afterinteger lorsqu'on appelle \IfInteger
8 Correction d'un bug dans \ST@build@tab@i pour prendre en compte les
- cellules de code 0 dans lesquelles ":=" doit être supprimé
+ cellules de code 0 dans lesquelles ":=" doit \^etre supprim\'e
-------------------------------------------------------------------------------
v0.3a 2010/05/15
- 1 Correction d'un bug dans \ST@gobble@remain : ce qui reste à manger peut
+ 1 Correction d'un bug dans \ST@gobble@remain : ce qui reste \'a manger peut
contenir des tokens de catcode 1 ou 2 ce qui fait que l'utilisation
- d'arguments délimités ne fonctionnerait pas dans ces cas.
+ d'arguments d\'elimit\'es 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éférence, celle-ci devenait une
+ Lorsque leur argument contenait une r\'ef\'erence, celle-ci devenait une
cellule texte.
2 Correction d'un bug sur la macro \ST@stackcall : il faut y enlever
- 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
+ toutes les occurrences de la cellule en train d'\^etre calcul\'ee
+ 3 Modification de l'ordre de calcul des cellules concern\'ees par les macro
fonctions sum et somprod
4 Correction d'un bug dans la façon dont sont produites les skiplist
\ST@row@skiplist et \STcol@skiplist
- 5 Implémentation de la macro fonction "id"
-###############################################################################
-# TODO list #
-###############################################################################
- 1 Améliorer les tableaux de débogage. \ No newline at end of file
+ 5 Impl\'ementation de la macro fonction "id"
+-------------------------------------------------------------------------------
+v0.3c 2011/04/08
+ 1 Correction d'un gros bug lors de la substitution d'une r\'ef\'erence de type
+ <lettre><nbre> lorsque nbre>10 : a10 \'etait vu comme "a1" suivi de 0, et
+ m\^eme pour tousles nbre>10 !
+ 2 Macro \STprintnum \ No newline at end of file