%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% %% 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. %% %% %% %% Comments, suggestions and bugs: %% %% %% %% zappathustra@free.fr %% %% %% %% http://paulisambert.free.fr/ %% %% %% %% Enjoy! %% %% %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{easylist}[2009/01/06 v.1.2 Numbered items with a single command.] \makeatletter \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 \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 \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} \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 \catcode`@=\active \catcode`#=\active \catcode`&=\active \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\easylist{% \catcode`#=\active% \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\easylist{% \catcode`&=\active% \def&{\futurelet\elNextToken\elCreateItem}% \begingroup\elPredefinedStyle} \def\endeasylist{\endgroup\par} \gdef\Activate{% \xdef\AmpersandCatcode{\number\catcode`&}% \catcode`&=\active} \gdef\Deactivate{\catcode`&=\AmpersandCatcode} \else \def\easylist{% \catcode`§=\active% \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 \fi \catcode`&=\AmpersandCatcode \catcode`#=\SharpCatcode \catcode`@=\AtCatcode \catcode`¶=\PilcrowCatcode \catcode`§=\SectionCatcode