From 129f318fb1cc3e45e4b00f8e7246b2eff17d7d2b Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 2 Feb 2010 23:55:51 +0000 Subject: spreadtab update (2feb10) git-svn-id: svn://tug.org/texlive/trunk@16904 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/tex/latex/spreadtab/spreadtab.sty | 58 ++++++++++++++++++---- 1 file changed, 48 insertions(+), 10 deletions(-) (limited to 'Master/texmf-dist/tex/latex') diff --git a/Master/texmf-dist/tex/latex/spreadtab/spreadtab.sty b/Master/texmf-dist/tex/latex/spreadtab/spreadtab.sty index a35d324c957..cc07b217401 100644 --- a/Master/texmf-dist/tex/latex/spreadtab/spreadtab.sty +++ b/Master/texmf-dist/tex/latex/spreadtab/spreadtab.sty @@ -1,9 +1,9 @@ % ____________________________________________________________________________ % | | % | | -% | spreadtab v0.2 | +% | spreadtab v0.2a | % | | -% | January 24, 2010 | +% | February 2, 2010 | % | | % |___________________________________________________________________________| % @@ -12,11 +12,12 @@ % Copyright Christian Tellechea 2009-2010 % email : unbonpetit@gmail.com % -% The "spreadtab" package consists of the 6 following files: +% The "spreadtab" package consists of the 8 following files: % spreadtab.sty (this file) % README % spreadtab_doc_fr.tex, spreadtab_doc_fr.pdf (manual in french) % spreadtab_doc_en.tex, spreadtab_doc_en.pdf (manual in english) +% spreadtab_doc_vn.tex, spreadtab_doc_vn.pdf (manual in vietnamese) % % ------------------------------------------------------------------- % This work may be distributed and/or modified under the @@ -37,10 +38,10 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%% Définitions préalables %%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand\ST@ver {0.2} -\newcommand\ST@date {2010/01/20} -\newcommand\ST@fr@date {24 janvier 2010} -\newcommand\ST@eng@date{January $24^\text{th}$ 2010} +\newcommand\ST@ver {0.2a} +\newcommand\ST@date {2010/02/02} +\newcommand\ST@fr@date {2 f\'evrier 2010} +\newcommand\ST@eng@date{February $2^\text{nd}$ 2010} \ProvidesPackage{spreadtab}[\ST@date\space v\ST@ver\space Spreadsheet features for table environments] \NeedsTeXFormat{LaTeX2e} @@ -1017,14 +1018,14 @@ % liste des fonctions dont l'argument est numérique \newcommand\ST@functions@with@num@arg{% - fact,ifeq,ifgt,iflt,numtofrshortdate,numtoengshortdate,numtofrlongdate,% + fact,ifeq,ifgt,iflt,numtofrshortdate,numtoengshortdate,numtofrlongdate,gcd,lcm,% numtoenglongdate,numtofrmonth,numtoengmonth,numtofrday,numtoengday} % 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é -\newcommand\ST@functions@no@calc@arg{ifeq,ifgt,iflt} +\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} @@ -1201,6 +1202,36 @@ \fi } +\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 + \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#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 + \ifST@gcd\else\FPmul\ST@argC#2\ST@argB\fi + \loop + \let\ST@argA\ST@argB + \FPeval\ST@argB{trunc(#2-trunc(#2/\ST@argB,0)*\ST@argB,0)}% reste de la division #2/\ST@argB + \let#2\ST@argA + \FPifzero\ST@argB\else + \repeat + \ifST@gcd\else\FPeval#2{trunc(\ST@argC/#2,0)}\fi + \fi + \csname @\ifST@gcd firstofone\else gobble\fi\endcsname{\FPifeq#21\let\ST@next\@gobbletwo\fi}% pour le pgcd, inutile de continuer si le pgcd est 1 + \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 + \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 + \ST@gcdfalse\ST@arithmetic{#1}#2% +} + % détermine la graine pour fp en fonction de la date et de l'heure \newcommand\ST@seed{\FPseed\number\time\number\day\number\month} @@ -1246,6 +1277,8 @@ \newcommand\ST@func@ifgt[2]{\ST@def@funcif#1#2{gt}} \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 \FPeval#1{#3+9-12*trunc((#3+9)/12,0)}% @@ -1732,12 +1765,17 @@ v0.2 2010/01/24 5 Suppression d'espaces indésirables 6 Mise en place d'un mode débogage où l'on peut visualiser les champs numériques, les champs textuels ou les codes des cellules du tableau +------------------------------------------------------------------------------- +v0.2a 2010/02/02 + 1 Ajout de la traduction en vietnamien et correction d'erreurs dans la + documentation française. + 2 Implementation beta et donc non visible des macros fonctions gcd, lcm + Ces macro-fonctions ne sont pas encore documentées. ############################################################################### # TODO list # ############################################################################### 1 Augmenter le nombre de macro-fonctions - - arithmetique : calcul de pgcd, ppcm, de reste de division - conversion : deg-rad-gra et système métrique <-> anglo saxon - autres... 2 Améliorer l'algorithme pour \STcopy : enlever une formule de -- cgit v1.2.3