diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/xstring/xstring_doc_fr.tex')
-rwxr-xr-x | Master/texmf-dist/doc/latex/xstring/xstring_doc_fr.tex | 338 |
1 files changed, 189 insertions, 149 deletions
diff --git a/Master/texmf-dist/doc/latex/xstring/xstring_doc_fr.tex b/Master/texmf-dist/doc/latex/xstring/xstring_doc_fr.tex index 90edd773ff5..589c76dee83 100755 --- a/Master/texmf-dist/doc/latex/xstring/xstring_doc_fr.tex +++ b/Master/texmf-dist/doc/latex/xstring/xstring_doc_fr.tex @@ -26,26 +26,12 @@ \usepackage[frenchb]{babel} \makeatletter -\newcommand*\Exemple{\@ifstar{\def\frontiere{|}\@Ex}{\def\frontiere{}\@Ex}} -% la macro de Ulrich Diez -\newcommand*\@Ex{% - \relax% - \ifmmode\hbox\else\leavevmode\null\fi% - \bgroup% - \verb@eol@error% - \let\do\@makeother\dospecials% - \verbatim@font\@noligs% - \@@Ex} -\newcommand*\@@Ex[1]{% - \@vobeyspaces\frenchspacing\ - \catcode`#1\active% - \lccode`\~`#1% - \gdef\verb@balance@group{\@ehc}% - \aftergroup\verb@balance@group% - \lowercase{% - \let ~\verb@egroup% - \def\@tempa##1~{\hbox to \Partage\linewidth{\hfil##1~}\quad\scantokens{\frontiere##1\frontiere}\par}}% - \@tempa}% +\newcommand*\exemple{\@ifstar{\def\frontiere{|}\@xs@MakeVerb}{\def\frontiere{}\@xs@MakeVerb}} +\def\@xs@afterreadverb#1{% + \normalexpandarg + \tokenize\cs@resultat{#1}% + \fullexpandarg + \hbox to\linewidth{\hbox to0.7\linewidth{\hfil\tt#1}\quad\frontiere\cs@resultat\frontiere\hfil}\par} \makeatother \newcommand\guill[1]{\og{}#1\fg{}} \newcommand\argu[1]{$\langle$\textit{#1}$\rangle$} @@ -65,14 +51,14 @@ {\end{list}} \begin{document} -\gdef\Partage{0.7} +\setlength{\parindent}{0pt} \begin{titlepage} \null\par\vfill \begin{center} \begin{minipage}{0.75\linewidth} \begin{center} \Huge\bfseries xstring\par\vspace{5pt} - \small v1.0\par\vspace{25pt} + \small v\xstringversion\par\vspace{25pt} \normalsize Manuel de l'utilisateur \end{center} \end{minipage} @@ -81,20 +67,21 @@ \begin{center} Christian {\sc Tellechea}\par\small \href{mailto:unbonpetit@gmail.com}{\nolinkurl{unbonpetit@gmail.com}}\par\vspace{5pt} - 5 juillet 2008 + \xstringfrenchdate \end{center} \vfill\hrulefill \begin{center} \begin{minipage}{0.85\linewidth} \noindent \hfill\textbf{\textit{Résumé}}\hfill{}\medskip\par - Cette extension regroupe un ensemble de macros manipulant des chaînes de caractères : + Cette extension qui requiert Plain $\varepsilon$-\TeX{} regroupe un ensemble de macros manipulant des chaînes de caractères : \setlength{\parindent}{1.5em} \begin{itemize} \item[$\triangleright$] des tests : \begin{itemize} \item une chaîne en contient elle une autre au moins $n$ fois ? \item une chaîne commence t-elle ou finit-elle par une autre ? etc. + \item une chaîne représente t-elle un entier relatif ? Un nombre décimal ? \end{itemize} \item[$\triangleright$] des extractions de chaînes : \begin{itemize} @@ -110,6 +97,7 @@ \item comptage du nombre d'occurrences d'une sous-chaîne dans une autre. \end{itemize} \end{itemize} + \setlength{\parindent}{0pt} \medskip D'autres commandes permettent de traiter les caractères spéciaux (\verb|&|, \verb|~|, \verb|\|, \verb|{|, \verb|}|, \verb|_|, \verb|#|, \verb|$|, \verb|^| et \verb|%|) de façon à les utiliser dans les arguments des macros de ce package, ce qui permet d'utiliser ces macros à fins de programmation. \end{minipage} @@ -122,7 +110,7 @@ \section{Présentation} \subsection{Description} -Cette extension regroupe des macros et des tests opérant sur des chaînes de caractères, un peu comme en disposent des langages dit \guill{évolués}. On y trouve les opérations habituelles sur les chaînes de caractères, comme par exemple : test si une chaîne en contient une autre, commence ou finit par une autre, extractions de sous-chaînes ou de caractères, calculs de position d'une sous-chaîne, calculs du nombre d'occurrences, etc.\medskip +Cette extension\footnote{L'extension ne nécessite pas \LaTeX et peut être compilée sous Plain $\varepsilon$-\TeX{}.} regroupe des macros et des tests opérant sur des chaînes de caractères, un peu comme en disposent des langages dit \guill{évolués}. On y trouve les opérations habituelles sur les chaînes de caractères, comme par exemple : test si une chaîne en contient une autre, commence ou finit par une autre, test si une chaîne est un nombre entier ou décimal, extractions de sous-chaînes ou de caractères, calculs de position d'une sous-chaîne, calculs du nombre d'occurrences, etc.\medskip Certes d'autres packages existent (par exemple \href{http://www.ctan.org/tex-archive/macros/latex/contrib/substr/}{\nolinkurl{substr}} et \href{http://www.ctan.org/tex-archive/macros/latex/contrib/stringstrings/}{\nolinkurl{stringstrings}}), mais outre des différences notables quant aux fonctionnalités, ils ne prennent pas en charge les occurrences des sous-chaînes et me semblent soit trop limités, soit trop difficiles à utiliser pour la programmation. @@ -222,13 +210,13 @@ Teste si \argu{chaine} contient au moins \argu{nombre} fois \argu{chaineA} et ex \item Si \argu{chaine} ou \argu{chaineA} est vide, exécute \argu{faux}. \end{Conditions} -\Exemple|\IfSubStr{xstring}{tri}{vrai}{faux}| -\Exemple|\IfSubStr{xstring}{a}{vrai}{faux}| -\Exemple|\IfSubStr{a bc def }{c d}{vrai}{faux}| -\Exemple|\IfSubStr{a bc def }{cd}{vrai}{faux}| -\Exemple|\IfSubStr[2]{1a2a3a}{a}{vrai}{faux}| -\Exemple|\IfSubStr[3]{1a2a3a}{a}{vrai}{faux}| -\Exemple|\IfSubStr[4]{1a2a3a}{a}{vrai}{faux}| +\exemple|\IfSubStr{xstring}{tri}{vrai}{faux}| +\exemple|\IfSubStr{xstring}{a}{vrai}{faux}| +\exemple|\IfSubStr{a bc def }{c d}{vrai}{faux}| +\exemple|\IfSubStr{a bc def }{cd}{vrai}{faux}| +\exemple|\IfSubStr[2]{1a2a3a}{a}{vrai}{faux}| +\exemple|\IfSubStr[3]{1a2a3a}{a}{vrai}{faux}| +\exemple|\IfSubStr[4]{1a2a3a}{a}{vrai}{faux}| \subsubsection{IfSubStrBefore} \verb|\IfSubStrBefore|\arguCC{nombre1}{nombre2}\ARGU{chaine}\ARGU{chaineA}\ARGU{chaineB}\ARGU{vrai}\ARGU{faux} @@ -244,15 +232,15 @@ Dans \argu{chaine}, la macro teste si l'occurrence \no\argu{nombre1} de \argu{ch \item Si l'un au moins des deux arguments optionnels est négatif ou nul, exécute \argu{faux}. \end{Conditions} -\Exemple|\IfSubStrBefore{xstring}{st}{in}{vrai}{faux}| -\Exemple|\IfSubStrBefore{xstring}{ri}{s}{vrai}{faux}| -\Exemple|\IfSubStrBefore{LaTeX}{LaT}{TeX}{vrai}{faux}| -\Exemple|\IfSubStrBefore{a bc def }{ b}{ef}{vrai}{faux}| -\Exemple|\IfSubStrBefore{a bc def }{ab}{ef}{vrai}{faux}| -\Exemple|\IfSubStrBefore[2,1]{b1b2b3}{b}{2}{vrai}{faux}| -\Exemple|\IfSubStrBefore[3,1]{b1b2b3}{b}{2}{vrai}{faux}| -\Exemple|\IfSubStrBefore[2,2]{baobab}{a}{b}{vrai}{faux}| -\Exemple|\IfSubStrBefore[2,3]{baobab}{a}{b}{vrai}{faux}| +\exemple|\IfSubStrBefore{xstring}{st}{in}{vrai}{faux}| +\exemple|\IfSubStrBefore{xstring}{ri}{s}{vrai}{faux}| +\exemple|\IfSubStrBefore{LaTeX}{LaT}{TeX}{vrai}{faux}| +\exemple|\IfSubStrBefore{a bc def }{ b}{ef}{vrai}{faux}| +\exemple|\IfSubStrBefore{a bc def }{ab}{ef}{vrai}{faux}| +\exemple|\IfSubStrBefore[2,1]{b1b2b3}{b}{2}{vrai}{faux}| +\exemple|\IfSubStrBefore[3,1]{b1b2b3}{b}{2}{vrai}{faux}| +\exemple|\IfSubStrBefore[2,2]{baobab}{a}{b}{vrai}{faux}| +\exemple|\IfSubStrBefore[2,3]{baobab}{a}{b}{vrai}{faux}| \subsubsection{IfSubStrBehind} \verb|\IfSubStrBehind|\arguCC{nombre1}{nombre2}\ARGU{chaine}\ARGU{chaineA}\ARGU{chaineB}\ARGU{vrai}\ARGU{faux} @@ -268,15 +256,15 @@ Dans \argu{chaine}, la macro teste si l'occurrence \no\argu{nombre1} de \argu{ch \item Si l'un au moins des deux arguments optionnels est négatif ou nul, exécute \argu{faux}. \end{Conditions} -\Exemple|\IfSubStrBehind{xstring}{ri}{xs}{vrai}{faux}| -\Exemple|\IfSubStrBehind{xstring}{s}{i}{vrai}{faux}| -\Exemple|\IfSubStrBehind{LaTeX}{TeX}{LaT}{vrai}{faux}| -\Exemple|\IfSubStrBehind{a bc def }{ d}{a}{vrai}{faux}| -\Exemple|\IfSubStrBehind{a bc def }{cd}{a b}{vrai}{faux}| -\Exemple|\IfSubStrBehind[2,1]{b1b2b3}{b}{2}{vrai}{faux}| -\Exemple|\IfSubStrBehind[3,1]{b1b2b3}{b}{2}{vrai}{faux}| -\Exemple|\IfSubStrBehind[2,2]{baobab}{b}{a}{vrai}{faux}| -\Exemple|\IfSubStrBehind[2,3]{baobab}{b}{a}{vrai}{faux}| +\exemple|\IfSubStrBehind{xstring}{ri}{xs}{vrai}{faux}| +\exemple|\IfSubStrBehind{xstring}{s}{i}{vrai}{faux}| +\exemple|\IfSubStrBehind{LaTeX}{TeX}{LaT}{vrai}{faux}| +\exemple|\IfSubStrBehind{a bc def }{ d}{a}{vrai}{faux}| +\exemple|\IfSubStrBehind{a bc def }{cd}{a b}{vrai}{faux}| +\exemple|\IfSubStrBehind[2,1]{b1b2b3}{b}{2}{vrai}{faux}| +\exemple|\IfSubStrBehind[3,1]{b1b2b3}{b}{2}{vrai}{faux}| +\exemple|\IfSubStrBehind[2,2]{baobab}{b}{a}{vrai}{faux}| +\exemple|\IfSubStrBehind[2,3]{baobab}{b}{a}{vrai}{faux}| \subsubsection{IfBeginWith} @@ -289,10 +277,10 @@ Teste si \argu{chaine} commence par \argu{chaineA}, et exécute \argu{vrai} dans \item Si \argu{chaine} ou \argu{chaineA} est vide, exécute \argu{faux}. \end{Conditions} -\Exemple|\IfBeginWith{xstring}{xst}{vrai}{faux}| -\Exemple|\IfBeginWith{LaTeX}{a}{vrai}{faux}| -\Exemple|\IfBeginWith{a bc def }{a b}{vrai}{faux}| -\Exemple|\IfBeginWith{a bc def }{ab}{vrai}{faux}| +\exemple|\IfBeginWith{xstring}{xst}{vrai}{faux}| +\exemple|\IfBeginWith{LaTeX}{a}{vrai}{faux}| +\exemple|\IfBeginWith{a bc def }{a b}{vrai}{faux}| +\exemple|\IfBeginWith{a bc def }{ab}{vrai}{faux}| \subsubsection{IfEndWith} @@ -305,10 +293,62 @@ Teste si \argu{chaine} se termine par \argu{chaineA}, et exécute \argu{vrai} da \item Si \argu{chaine} ou \argu{chaineA} est vide, exécute \argu{faux}. \end{Conditions} -\Exemple|\IfEndWith{xstring}{ring}{vrai}{faux}| -\Exemple|\IfEndWith{LaTeX}{a}{vrai}{faux}| -\Exemple|\IfEndWith{a bc def }{ef }{vrai}{faux}| -\Exemple|\IfEndWith{a bc def }{ef}{vrai}{faux}| +\exemple|\IfEndWith{xstring}{ring}{vrai}{faux}| +\exemple|\IfEndWith{LaTeX}{a}{vrai}{faux}| +\exemple|\IfEndWith{a bc def }{ef }{vrai}{faux}| +\exemple|\IfEndWith{a bc def }{ef}{vrai}{faux}| + +\subsubsection{IfInteger} + +\verb|\IfInteger|\ARGU{nombre}\ARGU{vrai}\ARGU{faux} +\smallskip + +Teste si \argu{nombre} est un nombre entier relatif, et exécute \argu{vrai} dans l'affirmative, et \argu{faux} dans le cas contraire.\smallskip + +Si le test est faux pour cause de caractères non autorisés, la séquence de contrôle \verb|\@xs@afterinteger| contient la partie illégale de \argu{number}.\medskip + +\exemple|\IfInteger{13}{vrai}{faux}| +\exemple|\IfInteger{-219}{vrai}{faux}| +\exemple|\IfInteger{+9}{vrai}{faux}| +\exemple|\IfInteger{3.14}{vrai}{faux}| +\exemple|\IfInteger{0}{vrai}{faux}| +\exemple|\IfInteger{49a}{vrai}{faux}| +\exemple|\IfInteger{+}{vrai}{faux}| +\exemple|\IfInteger{-}{vrai}{faux}| +\exemple|\IfInteger{0000}{vrai}{faux}| + +\subsubsection{IfDecimal} + + +\verb|\IfInteger|\ARGU{nombre}\ARGU{vrai}\ARGU{faux} +\smallskip + +Teste si \argu{nombre} est un nombre décimal, et exécute \argu{vrai} dans l'affirmative, et \argu{faux} dans le cas contraire.\smallskip + +Les compteurs \verb|\integerpart| et \verb|\decimalpart| contiennent les parties entières et décimales de \argu{number}. + +Si le test est faux pour cause de caractères non autorisés, la séquence de contrôle \verb|\@xs@afterdecimal| contient la partie illégale de \argu{number}, alors que si le test est faux parce que la partie décimale après le séparateur décimal est vide, elle contient \guill{X}.\medskip + +\begin{Conditions} + \item Le séparateur décimal peut être un point ou une virgule; + \item Si ce qui se trouve à droite du séparateur décimal s'il est présent est vide, le test est faux; + \item Si ce qui se trouve à gauche du séparateur décimal s'il est présent est vide, la partie entière est considérée comme étant 0. +\end{Conditions} + +\exemple|\IfDecimal{3.14}{vrai}{faux}| +\exemple|\IfDecimal{3,14}{vrai}{faux}| +\exemple|\IfDecimal{-0.5}{vrai}{faux}| +\exemple|\IfDecimal{.7}{vrai}{faux}| +\exemple|\IfDecimal{,9}{vrai}{faux}| +\exemple|\IfDecimal{1..2}{vrai}{faux}| +\exemple|\IfDecimal{+6}{vrai}{faux}| +\exemple|\IfDecimal{-15}{vrai}{faux}| +\exemple|\IfDecimal{1.}{vrai}{faux}| +\exemple|\IfDecimal{2,}{vrai}{faux}| +\exemple|\IfDecimal{.}{vrai}{faux}| +\exemple|\IfDecimal{,}{vrai}{faux}| +\exemple|\IfDecimal{+}{vrai}{faux}| +\exemple|\IfDecimal{-}{vrai}{faux}| \subsection{Les macros renvoyant une chaîne} \subsubsection{StrBefore} @@ -325,14 +365,14 @@ Dans \argu{chaine}, renvoie ce qui se trouve avant l'occurrence \no\argu{nombre} \item Si l'occurrence n'est pas trouvée, une chaîne vide est renvoyée. \end{Conditions} -\Exemple*|\StrBefore{xstring}{tri}| -\Exemple*|\StrBefore{LaTeX}{e}| -\Exemple*|\StrBefore{LaTeX}{p}| -\Exemple*|\StrBefore{LaTeX}{L}| -\Exemple*|\StrBefore{a bc def }{def}| -\Exemple*|\StrBefore{a bc def }{cd}| -\Exemple*|\StrBefore[1]{1b2b3}{b}| -\Exemple*|\StrBefore[2]{1b2b3}{b}| +\exemple*|\StrBefore{xstring}{tri}| +\exemple*|\StrBefore{LaTeX}{e}| +\exemple*|\StrBefore{LaTeX}{p}| +\exemple*|\StrBefore{LaTeX}{L}| +\exemple*|\StrBefore{a bc def }{def}| +\exemple*|\StrBefore{a bc def }{cd}| +\exemple*|\StrBefore[1]{1b2b3}{b}| +\exemple*|\StrBefore[2]{1b2b3}{b}| \subsubsection{StrBehind} \verb|\StrBehind|\arguC{nombre}\ARGU{chaine}\ARGU{chaineA}\arguC{nom} @@ -348,15 +388,15 @@ Dans \argu{chaine}, renvoie ce qui se trouve après l'occurrence \no\argu{nombre \item Si l'occurrence n'est pas trouvée, une chaîne vide est renvoyée. \end{Conditions} -\Exemple*|\StrBehind{xstring}{tri}| -\Exemple*|\StrBehind{LaTeX}{e}| -\Exemple*|\StrBehind{LaTeX}{p}| -\Exemple*|\StrBehind{LaTeX}{X}| -\Exemple*|\StrBehind{a bc def }{bc}| -\Exemple*|\StrBehind{a bc def }{cd}| -\Exemple*|\StrBehind[1]{1b2b3}{b}| -\Exemple*|\StrBehind[2]{1b2b3}{b}| -\Exemple*|\StrBehind[3]{1b2b3}{b}| +\exemple*|\StrBehind{xstring}{tri}| +\exemple*|\StrBehind{LaTeX}{e}| +\exemple*|\StrBehind{LaTeX}{p}| +\exemple*|\StrBehind{LaTeX}{X}| +\exemple*|\StrBehind{a bc def }{bc}| +\exemple*|\StrBehind{a bc def }{cd}| +\exemple*|\StrBehind[1]{1b2b3}{b}| +\exemple*|\StrBehind[2]{1b2b3}{b}| +\exemple*|\StrBehind[3]{1b2b3}{b}| \subsubsection{StrBetween} \verb|\StrBetween|\arguCC{nombre1}{nombre2}\ARGU{chaine}\ARGU{chaineA}\ARGU{chaineB}\arguC{nom} @@ -373,16 +413,16 @@ Dans \argu{chaine}, renvoie ce qui se trouve entre\footnote{Au sens strict, c'es \item Si l'un des arguments optionnels \argu{nombre1} ou \argu{nombre2} est négatif ou nul, une chaîne vide est renvoyée. \end{Conditions} -\Exemple*|\StrBetween{xstring}{xs}{ng}| -\Exemple*|\StrBetween{xstring}{i}{n}| -\Exemple*|\StrBetween{xstring}{a}{tring}| -\Exemple*|\StrBetween{a bc def }{a}{d}| -\Exemple*|\StrBetween{a bc def }{a }{f}| -\Exemple*|\StrBetween{a1b1a2b2a3b3}{a}{b}| -\Exemple*|\StrBetween[2,3]{a1b1a2b2a3b3}{a}{b}| -\Exemple*|\StrBetween[1,3]{a1b1a2b2a3b3}{a}{b}| -\Exemple*|\StrBetween[3,1]{a1b1a2b2a3b3}{a}{b}| -\Exemple*|\StrBetween[3,2]{abracadabra}{a}{bra}| +\exemple*|\StrBetween{xstring}{xs}{ng}| +\exemple*|\StrBetween{xstring}{i}{n}| +\exemple*|\StrBetween{xstring}{a}{tring}| +\exemple*|\StrBetween{a bc def }{a}{d}| +\exemple*|\StrBetween{a bc def }{a }{f}| +\exemple*|\StrBetween{a1b1a2b2a3b3}{a}{b}| +\exemple*|\StrBetween[2,3]{a1b1a2b2a3b3}{a}{b}| +\exemple*|\StrBetween[1,3]{a1b1a2b2a3b3}{a}{b}| +\exemple*|\StrBetween[3,1]{a1b1a2b2a3b3}{a}{b}| +\exemple*|\StrBetween[3,2]{abracadabra}{a}{bra}| \subsubsection{StrSubstitute} \verb|\StrSubstitute|\arguC{nombre}\ARGU{chaine}\ARGU{chaineA}\ARGU{chaineB}\arguC{nom} @@ -400,16 +440,16 @@ Dans \argu{chaine}, la macro remplace les \argu{nombre} premières occurrences d \item Si \argu{chaineB} est vide, alors les occurrences de \argu{chaineA}, si elles existent, sont supprimées. \end{Conditions} -\Exemple|\StrSubstitute{xstring}{i}{a}| -\Exemple|\StrSubstitute{abracadabra}{a}{o}| -\Exemple|\StrSubstitute{abracadabra}{br}{TeX}| -\Exemple|\StrSubstitute{LaTeX}{m}{n}| -\Exemple|\StrSubstitute{a bc def }{ }{M}| -\Exemple|\StrSubstitute{a bc def }{ab}{AB}| -\Exemple|\StrSubstitute[1]{a1a2a3}{a}{B}| -\Exemple|\StrSubstitute[2]{a1a2a3}{a}{B}| -\Exemple|\StrSubstitute[3]{a1a2a3}{a}{B}| -\Exemple|\StrSubstitute[4]{a1a2a3}{a}{B}| +\exemple|\StrSubstitute{xstring}{i}{a}| +\exemple|\StrSubstitute{abracadabra}{a}{o}| +\exemple|\StrSubstitute{abracadabra}{br}{TeX}| +\exemple|\StrSubstitute{LaTeX}{m}{n}| +\exemple|\StrSubstitute{a bc def }{ }{M}| +\exemple|\StrSubstitute{a bc def }{ab}{AB}| +\exemple|\StrSubstitute[1]{a1a2a3}{a}{B}| +\exemple|\StrSubstitute[2]{a1a2a3}{a}{B}| +\exemple|\StrSubstitute[3]{a1a2a3}{a}{B}| +\exemple|\StrSubstitute[4]{a1a2a3}{a}{B}| \subsubsection{StrDel} \verb|\StrDel|\arguC{nombre}\ARGU{chaine}\ARGU{chaineA}\arguC{nom} @@ -426,12 +466,12 @@ Supprime les \argu{nombre} premières occurrences de \argu{chaineA} dans \argu{c \item Si \argu{nombre}${}<0$ alors la macro se comporte comme si \argu{nombre}${}=0$; \end{Conditions} -\Exemple|\StrDel{abracadabra}{a}| -\Exemple|\StrDel[1]{abracadabra}{a}| -\Exemple|\StrDel[4]{abracadabra}{a}| -\Exemple|\StrDel[9]{abracadabra}{a}| -\Exemple|\StrDel{a bc def }{ }| -\Exemple*|\StrDel{a bc def }{def}| +\exemple|\StrDel{abracadabra}{a}| +\exemple|\StrDel[1]{abracadabra}{a}| +\exemple|\StrDel[4]{abracadabra}{a}| +\exemple|\StrDel[9]{abracadabra}{a}| +\exemple|\StrDel{a bc def }{ }| +\exemple*|\StrDel{a bc def }{def}| \subsubsection{StrGobbleLeft} @@ -446,11 +486,11 @@ Dans \argu{chaine}, enlève les \argu{nombre} premiers caractères de gauche.\me \item Si \argu{nombre}${}\geqslant{}$\argu{longueurChaine}, tous les caractères sont supprimés. \end{Conditions} -\Exemple*|\StrGobbleLeft{xstring}{2}| -\Exemple*|\StrGobbleLeft{xstring}{9}| -\Exemple*|\StrGobbleLeft{LaTeX}{4}| -\Exemple*|\StrGobbleLeft{LaTeX}{-2}| -\Exemple*|\StrGobbleLeft{a bc def }{4}| +\exemple*|\StrGobbleLeft{xstring}{2}| +\exemple*|\StrGobbleLeft{xstring}{9}| +\exemple*|\StrGobbleLeft{LaTeX}{4}| +\exemple*|\StrGobbleLeft{LaTeX}{-2}| +\exemple*|\StrGobbleLeft{a bc def }{4}| \subsubsection{StrLeft} \verb|\StrLeft|\ARGU{chaine}\ARGU{nombre}\arguC{nom} @@ -464,11 +504,11 @@ Dans \argu{chaine}, renvoie la sous-chaîne de gauche de longueur \argu{nombre}. \item Si \argu{nombre}${}\geqslant{}$\argu{longueurChaine}, tous les caractères sont retournés. \end{Conditions} -\Exemple*|\StrLeft{xstring}{2}| -\Exemple*|\StrLeft{xstring}{9}| -\Exemple*|\StrLeft{LaTeX}{4}| -\Exemple*|\StrLeft{LaTeX}{-2}| -\Exemple*|\StrLeft{a bc def }{5}| +\exemple*|\StrLeft{xstring}{2}| +\exemple*|\StrLeft{xstring}{9}| +\exemple*|\StrLeft{LaTeX}{4}| +\exemple*|\StrLeft{LaTeX}{-2}| +\exemple*|\StrLeft{a bc def }{5}| \subsubsection{StrGobbleRight} \verb|\StrGobbleRight|\ARGU{chaine}\ARGU{nombre}\arguC{nom} @@ -476,11 +516,11 @@ Dans \argu{chaine}, renvoie la sous-chaîne de gauche de longueur \argu{nombre}. Agit comme \verb|\StrGobbleLeft|, mais enlève les caractères à droite de \argu{chaine}. -\Exemple*|\StrGobbleRight{xstring}{2}| -\Exemple*|\StrGobbleRight{xstring}{9}| -\Exemple*|\StrGobbleRight{LaTeX}{4}| -\Exemple*|\StrGobbleRight{LaTeX}{-2}| -\Exemple*|\StrGobbleRight{a bc def }{4}| +\exemple*|\StrGobbleRight{xstring}{2}| +\exemple*|\StrGobbleRight{xstring}{9}| +\exemple*|\StrGobbleRight{LaTeX}{4}| +\exemple*|\StrGobbleRight{LaTeX}{-2}| +\exemple*|\StrGobbleRight{a bc def }{4}| \subsubsection{StrRight} \verb|\StrRight|\ARGU{chaine}\ARGU{nombre}\arguC{nom} @@ -488,11 +528,11 @@ Agit comme \verb|\StrGobbleLeft|, mais enlève les caractères à droite de \arg Agit comme \verb|\StrLeft|, mais renvoie les caractères à la droite de \argu{chaine}. -\Exemple*|\StrRight{xstring}{2}| -\Exemple*|\StrRight{xstring}{9}| -\Exemple*|\StrRight{LaTeX}{4}| -\Exemple*|\StrRight{LaTeX}{-2}| -\Exemple*|\StrRight{a bc def }{5}| +\exemple*|\StrRight{xstring}{2}| +\exemple*|\StrRight{xstring}{9}| +\exemple*|\StrRight{LaTeX}{4}| +\exemple*|\StrRight{LaTeX}{-2}| +\exemple*|\StrRight{a bc def }{5}| \subsubsection{StrChar} \verb|\StrChar|\ARGU{chaine}\ARGU{nombre}\arguC{nom} @@ -505,10 +545,10 @@ Renvoie le caractère à la position \argu{nombre} dans la chaîne \argu{chaine} \item Si \argu{nombre}${}\leqslant0$ ou si \argu{nombre}${}>{}$\argu{longueurChaine}, aucun caractère n'est renvoyé. \end{Conditions} -\Exemple|\StrChar{xstring}{4}| -\Exemple*|\StrChar{xstring}{9}| -\Exemple*|\StrChar{xstring}{-5}| -\Exemple|\StrChar{a bc def }{6}| +\exemple|\StrChar{xstring}{4}| +\exemple*|\StrChar{xstring}{9}| +\exemple*|\StrChar{xstring}{-5}| +\exemple|\StrChar{a bc def }{6}| \subsubsection{StrMid} \verb|\StrMid|\ARGU{chaine}\ARGU{nombreA}\ARGU{nombreB}\arguC{nom} @@ -525,12 +565,12 @@ Dans \argu{chaine}, renvoie la sous chaîne se trouvant entre\footnote{Au sens l \item Si \argu{nombreB}${}>{}$\argu{longueurChaine}, alors la macro se comporte comme si \argu{nombreB}${}={}$\argu{longueurChaine}. \end{Conditions} -\Exemple|\StrMid{xstring}{2}{5}| -\Exemple|\StrMid{xstring}{-4}{2}| -\Exemple*|\StrMid{xstring}{5}{1}| -\Exemple|\StrMid{xstring}{6}{15}| -\Exemple|\StrMid{xstring}{3}{3}| -\Exemple*|\StrMid{a bc def }{2}{7}| +\exemple|\StrMid{xstring}{2}{5}| +\exemple|\StrMid{xstring}{-4}{2}| +\exemple*|\StrMid{xstring}{5}{1}| +\exemple|\StrMid{xstring}{6}{15}| +\exemple|\StrMid{xstring}{3}{3}| +\exemple*|\StrMid{a bc def }{2}{7}| \subsection{Les macros renvoyant des nombres} @@ -540,9 +580,9 @@ Dans \argu{chaine}, renvoie la sous chaîne se trouvant entre\footnote{Au sens l Renvoie la longueur de \argu{chaine}. -\Exemple|\StrLen{xstring}| -\Exemple|\StrLen{A}| -\Exemple|\StrLen{a bc def }| +\exemple|\StrLen{xstring}| +\exemple|\StrLen{A}| +\exemple|\StrLen{a bc def }| \subsubsection{StrCount} \verb|\StrCount|\ARGU{chaine}\ARGU{chaineA}\arguC{nom} @@ -554,10 +594,10 @@ Compte combien de fois \argu{chaineA} est contenue dans \argu{chaine}.\par\medsk \item Si l'un au moins des arguments \argu{chaine} ou \argu{chaineA} est vide, la macro renvoie 0. \end{Conditions} -\Exemple|\StrCount{abracadabra}{a}| -\Exemple|\StrCount{abracadabra}{bra}| -\Exemple|\StrCount{abracadabra}{tic}| -\Exemple|\StrCount{aaaaaa}{aa}| +\exemple|\StrCount{abracadabra}{a}| +\exemple|\StrCount{abracadabra}{bra}| +\exemple|\StrCount{abracadabra}{tic}| +\exemple|\StrCount{aaaaaa}{aa}| \subsubsection{StrPosition} \verb|\StrPosition|\arguC{nombre}\ARGU{chaine}\ARGU{chaineA}\arguC{nom} @@ -573,13 +613,13 @@ Dans \argu{chaine}, renvoie la position de l'occurrence \no\argu{nombre} de \arg \end{Conditions} \medskip -\Exemple|\StrPosition{xstring}{ring}| -\Exemple|\StrPosition[4]{abracadabra}{a}| -\Exemple|\StrPosition[2]{abracadabra}{bra}| -\Exemple|\StrPosition[9]{abracadabra}{a}| -\Exemple|\StrPosition{abracadabra}{z}| -\Exemple|\StrPosition{a bc def }{d}| -\Exemple|\StrPosition[3]{aaaaaa}{aa}| +\exemple|\StrPosition{xstring}{ring}| +\exemple|\StrPosition[4]{abracadabra}{a}| +\exemple|\StrPosition[2]{abracadabra}{bra}| +\exemple|\StrPosition[9]{abracadabra}{a}| +\exemple|\StrPosition{abracadabra}{z}| +\exemple|\StrPosition{a bc def }{d}| +\exemple|\StrPosition[3]{aaaaaa}{aa}| \section{Utilisation des macros à des fins de programmation} \label{programmation} @@ -603,7 +643,7 @@ Concernant ces arguments verb, il faut tenir compte des deux points suivants : \end{itemize} \medskip -Exemple :\par\medskip +exemple :\par\medskip \begin{minipage}[r]{0.6\linewidth} \hfill \begin{boxedverbatim} @@ -623,9 +663,9 @@ Le processus inverse de ce qui a été vu au dessus consiste à transformer un \ \hfill\verb|\tokenize|\ARGU{nom}\ARGU{séquence de contrôle}\hfill{} \smallskip -\argu{séquence de contrôle} est développée le plus possible si l'on a invoqué \verb|\fullexpandarg| (voir page~\pageref{devarg}); elle subit un 1-développement si l'on invoque \verb|\normalexpandarg|. Dans les deux cas, le développement doit donner du \texte{10,11,12}. Ensuite, ce \texte{10,11,12} est transformé en tokens puis assigné à l 'aide d'un \verb|\def| à la séquence de contrôle \argu{nom}.\medskip +\argu{séquence de contrôle} est développée le plus possible si l'on a invoqué \verb|\fullexpandarg| (voir page~\pageref{devarg}); elle n'est pas développée si l'on invoque \verb|\normalexpandarg|. Dans les deux cas, le développement doit donner du \texte{10,11,12}. Ensuite, ce \texte{10,11,12} est transformé en tokens puis assigné à l 'aide d'un \verb|\def| à la séquence de contrôle \argu{nom}.\medskip -Exemple :\par\medskip +exemple :\par\medskip \begin{minipage}[r]{0.6\linewidth} \hfill \begin{boxedverbatim} @@ -762,7 +802,7 @@ De plus, et c'est aussi le sens du message d'avertissement généré par la vers Enfin, lors de l'utilisation de \verb|\scancs|, une espace est insérée après chaque séquence de contrôle. En effet, la primitive \verb|\detokenize| de $\varepsilon$-\TeX{} qui a été utilisée ici, insère une espace apès chaque séquence de contrôle. Il n'y a pas moyen de l'éviter.\medskip -\subsubsection{Exemples} +\subsubsection{exemples} Dans l'exemple suivant, les séquences de contrôle subissent un 2-développement. \verb|\d| donne donc \verb|\b|, et \verb|\b| donne \verb|\textbf{a}\textit{b}|, et on constate bien qu'une espace est insérée après chaque séquence de contrôle. \par\medskip \begin{minipage}[r]{0.6\linewidth} \hfill |