diff options
author | Karl Berry <karl@freefriends.org> | 2008-11-17 01:39:17 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2008-11-17 01:39:17 +0000 |
commit | a2b37753f4b3df3c66f5e8e1644f4a9646c9aabb (patch) | |
tree | 0276fd468cf82730031fe18a29505e84fc894365 | |
parent | ff8d5e7c0f057c2c1a7abafc338b6f0b84020855 (diff) |
xstring update (16nov08)
git-svn-id: svn://tug.org/texlive/trunk@11321 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Master/texmf-dist/doc/generic/xstring/README | 4 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/xstring/test_etex.pdf | bin | 56903 -> 56872 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/generic/xstring/test_etex.tex | 30 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/xstring/test_latex.pdf | bin | 66303 -> 66661 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/generic/xstring/test_latex.tex | 25 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/xstring/xstring_doc_en.pdf | bin | 208615 -> 210307 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/generic/xstring/xstring_doc_en.tex | 92 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/xstring/xstring_doc_fr.pdf | bin | 226141 -> 228721 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/generic/xstring/xstring_doc_fr.tex | 16 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xstring/xstring.tex | 52 |
10 files changed, 145 insertions, 74 deletions
diff --git a/Master/texmf-dist/doc/generic/xstring/README b/Master/texmf-dist/doc/generic/xstring/README index 16b5f4bcfe5..0fc7ebf61d5 100644 --- a/Master/texmf-dist/doc/generic/xstring/README +++ b/Master/texmf-dist/doc/generic/xstring/README @@ -1,8 +1,8 @@ _________________ xstring package - v1.4 - 2008/11/04 + v1.4b + 2008/11/16 _________________ ------------------------------------------------------------------------------ diff --git a/Master/texmf-dist/doc/generic/xstring/test_etex.pdf b/Master/texmf-dist/doc/generic/xstring/test_etex.pdf Binary files differindex 13caea90c2f..69fdb0fe788 100644 --- a/Master/texmf-dist/doc/generic/xstring/test_etex.pdf +++ b/Master/texmf-dist/doc/generic/xstring/test_etex.pdf diff --git a/Master/texmf-dist/doc/generic/xstring/test_etex.tex b/Master/texmf-dist/doc/generic/xstring/test_etex.tex index 8268b043e56..74e389db727 100644 --- a/Master/texmf-dist/doc/generic/xstring/test_etex.tex +++ b/Master/texmf-dist/doc/generic/xstring/test_etex.tex @@ -1,9 +1,27 @@ -%%%%%%%% WARNING %%%%%%%% -% This is not a LaTeX file, it is a TeX file. +%##################### WARNING ##################### +% This is NOT a LaTeX file, it is a TeX file. % It must be compiled with eTeX typing <etex test_etex> -%%%%%%%% ATTENTION %%%%%%%% -% Ceci n'est pas un fichier LaTeX, c'est un fichier TeX. +%#################### ATTENTION #################### +% Ceci n'est PAS un fichier LaTeX, c'est un fichier TeX. % Il doit être compil\'e avec eteX en tapant <etex test_etex> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Ceci est test_latex.tex, le fichier de test de xstring à compiler avec LaTeX +% This is test_latex.tex, the test file of xstring to compile with LaTeX +% +% Christian Tellechea 2008 +% +% email : unbonpetit@gmail.com +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% +% http://www.latex-project.org/lppl.txt +% +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \input xstring \def\delimiteur{-{}} \font\hugerm=cmr10 scaled 1750 @@ -826,6 +844,8 @@ La commande {\tt\string\StrBetween} op\`ere en mode {\tt\string\noexploregroups} \exemple|\detokenize\expandafter{\cmd}|\vskip0.7ex \exemple|\StrSubstitute{\a1{2\a{3\a}4\a}\a5\a}{3\a}{XXX}[\cmd]| \exemple|\detokenize\expandafter{\cmd}|\vskip0.7ex +\exemple|\StrSubstitute{a1{b1\bgroup c1}\egroup d1}{1}{X}[\cmd]| +\exemple|\detokenize\expandafter{\cmd}|\smallskip \exemple|\exploregroups| \exemple|\StrSubstitute{\a1{2\a{3\a}4\a}\a5\a}{\a}{\X}[\cmd]| \exemple|\detokenize\expandafter{\cmd}|\vskip0.7ex @@ -837,6 +857,8 @@ La commande {\tt\string\StrBetween} op\`ere en mode {\tt\string\noexploregroups} \exemple|\detokenize\expandafter{\cmd}|\vskip0.7ex \exemple|\StrSubstitute{\a1{2\a{3\a}4\a}\a5\a}{3\a}{XXX}[\cmd]| \exemple|\detokenize\expandafter{\cmd}| +\exemple|\StrSubstitute{a1{b1\bgroup c1}\egroup d1}{1}{X}[\cmd]| +\exemple|\detokenize\expandafter{\cmd}|\smallskip \chapitre{La macro}{StrDel} diff --git a/Master/texmf-dist/doc/generic/xstring/test_latex.pdf b/Master/texmf-dist/doc/generic/xstring/test_latex.pdf Binary files differindex 6d2e5a33cf0..ca71e773cbb 100644 --- a/Master/texmf-dist/doc/generic/xstring/test_latex.pdf +++ b/Master/texmf-dist/doc/generic/xstring/test_latex.pdf diff --git a/Master/texmf-dist/doc/generic/xstring/test_latex.tex b/Master/texmf-dist/doc/generic/xstring/test_latex.tex index cccddd2cb24..e7f698e99ce 100644 --- a/Master/texmf-dist/doc/generic/xstring/test_latex.tex +++ b/Master/texmf-dist/doc/generic/xstring/test_latex.tex @@ -1,3 +1,20 @@ +% Ceci est test_latex.tex, le fichier de test de xstring à compiler avec LaTeX +% This is test_latex.tex, the test file of xstring to compile with LaTeX +% +% Christian Tellechea 2008 +% +% email : unbonpetit@gmail.com +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% +% http://www.latex-project.org/lppl.txt +% +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass[a4paper,10pt]{article} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} @@ -10,7 +27,7 @@ \newcommand*\exemple{\@ifstar{\def\frontiere{|}\@xs@MakeVerb}{\def\frontiere{}\@xs@MakeVerb}} \def\@xs@afterreadverb#1{% - \normalexpandarg + \noexpandarg \tokenize\cs@resultat{#1}% \fullexpandarg \leavevmode\hbox to0.7\linewidth{\hfil\tt#1}\quad\frontiere\cs@resultat\frontiere\hfil\par}% @@ -20,7 +37,7 @@ \def\delimiteur{|} \begin{document} -\setlength{\parindent}{0pt} +\parindent0pt \begin{center}\Large{Ceci est le fichier de test de xstring}.\end{center} \vspace{-1.8ex}\hrule\smallskip @@ -914,6 +931,8 @@ La commande \verb|\StrBetween| opère en mode \verb|\noexploregroups|, quelque s \exemple|\detokenize\expandafter{\cmd}|\smallskip \exemple|\StrSubstitute{\a1{2\a{3\a}4\a}\a5\a}{3\a}{XXX}[\cmd]| \exemple|\detokenize\expandafter{\cmd}|\smallskip +\exemple|\StrSubstitute{a1{b1\bgroup c1}\egroup d1}{1}{X}[\cmd]| +\exemple|\detokenize\expandafter{\cmd}|\smallskip \exemple|\exploregroups| \exemple|\StrSubstitute{\a1{2\a{3\a}4\a}\a5\a}{\a}{\X}[\cmd]| \exemple|\detokenize\expandafter{\cmd}|\smallskip @@ -925,6 +944,8 @@ La commande \verb|\StrBetween| opère en mode \verb|\noexploregroups|, quelque s \exemple|\detokenize\expandafter{\cmd}|\smallskip \exemple|\StrSubstitute{\a1{2\a{3\a}4\a}\a5\a}{3\a}{XXX}[\cmd]| \exemple|\detokenize\expandafter{\cmd}| +\exemple|\StrSubstitute{a1{b1\bgroup c1}\egroup d1}{1}{X}[\cmd]| +\exemple|\detokenize\expandafter{\cmd}| \chapitre{La macro}{StrDel} diff --git a/Master/texmf-dist/doc/generic/xstring/xstring_doc_en.pdf b/Master/texmf-dist/doc/generic/xstring/xstring_doc_en.pdf Binary files differindex 10910617ba6..d8d6ddc6057 100644 --- a/Master/texmf-dist/doc/generic/xstring/xstring_doc_en.pdf +++ b/Master/texmf-dist/doc/generic/xstring/xstring_doc_en.pdf diff --git a/Master/texmf-dist/doc/generic/xstring/xstring_doc_en.tex b/Master/texmf-dist/doc/generic/xstring/xstring_doc_en.tex index aa1dae5525c..0dd3ecaa4ec 100644 --- a/Master/texmf-dist/doc/generic/xstring/xstring_doc_en.tex +++ b/Master/texmf-dist/doc/generic/xstring/xstring_doc_en.tex @@ -1,8 +1,9 @@ -% This is xtring_doc_en.tex, the manual of xstring +% This is xtring_doc_en.tex, the english manual of xstring +% % Christian Tellechea 2008 % % email : unbonpetit@gmail.com -% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 % of this license or (at your option) any later version. @@ -12,12 +13,12 @@ % % and version 1.3 or later is part of all distributions of LaTeX % version 2005/12/01 or later. -% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass[a4paper,10pt]{article} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage[dvips,colorlinks=true,hyperfootnotes=false,citecolor=black,filecolor=black,linkcolor=blue,urlcolor=blue,bookmarks=false,pdfauthor={Christian Tellechea},pdftitle={xstring},pdfsubject={package for strings},pdfkeywords={xstring,latex,string},pdfcreator={LaTeX}]{hyperref} -\usepackage[a4paper,dvips,margin=1.9cm]{geometry} +\usepackage[a4paper,dvips,margin=2cm]{geometry} \usepackage{amsmath,amssymb} \usepackage{textcomp} \usepackage{moreverb} @@ -25,7 +26,6 @@ \usepackage{eurosym} \usepackage{xspace} \usepackage{xstring} -\usepackage{xstring} \usepackage[french,english]{babel} \makeatletter \newcommand*\exemple{\@ifstar{\def\frontiere{|}\@xs@MakeVerb}{\def\frontiere{}\@xs@MakeVerb}} @@ -778,7 +778,7 @@ And this not allowed nested structure, supposed to remove the first and last cha \hspace{0.2\linewidth}\verb|\StrGobbleRight{xstring}{1}[\mystring]|\par \hspace{0.2\linewidth}\verb|\StrGobbleleft{\mystring}{1}|\par -\subsection{How \Xstring reads the arguments?} +\subsection{How does \Xstring read the arguments?} \label{developpementarguments} \subsubsection{Syntax unit by \US} The macros of \Xstring read their arguments \US par \US. In the \TeX{} code, a \US is either:\parindent3em @@ -1141,6 +1141,14 @@ We expect: \textbf{A}\textbf{B}\textit{C}\medskip \def\replace{\textbf} \StrSubstitute[2]{\myCS}{\pattern}{\replace} \end{minipage}\fullexpandarg +\medskip + +It is possible to avoid to define \verb|\pattern| and \verb|\replace|: a "snare" can be used. It can be a control sequence which expansion is empty, like the famous \verb|\empty|. The code would have been:\par\smallskip +\hfil\verb|\StrSubstitute[2]{\myCS}{\empty\textit}{\empty\textbf}|\hfil{}\medskip + +With this code, in both arguments, the first token \verb|\empty| is expanded to "nothing" and the following significant tokens \verb|\textit| and \verb|textbf| are left unchanged.\smallskip + +By this way, \verb|\empty| is a way to "hack" \verb|\expandarg|: it allows to avoid the expansion of all the other tokens. The control sequence \verb|\noexpand| can be used instead of \verb|\empty| for the same result. \subsubsection{Example 2} Let's try to write a macro \verb|\tofrac| that transforms an argument of this type \guill{a/b} into \guill{$\frac{a}{b}$}:\par\medskip @@ -1260,6 +1268,7 @@ A control sequence \verb|\myCS| defined with an \verb|\edef| contains control se \begin{minipage}[r]{0.6\linewidth} \hfill \begin{boxedverbatim} + \fullexpandarg \newcount\occurr \newcount\nbgroup \newcommand\findgroup[2]{% @@ -1277,10 +1286,12 @@ A control sequence \verb|\myCS| defined with an \verb|\edef| contains control se \ifnum\nbgroup<#1% not the good group ? \StrBehind{\text}{\group}[\text]% \occurr=0% initialise \text & \occur + \expandafter\expandafter\expandafter \findthegroup% do it again \fi \else% unbalanced braces ? % look for next "}" + \expandafter \findthegroup \fi} \findthegroup @@ -1297,39 +1308,42 @@ A control sequence \verb|\myCS| defined with an \verb|\edef| contains control se \hspace*{0.3cm} \end{minipage}% \begin{minipage}[r]{0.3\linewidth} - \newcount\occurr - \newcount\nbgroup - \newcommand\findgroup[2]{% - \scancs[1]{\text}{#2}% - \occurr=0 - \nbgroup=0 - \def\findthegroup{% - \StrBehind{\text}{\Obr}[\remain]% - \advance\occurr by 1% next "{" - \StrBefore[\the\occurr]{\remain}{\Cbr}[\group]% - \StrCount{\group}{\Obr}[\nbA]% - \StrCount{\group}{\Cbr}[\nbB]% - \ifnum\nbA=\nbB% balanced braces ? - \advance\nbgroup by 1 - \ifnum\nbgroup<#1% if it's not the sought group - \StrBehind{\text}{\group}[\text]% - \occurr=0% initialization of \text & \occur - \findthegroup% do it again - \fi - \else% unbalanced braces ? - % look for next "}" - \findthegroup - \fi} - \findthegroup - \group} - - \verbtocs{\Obr}|{| - \verbtocs{\Cbr}|}| - \def\myCS{\a{1\b{2}}\c{3}\d{4\e{5}\f{6{7}}}} - - groupe 1: \findgroup{1}{\myCS}\par - groupe 2: \findgroup{2}{\myCS}\par - groupe 3: \findgroup{3}{\myCS} + \fullexpandarg + \newcount\occurr + \newcount\nbgroup + \newcommand\findgroup[2]{% + \scancs[1]{\text}{#2}% + \occurr=0 + \nbgroup=0 + \def\findthegroup{% + \StrBehind{\text}{\Obr}[\remain]% + \advance\occurr by 1% next "{" + \StrBefore[\the\occurr]{\remain}{\Cbr}[\group]% + \StrCount{\group}{\Obr}[\nbA]% + \StrCount{\group}{\Cbr}[\nbB]% + \ifnum\nbA=\nbB% balanced braces ? + \advance\nbgroup by 1 + \ifnum\nbgroup<#1% not the good group ? + \StrBehind{\text}{\group}[\text]% + \occurr=0% initialise \text & \occur + \expandafter\expandafter\expandafter + \findthegroup\expandafter% do it again + \fi + \else% unbalanced braces ? + % look for next "}" + \expandafter + \findthegroup + \fi} + \findthegroup + \group} + + \verbtocs{\Obr}|{| + \verbtocs{\Cbr}|}| + \def\myCS{\a{1\b{2}}\c{3}\d{4\e{5}\f{6{7}}}} + + group 1: \findgroup{1}{\myCS}\par + group 2: \findgroup{2}{\myCS}\par + group 3: \findgroup{3}{\myCS} \end{minipage} \medskip diff --git a/Master/texmf-dist/doc/generic/xstring/xstring_doc_fr.pdf b/Master/texmf-dist/doc/generic/xstring/xstring_doc_fr.pdf Binary files differindex fd5faae76ac..f8cd7c7c233 100644 --- a/Master/texmf-dist/doc/generic/xstring/xstring_doc_fr.pdf +++ b/Master/texmf-dist/doc/generic/xstring/xstring_doc_fr.pdf diff --git a/Master/texmf-dist/doc/generic/xstring/xstring_doc_fr.tex b/Master/texmf-dist/doc/generic/xstring/xstring_doc_fr.tex index 295c34bc879..0cbf4bd637d 100644 --- a/Master/texmf-dist/doc/generic/xstring/xstring_doc_fr.tex +++ b/Master/texmf-dist/doc/generic/xstring/xstring_doc_fr.tex @@ -1,8 +1,10 @@ +% Ceci est xtring_doc_fr.tex, le manuel en français de xstring % This is xtring_doc_fr.tex, the french manual of xstring +% % Christian Tellechea 2008 % % email : unbonpetit@gmail.com -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 % of this license or (at your option) any later version. @@ -12,12 +14,12 @@ % % and version 1.3 or later is part of all distributions of LaTeX % version 2005/12/01 or later. -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass[a4paper,10pt]{article} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage[dvips,colorlinks=true,hyperfootnotes=false,citecolor=black,filecolor=black,linkcolor=blue,urlcolor=blue,bookmarks=false,pdfauthor={Christian TELLECHEA},pdftitle={xstring},pdfsubject={package pour la manipulation de chaines de caractères},pdfkeywords={xstring,latex,string,chaine de caractères},pdfcreator={LaTeX}]{hyperref} -\usepackage[a4paper,dvips,margin=1.9cm]{geometry} +\usepackage[a4paper,dvips,margin=2cm]{geometry} \usepackage{amssymb} \usepackage{textcomp} \usepackage{moreverb} @@ -1145,12 +1147,12 @@ Ensuite, on définit \verb|\pattern| qui est le motif à remplacer, et \verb|\re \end{minipage}\fullexpandarg \medskip -Pour éviter de définir les séquences de contrôle \verb|\pattern| et \verb|\replace|, on aurait pu utiliser un leurre comme par exemple une séquence de contrôle \guill{vide} comme \verb|\empty|, et coder de cette façon :\par\smallskip +Pour éviter de définir les séquences de contrôle \verb|\pattern| et \verb|\replace|, on aurait pu utiliser un leurre comme par exemple une séquence de contrôle qui se développe en \guill{rien} comme \verb|\empty|, et coder de cette façon :\par\smallskip \hfil\verb|\StrSubstitute[2]{\myCS}{\empty\textit}{\empty\textbf}|\hfil{}\medskip Ainsi, \verb|\empty| est développée en \guill{rien} et il reste dans les 2 derniers arguments les séquences de contrôles significatives \verb|\textit| et \verb|textbf|.\smallskip -La séquence de contrôle \verb|\empty| est donc un \guill{hack} pour \verb|\expandarg| : elle permet de bloquer le développement de certains arguments ! On aurait d'ailleurs pu utiliser \verb|\noexpand| au lieu de \verb|\empty| pour obtenir le même résultat. +La séquence de contrôle \verb|\empty| est donc un \guill{hack} pour \verb|\expandarg| : elle permet de bloquer le développement du 1\ier{} lexème ! On aurait d'ailleurs pu utiliser \verb|\noexpand| au lieu de \verb|\empty| pour obtenir le même résultat. \subsubsection{Exemple 2} Cherchons à écrire une macro \verb|\tofrac| qui transforme une écriture du type \guill{a/b} par \guill{$\frac{a}{b}$}.\medskip @@ -1274,6 +1276,7 @@ Soit une séquence de contrôle \verb|\myCS| définie par un \verb|\def| contena \begin{minipage}[r]{0.6\linewidth} \hfill \begin{boxedverbatim} + \fullexpandarg \newcount\occurr \newcount\nbgroup \newcommand\findgroup[2]{% \scancs[1]{\chaine}{#2}% @@ -1291,7 +1294,7 @@ Soit une séquence de contrôle \verb|\myCS| définie par un \verb|\def| contena \StrBehind{\chaine}{\group}[\chaine]% \occurr=0% on initialise \chaine et \occur \expandafter\expandafter\expandafter - \findthegroup\expandafter% et on recommence + \findthegroup\expandafter% et on recommence \fi \else% accolades non équilibrées ? % cherche accolade fermante suivante @@ -1310,6 +1313,7 @@ Soit une séquence de contrôle \verb|\myCS| définie par un \verb|\def| contena \hspace*{0.3cm} \end{minipage}% \begin{minipage}[r]{0.3\linewidth} + \fullexpandarg \newcount\occurr \newcount\nbgroup \newcommand\findgroup[2]{% \scancs[1]{\chaine}{#2}% diff --git a/Master/texmf-dist/tex/generic/xstring/xstring.tex b/Master/texmf-dist/tex/generic/xstring/xstring.tex index ff173dcadab..9da9444bb2c 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.4 | +% | xstring v1.4b | % | | -% | November 4 2008 | +% | November 16 2008 | % | | % |__________________________________________________| % @@ -35,10 +35,10 @@ % test_latex.tex, test_latex.pdf (test file with LaTeX) % test_etex.tex, test_etex.pdf (test file with Plain eTeX) % -\def\xstringversion {1.4} -\def\xstringdate {2008/11/04} -\def\xstringfrenchdate {4 novembre 2008} -\def\xstringenglishdate{November $4^{\mathrm{th}}$ 2008} +\def\xstringversion {1.4b} +\def\xstringdate {2008/11/16} +\def\xstringfrenchdate {16 novembre 2008} +\def\xstringenglishdate{November $16^{\mathrm{th}}$ 2008} \edef\CurrentAtCatcode{\the\catcode`\@} \catcode`\@=11 \newwrite\@xs@unused% pour les messages @@ -221,9 +221,8 @@ \ifx\@xs@toks\bgroup \begingroup \escapechar48\relax% 0 est le caractère d'échappement - \expandafter\if\expandafter0\expandafter\@xs@returnfirstsyntaxunit@i\detokenize{#1}\@xs@nil - \def\@xs@reserved@A{\def#2{##1}}% si commence par 0, ##1 est un «\bgroup» - \let\@xs@toks0\relax + \expandafter\expandafter\expandafter\ifx\expandafter\@xs@returnfirstsyntaxunit@ii\detokenize{#1}\@xs@nil0% + \def\@xs@reserved@A{\def#2{##1}\let\@xs@toks0\relax}% si commence par 0, ##1 est un «\bgroup» \else \def\@xs@reserved@A{\def#2{{##1}}}% si ne commence pas par 0, ##1 est un groupe {...} \fi @@ -251,7 +250,7 @@ \def\@xs@beforespace#1 #2\@xs@nil{#1} \def\@xs@behindspace#1 #2\@xs@nil{#2} \def\@xs@gobblefirstchar#1{} -\def\@xs@returnfirstsyntaxunit@i#1#2\@xs@nil{#1} +\def\@xs@returnfirstsyntaxunit@ii#1#2\@xs@nil{#1} % Cette macro interne est utilisée dans les macros étoilées pour : % 1) développer l'argument selon qu'on a choisit \fullexpandarg @@ -660,7 +659,7 @@ \@xs@next}% \def\@xs@reserved@D{}\def\@xs@reserved@C{#2}% \@xs@count\ifnum#1>\z@\z@\else\@ne\fi - \@xs@StrSubstitute@ii + \@xs@StrSubstitute@ii \expandafter\@xs@ReturnResult\expandafter{\@xs@reserved@D}{#5}} % Supprime les #1 premières occurrences de #3 dans #2 @@ -725,8 +724,11 @@ \fi \fi \@xs@next}% - \let#3\@empty\def#4{#2}\@xs@count\z@ - \@xs@StrSplit@ii} + \def#4{#2}\let#3\@empty + \ifnum#1>\z@ + \@xs@count\z@ + \@xs@StrSplit@ii + \fi} % De la chaine #1, renvoie ce qui se trouve entre les positions % #2 et #3, caractères aux positions compris ! @@ -870,10 +872,10 @@ \endinput % % Historique -%------------------------------------------------------------ +%------------------------------------------------------------------------------ %% 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. @@ -896,7 +898,7 @@ % 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 @@ -906,7 +908,7 @@ % - 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 @@ -918,7 +920,7 @@ % - 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 @@ -930,11 +932,11 @@ % 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, et rendu plus clair et mieux structuré. +% - 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 @@ -942,4 +944,12 @@ % - 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 -% \@xs@reserved@A -> \@xs@reserved@E
\ No newline at end of file +% \@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
\ No newline at end of file |