summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-01-23 01:50:06 +0000
committerKarl Berry <karl@freefriends.org>2009-01-23 01:50:06 +0000
commita184c99b59b3441804c4f17b636999bbad6498f2 (patch)
tree25e9c8b7400a87d6928b5d3cbb34f1590a45f028 /Master/texmf-dist/tex/latex
parent393794d0d467bdfef27fc2c9c20a22e3a124d0ab (diff)
easylist rewrite (22jan09)
git-svn-id: svn://tug.org/texlive/trunk@11949 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex')
-rw-r--r--Master/texmf-dist/tex/latex/easylist/easylist.sty1210
1 files changed, 899 insertions, 311 deletions
diff --git a/Master/texmf-dist/tex/latex/easylist/easylist.sty b/Master/texmf-dist/tex/latex/easylist/easylist.sty
index 8ee03bd1403..93a94adf11e 100644
--- a/Master/texmf-dist/tex/latex/easylist/easylist.sty
+++ b/Master/texmf-dist/tex/latex/easylist/easylist.sty
@@ -1,6 +1,8 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %%
-%% easylist.sty v.1.0 by Paul Isambert %%
+%% easylist.sty v.1.2 by Paul Isambert %%
+%% See the documentation for a comment on the implementation. %%
+%% %%
%% This set of macros is published under the LaTeX Project Public License: %%
%% %%
%% Do whatever you want to that software, %%
@@ -17,283 +19,861 @@
%% %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{easylist}[2008/11/16 Numbered items with a single command.]
-
-\RequirePackage{keyval}
-
-\newif\ifpilcrow
-\pilcrowfalse
-\newif\ifat
-\atfalse
-\newif\ifsharp
-\sharpfalse
-\newif\ifampersand
-\ampersandfalse
-
-\DeclareOption{pilcrow}{\pilcrowtrue}
-\DeclareOption{at}{\attrue}
-\DeclareOption{sharp}{\sharptrue}
-\DeclareOption{ampersand}{\ampersandtrue}
-\ProcessOptions\relax
+\ProvidesPackage{easylist}[2009/01/06 v.1.2 Numbered items with a single command.]
\makeatletter
-\define@key{ListProperties}{Mark1}{\def\Markone{#1}}
-\define@key{ListProperties}{Mark2}{\def\Marktwo{#1}}
-\define@key{ListProperties}{Mark3}{\def\Markthree{#1}}
-\define@key{ListProperties}{Mark4}{\def\Markfour{#1}}
-\define@key{ListProperties}{Mark}{\def\Markone{#1}\def\Marktwo{#1}\def\Markthree{#1}\def\Markfour{#1}\def\FinalMark{#1}}
-\define@key{ListProperties}{FinalMark}{\def\FinalMark{#1}}
-
-\define@key{ListProperties}{Style1}{\def\CtrStyleone{#1}\def\Styleone{#1}}
-\define@key{ListProperties}{Style2}{\def\CtrStyletwo{#1}\def\Styletwo{#1}}
-\define@key{ListProperties}{Style3}{\def\CtrStylethree{#1}\def\Stylethree{#1}}
-\define@key{ListProperties}{Style4}{\def\CtrStylefour{#1}\def\Stylefour{#1}}
-\define@key{ListProperties}{Style5}{\def\CtrStylefive{#1}\def\Stylefive{#1}}
-\define@key{ListProperties}{Style}{\def\CtrStyleone{#1}\def\CtrStyletwo{#1}\def\CtrStylethree{#1}\def\CtrStylefour{#1}\def\CtrStylefive{#1}\def\Styleone{#1}\def\Styletwo{#1}\def\Stylethree{#1}\def\Stylefour{#1}\def\Stylefive{#1}}
-
-\define@key{ListProperties}{Style1*}{\def\CtrStyleone{#1}}
-\define@key{ListProperties}{Style2*}{\def\CtrStyletwo{#1}}
-\define@key{ListProperties}{Style3*}{\def\CtrStylethree{#1}}
-\define@key{ListProperties}{Style4*}{\def\CtrStylefour{#1}}
-\define@key{ListProperties}{Style5*}{\def\CtrStylefive{#1}}
-\define@key{ListProperties}{Style*}{\def\CtrStyleone{#1}\def\CtrStyletwo{#1}\def\CtrStylethree{#1}\def\CtrStylefour{#1}\def\CtrStylefive{#1}}
-
-\define@key{ListProperties}{Style1**}{\def\Styleone{#1}}
-\define@key{ListProperties}{Style2**}{\def\Styletwo{#1}}
-\define@key{ListProperties}{Style3**}{\def\Stylethree{#1}}
-\define@key{ListProperties}{Style4**}{\def\Stylefour{#1}}
-\define@key{ListProperties}{Style5**}{\def\Stylefive{#1}}
-\define@key{ListProperties}{Style**}{\def\Styleone{#1}\def\Styletwo{#1}\def\Stylethree{#1}\def\Stylefour{#1}\def\Stylefive{#1}}
-
-\define@key{ListProperties}{Margin1}{\def\@hangfromone{#1}}
-\define@key{ListProperties}{Margin2}{\def\@hangfromtwo{#1}}
-\define@key{ListProperties}{Margin3}{\def\@hangfromthree{#1}}
-\define@key{ListProperties}{Margin4}{\def\@hangfromfour{#1}}
-\define@key{ListProperties}{Margin5}{\def\@hangfromfive{#1}}
-\define@key{ListProperties}{Margin}{\def\@hangfromone{#1}\def\@hangfromone{#1}\def\@hangfromtwo{#1}\def\@hangfromthree{#1}\def\@hangfromfour{#1}\def\@hangfromfive{#1}}
-
-\define@key{ListProperties}{Indent1}{\def\Indentone{#1}}
-\define@key{ListProperties}{Indent2}{\def\Indenttwo{#1}}
-\define@key{ListProperties}{Indent3}{\def\Indentthree{#1}}
-\define@key{ListProperties}{Indent4}{\def\Indentfour{#1}}
-\define@key{ListProperties}{Indent5}{\def\Indentfive{#1}}
-\define@key{ListProperties}{Indent}{\def\Indentone{#1}\def\Indenttwo{#1}\def\Indentthree{#1}\def\Indentfour{#1}\def\Indentfive{#1}}
-
-\define@key{ListProperties}{Start1}{\setcounter{Listone}{#1}\addtocounter{Listone}{-1}}
-\define@key{ListProperties}{Start2}{\setcounter{Listtwo}{#1}\addtocounter{Listtwo}{-1}}
-\define@key{ListProperties}{Start3}{\setcounter{Listthree}{#1}\addtocounter{Listthree}{-1}}
-\define@key{ListProperties}{Start4}{\setcounter{Listfour}{#1}\addtocounter{Listfour}{-1}}
-\define@key{ListProperties}{Start5}{\setcounter{Listfive}{#1}\addtocounter{Listfive}{-1}}
-
-\define@key{ListProperties}{Numbers1}{\def\@char{#1}%
- \if\@char r \def\Numbersone{\roman}%
- \else\if\@char R \def\Numbersone{\Roman}%
- \else\if\@char l \def\Numbersone{\alph}%
- \else\if\@char L \def\Numbersone{\Alph}
- \else\def\Numbersone{\arabic}
- \fi
- \fi
- \fi
- \fi}
-\define@key{ListProperties}{Numbers2}{\def\@char{#1}%
- \if\@char r \def\Numberstwo{\roman}%
- \else\if\@char R \def\Numberstwo{\Roman}%
- \else\if\@char l \def\Numberstwo{\alph}%
- \else\if\@char L \def\Numberstwo{\Alph}
- \else\def\Numberstwo{\arabic}
- \fi
- \fi
- \fi
- \fi}
-\define@key{ListProperties}{Numbers3}{\def\@char{#1}%
- \if\@char r \def\Numbersthree{\roman}%
- \else\if\@char R \def\Numbersthree{\Roman}%
- \else\if\@char l \def\Numbersthree{\alph}%
- \else\if\@char L \def\Numbersthree{\Alph}
- \else\def\Numbersthree{\arabic}
- \fi
- \fi
- \fi
- \fi}
-\define@key{ListProperties}{Numbers4}{\def\@char{#1}%
- \if\@char r \def\Numbersfour{\roman}%
- \else\if\@char R \def\Numbersfour{\Roman}%
- \else\if\@char l \def\Numbersfour{\alph}%
- \else\if\@char L \def\Numbersfour{\Alph}
- \else\def\Numbersfour{\arabic}
- \fi
- \fi
- \fi
- \fi}
-\define@key{ListProperties}{Numbers5}{\def\@char{#1}%
- \if\@char r \def\Numbersfive{\roman}%
- \else\if\@char R \def\Numbersfive{\Roman}%
- \else\if\@char l \def\Numbersfive{\alph}%
- \else\if\@char L \def\Numbersfive{\Alph}
- \else\def\Numbersfive{\arabic}
- \fi
- \fi
- \fi
- \fi}
-
-\define@key{ListProperties}{Numbers}{\def\@char{#1}%
- \if\@char r \def\Numbersone{\roman}\def\Numberstwo{\roman}\def\Numbersthree{\roman}\def\Numbersfour{\roman}\def\Numbersfive{\roman}%
- \else\if\@char R \def\Numbersone{\Roman}\def\Numberstwo{\Roman}\def\Numbersthree{\Roman}\def\Numbersfour{\Roman}\def\Numbersfive{\Roman}%
- \else\if\@char l \def\Numbersone{\alph}\def\Numberstwo{\alph}\def\Numbersthree{\alph}\def\Numbersfour{\alph}\def\Numbersfive{\alph}%
- \else\if\@char L \def\Numbersone{\Alph}\def\Numberstwo{\Alph}\def\Numbersthree{\Alph}\def\Numbersfour{\Alph}\def\Numbersfive{\Alph}%
- \else\def\Numbersone{\arabic}\def\Numberstwo{\arabic}\def\Numbersthree{\arabic}\def\Numbersfour{\arabic}\def\Numbersfive{\arabic}%
- \fi
- \fi
- \fi
- \fi}
-
-
-\def\ListProperties(#1){\setkeys{ListProperties}{#1}}
-
-\newcounter{Listone}
-\newcounter{Listtwo}
-\newcounter{Listthree}
-\newcounter{Listfour}
-\newcounter{Listfive}
-\newcounter{ctrlevel}
-\setcounter{ctrlevel}{1}
-
-\def\Markone{.}
-\def\Marktwo{.}
-\def\Markthree{.}
-\def\Markfour{.}
-\def\FinalMark{.}
-
-\def\NormalStyle{\normalsize\upshape\rmfamily\mdseries}
-
-\def\CtrStyleone{}
-\def\CtrStyletwo{}
-\def\CtrStylethree{}
-\def\CtrStylefour{}
-\def\CtrStylefive{}
-
-\def\Styleone{}
-\def\Styletwo{}
-\def\Stylethree{}
-\def\Stylefour{}
-\def\Stylefive{}
-
-\def\Numbersone{\arabic}
-\def\Numberstwo{\arabic}
-\def\Numbersthree{\arabic}
-\def\Numbersfour{\arabic}
-\def\Numbersfive{\arabic}
-
-\def\@hangfromone{0mm}
-\def\@hangfromtwo{0mm}
-\def\@hangfromthree{0mm}
-\def\@hangfromfour{0mm}
-\def\@hangfromfive{0mm}
-
-\def\Indentone{\noindent}
-\def\Indenttwo{\noindent}
-\def\Indentthree{\noindent}
-\def\Indentfour{\noindent}
-\def\Indentfive{\noindent}
-
-\def\ResetCounters{%
-\ifnum\thectrlevel=1{\setcounter{Listtwo}{0}\setcounter{Listthree}{0}\setcounter{Listfour}{0}\setcounter{Listfive}{0}}%
- \else\ifnum\thectrlevel=2{\setcounter{Listthree}{0}\setcounter{Listfour}{0}\setcounter{Listfive}{0}}%
- \else\ifnum\thectrlevel=3{\setcounter{Listfour}{0}\setcounter{Listfive}{0}}%
- \else\ifnum\thectrlevel=4{\setcounter{Listfive}{0}}\fi
- \fi
- \fi
+\newif\ifPilcrow
+\newif\ifAt
+\newif\ifSharp
+\newif\ifAmpersand
+\newif\ifDubiousFigure
+
+\newcount\el@CounterTotal
+\el@CounterTotal10
+\newcount\el@Scratch
+\def\el@Advance#1{\advance#1 by 1\relax}
+
+\def\el@NumberCheck#1{%
+\expandafter\if#1?%
+ \el@Scratch0%
+ \def\e@synext##1{\relax}%
+\else%
+ \ifnum\el@Scratch=10%
+ \el@Scratch0%
+ \def\e@synext##1?{\relax}%
+ \DubiousFiguretrue%
+ \else%
+ \expandafter\if#1\the\el@Scratch%
+ \el@Scratch0%
+ \def\e@synext##1{\el@NumberCheck}%
+ \else%
+ \el@Advance\el@Scratch%
+ \let\e@synext\el@NumberCheck%
+ \fi%
\fi
-}
-
-\def\StepCurrentCounter{%
-\ifnum\thectrlevel=1\stepcounter{Listone}%
- \else\ifnum\thectrlevel=2\stepcounter{Listtwo}%
- \else\ifnum\thectrlevel=3\stepcounter{Listthree}%
- \else\ifnum\thectrlevel=4\stepcounter{Listfour}%
- \else\ifnum\thectrlevel=5\stepcounter{Listfive}\fi
- \fi
- \fi
- \fi
- \fi}
-
-\def\CounterStyle{%
-\ifnum\thectrlevel=1\CtrStyleone%
- \else\ifnum\thectrlevel=2\CtrStyletwo%
- \else\ifnum\thectrlevel=3\CtrStylethree%
- \else\ifnum\thectrlevel=4\CtrStylefour%
- \else\ifnum\thectrlevel=5\CtrStylefive\fi
- \fi
- \fi
- \fi
- \fi}
-
-\def\Style{%
-\ifnum\thectrlevel=1\Styleone%
- \else\ifnum\thectrlevel=2\Styletwo%
- \else\ifnum\thectrlevel=3\Stylethree%
- \else\ifnum\thectrlevel=4\Stylefour%
- \else\ifnum\thectrlevel=5\Stylefive\fi
- \fi
- \fi
- \fi
- \fi}
-
-\def\@Margin{%
-\ifnum\thectrlevel=1\@hangfrom{\hskip \@hangfromone}%
- \else\ifnum\thectrlevel=2\@hangfrom{\hskip \@hangfromtwo}%
- \else\ifnum\thectrlevel=3\@hangfrom{\hskip \@hangfromthree}%
- \else\ifnum\thectrlevel=4\@hangfrom{\hskip \@hangfromfour}%
- \else\ifnum\thectrlevel=5\@hangfrom{\hskip \@hangfromfive}\fi
- \fi
- \fi
- \fi
- \fi}
-
-\def\@Indent{%
-\ifnum\thectrlevel=1\Indentone%
- \else\ifnum\thectrlevel=2\Indenttwo%
- \else\ifnum\thectrlevel=3\Indentthree%
- \else\ifnum\thectrlevel=4\Indentfour%
- \else\ifnum\thectrlevel=5\Indentfive\fi
- \fi
- \fi
- \fi
- \fi}
-
-\def\PrintAllCounters{%
-\ifnum\thectrlevel=1{\Numbersone{Listone}}%
- \else\ifnum\thectrlevel=2{\Numbersone{Listone}\Markone\Numberstwo{Listtwo}}%
- \else\ifnum\thectrlevel=3{\Numbersone{Listone}\Markone\Numberstwo{Listtwo}\Marktwo\Numbersthree{Listthree}}%
- \else\ifnum\thectrlevel=4{\Numbersone{Listone}\Markone\Numberstwo{Listtwo}\Marktwo\Numbersthree{Listthree}\Markthree\Numbersfour{Listfour}}%
- \else\ifnum\thectrlevel=5{\Numbersone{Listone}\Markone\Numberstwo{Listtwo}\Marktwo\Numbersthree{Listthree}\Markthree\Numbersfour{Listfour}\Markfour\Numbersfive{Listfive}}%
- \fi
- \fi
- \fi
- \fi
- \fi}
+\fi\e@synext{#1}}
+
+\DeclareOption{pilcrow}{\Pilcrowtrue}
+\DeclareOption{at}{\Attrue}
+\DeclareOption{sharp}{\Sharptrue}
+\DeclareOption{ampersand}{\Ampersandtrue}
+\DeclareOption*{%
+\expandafter\el@NumberCheck\CurrentOption?%
+\ifDubiousFigure%
+ \PackageError{easylist}{%
+ ^^J==> `\CurrentOption' is not a valid number (in package options).
+ ^^J==> It is ignored and there are only 10 counters}{}%
+\else%
+ \el@CounterTotal\CurrentOption%
+\fi\DubiousFigurefalse}
+\ProcessOptions\relax
-\def\NextToken{}
-\def\reserved@lab{}
+\newcount\el@ControlCounter
+\el@ControlCounter1%
+\newcount\el@CounterLevel
+\el@CounterLevel1%
+\def\el@GenericCounter{%
+\ifnum\el@ControlCounter>\el@CounterTotal%
+ \el@ControlCounter1%
+\else%
+ \newcounter{List\the\el@ControlCounter}%
+ \el@Advance\el@ControlCounter%
+ \expandafter\el@GenericCounter%
+\fi}
-\def\IfNextSpace{%
-\ifx\NextToken\@sptoken%
- \ifnum\thectrlevel>5\PackageError{easylist}{Too many § -- or whatever your symbol; counting interrupted}{}\par\noindent\fbox{!!!}%
- \else
- \StepCurrentCounter%
- \xdef\reserved@lab{\PrintAllCounters}%
- \par\@Indent\ResetCounters%
- \NormalStyle\@Margin{\CounterStyle\PrintAllCounters\FinalMark}\Style\fi%
- \setcounter{ctrlevel}{1}%
- \else\stepcounter{ctrlevel}\fi}
-
-\xdef\SectionCatcode{\number\catcode`§}
-\xdef\PilcrowCatcode{\number\catcode`¶}
-\xdef\SharpCatcode{\number\catcode`#}
-\xdef\AtCatcode{\number\catcode`@}
-\xdef\AmpersandCatcode{\number\catcode`&}
+\el@GenericCounter
+
+\newcommand{\el@GenericDef}[3][]{%
+\ifnum\el@ControlCounter>\el@CounterTotal%
+ \def\easynext[##1]##2##3{\relax}%
+ \el@ControlCounter1%
+\else%
+ \expandafter\gdef\csname #2\the\el@ControlCounter#1\endcsname{#3}%
+ \el@Advance\el@ControlCounter%
+ \let\easynext\el@GenericDef%
+\fi%
+\easynext[#1]{#2}{#3}}
+
+\def\el@PreviousItem{0}
+\el@GenericDef{FinalMark}{NA}
+\el@GenericDef{Mark}{.}
+\el@GenericDef{Margin}{0cm}
+\el@GenericDef{Numbers}{a}
+\el@GenericDef{Style}{}
+\el@GenericDef[*]{Style}{}
+\el@GenericDef[**]{Style}{}
+\el@GenericDef{Indent}{0cm}
+\el@GenericDef{Start}{NA}
+\el@GenericDef[*]{Start}{NA}
+\el@GenericDef{CtrCom}{}
+\el@GenericDef{Space}{0cm}
+\el@GenericDef[*]{Space}{0cm}
+\el@GenericDef{Hide}{0}
+\el@GenericDef{Hang}{false}
+\el@GenericDef{FinalSpace}{.3em}
+\el@GenericDef{Align}{false}
+
+\newif\ifProgressiveStar
+\newdimen\el@ProgressiveDimension
+
+\def\el@ProgressiveMargin{%
+\@ifstar%
+ {\ProgressiveStartrue\el@ProgressiveM@rgin}%
+ {\ProgressiveStarfalse\el@ProgressiveM@rgin}}
+
+\def\el@ProgressiveM@rgin#1{%
+\ifnum\el@ControlCounter>\el@CounterTotal%
+ \def\easynext##1{\relax}%
+ \el@ControlCounter1%
+\else%
+ \el@ProgressiveDimension#1%
+ \multiply\el@ProgressiveDimension by \el@ControlCounter%
+ \ifProgressiveStar%
+ \advance\el@ProgressiveDimension by -#1%
+ \fi%
+ \expandafter\xdef\csname Margin\the\el@ControlCounter\endcsname{%
+ \the\el@ProgressiveDimension}%
+ \el@Advance\el@ControlCounter%
+ \let\easynext\el@ProgressiveM@rgin%
+\fi%
+\easynext{#1}}
+
+\def\ListProperties(#1){%
+\el@ListProperties A=A,#1,Z=Z,%
+\el@GenericNumberCheck{Hide}%
+\el@GenericNumberCheck{Start}%
+\el@GenericNumberCheck[*]{Start}%
+\el@GenericLetterCheck%
+\el@GenericUnitSearch{Margin}%
+\el@GenericUnitSearch{Indent}%
+\el@GenericUnitSearch{Space}%
+\el@GenericUnitSearch[*]{Space}%
+\el@GenericUnitSearch{FinalSpace}}
+
+\def\NewList{%
+\@ifnextchar(%
+ {\el@NewList\ListProperties}%
+ {\el@NewList}}
+
+\def\el@NewList{%
+\el@ControlCounter0%
+\el@ResetCounters%
+\gdef\el@PreviousItem{0}%
+\el@GenericDef{FinalSpace}{.3em}
+\el@GenericDef{FinalMark}{NA}%
+\el@GenericDef{Mark}{.}%
+\el@GenericDef{Margin}{0cm}%
+\el@GenericDef{Numbers}{a}%
+\el@GenericDef{Style}{}%
+\el@GenericDef[*]{Style}{}%
+\el@GenericDef[**]{Style}{}%
+\el@GenericDef{Indent}{0cm}%
+\el@GenericDef{Start}{NA}%
+\el@GenericDef[*]{Start}{NA}%
+\el@GenericDef{CtrCom}{}%
+\el@GenericDef{Space}{0cm}
+\el@GenericDef[*]{Space}{0cm}%
+\el@GenericDef{Hide}{0}%
+\el@GenericDef{Hang}{false}%
+\el@GenericDef{Align}{false}}
+
+\def\el@MarginTest{Margin}
+\def\el@MarkTest{Mark}
+\def\el@FinalMarkTest{FinalMark}
+\def\el@NumbersTest{Numbers}
+\def\el@IndentTest{Indent}
+\def\el@StyleTest{Style}
+\def\el@CtrStyleTest{Style*}
+\def\el@ParStyleTest{Style**}
+\def\el@CounterCommandTest{CtrCom}
+\def\el@ProgressiveTest{Progressive}
+\def\el@ProgressiveStarTest{Progressive*}
+\def\el@StartTest{Start}
+\def\el@StartStarTest{Start*}
+\def\el@SpaceTest{Space}
+\def\el@SpaceStarTest{Space*}
+\def\el@HideTest{Hide}
+\def\el@HangTest{Hang}
+\def\el@FinalSpaceTest{FinalSpace}
+\def\el@AlignTest{Align}
+\def\el@True{true}
+\def\el@False{false}
+\def\el@Fixed{fixed}
+\def\el@AlreadyFixed{alreadyfixed}
+\def\el@Move{move}
+\def\el@AlreadyMoved{alreadymoved}
+
+\newcommand{\el@Error}[4][]{%
+\PackageError{easylist}{^^J==> `#3' is not a valid #4 (#2=#3). It is ignored#1}{}}
+\def\el@DimenError#1#2{%
+\el@Error[.^^J==> Note that true TeX dimensions should be prefixed with%
+^^J==> \string\the\space in \string\ListProperties]{#1}{#2}{dimension}}
+
+\def\el@ListProperties#1=#2,{%
+\DubiousFigurefalse%
+\DubiousLetterfalse%
+\DubiousNumberfalse%
+\DubiousParameterfalse%
+\Pointfalse%
+\Signfalse%
+\def\el@Parameter{}%
+\def\el@ParameterNumber{}%
+\let\easynext@Properties\el@ListProperties%
+\def\el@TempParameter{#1}%
+\def\el@TempValue{#2}%
+\if#1Z%
+ \let\easynext@Properties\relax%
+\else\if#1A%
+\else\ifx\el@TempParameter\el@MarginTest%
+ \expandafter\el@UnitSearch#2?
+ \ifDubiousFigure%
+ \el@DimenError{#1}{#2}%
+ \else%
+ \el@GenericDef{Margin}{#2}%
+ \fi%
+\else\ifx\el@TempParameter\el@ProgressiveTest%
+ \expandafter\el@UnitSearch#2?%
+ \ifDubiousFigure%
+ \el@DimenError{#1}{#2}%
+ \else%
+ \el@ProgressiveMargin{#2}%
+ \fi%
+\else\ifx\el@TempParameter\el@ProgressiveStarTest%
+ \expandafter\el@UnitSearch#2?%
+ \ifDubiousFigure%
+ \el@DimenError{#1}{#2}%
+ \else%
+ \el@ProgressiveMargin*{#2}%
+ \fi%
+\else\ifx\el@TempParameter\el@IndentTest%
+ \expandafter\el@UnitSearch#2?%
+ \ifDubiousFigure%
+ \el@DimenError{#1}{#2}%
+ \else%
+ \el@GenericDef{Indent}{#2}%
+ \fi%
+\else\ifx\el@TempParameter\el@SpaceTest%
+ \expandafter\el@UnitSearch#2?%
+ \ifDubiousFigure%
+ \el@DimenError{#1}{#2}%
+ \else%
+ \el@GenericDef{Space}{#2}%
+ \fi%
+\else\ifx\el@TempParameter\el@SpaceStarTest%
+ \expandafter\el@UnitSearch#2?%
+ \ifDubiousFigure%
+ \el@DimenError{#1}{#2}%
+ \else%
+ \el@GenericDef[*]{Space}{#2}%
+ \fi%
+\else\ifx\el@TempParameter\el@FinalSpaceTest%
+ \expandafter\el@UnitSearch#2?%
+ \ifDubiousFigure%
+ \el@DimenError{#1}{#2}%
+ \else%
+ \el@GenericDef{FinalSpace}{#2}%
+ \fi%
+\else\ifx\el@TempParameter\el@HideTest%
+ \expandafter\el@NumberCheck#2?%
+ \ifDubiousFigure%
+ \el@Error{#1}{#2}{number}%
+ \else%
+ \el@GenericDef{Hide}{#2}%
+ \fi%
+\else\ifx\el@TempParameter\el@NumbersTest%
+ \el@LetterCheck{#2}%
+ \ifDubiousLetter%
+ \el@Error%
+ {#1}{#2}{number denotation}%
+ \else%
+ \el@GenericDef{Numbers}{#2}%
+ \fi%
+\else\ifx\el@TempParameter\el@AlignTest%
+ \ifx\el@TempValue\el@Fixed%
+ \el@GenericDef{Align}{fixed}%
+ \else\ifx\el@TempValue\el@Move%
+ \el@GenericDef{Align}{move}%
+ \else\ifx\el@TempValue\el@False%
+ \else%
+ \expandafter\el@UnitSearch\el@TempValue?%
+ \ifDubiousFigure%
+ \el@Error%
+ [.^^J==> Admissible values are `false', `fixed', `move' or a dimension]%
+ {#1}{#2}{value for `Align'}%
+ \DubiousFigurefalse%
+ \else%
+ \el@GenericDef{Align}{#2}%
+ \fi%
+ \fi\fi\fi%
+\else\ifx\el@TempParameter\el@HangTest%
+ \ifx\el@TempValue\el@True%
+ \el@GenericDef{Hang}{true}%
+ \else\ifx\el@TempValue\el@False%
+ \el@GenericDef{Hang}{false}%
+ \else%
+ \el@Error%
+ [.^^J==> Admissible values are `true' or `false']%
+ {#1}{#2}{value for `Hang'}%
+ \fi\fi%
+\else\ifx\el@TempParameter\el@StartTest%
+ \PackageError{easylist}%
+ {^^J==> `Start' can't be used without a number, so it is ignored}{}%
+\else\ifx\el@TempParameter\el@StartStarTest%
+ \PackageError{easylist}%
+ {^^J==> `Start*' can't be used without a number, so it is ignored}{}%
+\else\ifx\el@TempParameter\el@MarkTest%
+ \el@GenericDef{Mark}{#2}%
+\else\ifx\el@TempParameter\el@FinalMarkTest%
+ \el@GenericDef{FinalMark}{#2}%
+\else\ifx\el@TempParameter\el@StyleTest%
+ \el@GenericDef{Style}{#2}%
+\else\ifx\el@TempParameter\el@CtrStyleTest%
+ \el@GenericDef[*]{Style}{#2}%
+\else\ifx\el@TempParameter\el@ParStyleTest%
+ \el@GenericDef[**]{Style}{#2}%
+\else\ifx\el@TempParameter\el@CounterCommandTest%
+ \el@GenericDef{CtrCom}{#2}%
+\else\expandafter\ifx\csname #1\endcsname\relax%
+ \el@DubiousParameter#1?%
+ \ifDubiousParameter%
+ \ifDubiousNumber%
+ \PackageError{easylist}{^^J==> `#1' is not a valid parameter. It is ignored.%
+ ^^J==> Besides, you don't have \el@ParameterNumber\space counters}{}%
+ \else%
+ \PackageError{easylist}{^^J==> `#1' is not a valid parameter. It is ignored}{}%
+ \fi%
+ \else%
+ \ifDubiousNumber%
+ \PackageError{easylist}{^^J==> You don't have \el@ParameterNumber\space%
+ counters, so `#1' is ignored.%
+ ^^J==> Ask for more of them}{}%
+ \else%
+ \PackageError{easylist}{^^J==> Something is wrong with `#1' but I don't know what.%
+ ^^J==> Maybe you put stars before numbers or you specified a number%
+ ^^J==> to Progressive. Anyway, it is ignored}{}%
+ \fi%
+ \fi%
+\else%
+ \expandafter\gdef\csname #1\endcsname{#2}%
+\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+\el@CommaKiller}
+
+\def\el@Comm@Killer#1{\el@CommaKiller}
+\def\el@CommaKiller{\@ifnextchar,{\el@Comm@Killer}{\easynext@Properties}}
+
+\newif\ifDubiousLetter
+\newif\ifDubiousParameter
+\newif\ifDubiousNumber
+\newif\ifPoint
+\newif\ifSign
+
+\def\el@Parameter{}
+\def\el@ParameterNumber{}
+\def\el@Void{}
+
+\def\el@DubiousParameter#1{%
+\let\el@P@rameter\el@Parameter%
+\let\el@P@rameterNumber\el@ParameterNumber%
+\DubiousFigurefalse%
+\if#1?%
+ \def\easynext{\el@ParameterNumberTest\el@ParameterTest}%
+\else%
+ \let\easynext\el@DubiousParameter%
+ \ifcat#1a%
+ \edef\el@Parameter{\el@P@rameter#1}%
+ \else%
+ \el@ParameterTest%
+ \if#1*
+ \edef\el@Parameter{\el@P@rameter#1}%
+ \else%
+ \el@NumberCheck#1?
+ \ifDubiousFigure%
+ \DubiousParametertrue%
+ \else%
+ \edef\el@ParameterNumber{\el@P@rameterNumber#1}%
+ \fi%
+ \fi%
+ \fi%
+\fi\easynext}
+
+\def\el@ParameterTest{%
+\ifx\el@Parameter\el@MarginTest%
+\else\ifx\el@Parameter\el@MarkTest%
+\else\ifx\el@Parameter\el@FinalMarkTest%
+\else\ifx\el@Parameter\el@NumbersTest%
+\else\ifx\el@Parameter\el@IndentTest%
+\else\ifx\el@Parameter\el@StyleTest%
+\else\ifx\el@Parameter\el@CtrStyleTest%
+\else\ifx\el@Parameter\el@ParStyleTest%
+\else\ifx\el@Parameter\el@CounterCommandTest%
+\else\ifx\el@Parameter\el@ProgressiveTest%
+ \DubiousNumberfalse%
+\else\ifx\el@Parameter\el@ProgressiveStarTest%
+ \DubiousNumberfalse%
+\else\ifx\el@Parameter\el@StartTest%
+\else\ifx\el@Parameter\el@StartStarTest%
+\else\ifx\el@Parameter\el@HideTest%
+\else\ifx\el@Parameter\el@SpaceTest%
+\else\ifx\el@Parameter\el@SpaceStarTest%
+\else\ifx\el@Parameter\el@HangTest%
+\else\ifx\el@Parameter\el@FinalSpaceTest%
+\else\ifx\el@Parameter\el@AlignTest%
+\else\DubiousParametertrue%
+\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+
+\def\el@ParameterNumberTest{%
+\ifx\el@ParameterNumber\el@Void%
+\else%
+ \ifnum\el@ParameterNumber>\el@CounterTotal%
+ \DubiousNumbertrue%
+ \fi%
+\fi}
+
+\def\el@UnitSearch#1{%
+\let\easynext\el@UnitSearch%
+\if#1-%
+ \ifSign%
+ \DubiousFiguretrue%
+ \def\easynext##1?{\relax}%
+ \else%
+ \Signtrue%
+ \fi%
+\else%
+ \if#1+%
+ \ifSign%
+ \DubiousFiguretrue%
+ \def\easynext##1?{\relax}%
+ \else%
+ \Signtrue%
+ \fi%
+ \else%
+ \Signtrue%
+ \if#1?%
+ \DubiousFiguretrue%
+ \let\easynext\relax%
+ \else%
+ \if#1.%
+ \ifPoint%
+ \DubiousFiguretrue%
+ \def\easynext##1?{\relax}%
+ \else%
+ \Pointtrue%
+ \fi%
+ \else%
+ \if#1,%
+ \ifPoint
+ \DubiousFiguretrue%
+ \def\easynext##1?{\relax}%
+ \else%
+ \Pointtrue%
+ \fi%
+ \else%
+ \ifcat#1a%
+ \def\easynext{\el@UnitCheck#1}%
+ \else%
+ \el@NumberCheck#1?%
+ \ifDubiousFigure%
+ \def\easynext{\el@DimenUnitCheck#1}%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+\fi\easynext}
+
+\def\el@Em{em}%
+\def\el@Ex{ex}%
+\def\el@Centimetre{cm}%
+\def\el@Millimetre{mm}%
+\def\el@Inch{in}%
+\def\el@Pica{pc}%
+\def\el@Point{pt}
+\def\el@Didot{dd}%
+\def\el@Cicero{cc}%
+\def\el@BigPoint{bp}%
+\def\el@ScaledPoint{sp}%
+
+\def\el@UnitCheck#1?{%
+\def\el@TempUnit{#1}%
+\ifx\el@TempUnit\el@Em%
+\else\ifx\el@TempUnit\el@Ex%
+\else\ifx\el@TempUnit\el@Centimetre%
+\else\ifx\el@TempUnit\el@Millimetre%
+\else\ifx\el@TempUnit\el@Inch%
+\else\ifx\el@TempUnit\el@Pica%
+\else\ifx\el@TempUnit\el@Point%
+\else\ifx\el@TempUnit\el@Didot%
+\else\ifx\el@TempUnit\el@Cicero%
+\else\ifx\el@TempUnit\el@BigPoint%
+\else\ifx\el@TempUnit\el@ScaledPoint%
+\else\DubiousFiguretrue\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+
+\def\el@DimenUnitCheck#1#2?{%
+\if#1p%
+ \if#2t%
+ \DubiousFigurefalse%
+ \fi%
+\fi}
+
+\newcommand{\el@GenericUnitSearch}[2][]{%
+\Pointfalse%
+\Signfalse%
+\ifnum\el@ControlCounter>\el@CounterTotal%
+ \el@ControlCounter1%
+ \def\easynext[##1]##2{\relax}%
+\else%
+ \edef\el@TempTestable{\csname #2\the\el@ControlCounter#1\endcsname}%
+ \expandafter\el@UnitSearch\el@TempTestable?%
+ \ifDubiousFigure%
+ \def\el@Name{#2}%
+ \ifx\el@Name\el@FinalSpace%
+ \el@Error[^^J==> and #2\the\el@ControlCounter#1\space is set to .3em.%
+ ^^J==> Note that true TeX dimensions should be prefixed with%
+ ^^J==> \string\the\space in \string\ListProperties]%
+ {#2\the\el@ControlCounter#1}{\el@TempTestable}{dimension}%
+ \expandafter\gdef\csname #2\the\el@ControlCounter#1\endcsname{.3em}%
+ \else%
+ \el@Error[^^J==> and #2\the\el@ControlCounter#1\space is set to 0cm.%
+ ^^J==> Note that true TeX dimensions should be prefixed with%
+ ^^J==> \string\the\space in \string\ListProperties]%
+ {#2\the\el@ControlCounter#1}{\el@TempTestable}{dimension}%
+ \expandafter\gdef\csname #2\the\el@ControlCounter#1\endcsname{0cm}%
+ \fi%
+ \fi%
+ \DubiousFigurefalse%
+ \el@Advance\el@ControlCounter%
+ \let\easynext\el@GenericUnitSearch%
+\fi\easynext[#1]{#2}}%
+
+\def\el@LetterCheck#1{%
+\if#1a%
+\else\if#1r%
+\else\if#1R%
+\else\if#1l%
+\else\if#1L%
+\else\if#1z%
+\else\DubiousLettertrue%
+\fi\fi\fi\fi\fi\fi}
+
+\def\el@GenericLetterCheck{%
+\ifnum\el@ControlCounter>\el@CounterTotal%
+ \el@ControlCounter1%
+ \def\easynext{\relax}%
+\else%
+ \edef\el@TempTestable{\csname Numbers\the\el@ControlCounter\endcsname}%
+ \expandafter\el@LetterCheck\el@TempTestable%
+ \ifDubiousLetter%
+ \PackageError{easylist}%
+ {^^J==> `\el@TempTestable' is not a valid number denotation %
+ (Numbers\the\el@ControlCounter=\el@TempTestable).%
+ ^^J==> It is ignored and those numbers will be arabic numbers}{}%
+ \expandafter\gdef\csname Numbers\the\el@ControlCounter\endcsname{a}%
+ \fi%
+ \DubiousLetterfalse%
+ \el@Advance\el@ControlCounter%
+ \let\easynext\el@GenericLetterCheck%
+\fi\easynext}%
+
+\newcommand{\el@GenericNumberCheck}[2][]{%
+\ifnum\el@ControlCounter>\el@CounterTotal%
+ \el@ControlCounter1%
+ \def\easynext[##1]##2{\relax}%
+\else%
+ \edef\el@TempTestable{\csname #2\the\el@ControlCounter#1\endcsname}%
+ \ifx\el@TempTestable\el@NA%
+ \else%
+ \expandafter\el@NumberCheck\el@TempTestable?%
+ \ifDubiousFigure%
+ \def\el@Name{#2}%
+ \ifx\el@Name\el@HideTest%
+ \el@Error[^^J==> and no counter will be hidden for items of level \the\el@ControlCounter]%
+ {#2\the\el@ControlCounter#1}{\el@TempTestable}{number}%
+ \expandafter\gdef\csname #2\the\el@ControlCounter#1\endcsname{0}%
+ \else%
+ \if#1*%
+ \el@Error[^^J==> and this counter will continue its progression]%
+ {#2\the\el@ControlCounter#1}{\el@TempTestable}{counter}%
+ \else%
+ \el@Error[^^J==> and this counter will continue its progression]%
+ {#2\the\el@ControlCounter#1}{\el@TempTestable}{number}%
+ \fi%
+ \expandafter\gdef\csname #2\the\el@ControlCounter#1\endcsname{NA}%
+ \fi%
+ \fi%
+ \fi%
+ \DubiousFigurefalse%
+ \el@Advance\el@ControlCounter%
+ \let\easynext\el@GenericNumberCheck%
+\fi\easynext[#1]{#2}}%
+
+\def\el@ResetCounters{%
+\el@Scratch\el@ControlCounter%
+\el@Advance\el@Scratch%
+\el@@ResetCounters}
+
+\def\el@@ResetCounters{%
+\ifnum\el@Scratch>\el@CounterTotal%
+ \let\easynext\relax%
+ \el@Scratch0%
+\else%
+ \setcounter{List\the\el@Scratch}{0}%
+ \ifnum\el@ControlCounter=\el@CounterLevel%
+ \expandafter\gdef\csname Start\the\el@Scratch\endcsname{NA}%
+ \fi%
+ \el@Advance\el@Scratch%
+ \let\easynext\el@@ResetCounters%
+\fi\easynext}
+
+\def\el@ItemCounter{}
+\def\el@NA{NA}
+\font\el@ZapfDingbats=pzdr%
+
+\def\el@PrintCounters{%
+\def\a{\arabic}%
+\def\l{\alph}%
+\def\L{\Alph}%
+\def\r{\roman}%
+\def\R{\Roman}%
+\def\z{\el@ZapfDingbats\arabic}
+\ifnum\el@ControlCounter<\el@CounterLevel%
+ \expandafter\ifx\csname Start\the\el@ControlCounter*\endcsname\el@NA%
+ \expandafter\ifx\csname Start\the\el@ControlCounter\endcsname\el@NA%
+ \else%
+ \setcounter{List\the\el@ControlCounter}{\csname Start\the\el@ControlCounter\endcsname}%
+ \expandafter\gdef\csname Start\the\el@ControlCounter\endcsname{NA}%
+ \el@ResetCounters%
+ \fi%
+ \else%
+ \expandafter\ifnum\csname theList\the\el@ControlCounter\endcsname=%
+ \csname Start\the\el@ControlCounter*\endcsname%
+ \else%
+ \el@ResetCounters%
+ \fi
+ \setcounter{List\the\el@ControlCounter}{\csname Start\the\el@ControlCounter*\endcsname}%
+ \fi%
+ \ifnum\el@ControlCounter>\csname Hide\the\el@CounterLevel\endcsname%
+ \xdef\el@ItemCounter{\el@ItemCounter%
+ \bgroup%
+ \csname\csname Numbers\the\el@ControlCounter\endcsname\endcsname{List\the\el@ControlCounter}%
+ \egroup%
+ \csname Mark\the\el@ControlCounter\endcsname}%
+ \fi%
+ \el@Advance\el@ControlCounter%
+ \let\easynext\el@PrintCounters%
+\else%
+ \stepcounter{List\the\el@CounterLevel}%
+ \el@ResetCounters%
+ \expandafter\ifx\csname Start\the\el@ControlCounter*\endcsname\el@NA%
+ \expandafter\ifx\csname Start\the\el@ControlCounter\endcsname\el@NA%
+ \else%
+ \setcounter{List\the\el@ControlCounter}{\csname Start\the\el@ControlCounter\endcsname}%
+ \expandafter\gdef\csname Start\the\el@ControlCounter\endcsname{NA}%
+ \fi%
+ \else%
+ \setcounter{List\the\el@ControlCounter}{\csname Start\the\el@ControlCounter*\endcsname}%
+ \fi%
+ \ifnum\el@ControlCounter>\csname Hide\the\el@CounterLevel\endcsname%
+ \xdef\el@ItemCounter{\el@ItemCounter%
+ \bgroup%
+ \csname\csname Numbers\the\el@ControlCounter\endcsname\endcsname{List\the\el@ControlCounter}%
+ \egroup%
+ \expandafter\ifx\csname FinalMark\the\el@ControlCounter\endcsname\el@NA%
+ \csname Mark\the\el@ControlCounter\endcsname%
+ \else%
+ \csname FinalMark\the\el@ControlCounter\endcsname%
+ \fi}%
+ \fi%
+ \el@ControlCounter1%
+ \let\easynext\relax%
+\fi%
+\easynext}
+
+\newbox\el@CounterBox
+\newbox\el@ControlBox
+\newdimen\el@TotalMargin
+\newdimen\el@LeftMove
+{\def\:{\global\let\el@Space= }\: }
+
+\catcode`#=12
+\def\elCreateItem{%
+\ifx\elNextToken\el@Space%
+ \global\el@LeftMove=0pt%
+ \endgroup%
+ \ifnum\el@CounterLevel>\el@CounterTotal%
+ \PackageError{easylist}{^^J==> Too many %
+ \ifAmpersand&\else\ifAt @\else\ifPilcrow¶\else\ifSharp#\else§\fi\fi\fi\fi's.%
+ ^^J==> You can't use more than \el@CounterTotal\space%
+ \ifAmpersand&\else\ifAt @\else\ifPilcrow¶\else\ifSharp#\else§\fi\fi\fi\fi's%
+ ^^J==> unless you specify it when calling the package}{}
+ \par\noindent\fbox{!!!}\begingroup%
+ \else%
+ \par%
+ \expandafter\ifnum\el@PreviousItem=0%
+ \else%
+ \expandafter\ifnum\el@PreviousItem=\el@CounterLevel%
+ \vskip\csname Space\the\el@CounterLevel*\endcsname%
+ \else%
+ \vskip\csname Space\the\el@CounterLevel\endcsname%
+ \fi%
+ \fi%
+ \el@PrintCounters%
+ \el@TotalMargin\csname Margin\the\el@CounterLevel\endcsname%
+ \setbox\el@CounterBox=\hbox{{%
+ \csname CtrCom\the\el@CounterLevel\endcsname{%
+ \csname Style\the\el@CounterLevel\endcsname%
+ \csname Style\the\el@CounterLevel*\endcsname%
+ \el@ItemCounter}%
+ \ifnum\el@CounterLevel>\csname Hide\the\el@CounterLevel\endcsname%
+ \hskip\csname FinalSpace\the\el@CounterLevel\endcsname%
+ \fi}}%
+ \expandafter\ifx\csname Align\the\el@CounterLevel\endcsname\el@False%
+ \else\expandafter\ifx\csname Align\the\el@CounterLevel\endcsname\el@Fixed%
+ \expandafter\xdef\csname CounterBoxWidth\the\el@CounterLevel\endcsname{%
+ \the\wd\el@CounterBox}%
+ \expandafter\gdef\csname Align\the\el@CounterLevel\endcsname{alreadyfixed}%
+ \else\expandafter\ifx\csname Align\the\el@CounterLevel\endcsname\el@AlreadyFixed%
+ \setbox\el@CounterBox=\hbox to \csname CounterBoxWidth\the\el@CounterLevel\endcsname{{%
+ \csname CtrCom\the\el@CounterLevel\endcsname{%
+ \csname Style\the\el@CounterLevel\endcsname%
+ \csname Style\the\el@CounterLevel*\endcsname%
+ \el@ItemCounter}%
+ \hfil}}%
+ \setbox\el@ControlBox=\hbox{\unhcopy\el@CounterBox}%
+ \expandafter\ifdim\wd\el@ControlBox>\csname CounterBoxWidth\the\el@CounterLevel\endcsname%
+ \PackageWarning{easylist}{%
+ ^^J==> This counter is to wide and will spread on%
+ ^^J==> the item text. You should increase FinalSpace%
+ ^^J==> if you use `fixed' or increase the dimension%
+ ^^J==> if you specified one.
+ ^^J==>}%
+ \fi%
+ \else\expandafter\ifx\csname Align\the\el@CounterLevel\endcsname\el@Move%
+ \expandafter\xdef\csname CounterBoxWidth\the\el@CounterLevel\endcsname{%
+ \the\wd\el@CounterBox}%
+ \expandafter\gdef\csname Align\the\el@CounterLevel\endcsname{alreadymoved}%
+ \else\expandafter\ifx\csname Align\the\el@CounterLevel\endcsname\el@AlreadyMoved%
+ \el@LeftMove=\wd\el@CounterBox%
+ \advance\el@LeftMove by -\csname CounterBoxWidth\the\el@CounterLevel\endcsname%
+ \else%
+ \edef\el@TempTestable{\csname Align\the\el@CounterLevel\endcsname}%
+ \DubiousFigurefalse%
+ \Signfalse%
+ \Pointfalse%
+ \expandafter\el@UnitSearch\el@TempTestable?%
+ \ifDubiousFigure%
+ \el@Error%
+ [.^^J==> Admissible values are `false', `fixed', `move' or a dimension]%
+ {Align\the\el@CounterLevel}{\csname Align\the\el@CounterLevel\endcsname}%
+ {value for `Align'}%
+ \expandafter\gdef\csname Align\the\el@CounterLevel\endcsname{false}%
+ \else%
+ \expandafter\xdef\csname CounterBoxWidth\the\el@CounterLevel\endcsname{%
+ \csname Align\the\el@CounterLevel\endcsname}%
+ \setbox\el@CounterBox=\hbox to \csname CounterBoxWidth\the\el@CounterLevel\endcsname{{%
+ \csname CtrCom\the\el@CounterLevel\endcsname{%
+ \csname Style\the\el@CounterLevel\endcsname%
+ \csname Style\the\el@CounterLevel*\endcsname%
+ \el@ItemCounter}%
+ \hfil}}%
+ \expandafter\gdef\csname Align\the\el@CounterLevel\endcsname{alreadyfixed}%
+ \setbox\el@ControlBox=\hbox{\unhcopy\el@CounterBox}%
+ \expandafter\ifdim\wd\el@ControlBox>\csname CounterBoxWidth\the\el@CounterLevel\endcsname%
+ \PackageWarning{easylist}{%
+ ^^J==> This counter is to wide and will spread on%
+ ^^J==> the item text. You should increase FinalSpace%
+ ^^J==> if you use `fixed' or increase the dimension%
+ ^^J==> if you specified one.
+ ^^J==>}%
+ \fi%
+ \fi%
+ \fi\fi\fi\fi\fi%
+ \expandafter\ifx\csname Hang\the\el@CounterLevel\endcsname\el@True%
+ \expandafter\ifx\csname Align\the\el@CounterLevel\endcsname\el@AlreadyMoved%
+ \advance\el@TotalMargin by \csname CounterBoxWidth\the\el@CounterLevel\endcsname%
+ \parindent=-\csname CounterBoxWidth\the\el@CounterLevel\endcsname%
+ \else%
+ \advance\el@TotalMargin by \wd\el@CounterBox%
+ \parindent=-\wd\el@CounterBox%
+ \fi%
+ \else%
+ \parindent=\csname Indent\the\el@CounterLevel\endcsname%
+ \fi%
+ \hangafter0\hangindent\el@TotalMargin%
+ \hskip-\el@LeftMove\box\el@CounterBox%
+ \begingroup%
+ \edef\@currentlabel{\el@ItemCounter}%
+ \gdef\el@ItemCounter{}%
+ \parindent=\csname Indent\the\el@CounterLevel\endcsname%
+ \everypar{\hangafter0\hangindent\el@TotalMargin}%
+ \csname Style\the\el@CounterLevel\endcsname%
+ \csname Style\the\el@CounterLevel**\endcsname%
+ \fi%
+ \xdef\el@PreviousItem{\the\el@CounterLevel}%
+ \global\el@CounterLevel1%
+\else%
+ \global\el@Advance\el@CounterLevel%
+\fi\ignorespaces}
+\catcode`#=6
+
+\def\el@Tractatus{tractatus}
+\def\el@CheckList{checklist}
+\def\el@BookToc{booktoc}
+\def\el@ArticleToc{articletoc}
+\def\el@Enumerate{enumerate}
+\def\el@Itemize{itemize}
+
+\def\elPredefinedStyle{\@ifnextchar[{\el@PredefinedStyle}{}}
+
+\def\el@PredefinedStyle[#1]{%
+\def\el@TempStyle{#1}%
+\ifx\el@TempStyle\el@Tractatus%
+ \NewList(Mark=,Mark1=.)%
+\else\ifx\el@TempStyle\el@CheckList%
+ \NewList(%
+ Hide=1000,Progressive*=1em,Hang=true,%
+ Style*={\framebox(7,7){}}\hskip.6em,
+ Style1**=\bfseries)
+\else\ifx\el@TempStyle\el@BookToc%
+ \NewList(%
+ Hang=true,FinalMark=,Hide=1,%
+ Style1=\large\bfseries,Numbers1=R,Space1=2.25em,Space1*=2.25em,Hide1=0,Hang1=false,Align1=2em,%
+ Style2=\bfseries,Space2=1em,Space2*=1em,Align2=1.5em,%
+ Margin3=1.5em,Margin4=3.8em,Margin5=7em,Margin6=10em,Margin7=12em,%
+ Align3=2.3em,Align4=3.2em,Align5=4.1em,Align6=5em,Align7=6em)%
+\else\ifx\el@TempStyle\el@ArticleToc%
+ \NewList(%
+ Hang=true,FinalMark=,%
+ Align1=1.5em,Style1=\bfseries,Space1=1em,Space1*=1em,%
+ Margin2=1.5em,Margin3=3.8em,Margin4=7em,Margin5=10em,%
+ Align2=2.3em,Align3=3.2em,Align4=4.1em,Align5=5em)%
+\else\ifx\el@TempStyle\el@Enumerate%
+ \NewList(%
+ FinalSpace=.5em,Hang=true,Mark=.,Space=4pt,Space*=4pt,Align=move,%
+ Margin1=1.2em,%
+ Margin2=2.9em,Style2*={(},Mark2={)},Numbers2=l,Hide2=1,%
+ Margin3=5.6em,Numbers3=r,Hide3=2,%
+ Margin4=6.8em,Numbers4=L,Hide4=3)%
+\else\ifx\el@TempStyle\el@Itemize%
+ \NewList(%
+ Hang=true,Space=4pt,Space*=4pt,Hide=1000,%
+ Margin1=1.5em,Style1*=\textbullet\hskip .5em,%
+ Margin2=3.7em,Style2*=--\hskip .5em,%
+ Margin3=5.9em,Style3*=$\ast$\hskip .5em,%
+ Margin4=7.8em,Style4*=$\cdot$\hskip .5em)%
+\else%
+ \PackageError{easylist}{^^J==> `\el@TempStyle' is not a valid predefined style}{}%
+\fi\fi\fi\fi\fi\fi}
+
+\makeatother
+
+\edef\SectionCatcode{\number\catcode`§}%
+\edef\PilcrowCatcode{\number\catcode`¶}%
+\edef\SharpCatcode{\number\catcode`#}%
+\edef\AtCatcode{\number\catcode`@}%
+\edef\AmpersandCatcode{\number\catcode`&}%
\catcode`§=\active
\catcode`¶=\active
@@ -301,44 +881,59 @@
\catcode`#=\active
\catcode`&=\active
-\ifpilcrow%
- \def\eList{%
- \catcode`¶=\active%
- \def¶{\futurelet\NextToken\IfNextSpace}}
- \newcommand{\eListend}{\catcode`¶=\PilcrowCatcode}
- \def\Activate{\catcode`¶=\active}
- \def\Deactivate{\catcode`¶=\PilcrowCatcode}
-\else%
- \ifat
- \def\eList{%
- \catcode`@=\active%
- \def@{\futurelet\NextToken\IfNextSpace}}
- \newcommand{\eListend}{\catcode`@=\AtCatcode}
- \def\Activate{\catcode`@=\active}
- \def\Deactivate{\catcode`@=\AtCatcode}
+\ifAt
+ \def\easylist{%
+ \catcode`@=\active%
+ \def@{\futurelet\elNextToken\elCreateItem}%
+ \begingroup\elPredefinedStyle}
+ \def\endeasylist{\endgroup\par}
+ \gdef\Activate{%
+ \xdef\AtCatcode{\number\catcode`@}%
+ \catcode`@=\active}
+ \gdef\Deactivate{\catcode`@=\AtCatcode}
+\else
+ \ifPilcrow
+ \def\easylist{%
+ \catcode`¶=\active%
+ \def¶{\futurelet\elNextToken\elCreateItem}%
+ \begingroup\elPredefinedStyle}
+ \def\endeasylist{\endgroup\par}
+ \gdef\Activate{%
+ \xdef\PilcrowCatcode{\number\catcode`¶}%
+ \catcode`¶=\active}
+ \gdef\Deactivate{\catcode`¶=\PilcrowCatcode}
\else
- \ifsharp
- \def\eList{%
+ \ifSharp
+ \def\easylist{%
\catcode`#=\active%
- \def#{\futurelet\NextToken\IfNextSpace}}
- \newcommand{\eListend}{\catcode`#=\SharpCatcode}
- \def\Activate{\catcode`#=\active}
- \def\Deactivate{\catcode`#=\SharpCatcode}
+ \def#{\futurelet\elNextToken\elCreateItem}%
+ \begingroup\elPredefinedStyle}
+ \def\endeasylist{\endgroup\par}
+ \gdef\Activate{%
+ \xdef\SharpCatcode{\number\catcode`#}%
+ \catcode`#=\active}
+ \gdef\Deactivate{\catcode`#=\SharpCatcode}
\else
- \ifampersand
- \def\eList{%
+ \ifAmpersand
+ \def\easylist{%
\catcode`&=\active%
- \def&{\futurelet\NextToken\IfNextSpace}}
- \newcommand{\eListend}{\catcode`&=\AmpersandCatcode}
- \def\Activate{\catcode`&=\active}
- \def\Deactivate{\catcode`&=\AmpersandCatcode}
+ \def&{\futurelet\elNextToken\elCreateItem}%
+ \begingroup\elPredefinedStyle}
+ \def\endeasylist{\endgroup\par}
+ \gdef\Activate{%
+ \xdef\AmpersandCatcode{\number\catcode`&}%
+ \catcode`&=\active}
+ \gdef\Deactivate{\catcode`&=\AmpersandCatcode}
\else
- \def\eList{%
+ \def\easylist{%
\catcode`§=\active%
- \def§{\futurelet\NextToken\IfNextSpace}}
- \newcommand{\eListend}{\catcode`§=\SectionCatcode}
- \def\Activate{\catcode`§=\active}
- \def\Deactivate{\catcode`§=\SectionCatcode}
+ \def§{\futurelet\elNextToken\elCreateItem}%
+ \begingroup\elPredefinedStyle}%
+ \def\endeasylist{\endgroup\par}
+ \gdef\Activate{%
+ \xdef\SectionCatcode{\number\catcode`§}%
+ \catcode`§=\active}
+ \gdef\Deactivate{\catcode`§=\SectionCatcode}
\fi
\fi
\fi
@@ -348,11 +943,4 @@
\catcode`#=\SharpCatcode
\catcode`@=\AtCatcode
\catcode`¶=\PilcrowCatcode
-\catcode`§=\SectionCatcode
-
-\def\Llabel#1{\expandafter\xdef\csname #1\endcsname{\reserved@lab}%
-\expandafter\xdef\csname page@#1\endcsname{\thepage}}
-\def\Lref#1{\@nameuse{#1}}
-\def\Pref#1{\@nameuse{page@#1}}
-
-\makeatother
+\catcode`§=\SectionCatcode \ No newline at end of file