summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/easylist/easylist.sty
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/easylist/easylist.sty
Initial commit
Diffstat (limited to 'macros/latex/contrib/easylist/easylist.sty')
-rw-r--r--macros/latex/contrib/easylist/easylist.sty945
1 files changed, 945 insertions, 0 deletions
diff --git a/macros/latex/contrib/easylist/easylist.sty b/macros/latex/contrib/easylist/easylist.sty
new file mode 100644
index 0000000000..613f322637
--- /dev/null
+++ b/macros/latex/contrib/easylist/easylist.sty
@@ -0,0 +1,945 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% %%
+%% easylist.sty v.1.4 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}[2014/01/11 v.1.4 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
+
+\expandafter\def\csname el@NumberDenotation:a\endcsname{\arabic}%
+\expandafter\def\csname el@NumberDenotation:l\endcsname{\alph}%
+\expandafter\def\csname el@NumberDenotation:L\endcsname{\Alph}%
+\expandafter\def\csname el@NumberDenotation:r\endcsname{\roman}%
+\expandafter\def\csname el@NumberDenotation:R\endcsname{\Roman}%
+\expandafter\def\csname el@NumberDenotation:z\endcsname{\el@ZapfDingbats\arabic}%
+\def\el@PrintCounters{%
+\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 el@NumberDenotation:\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 el@NumberDenotation:\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^^b6\else\ifSharp#\else^^a7\fi\fi\fi\fi's.%
+ ^^J==> You can't use more than \the\el@CounterTotal\space
+ \ifAmpersand&\else\ifAt @\else\ifPilcrow^^b6\else\ifSharp#\else^^a7\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
+ \@afterindenttrue
+ \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`^^a7}
+\edef\PilcrowCatcode{\number\catcode`^^b6}
+\edef\SharpCatcode{\number\catcode`#}
+\edef\AtCatcode{\number\catcode`@}
+\edef\AmpersandCatcode{\number\catcode`&}
+
+\catcode`^^a7=\active
+\catcode`^^b6=\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`^^b6=\active
+ \def^^b6{\futurelet\elNextToken\elCreateItem}%
+ \begingroup\elPredefinedStyle}
+ \def\endeasylist{\endgroup\par}
+ \gdef\Activate{%
+ \xdef\PilcrowCatcode{\number\catcode`^^b6}%
+ \catcode`^^b6=\active}
+ \gdef\Deactivate{\catcode`^^b6=\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`^^a7=\active
+ \def^^a7{\futurelet\elNextToken\elCreateItem}%
+ \begingroup\elPredefinedStyle}%
+ \def\endeasylist{\endgroup\par}
+ \gdef\Activate{%
+ \xdef\SectionCatcode{\number\catcode`^^a7}%
+ \catcode`^^a7=\active}
+ \gdef\Deactivate{\catcode`^^a7=\SectionCatcode}
+ \fi
+ \fi
+ \fi
+\fi
+
+\catcode`&=\AmpersandCatcode
+\catcode`#=\SharpCatcode
+\catcode`@=\AtCatcode
+\catcode`^^b6=\PilcrowCatcode
+\catcode`^^a7=\SectionCatcode