diff options
author | Karl Berry <karl@freefriends.org> | 2009-01-27 01:57:19 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2009-01-27 01:57:19 +0000 |
commit | 859083925d4a5369db7c4336785eab6ce24a155e (patch) | |
tree | b74e89145a103dc019dbd7bd8f679dea60ea79a9 /Master/texmf-dist/doc/latex/xfor/sample.tex | |
parent | 0eafc5607fb62a88e9dba8e8ef3a11efae9fd904 (diff) |
xfor 1.04 (26jan09)
git-svn-id: svn://tug.org/texlive/trunk@11989 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex/xfor/sample.tex')
-rw-r--r-- | Master/texmf-dist/doc/latex/xfor/sample.tex | 90 |
1 files changed, 69 insertions, 21 deletions
diff --git a/Master/texmf-dist/doc/latex/xfor/sample.tex b/Master/texmf-dist/doc/latex/xfor/sample.tex index b1027185b18..f740bdbc66f 100644 --- a/Master/texmf-dist/doc/latex/xfor/sample.tex +++ b/Master/texmf-dist/doc/latex/xfor/sample.tex @@ -1,16 +1,57 @@ -\errorcontextlines=100 +%% +%% This is file `sample.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% xfor.dtx (with options: `sample.tex,package') +%% +%% xfor.dtx +%% Copyright 2009 Nicola Talbot +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license of (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. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% The Current Maintainer of this work is Nicola Talbot. +%% +%% This work consists of the files xfor.dtx and xfor.ins and the derived files xfor.sty, sample.tex. +%% +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +\listfiles \documentclass{article} \usepackage{xfor} \makeatletter -% \insertinto{new value}{list} + + +\newtoks\tmptok + \newcommand{\insertinto}[2]{% \def\nlst{}% \@for\n:=#2\do{% -% store new list in \toks@ -\expandafter\toks@\expandafter{\nlst}% -% test current value against new value +\expandafter\tmptok\expandafter{\nlst}% \ifnum\n>#1\relax \edef\newstuff{\number#1,\n}% % end for loop at the end of this iteration @@ -18,14 +59,12 @@ \else \edef\newstuff{\n}% \fi -% append new stuff to new list \ifx\nlst\@empty \edef\nlst{\newstuff}% \else - \edef\nlst{\the\toks@,\newstuff}% + \edef\nlst{\the\tmptok,\newstuff}% \fi }% -% check to see if for loop was prematurely terminated \if@endfor % loop may have been terminated during final iteration, in % which case \@forremainder is empty. @@ -34,39 +73,48 @@ \else % loop prematurely ended, append remainder of original list % to new list - \expandafter\toks@\expandafter{\nlst}% - \edef\nlst{\the\toks@,\@forremainder}% + \expandafter\tmptok\expandafter{\nlst}% + \edef\nlst{\the\tmptok,\@forremainder}% \fi \else - % wasn't prematurely terminated, so new value hasn't been added - % add now. - \expandafter\toks@\expandafter{\nlst}% + % wasn't prematurely terminated, so new value hasn't been added. + % Add now. + \expandafter\tmptok\expandafter{\nlst}% \ifx\nlst\@empty \edef\nlst{\number#1}% \else - \edef\nlst{\the\toks@,\number#1}% + \edef\nlst{\the\tmptok,\number#1}% \fi \fi \global\let#2=\nlst } + \newcommand{\insertionsort}[1]{% \def\sortedlist{}% \@for\val:=#1\do{{\insertinto{\val}{\sortedlist}}}% \let#1=\sortedlist} + \makeatother \begin{document} -\def\mylist{1,2,5,9,12,15,18,20}% -\def\newval{11}% -Original list: \mylist. New value: \newval. - -\insertinto{\newval}{\mylist} -New list: \mylist. - Unsorted list: \def\mylist{4,2,7,1,10,11,20,15}\mylist. \insertionsort{\mylist}% Sorted list: \mylist. + +Iterate through the list (next element in parentheses): +\makeatletter +\@for\n:=\mylist\do{% +\n +\ifx\@xfor@nextelement\@nnil + % last iteration +\else + (\@xfor@nextelement); +\fi +}. \end{document} +\endinput +%% +%% End of file `sample.tex'. |