diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /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.sty | 945 |
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 |