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 | |
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')
-rw-r--r-- | Master/texmf-dist/doc/latex/xfor/CHANGES | 4 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/xfor/README | 50 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/xfor/sample.tex | 90 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/xfor/xfor.pdf | bin | 108179 -> 117739 bytes |
4 files changed, 98 insertions, 46 deletions
diff --git a/Master/texmf-dist/doc/latex/xfor/CHANGES b/Master/texmf-dist/doc/latex/xfor/CHANGES index 1899d18a565..926dfd76f44 100644 --- a/Master/texmf-dist/doc/latex/xfor/CHANGES +++ b/Master/texmf-dist/doc/latex/xfor/CHANGES @@ -1,5 +1,9 @@ xfor change log: +v1.04 (25 January 2009): + rewrite of internals to improve loop efficiency + (code provided by Morten Høgholm) + v1.03 (21 August 2007): fixed license text diff --git a/Master/texmf-dist/doc/latex/xfor/README b/Master/texmf-dist/doc/latex/xfor/README index b8980b3caea..a4c8c8ac0f8 100644 --- a/Master/texmf-dist/doc/latex/xfor/README +++ b/Master/texmf-dist/doc/latex/xfor/README @@ -1,25 +1,25 @@ -LaTeX Package : xfor - -Last Modified : 21 August 2007 -Version : 1.03 -Author : Nicola Talbot - -This package redefines \@for so that it is possible to -prematurely terminate the loop. There is also a look ahead -facility to access the next element before moving on to the -next iteration. - -The package is supplied using the TeX Directory Structure (TDS). -Files in texmf directory should go in the corresponding -$LOCALTEXMF directories. - -*Remember to refresh TeX's database* - -The package and documentation source code is also supplied as a -dtx and ins file located in texmf/source. - -This material is subject to the LaTeX Project Public License. -See http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html for the details of that license. - -http://theoval.cmp.uea.ac.uk/~nlct/ - +LaTeX Package : xfor
+
+Last Modified : 25 January 2009
+Version : 1.04
+Author : Nicola Talbot
+
+This package redefines \@for so that it is possible to
+prematurely terminate the loop. There is also a look ahead
+facility to access the next element before moving on to the
+next iteration.
+
+The package is supplied using the TeX Directory Structure (TDS).
+Files in texmf directory should go in the corresponding
+$LOCALTEXMF directories.
+
+*Remember to refresh TeX's database*
+
+The package and documentation source code is also supplied as a
+dtx and ins file located in texmf/source.
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html for the details of that license.
+
+http://theoval.cmp.uea.ac.uk/~nlct/
+
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'. diff --git a/Master/texmf-dist/doc/latex/xfor/xfor.pdf b/Master/texmf-dist/doc/latex/xfor/xfor.pdf Binary files differindex 1ec378b63a9..8f4b34ccb17 100644 --- a/Master/texmf-dist/doc/latex/xfor/xfor.pdf +++ b/Master/texmf-dist/doc/latex/xfor/xfor.pdf |