summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/xstring
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-06-05 23:39:16 +0000
committerKarl Berry <karl@freefriends.org>2009-06-05 23:39:16 +0000
commit0e4fb9b8bb61e28042cfc4a3dc00fcb6cca0e5e9 (patch)
treed4d357197153a2ed5339586fe6f1af2efc69a93e /Master/texmf-dist/tex/generic/xstring
parentb18b4ff1f160919f14de4c5dd814984dad646b2b (diff)
xstring 1.5c (5jun09)
git-svn-id: svn://tug.org/texlive/trunk@13637 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/xstring')
-rw-r--r--Master/texmf-dist/tex/generic/xstring/xstring.tex53
1 files changed, 36 insertions, 17 deletions
diff --git a/Master/texmf-dist/tex/generic/xstring/xstring.tex b/Master/texmf-dist/tex/generic/xstring/xstring.tex
index af1b9ce4322..2367211bcd3 100644
--- a/Master/texmf-dist/tex/generic/xstring/xstring.tex
+++ b/Master/texmf-dist/tex/generic/xstring/xstring.tex
@@ -1,9 +1,9 @@
% __________________________________________________
% | |
% | |
-% | xstring v1.5a |
+% | xstring v1.5c |
% | |
-% | March 13 2009 |
+% | June 5 2009 |
% | |
% |__________________________________________________|
%
@@ -35,10 +35,10 @@
%
% The Current Maintainer of this work is Christian Tellechea
% -------------------------------------------------------------------
-\def\xstringversion {1.5b}
-\def\xstringdate {2009/03/13}
-\def\xstringfrenchdate {13 mars 2009}
-\def\xstringenglishdate {March $13^{\mathrm{th}}$ 2009}
+\def\xstringversion {1.5c}
+\def\xstringdate {2009/06/05}
+\def\xstringfrenchdate {5 juin 2009}
+\def\xstringenglishdate {June $5^{\mathrm{th}}$ 2009}
\edef\CurrentAtCatcode {\the\catcode`\@}
\catcode`\@=11
\newwrite\@xs@message% canal pour les messages
@@ -175,25 +175,31 @@
\fi
\@xs@next}%
\def\@xs@argument{#1}%
- \expandafter\@xs@testempty\expandafter{\@xs@beforespace#1 \@xs@nil}%
- \if@xs@empty
- \def\@xs@next{\expandafter\ifx\expandafter\@empty\detokenize\expandafter{\@xs@argument}\@empty\let#2\@empty\else\def#2{ }\fi}%
+ \edef\@xs@next{\expandafter\@xs@beforespace\detokenize{#1} \@xs@nil}% #1 commence par un espace ?
+ %\expandafter\expandafter\expandafter\@xs@testempty\expandafter\expandafter\expandafter{\expandafter\@xs@beforespace\detokenize{#1} \@xs@nil}
+ \ifx\@xs@next\@empty
+ \def\@xs@next{\expandafter\ifx\expandafter\@empty\detokenize\expandafter{\@xs@argument}\@empty\let#2\@empty\else\def#2{ }\let\@xs@toks0\fi}%
\else
\def\@xs@next{\expandafter\futurelet\expandafter\@xs@toks\expandafter\@xs@testfirsttok\@xs@argument\@xs@nil}%
\fi
\@xs@next}
% Cette macro interne enl\`eve la 1ere unit\'e syntaxique de #1 et assigne le r\'esultat \`a #2
+\def\@xs@testsecondtoken#1\@xs@nil{\@xs@ifbeginwithbrace{#1}}
+\def\@xs@gobblespacebeforebrace#1#{}% supprime tout ce qui est avant la 1ere accolade ouvrante
\def\@xs@removefirstsyntaxunit#1#2{%
- \expandafter\@xs@testempty\expandafter{\@xs@beforespace#1 \@xs@nil}%
\def\@xs@argument{#1}%
- \if@xs@empty
+ \expandafter\expandafter\expandafter\ifx\expandafter\expandafter\expandafter\@empty\expandafter\@xs@beforespace\detokenize\expandafter{\@xs@argument} \@xs@nil\@empty% #1 commence par un espace ?
\expandafter\@xs@testempty\expandafter{\@xs@argument}%
\if@xs@empty
\let#2\@empty
\else
- \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter#2%
- \expandafter\expandafter\expandafter{\expandafter\@xs@behindspace\@xs@argument\@xs@nil}%
+ \afterassignment\@xs@testsecondtoken% après avoir mangé le 1er token, on va tester si la suite commence par «{»
+ \expandafter\let\expandafter\@xs@secontoken\expandafter=\expandafter\@sptoken\@xs@argument\@xs@@nil\@xs@nil% on mange le 1er token et on rajoute \@xs@@nil à la fin pour éviter de perdre les accolades du groupe
+ {\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter#2%
+ \expandafter\expandafter\expandafter{\expandafter\@xs@gobblespacebeforebrace\@xs@argument}}%
+ {\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter#2%
+ \expandafter\expandafter\expandafter{\expandafter\@xs@behindspace\@xs@argument\@xs@nil}}%
\fi
\else
\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter#2%
@@ -480,11 +486,11 @@
\if@xs@empty
\let\@xs@next\@secondoftwo% #1 est vide, c'est que #2 est + long que #1 : on renvoie #4
\else
- \expandafter\@xs@returnfirstsyntaxunit\expandafter{\@xs@argument@A}\@xs@reserved@A
\expandafter\@xs@returnfirstsyntaxunit\expandafter{\@xs@argument@B}\@xs@reserved@B
+ \expandafter\@xs@returnfirstsyntaxunit\expandafter{\@xs@argument@A}\@xs@reserved@A
\ifx\@xs@reserved@A\@xs@reserved@B% il y a \'egalit\'e...
- \expandafter\@xs@removefirstsyntaxunit\expandafter{\@xs@argument@A}\@xs@reserved@A% on enl\`eve les 1ere unit\'es syntaxiques
\expandafter\@xs@removefirstsyntaxunit\expandafter{\@xs@argument@B}\@xs@reserved@B
+ \expandafter\@xs@removefirstsyntaxunit\expandafter{\@xs@argument@A}\@xs@reserved@A% on enl\`eve les 1ere unit\'es syntaxiques
\def\@xs@next{% et on recommence avec ces arguments racourcis d'1 unit\'e syntaxique
\expandafter\expandafter\expandafter\@xs@IfBeginWith@i
\expandafter\expandafter\expandafter{\expandafter\@xs@reserved@A\expandafter}\expandafter{\@xs@reserved@B}}%
@@ -1127,8 +1133,21 @@
% - Le manuel est d\'esormais plus color\'e, en esp\'erant qu'il sera un peu
% plus agr\'eable \`a lire !
%------------------------------------------------------------------------------
-% v1.5a 13/3/2009
+% v1.5b 13/3/2009
% - Modification d'un grand nombre de macros de telle sorte que vraiment
% n'importe quel code peut d\'esormais \^etre plac\'e dans les arguments des
% macros (comme par exemple des \if, \ifx ou autre, m\^eme sans leur \fi, ce
-% qui n'\'etait pas possible jusqu'alors) \ No newline at end of file
+% qui n'\'etait 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}». \ No newline at end of file