From a184c99b59b3441804c4f17b636999bbad6498f2 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 23 Jan 2009 01:50:06 +0000 Subject: easylist rewrite (22jan09) git-svn-id: svn://tug.org/texlive/trunk@11949 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/easylist/easylist.sty | 1210 +++++++++++++++------ 1 file changed, 899 insertions(+), 311 deletions(-) (limited to 'Master/texmf-dist/tex/latex') 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 -- cgit v1.2.3