summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-02-02 22:38:53 +0000
committerKarl Berry <karl@freefriends.org>2019-02-02 22:38:53 +0000
commite69c32cf3a4c57ff8f2db8fd58d642a4d1dd2a37 (patch)
treef06e485bc43f3d8c286bfedd004567a350db7438
parent98db02d54e331790fda84117bf2598ce9bb2aa1a (diff)
xstring (2feb19)
git-svn-id: svn://tug.org/texlive/trunk@49910 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/generic/xstring/README4
-rw-r--r--Master/texmf-dist/doc/generic/xstring/test_etex.pdfbin99780 -> 99780 bytes
-rw-r--r--Master/texmf-dist/doc/generic/xstring/test_latex.pdfbin150611 -> 150611 bytes
-rw-r--r--Master/texmf-dist/doc/generic/xstring/xstring-en.pdfbin578926 -> 187658 bytes
-rw-r--r--Master/texmf-dist/doc/generic/xstring/xstring-en.tex5
-rw-r--r--Master/texmf-dist/doc/generic/xstring/xstring-fr.pdfbin601863 -> 201929 bytes
-rw-r--r--Master/texmf-dist/doc/generic/xstring/xstring-fr.tex5
-rw-r--r--Master/texmf-dist/tex/generic/xstring/xstring.tex388
8 files changed, 202 insertions, 200 deletions
diff --git a/Master/texmf-dist/doc/generic/xstring/README b/Master/texmf-dist/doc/generic/xstring/README
index ed4a6cbdb82..b9a26148664 100644
--- a/Master/texmf-dist/doc/generic/xstring/README
+++ b/Master/texmf-dist/doc/generic/xstring/README
@@ -1,8 +1,8 @@
_________________
xstring package
- v 1.81
- 2018/12/09
+ v 1.82
+ 2019/02/01
_________________
This package provides macros manipulating strings for programming use.
diff --git a/Master/texmf-dist/doc/generic/xstring/test_etex.pdf b/Master/texmf-dist/doc/generic/xstring/test_etex.pdf
index aa8828dbe74..4d2b8134b27 100644
--- a/Master/texmf-dist/doc/generic/xstring/test_etex.pdf
+++ b/Master/texmf-dist/doc/generic/xstring/test_etex.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/xstring/test_latex.pdf b/Master/texmf-dist/doc/generic/xstring/test_latex.pdf
index 8929d9e7f0c..2642a17751b 100644
--- a/Master/texmf-dist/doc/generic/xstring/test_latex.pdf
+++ b/Master/texmf-dist/doc/generic/xstring/test_latex.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/xstring/xstring-en.pdf b/Master/texmf-dist/doc/generic/xstring/xstring-en.pdf
index deb95b444c2..31f4a888d70 100644
--- a/Master/texmf-dist/doc/generic/xstring/xstring-en.pdf
+++ b/Master/texmf-dist/doc/generic/xstring/xstring-en.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/xstring/xstring-en.tex b/Master/texmf-dist/doc/generic/xstring/xstring-en.tex
index fc38260e4ea..0d272ddf910 100644
--- a/Master/texmf-dist/doc/generic/xstring/xstring-en.tex
+++ b/Master/texmf-dist/doc/generic/xstring/xstring-en.tex
@@ -1,10 +1,9 @@
\documentclass[english,a4paper,10pt]{article}
-\usepackage[utf8]{inputenc}
-\usepackage[T1]{fontenc}
+\usepackage{fontspec}
\usepackage[bookmarks=true,bookmarksopen=true,colorlinks=true,hyperfootnotes=false,filecolor=black,linkcolor=blue,urlcolor=blue,pdfauthor={Christian Tellechea},pdftitle={xstring},pdfsubject={package for strings of tokens},pdfkeywords={xstring,latex,string},pdfcreator={LaTeX}]{hyperref}
\usepackage[margin=1.9cm]{geometry}
\usepackage{libertine}
-\usepackage[scaled=.8]{luximono}
+\usepackage[scale=0.85]{noto-mono}
\usepackage[bottom]{footmisc}
\usepackage{amsmath,amssymb,amsfonts,color,eurosym,xspace,xstring,babel,listings}
\makeatletter
diff --git a/Master/texmf-dist/doc/generic/xstring/xstring-fr.pdf b/Master/texmf-dist/doc/generic/xstring/xstring-fr.pdf
index 06b29d439d9..c964109ec16 100644
--- a/Master/texmf-dist/doc/generic/xstring/xstring-fr.pdf
+++ b/Master/texmf-dist/doc/generic/xstring/xstring-fr.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/xstring/xstring-fr.tex b/Master/texmf-dist/doc/generic/xstring/xstring-fr.tex
index d2c1c64b0e4..340244f7b00 100644
--- a/Master/texmf-dist/doc/generic/xstring/xstring-fr.tex
+++ b/Master/texmf-dist/doc/generic/xstring/xstring-fr.tex
@@ -1,10 +1,9 @@
\documentclass[a4paper,10pt,french]{article}
-\usepackage[utf8]{inputenc}
-\usepackage[T1]{fontenc}
+\usepackage{fontspec}
\usepackage[bookmarks=true,bookmarksopen=true,colorlinks=true,hyperfootnotes=false,filecolor=black,linkcolor=blue,urlcolor=blue,pdfauthor={Christian Tellechea},pdftitle={xstring},pdfsubject={package pour la manipulation de chaines de tokens},pdfkeywords={xstring,latex,tex,string,chaine},pdfcreator={LaTeX}]{hyperref}
\usepackage[margin=1.9cm]{geometry}
\usepackage{libertine}
-\usepackage[scaled=.8]{luximono}
+\usepackage[scale=0.85]{noto-mono}
\usepackage[bottom]{footmisc}
\usepackage{amsmath,amssymb,amsfonts,color,eurosym,xspace,xstring,babel,listings}
\makeatletter
diff --git a/Master/texmf-dist/tex/generic/xstring/xstring.tex b/Master/texmf-dist/tex/generic/xstring/xstring.tex
index 49153099778..6f16dfba0db 100644
--- a/Master/texmf-dist/tex/generic/xstring/xstring.tex
+++ b/Master/texmf-dist/tex/generic/xstring/xstring.tex
@@ -4,9 +4,9 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
\def\xstringname {xstring} %
-\def\xstringversion {1.81} %
+\def\xstringversion {1.82} %
% %
-\def\xstringdate {2018/12/09} %
+\def\xstringdate {2019/02/01} %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
@@ -17,7 +17,7 @@
% Package URL: https://www.ctan.org/pkg/xstring %
% Bug tracker: https://framagit.org/unbonpetit/xstring/issues %
% Repository : https://framagit.org/unbonpetit/xstring/tree/master %
-% Copyright : Christian Tellechea 2008-2018 %
+% Copyright : Christian Tellechea 2008-2019 %
% Licence : Released under the LaTeX Project Public License v1.3c %
% or later, see http://www.latex-project.org/lppl.txt %
% Files : 1) xstring.tex %
@@ -619,32 +619,31 @@
\def\IfStrEqCase{%
\xs_ifstar
- {\def\xs_reserved_E{\IfStrEq*}\xs_IfStrCase}%
- {\def\xs_reserved_E{\IfStrEq}\xs_IfStrCase}%
+ {\xs_IfStringCase{\IfStrEq*}}%
+ {\xs_IfStringCase\IfStrEq}%
}
-\long\def\xs_IfStrCase#1#2{\xs_testopt{\xs_IfStringCase{#1}{#2}}{}}
-
\def\IfEqCase{%
\xs_ifstar
- {\def\xs_reserved_E{\IfEq*}\xs_IfEqCase}%
- {\def\xs_reserved_E{\IfEq}\xs_IfEqCase}%
+ {\xs_IfStringCase{\IfEq*}}%
+ {\xs_IfStringCase\IfEq}%
}
-\long\def\xs_IfEqCase#1#2{\xs_testopt{\xs_IfStringCase{#1}{#2}}{}}
-
-\long\def\xs_IfStringCase#1#2[#3]{%
+\long\def\xs_IfStringCase#1#2#3{% #1=macro avec ou sans étoile #2=argument à tester #3=liste des {<cas>}{code>}
\long\def\xs_testcase##1##2##3\_nil{% lit les 2 premieres unités syntaxiques dans ##1 et ##2. Les autres dans ##3
- \xs_reserved_E{#1}{##1}%
- {##2}% le test est positif, on exécute le code correspondant
+ #1{#2}{##1}% compare
+ {\xs_testopt{\xs_IfStringCase_ii{##2}}{}}% le test est positif, on exécute le code correspondant et on mange l'argument optionnel ## BUGfix dans 1.82
{\xs_ifempty{##3}%
- {#3}% s'il n'y a plus de cas, on exécute le code <autres cas>
+ {\xs_testopt{\xs_IfStringCase_i}{}}% s'il n'y a plus de cas, on exécute le code <autres cas> ## BUGfix dans 1.82
{\xs_testcase##3\_nil}% sinon, on recommence avec ce qui reste
}%
}%
- \xs_testcase#2\_nil
+ \xs_testcase#3\_nil
}
+\long\def\xs_IfStringCase_i[#1]{#1}
+\long\def\xs_IfStringCase_ii#1[#2]{#1}
+
% Renvoie ce qui est à gauche de l'occurence n°#1 de la sous chaine #3 dans la chaine #2
\xs_newmacro*3\StrBefore{1}{2}{1}{%
\xs_cutafteroccur{#2}{#3}{#1}%
@@ -1041,179 +1040,184 @@
\expandingroups
\endinput
-%
-% H I S T O R I Q U E
-%------------------------------------------------------------------------------
-%% v1.0 4/7/2008 : - Package achevé.
-% 7/7/2008 : - Package publié sur CTAN.
-%------------------------------------------------------------------------------
-% v1.1 15/8/2008
-% - Le package ne nécessite plus LaTeX et est désormais utilisable sous
-% Plain eTeX.
-% - Ajout des macros \IfInteger et \IfDecimal.
-% Pour cette dernière, la partie entière et la partie décimale sont
-% récupérables dans les compteurs \integerpart et \decimalpart. Ce
-% qu'il reste après qu'un caractère non attendu soit rencontré est
-% dispo dans \xs_remainafterdecimal
-% - Correction d'un bug dans \tokenize :
-% suppression de l'expansion avec \normalexpandarg pour éviter le bug
-% avec les lettres accentuées dans l'exemple : \tokenize\aa{éù}
-% - Amélioration du code de la plupart des macros.
-% - écriture d'une routine \xs_newmacro définissant les macros.
-% - Suppression de tous les compteurs grace à \numexpr.
-% - Nouvelles fonctionnalités internes dans :
-% \IfSubStr
-% ajout des chaines se trouvant avant et après l'occurrence testée
-% dans les sc \xs_behind_IfSubStr et \xs_before_IfSubStr
-% \StrCount
-% a) ajout de ce qui se trouve après la dernière occurrence dans la
-% sc \xs_StrCount_afterlastocccur
-% b) la macro ne dépend plus d'aucune autre
-%------------------------------------------------------------------------------
-% v1.2 23/8/2008
-% - Amélioration du code de \StrMid \StrGobbleLeft, \StrLeft,
-% \StrGobbleRight et \StrRight à l'aide de la nouvelle macro
-% \xs_StrSplit_i
-% - Nouveau test \IfStrEq qui compare 2 chaines
-% - Nouveau test \IfEq qui compare 2 chaines (ou 2 nombres si les 2 chaines
-% contiennent un nombre)
-% - Correction d'un bug dans \xs_formatnumber. La macro n'envisageait pas le
-% cas où son argument était vide ce qui faiasait planter
-% \IfDecimal{}{V}{F} et \IfInteger{}{V}{F}
-%------------------------------------------------------------------------------
-% v1.3 21/9/2008
-% - Amélioration du code, mise en place de récursivités terminales dans
-% toutes les macros récursives, simplification de \xs_TestEqual en
-% utilisant \ifx
-% - Nouvelles macros \IfStrEqCase et \IfEqCase
-% Teste si une chaîne est égale à plusieurs chaines données et
-% exécute un code spécifique
-% - Création de la macro publique \StrSplit
-% Coupe la chaine en 2 à une position donnée
-% - Nouvelle macro \StrCompare
-% Compare 2 chaînes et renvoie la position du 1er caractère différent.
-% Renvoie 0 si elles sont égales.
-%------------------------------------------------------------------------------
-% v1.3a 29/9/2008
-% - Correction d'un bug : \expandafter#1
-% dans les macros \IfSubStrBefore et \StrBetween qui buggue si #1 est un
-% nombre > 9 !
-% - Ré écriture de \xs_returnfirstsyntaxunit et \xs_gobarg qui
-% deviennent purement développables.
-% - Ré écriture de \StrLen
-% - Nouvelle macro interne \xs_cutafteroccur
-% Coupe la chaine après la nième occurrence d'une sous chaine.
-% - Code amélioré de \StrMid, \StrLeft, \StrGobbleLeft, \StrRight,
-% \StrGobbleRight grace à \xs_cutafteroccur
-%------------------------------------------------------------------------------
-% v1.4 4/11/2008
-% - xstring traite ses arguments par unité syntaxique, et donc toutes les
-% macros internes ont été ré-écrites à cette fin.
-% - Le manuel a été ré-écrit, rendu plus clair et mieux structuré.
-% - Nouvelle fonctionnalité : \expandarg
-% le 1er lexème de chaque argument est 1-développé avant que la
-% macro ne soit appelée. Si un argument comporte plus qu'1 lexème,
-% il faut passer par \scancs*[1] pour 1-développer toutes les unités
-% syntaxiques.
-% - Correction de 2 erreurs dans le manuel anglais : 0 est la valeur par
-% défaut dans \StrSubstitute et \StrDel
-% - Cohérence dans les nom des séquences de contrôles temporaires qui
-% sont désormais : \xs_reserved_A à \xs_reserved_E
-%------------------------------------------------------------------------------
-% v1.4a 12/11/2008
-% - Correction d'un bug dans \xs_StrSplit dans le cas où l'argument
-% numérique est <1 : la 1ere coupure doit être vide et le seconde doit
-% être égale à l'argument.
-%------------------------------------------------------------------------------
-% v1.4b 16/11/2008
-% - Correction de 2 bugs dans \xs_returnfirstsyntaxunit
-%------------------------------------------------------------------------------
-% v1.5 31/12/2008
-% - Nouvelles fonctionnalités dans la recherche de groupes par un
-% identificateur caractérisant leur imbrication. Implémentation de :
-% 1) \StrFindGroup
-% 2) \groupID
-% - Ajout des nouvelles macros génériques \xs_read_reserved_C et
-% \xs_read_reserved_D
-% - Correction d'un bug dans \StrSplit : \StrSplit{{a}bc}{1}[\truc] faisait
-% que \truc contenait «a{a}».
-% - Correction d'un bug dans \xs_newmacro : l'argument optionnel était
-% détokénisé à tort dans les macros étoilées.
-% - Dans \xs_newmacro, on doit choisir le numéro du dernier argument devant
-% être détokénisé dans le cas d'une macro étoilée (sachant que
-% l'argument optionnel ne l'est jamais)
-%------------------------------------------------------------------------------
-% v1.5a 09/2/2009
-% - Nouvelle macro \StrExpand, sensible au mode d'exploration. La macro est
-% indépendante du mode d'exploration et dispose de ses propres commandes
-% d'exploration : \expandingroups et \noexpandingroups
-% - Ré-écriture de \scancs, qui devient triviale puisque dépendant de
-% \StrExpand. Il n'y a plus de version étoilée et désormais, \scancs
-% est sensible au mode d'exploration.
-% - Correction d'un bug dans \IfInteger : \IfInteger{2.0}{V}{F} affichait F
-% - Correction de bugs : mettre \let\xs_reserved_E\relax avant d'appeler
-% \xs_StrSplit_i
-% - Suppression des messages d'erreur, de warning et d'info. xstring devient
-% donc silencieux ;)
-% - Passage de 3 à 2 compteurs
-% - Le manuel est désormais plus coloré, en espérant qu'il sera un peu
-% plus agréable à lire !
-%------------------------------------------------------------------------------
-% v1.5b 13/3/2009
-% - Modification d'un grand nombre de macros de telle sorte que vraiment
-% n'importe quel code peut désormais être placé dans les arguments des
-% macros (comme par exemple des \if, \ifx ou autre, même sans leur \fi, ce
-% qui n'était pas possible jusqu'alors)
-%------------------------------------------------------------------------------
-% v1.5c 05/6/2009
-% - Correction d'un bug dans \IfBeginWith : il faut appeler
-% \xs_returnfirstsyntaxunit pour l'argument #2 puis pour l'argument #1 et
-% non pas l'inverse pour que \xs_toks reflète ce qui se trouve dans #1
-% - Correction d'un bug dans \xs_returnfirstsyntaxunit au cas où #1 commence
-% par un espace : mettre \xs_toks à 0
-% - Correction d'un bug dans \xs_returnfirstsyntaxunit :
-% \xs_returnfirstsyntaxunit{{}}\truc
-% faisait que \truc se développait en un espace.
-% - Correction d'un bug dans \xs_removefirstsyntaxunit où le cas
-% \xs_removefirstsyntaxunit{ {b}}\truc
-% donnait \truc se développant en «b» au lieu de «{b}».
-%------------------------------------------------------------------------------
-% v1.5d 28/3/2010
-% - Correction d'un bug dans \IfInteger : \afterinteger ne donnait pas le
-% bon résultat. Par exemple avec 1.23 il renvoyait {} au lieu de {.23}
-% - \xs_formatnumber ne detokenize plus ses arguments (que m'est-il passé
-% par la tête pour que je code un truc comme ca ?), et donc
-% \afterinteger et \xs_afterdecimal ont des tokens ayant le bon
-% catcode
-%------------------------------------------------------------------------------
-% v1.6 24/10/2012
-% - Correction d'un bug dans \xs_cutafteroccur au cas où #3<1
-% - \IfDecimal ne \detokenize plus l'argument.
-% - Nouvelle version de \tokenize qui enlevait les accolades si son argument
-% était entre accolades
-% - Nouvelle macro \StrCut
-% - \xs_cutafteroccur_i ne produit plus d'espace indésirable si #3 était
-% évalué par \numexpr
-%------------------------------------------------------------------------------
-% v1.7 13/1/2013
-% - Correction d'un manque de rigueur dans les assignations concernant
-% \groupID : elles sont toutes globales désormais
-% - Les macros de xstring sont \long
-%------------------------------------------------------------------------------
-% v1.7a 28/2/2013
-% - Correction d'un espace parasite dans \xs_removefirstsyntaxunit
-%------------------------------------------------------------------------------
-% v1.7b 29/7/2013
-% - La date contenue dans \xstringdate est désormais conforme
-%------------------------------------------------------------------------------
-% v1.7c 13/10/2013
-% - les macros impliquées dans \IfStrCase et \IfStrEqCase sont désormais \long
-%------------------------------------------------------------------------------
-% v1.8 07/12/2018
-% - affectations globales supprimées (sauf pour \groupID) afin de ne pas
-% surcharger la pile de sauvegarde
-% - nettoyage du code, corrections de lourdeurs et maladresses
-%------------------------------------------------------------------------------
-% v1.81 09/12/2018
-% - bug dans \IfInteger, c'est \xs_ifx{\empty\afterdecimal} et non pas
-% \xs_ifx{\empty\xs_afterdecimal} \ No newline at end of file
+
+ H I S T O R I Q U E
+------------------------------------------------------------------------------
+v1.0 4/7/2008 : - Package achevé.
+ 7/7/2008 : - Package publié sur CTAN.
+------------------------------------------------------------------------------
+v1.1 15/8/2008
+ - Le package ne nécessite plus LaTeX et est désormais utilisable sous
+ Plain eTeX.
+ - Ajout des macros \IfInteger et \IfDecimal.
+ Pour cette dernière, la partie entière et la partie décimale sont
+ récupérables dans les compteurs \integerpart et \decimalpart. Ce
+ qu'il reste après qu'un caractère non attendu soit rencontré est
+ dispo dans \xs_remainafterdecimal
+ - Correction d'un bug dans \tokenize :
+ suppression de l'expansion avec \normalexpandarg pour éviter le bug
+ avec les lettres accentuées dans l'exemple : \tokenize\aa{éù}
+ - Amélioration du code de la plupart des macros.
+ - écriture d'une routine \xs_newmacro définissant les macros.
+ - Suppression de tous les compteurs grace à \numexpr.
+ - Nouvelles fonctionnalités internes dans :
+ \IfSubStr
+ ajout des chaines se trouvant avant et après l'occurrence testée
+ dans les sc \xs_behind_IfSubStr et \xs_before_IfSubStr
+ \StrCount
+ a) ajout de ce qui se trouve après la dernière occurrence dans la
+ sc \xs_StrCount_afterlastocccur
+ b) la macro ne dépend plus d'aucune autre
+------------------------------------------------------------------------------
+v1.2 23/8/2008
+ - Amélioration du code de \StrMid \StrGobbleLeft, \StrLeft,
+ \StrGobbleRight et \StrRight à l'aide de la nouvelle macro
+ \xs_StrSplit_i
+ - Nouveau test \IfStrEq qui compare 2 chaines
+ - Nouveau test \IfEq qui compare 2 chaines (ou 2 nombres si les 2 chaines
+ contiennent un nombre)
+ - Correction d'un bug dans \xs_formatnumber. La macro n'envisageait pas le
+ cas où son argument était vide ce qui faiasait planter
+ \IfDecimal{}{V}{F} et \IfInteger{}{V}{F}
+------------------------------------------------------------------------------
+v1.3 21/9/2008
+ - Amélioration du code, mise en place de récursivités terminales dans
+ toutes les macros récursives, simplification de \xs_TestEqual en
+ utilisant \ifx
+ - Nouvelles macros \IfStrEqCase et \IfEqCase
+ Teste si une chaîne est égale à plusieurs chaines données et
+ exécute un code spécifique
+ - Création de la macro publique \StrSplit
+ Coupe la chaine en 2 à une position donnée
+ - Nouvelle macro \StrCompare
+ Compare 2 chaînes et renvoie la position du 1er caractère différent.
+ Renvoie 0 si elles sont égales.
+------------------------------------------------------------------------------
+v1.3a 29/9/2008
+ - Correction d'un bug : \expandafter#1
+ dans les macros \IfSubStrBefore et \StrBetween qui buggue si #1 est un
+ nombre > 9 !
+ - Ré écriture de \xs_returnfirstsyntaxunit et \xs_gobarg qui
+ deviennent purement développables.
+ - Ré écriture de \StrLen
+ - Nouvelle macro interne \xs_cutafteroccur
+ Coupe la chaine après la nième occurrence d'une sous chaine.
+ - Code amélioré de \StrMid, \StrLeft, \StrGobbleLeft, \StrRight,
+ \StrGobbleRight grace à \xs_cutafteroccur
+------------------------------------------------------------------------------
+v1.4 4/11/2008
+ - xstring traite ses arguments par unité syntaxique, et donc toutes les
+ macros internes ont été ré-écrites à cette fin.
+ - Le manuel a été ré-écrit, rendu plus clair et mieux structuré.
+ - Nouvelle fonctionnalité : \expandarg
+ le 1er lexème de chaque argument est 1-développé avant que la
+ macro ne soit appelée. Si un argument comporte plus qu'1 lexème,
+ il faut passer par \scancs*[1] pour 1-développer toutes les unités
+ syntaxiques.
+ - Correction de 2 erreurs dans le manuel anglais : 0 est la valeur par
+ défaut dans \StrSubstitute et \StrDel
+ - Cohérence dans les nom des séquences de contrôles temporaires qui
+ sont désormais : \xs_reserved_A à \xs_reserved_E
+------------------------------------------------------------------------------
+v1.4a 12/11/2008
+ - Correction d'un bug dans \xs_StrSplit dans le cas où l'argument
+ numérique est <1 : la 1ere coupure doit être vide et le seconde doit
+ être égale à l'argument.
+------------------------------------------------------------------------------
+v1.4b 16/11/2008
+ - Correction de 2 bugs dans \xs_returnfirstsyntaxunit
+------------------------------------------------------------------------------
+v1.5 31/12/2008
+ - Nouvelles fonctionnalités dans la recherche de groupes par un
+ identificateur caractérisant leur imbrication. Implémentation de :
+ 1) \StrFindGroup
+ 2) \groupID
+ - Ajout des nouvelles macros génériques \xs_read_reserved_C et
+ \xs_read_reserved_D
+ - Correction d'un bug dans \StrSplit : \StrSplit{{a}bc}{1}[\truc] faisait
+ que \truc contenait «a{a}».
+ - Correction d'un bug dans \xs_newmacro : l'argument optionnel était
+ détokénisé à tort dans les macros étoilées.
+ - Dans \xs_newmacro, on doit choisir le numéro du dernier argument devant
+ être détokénisé dans le cas d'une macro étoilée (sachant que
+ l'argument optionnel ne l'est jamais)
+------------------------------------------------------------------------------
+v1.5a 09/2/2009
+ - Nouvelle macro \StrExpand, sensible au mode d'exploration. La macro est
+ indépendante du mode d'exploration et dispose de ses propres commandes
+ d'exploration : \expandingroups et \noexpandingroups
+ - Ré-écriture de \scancs, qui devient triviale puisque dépendant de
+ \StrExpand. Il n'y a plus de version étoilée et désormais, \scancs
+ est sensible au mode d'exploration.
+ - Correction d'un bug dans \IfInteger : \IfInteger{2.0}{V}{F} affichait F
+ - Correction de bugs : mettre \let\xs_reserved_E\relax avant d'appeler
+ \xs_StrSplit_i
+ - Suppression des messages d'erreur, de warning et d'info. xstring devient
+ donc silencieux ;)
+ - Passage de 3 à 2 compteurs
+ - Le manuel est désormais plus coloré, en espérant qu'il sera un peu
+ plus agréable à lire !
+------------------------------------------------------------------------------
+v1.5b 13/3/2009
+ - Modification d'un grand nombre de macros de telle sorte que vraiment
+ n'importe quel code peut désormais être placé dans les arguments des
+ macros (comme par exemple des \if, \ifx ou autre, même sans leur \fi, ce
+ qui n'était pas possible jusqu'alors)
+------------------------------------------------------------------------------
+v1.5c 05/6/2009
+ - Correction d'un bug dans \IfBeginWith : il faut appeler
+ \xs_returnfirstsyntaxunit pour l'argument #2 puis pour l'argument #1 et
+ non pas l'inverse pour que \xs_toks reflète ce qui se trouve dans #1
+ - Correction d'un bug dans \xs_returnfirstsyntaxunit au cas où #1 commence
+ par un espace : mettre \xs_toks à 0
+ - Correction d'un bug dans \xs_returnfirstsyntaxunit :
+ \xs_returnfirstsyntaxunit{{}}\truc
+ faisait que \truc se développait en un espace.
+ - Correction d'un bug dans \xs_removefirstsyntaxunit où le cas
+ \xs_removefirstsyntaxunit{ {b}}\truc
+ donnait \truc se développant en «b» au lieu de «{b}».
+------------------------------------------------------------------------------
+v1.5d 28/3/2010
+ - Correction d'un bug dans \IfInteger : \afterinteger ne donnait pas le
+ bon résultat. Par exemple avec 1.23 il renvoyait {} au lieu de {.23}
+ - \xs_formatnumber ne detokenize plus ses arguments (que m'est-il passé
+ par la tête pour que je code un truc comme ca ?), et donc
+ \afterinteger et \xs_afterdecimal ont des tokens ayant le bon
+ catcode
+------------------------------------------------------------------------------
+v1.6 24/10/2012
+ - Correction d'un bug dans \xs_cutafteroccur au cas où #3<1
+ - \IfDecimal ne \detokenize plus l'argument.
+ - Nouvelle version de \tokenize qui enlevait les accolades si son argument
+ était entre accolades
+ - Nouvelle macro \StrCut
+ - \xs_cutafteroccur_i ne produit plus d'espace indésirable si #3 était
+ évalué par \numexpr
+------------------------------------------------------------------------------
+v1.7 13/1/2013
+ - Correction d'un manque de rigueur dans les assignations concernant
+ \groupID : elles sont toutes globales désormais
+ - Les macros de xstring sont \long
+------------------------------------------------------------------------------
+v1.7a 28/2/2013
+ - Correction d'un espace parasite dans \xs_removefirstsyntaxunit
+------------------------------------------------------------------------------
+v1.7b 29/7/2013
+ - La date contenue dans \xstringdate est désormais conforme
+------------------------------------------------------------------------------
+v1.7c 13/10/2013
+ - les macros impliquées dans \IfStrCase et \IfStrEqCase sont désormais \long
+------------------------------------------------------------------------------
+v1.8 07/12/2018
+ - affectations globales supprimées (sauf pour \groupID) afin de ne pas
+ surcharger la pile de sauvegarde
+ - nettoyage du code, corrections de lourdeurs et maladresses
+------------------------------------------------------------------------------
+v1.81 09/12/2018
+ - bug dans \IfInteger et \IfDecimal, la macro \xs_afterdecimal est indéfinie
+ et doit être remplacée par \afterdecimal
+------------------------------------------------------------------------------
+v1.82 01/02/2019
+ - \xs_testopt n'est pas longue et provoque un bug dans \xs_IfStrCase et
+ \xs_IfStrCase lorsque #1 contient \par : \xs_testopt reste courte et
+ \xs_IfStringCase a été modifiée pour que cela fonctionne. \ No newline at end of file