| [9724df0] | 1 | % +--------------------------------------------------+ | 
|---|
|  | 2 | % | Typeset enumitem.tex to get the documentation.   | | 
|---|
|  | 3 | % +--------------------------------------------------+ | 
|---|
|  | 4 | % | 
|---|
|  | 5 | % Copyright (c) 2003-2011 by Javier Bezos. | 
|---|
|  | 6 | % All Rights Reserved. | 
|---|
|  | 7 | % | 
|---|
|  | 8 | % This file is part of the enumitem distribution release 3.5.2 | 
|---|
|  | 9 | % ----------------------------------------------------------- | 
|---|
|  | 10 | % | 
|---|
|  | 11 | % It may be distributed and/or modified under the | 
|---|
|  | 12 | % conditions of the LaTeX Project Public License, either version 1.3 | 
|---|
|  | 13 | % of this license or (at your option) any later version. | 
|---|
|  | 14 | % The latest version of this license is in | 
|---|
|  | 15 | %   http://www.latex-project.org/lppl.txt | 
|---|
|  | 16 | % and version 1.3 or later is part of all distributions of LaTeX | 
|---|
|  | 17 | % version 2003/12/01 or later. | 
|---|
|  | 18 | % | 
|---|
|  | 19 | % This work has the LPPL maintenance status "maintained". | 
|---|
|  | 20 | % | 
|---|
|  | 21 | % The Current Maintainer of this work is Javier Bezos. | 
|---|
|  | 22 | % | 
|---|
|  | 23 | % Notes | 
|---|
|  | 24 | % ~~~~~ | 
|---|
|  | 25 | % | 
|---|
|  | 26 | % The tag enit@ is used through the style | 
|---|
|  | 27 | % | 
|---|
|  | 28 | % To do: | 
|---|
|  | 29 | % ~~~~~~ | 
|---|
|  | 30 | % - ref*, for adding stuff in the same fashion as label* | 
|---|
|  | 31 | % - option ams, to force upshape, but I have to investigate | 
|---|
|  | 32 | % how to do it. | 
|---|
|  | 33 | % - labelled descriptions (ie, label, title, body) | 
|---|
|  | 34 | % - A true nextline (far from trivial and perhaps solved with | 
|---|
|  | 35 | %   labelled descriptions). | 
|---|
|  | 36 | % - Improved \AddEnumerateCounter | 
|---|
|  | 37 | % - Compatibility with interfaces and zref-enumitem | 
|---|
|  | 38 | % - "Pausing" somehow inline boxed text. | 
|---|
|  | 39 | % - \@enumctr <-> \@listctr? | 
|---|
|  | 40 | % - Define keys with values | 
|---|
|  | 41 | % - Revise @nobreak | 
|---|
|  | 42 | % | 
|---|
|  | 43 | % Release | 
|---|
|  | 44 | % ~~~~~~~ | 
|---|
|  | 45 |  | 
|---|
|  | 46 | \NeedsTeXFormat{LaTeX2e} | 
|---|
|  | 47 | \ProvidesPackage{enumitem}[2011/09/28 v3.5.2 Customized lists] | 
|---|
|  | 48 |  | 
|---|
|  | 49 | % +=============================+ | 
|---|
|  | 50 | % |      EMULATING KEYVAL       | | 
|---|
|  | 51 | % +=============================+ | 
|---|
|  | 52 | % | 
|---|
|  | 53 | % "Thanks" to xkeyval, which use the same macros names as | 
|---|
|  | 54 | % keyval :-(, the latter has to be replicated in full here | 
|---|
|  | 55 | % to ensure it works as intended. The original work if by | 
|---|
|  | 56 | % David Carlisle, under license LPPL. Once the code is here, | 
|---|
|  | 57 | % it could be optimized by adpting it to the specific needs | 
|---|
|  | 58 | % of titlesec (to do). | 
|---|
|  | 59 |  | 
|---|
|  | 60 | \def\enitkv@setkeys#1#2{% | 
|---|
|  | 61 | \def\enitkv@prefix{enitkv@#1@}% | 
|---|
|  | 62 | \let\@tempc\relax | 
|---|
|  | 63 | \enitkv@do#2,\relax,} | 
|---|
|  | 64 |  | 
|---|
|  | 65 | \def\enitkv@do#1,{% | 
|---|
|  | 66 | \ifx\relax#1\empty\else | 
|---|
|  | 67 | \enitkv@split#1==\relax | 
|---|
|  | 68 | \expandafter\enitkv@do\fi} | 
|---|
|  | 69 |  | 
|---|
|  | 70 | \def\enitkv@split#1=#2=#3\relax{% | 
|---|
|  | 71 | \enitkv@@sp@def\@tempa{#1}% | 
|---|
|  | 72 | \ifx\@tempa\@empty\else | 
|---|
|  | 73 | \expandafter\let\expandafter\@tempc | 
|---|
|  | 74 | \csname\enitkv@prefix\@tempa\endcsname | 
|---|
|  | 75 | \ifx\@tempc\relax | 
|---|
|  | 76 | \enitkv@errx{\@tempa\space undefined}% | 
|---|
|  | 77 | \else | 
|---|
|  | 78 | \ifx\@empty#3\@empty | 
|---|
|  | 79 | \enitkv@default | 
|---|
|  | 80 | \else | 
|---|
|  | 81 | \enitkv@@sp@def\@tempb{#2}% | 
|---|
|  | 82 | \expandafter\@tempc\expandafter{\@tempb}\relax | 
|---|
|  | 83 | \fi | 
|---|
|  | 84 | \fi | 
|---|
|  | 85 | \fi} | 
|---|
|  | 86 |  | 
|---|
|  | 87 | \def\enitkv@default{% | 
|---|
|  | 88 | \expandafter\let\expandafter\@tempb | 
|---|
|  | 89 | \csname\enitkv@prefix\@tempa @default\endcsname | 
|---|
|  | 90 | \ifx\@tempb\relax | 
|---|
|  | 91 | \enitkv@err{No value specified for \@tempa}% | 
|---|
|  | 92 | \else | 
|---|
|  | 93 | \@tempb\relax | 
|---|
|  | 94 | \fi} | 
|---|
|  | 95 |  | 
|---|
|  | 96 | \def\enitkv@errx#1{\enit@error{#1}\@ehc} | 
|---|
|  | 97 |  | 
|---|
|  | 98 | \let\enitkv@err\enitkv@errx | 
|---|
|  | 99 |  | 
|---|
|  | 100 | \def\@tempa#1{% | 
|---|
|  | 101 | \def\enitkv@@sp@def##1##2{% | 
|---|
|  | 102 | \futurelet\enitkv@tempa\enitkv@@sp@d##2\@nil\@nil#1\@nil\relax##1}% | 
|---|
|  | 103 | \def\enitkv@@sp@d{% | 
|---|
|  | 104 | \ifx\enitkv@tempa\@sptoken | 
|---|
|  | 105 | \expandafter\enitkv@@sp@b | 
|---|
|  | 106 | \else | 
|---|
|  | 107 | \expandafter\enitkv@@sp@b\expandafter#1% | 
|---|
|  | 108 | \fi}% | 
|---|
|  | 109 | \def\enitkv@@sp@b#1##1 \@nil{\enitkv@@sp@c##1}} | 
|---|
|  | 110 |  | 
|---|
|  | 111 | \@tempa{ } | 
|---|
|  | 112 |  | 
|---|
|  | 113 | \def\enitkv@@sp@c#1\@nil#2\relax#3{\enitkv@toks@{#1}\edef#3{\the\enitkv@toks@}} | 
|---|
|  | 114 |  | 
|---|
|  | 115 | \@ifundefined{KV@toks@} | 
|---|
|  | 116 | {\newtoks\enitkv@toks@} | 
|---|
|  | 117 | {\let\enitkv@toks@\KV@toks@} | 
|---|
|  | 118 |  | 
|---|
|  | 119 | \def\enitkv@key#1#2{% | 
|---|
|  | 120 | \@ifnextchar[{\enitkv@def{#1}{#2}}{\@namedef{enitkv@#1@#2}####1}} | 
|---|
|  | 121 |  | 
|---|
|  | 122 | \def\enitkv@def#1#2[#3]{% | 
|---|
|  | 123 | \@namedef{enitkv@#1@#2@default\expandafter}\expandafter | 
|---|
|  | 124 | {\csname enitkv@#1@#2\endcsname{#3}}% | 
|---|
|  | 125 | \@namedef{enitkv@#1@#2}##1} | 
|---|
|  | 126 |  | 
|---|
|  | 127 | % +=============================+ | 
|---|
|  | 128 | % |        DEFINITIONS          | | 
|---|
|  | 129 | % +=============================+ | 
|---|
|  | 130 | % | 
|---|
|  | 131 | % (1) The package uses a token register very often. To be on the | 
|---|
|  | 132 | %   safe side, instead of \toks@, etc., a new one is declared. | 
|---|
|  | 133 | % (2) \enit@inbox is the box storing the items in boxed inline | 
|---|
|  | 134 | %   lists. | 
|---|
|  | 135 | % (3) \enit@outerparindent is used to save the outer parindent | 
|---|
|  | 136 | %   so that it can be used in the key parindent | 
|---|
|  | 137 | % (4) \enit@type has three values: 0 = enum, 1 = item, 2 = desc. | 
|---|
|  | 138 | % (5) \enit@calc stores which dimen is to be computed: | 
|---|
|  | 139 | %   0=labelindent, 1=labelwidth, 2=labelsep, 3=leftmargin, | 
|---|
|  | 140 | %   4=itemindent | 
|---|
|  | 141 | % (6) \enit@resuming has four values: 0 = none, 1 = series, | 
|---|
|  | 142 | %   2 = resume* series (computed in group enumitem-resume), | 
|---|
|  | 143 | %   3 = resume* list (ie, with no value). | 
|---|
|  | 144 |  | 
|---|
|  | 145 | \chardef  \enit@iv=4 | 
|---|
|  | 146 | \newlength\labelindent | 
|---|
|  | 147 | \newdimen \enit@outerparindent | 
|---|
|  | 148 | \newtoks  \enit@toks | 
|---|
|  | 149 | \newbox   \enit@inbox | 
|---|
|  | 150 |  | 
|---|
|  | 151 | \newif\ifenit@boxmode | 
|---|
|  | 152 | \newif\ifenit@sepfrommargin | 
|---|
|  | 153 | \newif\ifenit@lblfrommargin | 
|---|
|  | 154 | \newif\ifenit@calcwidest | 
|---|
|  | 155 | \newif\ifenit@nextline | 
|---|
|  | 156 | \newif\ifenit@boxdesc | 
|---|
|  | 157 |  | 
|---|
|  | 158 | % An alias (calc-savvy): | 
|---|
|  | 159 |  | 
|---|
|  | 160 | \let\c@enit@cnt\@tempcnta | 
|---|
|  | 161 |  | 
|---|
|  | 162 | \def\enit@meaning{\expandafter\strip@prefix\meaning} | 
|---|
|  | 163 | \def\enit@noexcs#1{\expandafter\noexpand\csname#1\endcsname} | 
|---|
|  | 164 |  | 
|---|
|  | 165 | % Miscelaneous errors | 
|---|
|  | 166 | % =================== | 
|---|
|  | 167 |  | 
|---|
|  | 168 | \def\enit@error{\PackageError{enumitem}} | 
|---|
|  | 169 |  | 
|---|
|  | 170 | \def\enit@checkerror#1#2{% | 
|---|
|  | 171 | \enit@error{Unknown value `#2' for key `#1'}% | 
|---|
|  | 172 | {See the manual for valid values}} | 
|---|
|  | 173 |  | 
|---|
|  | 174 | \def\enit@itemerror{% | 
|---|
|  | 175 | \enit@error{Misplaced \string\item}% | 
|---|
|  | 176 | {Either there is some text before the first\MessageBreak | 
|---|
|  | 177 | item or the last item has no text}} | 
|---|
|  | 178 |  | 
|---|
|  | 179 | \def\enit@noserieserror#1{% | 
|---|
|  | 180 | \enit@error{Series `#1' not started}% | 
|---|
|  | 181 | {You are trying to continue a series\MessageBreak | 
|---|
|  | 182 | which has not been started with series}} | 
|---|
|  | 183 |  | 
|---|
|  | 184 | \def\enit@checkseries#1{% | 
|---|
|  | 185 | \ifcase\enit@resuming | 
|---|
|  | 186 | \enit@error{Misplaced key `#1'}% | 
|---|
|  | 187 | {`series' and `resume*' must be used\MessageBreak | 
|---|
|  | 188 | in the optional argument of lists}% | 
|---|
|  | 189 | \fi} | 
|---|
|  | 190 |  | 
|---|
|  | 191 | \def\enit@checkseries@m{% | 
|---|
|  | 192 | \ifcase\enit@resuming\else | 
|---|
|  | 193 | \enit@error{Uncompatible series settings}% | 
|---|
|  | 194 | {`series' and `resume*' must not be used\MessageBreak | 
|---|
|  | 195 | at the same time}% | 
|---|
|  | 196 | \fi} | 
|---|
|  | 197 |  | 
|---|
|  | 198 | \let\enit@toodeep\@toodeep | 
|---|
|  | 199 |  | 
|---|
|  | 200 | \def\@toodeep{% | 
|---|
|  | 201 | \ifnum\@listdepth>\enit@listdepth\relax | 
|---|
|  | 202 | \enit@toodeep | 
|---|
|  | 203 | \else | 
|---|
|  | 204 | \count@\@listdepth | 
|---|
|  | 205 | \global\advance\@listdepth\@ne | 
|---|
|  | 206 | \@ifundefined{@list\romannumeral\the\@listdepth}% | 
|---|
|  | 207 | {\expandafter\let | 
|---|
|  | 208 | \csname @list\romannumeral\the\@listdepth\expandafter\endcsname | 
|---|
|  | 209 | \csname @list\romannumeral\the\count@\endcsname}{}% | 
|---|
|  | 210 | \fi} | 
|---|
|  | 211 |  | 
|---|
|  | 212 |  | 
|---|
|  | 213 | % +=============================+ | 
|---|
|  | 214 | % |            KEYS             | | 
|---|
|  | 215 | % +=============================+ | 
|---|
|  | 216 | % | 
|---|
|  | 217 | % Including code executed by keys. | 
|---|
|  | 218 | % | 
|---|
|  | 219 | % There are 2 keyval groups: enumitem, and enumitem-delayed. | 
|---|
|  | 220 | % The latter is used to make sure a prioritary key is the | 
|---|
|  | 221 | % latest one; eg, ref, so that the ref format set by label | 
|---|
|  | 222 | % is overriden. So, when this key is found in enumitem, | 
|---|
|  | 223 | % nothing is done, except the key/value is moved to | 
|---|
|  | 224 | % enumitem-delayed. | 
|---|
|  | 225 | % | 
|---|
|  | 226 | % A further group (enumitem-resume) catches resume* and | 
|---|
|  | 227 | % series in optional arguments in lists. | 
|---|
|  | 228 | % | 
|---|
|  | 229 | % Vertical spacing | 
|---|
|  | 230 | % ================ | 
|---|
|  | 231 |  | 
|---|
|  | 232 | \enitkv@key{enumitem}{topsep}{% | 
|---|
|  | 233 | \setlength\topsep{#1}} | 
|---|
|  | 234 |  | 
|---|
|  | 235 | \enitkv@key{enumitem}{itemsep}{% | 
|---|
|  | 236 | \setlength\itemsep{#1}} | 
|---|
|  | 237 |  | 
|---|
|  | 238 | \enitkv@key{enumitem}{parsep}{% | 
|---|
|  | 239 | \setlength\parsep{#1}} | 
|---|
|  | 240 |  | 
|---|
|  | 241 | \enitkv@key{enumitem}{partopsep}{% | 
|---|
|  | 242 | \setlength\partopsep{#1}} | 
|---|
|  | 243 |  | 
|---|
|  | 244 | % Horizontal spacing | 
|---|
|  | 245 | % ================== | 
|---|
|  | 246 | % | 
|---|
|  | 247 | % There are 3 cases: *, ! and a value. The latter also | 
|---|
|  | 248 | % cancels widest with the sequence key=* ... key=value | 
|---|
|  | 249 | % \string is used, just in case some package changes the | 
|---|
|  | 250 | % catcodes. | 
|---|
|  | 251 |  | 
|---|
|  | 252 | \def\enit@calcset#1#2#3{% | 
|---|
|  | 253 | \if\string*\string#3% | 
|---|
|  | 254 | \enit@calcwidesttrue | 
|---|
|  | 255 | \let\enit@calc#2% | 
|---|
|  | 256 | \else\if\string!\string#3% | 
|---|
|  | 257 | \enit@calcwidestfalse | 
|---|
|  | 258 | \let\enit@calc#2% | 
|---|
|  | 259 | \else | 
|---|
|  | 260 | \ifnum\enit@calc=#2% | 
|---|
|  | 261 | \enit@calcwidestfalse | 
|---|
|  | 262 | \let\enit@calc\z@ | 
|---|
|  | 263 | \fi | 
|---|
|  | 264 | \setlength#1{#3}% | 
|---|
|  | 265 | \fi\fi} | 
|---|
|  | 266 |  | 
|---|
|  | 267 | \def\enitkv@enumitem@widest#1{% | 
|---|
|  | 268 | \expandafter\let\csname enit@cw@\@enumctr\endcsname\relax | 
|---|
|  | 269 | \@namedef{enit@widest@\@enumctr}##1{#1}} | 
|---|
|  | 270 |  | 
|---|
|  | 271 | \def\enitkv@enumitem@widest@default{% | 
|---|
|  | 272 | \expandafter\let\csname enit@cw@\@enumctr\endcsname\relax | 
|---|
|  | 273 | \expandafter\let\csname enit@widest@\@enumctr\endcsname\relax} | 
|---|
|  | 274 |  | 
|---|
|  | 275 | \enitkv@key{enumitem}{widest*}{% | 
|---|
|  | 276 | \setcounter{enit@cnt}{#1}% | 
|---|
|  | 277 | \expandafter\edef\csname enit@cw@\@enumctr\endcsname | 
|---|
|  | 278 | {\the\c@enit@cnt}% | 
|---|
|  | 279 | \expandafter\edef\csname enit@widest@\@enumctr\endcsname##1% | 
|---|
|  | 280 | {##1{\the\c@enit@cnt}}} | 
|---|
|  | 281 |  | 
|---|
|  | 282 | \enitkv@key{enumitem}{labelindent*}{% | 
|---|
|  | 283 | \enit@lblfrommargintrue | 
|---|
|  | 284 | \ifnum\enit@calc=\z@ | 
|---|
|  | 285 | \enit@calcwidestfalse | 
|---|
|  | 286 | \fi | 
|---|
|  | 287 | \setlength\labelindent{#1}% | 
|---|
|  | 288 | \advance\labelindent\leftmargin} | 
|---|
|  | 289 |  | 
|---|
|  | 290 | \enitkv@key{enumitem}{labelindent}{% | 
|---|
|  | 291 | \enit@lblfrommarginfalse | 
|---|
|  | 292 | \enit@calcset\labelindent\z@{#1}} | 
|---|
|  | 293 |  | 
|---|
|  | 294 | \enitkv@key{enumitem}{labelwidth}{% | 
|---|
|  | 295 | \enit@calcset\labelwidth\@ne{#1}} | 
|---|
|  | 296 |  | 
|---|
|  | 297 | \enitkv@key{enumitem}{leftmargin}{% | 
|---|
|  | 298 | \edef\enit@c{\the\leftmargin}% | 
|---|
|  | 299 | \enit@calcset\leftmargin\thr@@{#1}% | 
|---|
|  | 300 | \ifenit@lblfrommargin | 
|---|
|  | 301 | \advance\labelindent-\enit@c\relax | 
|---|
|  | 302 | \advance\labelindent\leftmargin | 
|---|
|  | 303 | \fi} | 
|---|
|  | 304 |  | 
|---|
|  | 305 | \enitkv@key{enumitem}{itemindent}{% | 
|---|
|  | 306 | \edef\enit@c{\the\itemindent}% | 
|---|
|  | 307 | \enit@calcset\itemindent\enit@iv{#1}% | 
|---|
|  | 308 | \ifenit@sepfrommargin | 
|---|
|  | 309 | \advance\labelsep-\enit@c\relax | 
|---|
|  | 310 | \advance\labelsep\itemindent | 
|---|
|  | 311 | \fi} | 
|---|
|  | 312 |  | 
|---|
|  | 313 | \enitkv@key{enumitem}{listparindent}{% | 
|---|
|  | 314 | \setlength\listparindent{#1}} | 
|---|
|  | 315 |  | 
|---|
|  | 316 | \enitkv@key{enumitem}{rightmargin}{% | 
|---|
|  | 317 | \setlength\rightmargin{#1}} | 
|---|
|  | 318 |  | 
|---|
|  | 319 | % labelsep, from itemindent; labelsep*, from leftmargin | 
|---|
|  | 320 |  | 
|---|
|  | 321 | \enitkv@key{enumitem}{labelsep*}{% | 
|---|
|  | 322 | \enit@sepfrommargintrue | 
|---|
|  | 323 | \ifnum\enit@calc=\tw@ | 
|---|
|  | 324 | \enit@calcwidestfalse | 
|---|
|  | 325 | \let\enit@calc\z@ | 
|---|
|  | 326 | \fi | 
|---|
|  | 327 | \setlength\labelsep{#1}% | 
|---|
|  | 328 | \advance\labelsep\itemindent} | 
|---|
|  | 329 |  | 
|---|
|  | 330 | \enitkv@key{enumitem}{labelsep}{% | 
|---|
|  | 331 | \enit@sepfrommarginfalse | 
|---|
|  | 332 | \enit@calcset\labelsep\tw@{#1}} | 
|---|
|  | 333 |  | 
|---|
|  | 334 | % Series, resume and start | 
|---|
|  | 335 | % ======================== | 
|---|
|  | 336 |  | 
|---|
|  | 337 | \enitkv@key{enumitem-resume}{series}{% | 
|---|
|  | 338 | \enit@checkseries@m | 
|---|
|  | 339 | \let\enit@resuming\@ne | 
|---|
|  | 340 | \@ifundefined{enitkv@enumitem@#1}{}% | 
|---|
|  | 341 | {\enit@error{Invalid series name `#1'}% | 
|---|
|  | 342 | {Do not name a series with an existing key}}% | 
|---|
|  | 343 | \def\enit@series{#1}} | 
|---|
|  | 344 |  | 
|---|
|  | 345 | \enitkv@key{enumitem}{series}{% | 
|---|
|  | 346 | \enit@checkseries{series}} | 
|---|
|  | 347 |  | 
|---|
|  | 348 | \def\enitkv@enumitem@resume#1{% | 
|---|
|  | 349 | \edef\enit@series{#1}% | 
|---|
|  | 350 | \@nameuse{enit@resume@series@#1}\relax} | 
|---|
|  | 351 |  | 
|---|
|  | 352 | \def\enitkv@enumitem@resume@default{% | 
|---|
|  | 353 | \@nameuse{enit@resume@\@currenvir}\relax} | 
|---|
|  | 354 |  | 
|---|
|  | 355 | \@namedef{enitkv@enumitem-resume@resume*}#1{% | 
|---|
|  | 356 | \enit@checkseries@m | 
|---|
|  | 357 | \let\enit@resuming\tw@ | 
|---|
|  | 358 | \edef\enit@series{#1}% | 
|---|
|  | 359 | \@ifundefined{enit@resumekeys@series@#1}% | 
|---|
|  | 360 | {\enit@noserieserror{#1}}% | 
|---|
|  | 361 | {\expandafter\let\expandafter\enit@resumekeys | 
|---|
|  | 362 | \csname enit@resumekeys@series@#1\endcsname}} | 
|---|
|  | 363 |  | 
|---|
|  | 364 | \@namedef{enitkv@enumitem-resume@resume*@default}{% | 
|---|
|  | 365 | \let\enit@resuming\thr@@ | 
|---|
|  | 366 | \expandafter\let\expandafter\enit@resumekeys | 
|---|
|  | 367 | \csname enit@resumekeys@\@currenvir\endcsname | 
|---|
|  | 368 | \@nameuse{enit@resume@\@currenvir}\relax} | 
|---|
|  | 369 |  | 
|---|
|  | 370 | \enitkv@key{enumitem}{resume*}[]{% | 
|---|
|  | 371 | \enit@checkseries{resume*}} | 
|---|
|  | 372 |  | 
|---|
|  | 373 | \newcommand\restartlist[1]{% | 
|---|
|  | 374 | \@ifundefined{end#1}% | 
|---|
|  | 375 | {\enit@error{Undefined list `#1'}% | 
|---|
|  | 376 | {No list has been defined with that name.}}% | 
|---|
|  | 377 | {\expandafter\let | 
|---|
|  | 378 | \csname enit@resume@#1\endcsname\@empty}} | 
|---|
|  | 379 |  | 
|---|
|  | 380 | \enitkv@key{enumitem}{start}[\@ne]{% | 
|---|
|  | 381 | \setcounter{\@listctr}{#1}% | 
|---|
|  | 382 | \advance\@nameuse{c@\@listctr}\m@ne} | 
|---|
|  | 383 |  | 
|---|
|  | 384 | % Penalties | 
|---|
|  | 385 | % ========= | 
|---|
|  | 386 |  | 
|---|
|  | 387 | \enitkv@key{enumitem}{beginpenalty}{% | 
|---|
|  | 388 | \@beginparpenalty#1\relax} | 
|---|
|  | 389 |  | 
|---|
|  | 390 | \enitkv@key{enumitem}{midpenalty}{% | 
|---|
|  | 391 | \@itempenalty#1\relax} | 
|---|
|  | 392 |  | 
|---|
|  | 393 | \enitkv@key{enumitem}{endpenalty}{% | 
|---|
|  | 394 | \@endparpenalty#1\relax} | 
|---|
|  | 395 |  | 
|---|
|  | 396 | % Font/Format | 
|---|
|  | 397 | % =========== | 
|---|
|  | 398 |  | 
|---|
|  | 399 | \enitkv@key{enumitem}{format}{% | 
|---|
|  | 400 | \def\enit@format{#1}} | 
|---|
|  | 401 |  | 
|---|
|  | 402 | \enitkv@key{enumitem}{font}{% | 
|---|
|  | 403 | \def\enit@format{#1}} | 
|---|
|  | 404 |  | 
|---|
|  | 405 | % Description styles | 
|---|
|  | 406 | % ================== | 
|---|
|  | 407 |  | 
|---|
|  | 408 | \enitkv@key{enumitem}{style}[normal]{% | 
|---|
|  | 409 | \@ifundefined{enit@style@#1}% | 
|---|
|  | 410 | {\enit@checkerror{style}{#1}}% | 
|---|
|  | 411 | {\enit@nextlinefalse | 
|---|
|  | 412 | \enit@boxdescfalse | 
|---|
|  | 413 | \@nameuse{enit@style@#1}% | 
|---|
|  | 414 | \edef\enit@descstyle{\enit@noexcs{enit@#1style}}}} | 
|---|
|  | 415 |  | 
|---|
|  | 416 | \def\enit@style@standard{% | 
|---|
|  | 417 | \enit@boxdesctrue | 
|---|
|  | 418 | \enit@calcset\itemindent\enit@iv!} | 
|---|
|  | 419 |  | 
|---|
|  | 420 | \let\enit@style@normal\enit@style@standard | 
|---|
|  | 421 |  | 
|---|
|  | 422 | \def\enit@style@unboxed{% | 
|---|
|  | 423 | \enit@calcset\itemindent\enit@iv!} | 
|---|
|  | 424 |  | 
|---|
|  | 425 | \def\enit@style@sameline{% | 
|---|
|  | 426 | \enit@calcset\labelwidth\@ne!} | 
|---|
|  | 427 |  | 
|---|
|  | 428 | \def\enit@style@multiline{% | 
|---|
|  | 429 | \enit@align@parleft | 
|---|
|  | 430 | \enit@calcset\labelwidth\@ne!} | 
|---|
|  | 431 |  | 
|---|
|  | 432 | \def\enit@style@nextline{% | 
|---|
|  | 433 | \enit@nextlinetrue | 
|---|
|  | 434 | \enit@calcset\labelwidth\@ne!} | 
|---|
|  | 435 |  | 
|---|
|  | 436 | % Labels and refs | 
|---|
|  | 437 | % =============== | 
|---|
|  | 438 |  | 
|---|
|  | 439 | % Aligment | 
|---|
|  | 440 | % -------- | 
|---|
|  | 441 |  | 
|---|
|  | 442 | \enitkv@key{enumitem}{align}{% | 
|---|
|  | 443 | \@ifundefined{enit@align@#1}% | 
|---|
|  | 444 | {\enit@checkerror{align}{#1}}% | 
|---|
|  | 445 | {\csname enit@align@#1\endcsname}} | 
|---|
|  | 446 |  | 
|---|
|  | 447 | % \nobreak for unboxed label with color. See below. | 
|---|
|  | 448 |  | 
|---|
|  | 449 | \newcommand\SetLabelAlign[2]{% | 
|---|
|  | 450 | \enit@toks{#2}% | 
|---|
|  | 451 | \expandafter\edef\csname enit@align@#1\endcsname | 
|---|
|  | 452 | {\def\noexpand\enit@align####1{\nobreak\the\enit@toks}}} | 
|---|
|  | 453 |  | 
|---|
|  | 454 | \def\enit@align@right{% | 
|---|
|  | 455 | \def\enit@align##1{\nobreak\hss\llap{##1}}} | 
|---|
|  | 456 |  | 
|---|
|  | 457 | \def\enit@align@left{% | 
|---|
|  | 458 | \def\enit@align##1{\nobreak##1\hfil}} | 
|---|
|  | 459 |  | 
|---|
|  | 460 | \def\enit@align@parleft{% | 
|---|
|  | 461 | \def\enit@align##1{% | 
|---|
|  | 462 | \nobreak | 
|---|
|  | 463 | \strut\smash{\parbox[t]\labelwidth{\raggedright##1}}}} | 
|---|
|  | 464 |  | 
|---|
|  | 465 | % \enit@ref has three possible definitions: | 
|---|
|  | 466 | % (1) \relax, if there is neither label nor ref (ie, use | 
|---|
|  | 467 | %   LaTeX settings). | 
|---|
|  | 468 | % (2) set ref to @itemlabel, if there is label but not ref | 
|---|
|  | 469 | % (3) set ref to ref, if there is ref (with or without label) | 
|---|
|  | 470 |  | 
|---|
|  | 471 | \enitkv@key{enumitem}{label}{% | 
|---|
|  | 472 | \expandafter\def\@itemlabel{#1}% | 
|---|
|  | 473 | \def\enit@ref{\expandafter\enit@reflabel\@itemlabel\z@}} | 
|---|
|  | 474 |  | 
|---|
|  | 475 | \enitkv@key{enumitem}{label*}{% | 
|---|
|  | 476 | \ifnum\enit@depth=\@ne | 
|---|
|  | 477 | \expandafter\def\@itemlabel{#1}% | 
|---|
|  | 478 | \else % no level 0 | 
|---|
|  | 479 | \advance\enit@depth\m@ne | 
|---|
|  | 480 | \enit@toks{#1}% | 
|---|
|  | 481 | \expandafter\edef\@itemlabel{% | 
|---|
|  | 482 | \enit@noexcs{label\enit@prevlabel}% | 
|---|
|  | 483 | \the\enit@toks}% | 
|---|
|  | 484 | \advance\enit@depth\@ne | 
|---|
|  | 485 | \fi | 
|---|
|  | 486 | \def\enit@ref{\expandafter\enit@reflabel\@itemlabel\z@}} | 
|---|
|  | 487 |  | 
|---|
|  | 488 | % ref is set by label, except if there is an explicit ref | 
|---|
|  | 489 | % in the same hierarchy level. Explicit refs above the | 
|---|
|  | 490 | % current hierarchy level are overriden by label (besides ref), | 
|---|
|  | 491 | % too. Since an explicit ref has preference, it's delayed. | 
|---|
|  | 492 |  | 
|---|
|  | 493 | \enitkv@key{enumitem}{ref}{% | 
|---|
|  | 494 | \g@addto@macro\enit@delayedkeys{,ref=#1}} | 
|---|
|  | 495 |  | 
|---|
|  | 496 | \enitkv@key{enumitem-delayed}{ref}{% | 
|---|
|  | 497 | \def\enit@ref{\enit@reflabel{#1}\@ne}} | 
|---|
|  | 498 |  | 
|---|
|  | 499 | % #2=0 don't "normalize" (ie, already normalized) | 
|---|
|  | 500 | %   =1 "normalize" (in key ref) | 
|---|
|  | 501 | % Used thru \enit@ref | 
|---|
|  | 502 |  | 
|---|
|  | 503 | \def\enit@reflabel#1#2{% | 
|---|
|  | 504 | \ifnum\enit@depth=\@ne\else % no level 0 | 
|---|
|  | 505 | \advance\enit@depth\@ne | 
|---|
|  | 506 | \@namedef{p@\@enumctr}{}% Don't accumulate labels | 
|---|
|  | 507 | \advance\enit@depth\m@ne | 
|---|
|  | 508 | \fi | 
|---|
|  | 509 | \ifcase#2% | 
|---|
|  | 510 | \@namedef{the\@enumctr}{{#1}}% | 
|---|
|  | 511 | \else | 
|---|
|  | 512 | \enit@normlabel{\csname the\@enumctr\endcsname}{#1}% | 
|---|
|  | 513 | \fi} | 
|---|
|  | 514 |  | 
|---|
|  | 515 | % \xxx* in counters (refstar) and widest (calcdef) | 
|---|
|  | 516 | % ------------------------------------------------ | 
|---|
|  | 517 | % \enit@labellist contains a list of | 
|---|
|  | 518 | % \enit@elt{widest}\count\@count\enit@sc@@count | 
|---|
|  | 519 | % \enit@elt is either \enit@getwidth or \enit@refstar, defined | 
|---|
|  | 520 | % below | 
|---|
|  | 521 | % The current implementation is sub-optimal -- labels are stored in | 
|---|
|  | 522 | % labellist, counters defined again when processing labels, and | 
|---|
|  | 523 | % modifying it is almost impossible. | 
|---|
|  | 524 |  | 
|---|
|  | 525 | \let\enit@labellist\@empty | 
|---|
|  | 526 |  | 
|---|
|  | 527 | \newcommand\AddEnumerateCounter{% | 
|---|
|  | 528 | \@ifstar\enit@addcounter@s\enit@addcounter} | 
|---|
|  | 529 |  | 
|---|
|  | 530 | \def\enit@addcounter#1#2#3{% | 
|---|
|  | 531 | \enit@toks\expandafter{% | 
|---|
|  | 532 | \enit@labellist | 
|---|
|  | 533 | \enit@elt{#3}}% | 
|---|
|  | 534 | \edef\enit@labellist{% | 
|---|
|  | 535 | \the\enit@toks | 
|---|
|  | 536 | \enit@noexcs{\expandafter\@gobble\string#1}% | 
|---|
|  | 537 | \enit@noexcs{\expandafter\@gobble\string#2}% | 
|---|
|  | 538 | \enit@noexcs{enit@sc@\expandafter\@gobble\string#2}}} | 
|---|
|  | 539 |  | 
|---|
|  | 540 | \def\enit@addcounter@s#1#2#3{% | 
|---|
|  | 541 | \enit@addcounter{#1}{#2}% | 
|---|
|  | 542 | {\@nameuse{enit@sc@\expandafter\@gobble\string#2}{#3}}} | 
|---|
|  | 543 |  | 
|---|
|  | 544 | % The 5 basic counters: | 
|---|
|  | 545 |  | 
|---|
|  | 546 | \AddEnumerateCounter\arabic\@arabic{0} | 
|---|
|  | 547 | \AddEnumerateCounter\alph\@alph{m} | 
|---|
|  | 548 | \AddEnumerateCounter\Alph\@Alph{M} | 
|---|
|  | 549 | \AddEnumerateCounter\roman\@roman{viii} | 
|---|
|  | 550 | \AddEnumerateCounter\Roman\@Roman{VIII} | 
|---|
|  | 551 |  | 
|---|
|  | 552 | % Inline lists | 
|---|
|  | 553 | % ============ | 
|---|
|  | 554 | % | 
|---|
|  | 555 | % Labels | 
|---|
|  | 556 | % ------ | 
|---|
|  | 557 |  | 
|---|
|  | 558 | \enitkv@key{enumitem}{itemjoin}{% | 
|---|
|  | 559 | \def\enit@itemjoin{#1}} | 
|---|
|  | 560 |  | 
|---|
|  | 561 | \enitkv@key{enumitem}{itemjoin*}{% | 
|---|
|  | 562 | \def\enit@itemjoin@s{#1}} | 
|---|
|  | 563 |  | 
|---|
|  | 564 | \enitkv@key{enumitem}{afterlabel}{% | 
|---|
|  | 565 | \def\enit@afterlabel{#1}} | 
|---|
|  | 566 |  | 
|---|
|  | 567 | % Mode | 
|---|
|  | 568 | % ---- | 
|---|
|  | 569 |  | 
|---|
|  | 570 | \enitkv@key{enumitem}{mode}{% | 
|---|
|  | 571 | \@ifundefined{enit@mode#1}% | 
|---|
|  | 572 | {\enit@checkerror{mode}{#1}}% | 
|---|
|  | 573 | {\csname enit@mode#1\endcsname}} | 
|---|
|  | 574 |  | 
|---|
|  | 575 | \let\enit@modeboxed\enit@boxmodetrue | 
|---|
|  | 576 | \let\enit@modeunboxed\enit@boxmodefalse | 
|---|
|  | 577 |  | 
|---|
|  | 578 | % Short Labels | 
|---|
|  | 579 | % ============ | 
|---|
|  | 580 |  | 
|---|
|  | 581 | \let\enit@marklist\@empty | 
|---|
|  | 582 |  | 
|---|
|  | 583 | % shorthand, expansion: | 
|---|
|  | 584 |  | 
|---|
|  | 585 | \newcommand\SetEnumerateShortLabel[2]{% | 
|---|
|  | 586 | \let\enit@a\@empty | 
|---|
|  | 587 | \def\enit@elt##1##2{% | 
|---|
|  | 588 | \def\enit@b{#1}\def\enit@c{##1}% | 
|---|
|  | 589 | \ifx\enit@b\enit@c\else | 
|---|
|  | 590 | \expandafter\def\expandafter\enit@a\expandafter{% | 
|---|
|  | 591 | \enit@a | 
|---|
|  | 592 | \enit@elt{##1}{##2}}% | 
|---|
|  | 593 | \fi}% | 
|---|
|  | 594 | \enit@marklist | 
|---|
|  | 595 | \expandafter\def\expandafter\enit@a\expandafter{% | 
|---|
|  | 596 | \enit@a | 
|---|
|  | 597 | \enit@elt{#1}{#2}}% | 
|---|
|  | 598 | \let\enit@marklist\enit@a} | 
|---|
|  | 599 |  | 
|---|
|  | 600 | \SetEnumerateShortLabel{a}{\alph*} | 
|---|
|  | 601 | \SetEnumerateShortLabel{A}{\Alph*} | 
|---|
|  | 602 | \SetEnumerateShortLabel{i}{\roman*} | 
|---|
|  | 603 | \SetEnumerateShortLabel{I}{\Roman*} | 
|---|
|  | 604 | \SetEnumerateShortLabel{1}{\arabic*} | 
|---|
|  | 605 |  | 
|---|
|  | 606 | % This is called \enit@first one,two,three,\@nil\@@nil. If there | 
|---|
|  | 607 | % are just one element #2 is \@nil, otherwise we have to remove | 
|---|
|  | 608 | % the trailing ,\@nil with enit@first@x | 
|---|
|  | 609 | % Called with the keys in \enit@c | 
|---|
|  | 610 | % Returns enit@toks | 
|---|
|  | 611 |  | 
|---|
|  | 612 | \def\enit@first#1,#2\@@nil{% | 
|---|
|  | 613 | \in@{=}{#1}% Quick test, if contains =, it's key=value | 
|---|
|  | 614 | \ifin@\else | 
|---|
|  | 615 | \enitkv@@sp@def\enit@a{#1}% | 
|---|
|  | 616 | \@ifundefined{enitkv@enumitem@\enit@meaning\enit@a}% | 
|---|
|  | 617 | {\ifnum\enit@type=\z@ | 
|---|
|  | 618 | \def\enit@elt{\enit@replace\enit@a}% | 
|---|
|  | 619 | \enit@marklist % Returns \enit@toks | 
|---|
|  | 620 | \else | 
|---|
|  | 621 | \enit@toks{#1}% | 
|---|
|  | 622 | \fi | 
|---|
|  | 623 | \ifx\@nil#2% | 
|---|
|  | 624 | \ifx,#1,\else | 
|---|
|  | 625 | \edef\enit@c{label=\the\enit@toks}% | 
|---|
|  | 626 | \fi | 
|---|
|  | 627 | \else | 
|---|
|  | 628 | \@temptokena\expandafter{\enit@first@x#2}% | 
|---|
|  | 629 | \edef\enit@c{label=\the\enit@toks,\the\@temptokena}% | 
|---|
|  | 630 | \fi}% | 
|---|
|  | 631 | {}% | 
|---|
|  | 632 | \fi | 
|---|
|  | 633 | \enit@toks\expandafter{\enit@c}} | 
|---|
|  | 634 |  | 
|---|
|  | 635 | \def\enit@first@x#1,\@nil{#1} | 
|---|
|  | 636 |  | 
|---|
|  | 637 | \def\enit@replace#1#2#3{% | 
|---|
|  | 638 | \enit@toks{}% | 
|---|
|  | 639 | \def\enit@b##1#2##2\@@nil{% | 
|---|
|  | 640 | \ifx\@nil##2% | 
|---|
|  | 641 | \addto@hook\enit@toks{##1}% | 
|---|
|  | 642 | \else | 
|---|
|  | 643 | \edef\enit@a{\the\enit@toks}% | 
|---|
|  | 644 | \ifx\enit@a\@empty\else | 
|---|
|  | 645 | \enit@error{Extra short label ignored}% | 
|---|
|  | 646 | {There are more than one short label}% | 
|---|
|  | 647 | \fi | 
|---|
|  | 648 | \addto@hook\enit@toks{##1#3}% | 
|---|
|  | 649 | \enit@b##2\@@nil | 
|---|
|  | 650 | \fi}% | 
|---|
|  | 651 | \expandafter\enit@b#1#2\@nil\@@nil | 
|---|
|  | 652 | \edef#1{\the\enit@toks}} | 
|---|
|  | 653 |  | 
|---|
|  | 654 | % Pre and post code | 
|---|
|  | 655 | % ================= | 
|---|
|  | 656 |  | 
|---|
|  | 657 | \enitkv@key{enumitem}{before}{% | 
|---|
|  | 658 | \def\enit@before{#1}} | 
|---|
|  | 659 |  | 
|---|
|  | 660 | \enitkv@key{enumitem}{after}{% | 
|---|
|  | 661 | \def\enit@after{#1}} | 
|---|
|  | 662 |  | 
|---|
|  | 663 | \enitkv@key{enumitem}{before*}{% | 
|---|
|  | 664 | \expandafter\def\expandafter\enit@before\expandafter | 
|---|
|  | 665 | {\enit@before#1}} | 
|---|
|  | 666 |  | 
|---|
|  | 667 | \enitkv@key{enumitem}{after*}{% | 
|---|
|  | 668 | \expandafter\def\expandafter\enit@after\expandafter | 
|---|
|  | 669 | {\enit@after#1}} | 
|---|
|  | 670 |  | 
|---|
|  | 671 | % Miscelaneous keys | 
|---|
|  | 672 | % ================ | 
|---|
|  | 673 |  | 
|---|
|  | 674 | \enitkv@key{enumitem}{nolistsep}[true]{% | 
|---|
|  | 675 | \partopsep=\z@skip | 
|---|
|  | 676 | \topsep=\z@ plus .1pt | 
|---|
|  | 677 | \itemsep=\z@skip | 
|---|
|  | 678 | \parsep=\z@skip} | 
|---|
|  | 679 |  | 
|---|
|  | 680 | \enitkv@key{enumitem}{nosep}[true]{% | 
|---|
|  | 681 | \partopsep=\z@skip | 
|---|
|  | 682 | \topsep=\z@skip | 
|---|
|  | 683 | \itemsep=\z@skip | 
|---|
|  | 684 | \parsep=\z@skip} | 
|---|
|  | 685 |  | 
|---|
|  | 686 |  | 
|---|
|  | 687 | \enitkv@key{enumitem}{noitemsep}[true]{% | 
|---|
|  | 688 | \itemsep=\z@skip | 
|---|
|  | 689 | \parsep=\z@skip} | 
|---|
|  | 690 |  | 
|---|
|  | 691 | \enitkv@key{enumitem}{wide}[\parindent]{% | 
|---|
|  | 692 | \enit@align@left | 
|---|
|  | 693 | \leftmargin\z@ | 
|---|
|  | 694 | \labelwidth\z@ | 
|---|
|  | 695 | \setlength\labelindent{#1}% | 
|---|
|  | 696 | \listparindent\labelindent | 
|---|
|  | 697 | \enit@calcset\itemindent\enit@iv!} | 
|---|
|  | 698 |  | 
|---|
|  | 699 | % The following is deprecated in favour of wide: | 
|---|
|  | 700 |  | 
|---|
|  | 701 | \enitkv@key{enumitem}{fullwidth}[true]{% | 
|---|
|  | 702 | \leftmargin\z@ | 
|---|
|  | 703 | \labelwidth\z@ | 
|---|
|  | 704 | \def\enit@align##1{\hskip\labelsep##1}} | 
|---|
|  | 705 |  | 
|---|
|  | 706 | % "Abstract" layer | 
|---|
|  | 707 | % ================ | 
|---|
|  | 708 | % | 
|---|
|  | 709 | % Named values | 
|---|
|  | 710 | % ------------ | 
|---|
|  | 711 |  | 
|---|
|  | 712 | \newcommand\SetEnumitemValue[2]{% Implicit #3 | 
|---|
|  | 713 | \@ifundefined{enit@enitkv@#1}% | 
|---|
|  | 714 | {\@ifundefined{enitkv@enumitem@#1}% | 
|---|
|  | 715 | {\enit@error{Wrong key `#1' in \string\SetEnumitemValue}% | 
|---|
|  | 716 | {Perhaps you have misspelled it}}{}% | 
|---|
|  | 717 | \expandafter\let\csname enit@enitkv@#1\expandafter\endcsname | 
|---|
|  | 718 | \csname enitkv@enumitem@#1\endcsname}{}% | 
|---|
|  | 719 | \@namedef{enitkv@enumitem@#1}##1{% | 
|---|
|  | 720 | \def\enit@a{##1}% | 
|---|
|  | 721 | \@ifundefined{enit@enitkv@#1@\enit@meaning\enit@a}% | 
|---|
|  | 722 | {\@nameuse{enit@enitkv@#1}{##1}}% | 
|---|
|  | 723 | {\@nameuse{enit@enitkv@#1\expandafter\expandafter\expandafter}% | 
|---|
|  | 724 | \expandafter\expandafter\expandafter | 
|---|
|  | 725 | {\csname enit@enitkv@#1@##1\endcsname}}{}}% | 
|---|
|  | 726 | \@namedef{enit@enitkv@#1@#2}} | 
|---|
|  | 727 |  | 
|---|
|  | 728 | % Defining keys | 
|---|
|  | 729 | % ------------- | 
|---|
|  | 730 |  | 
|---|
|  | 731 | \newcommand\SetEnumitemKey[2]{% | 
|---|
|  | 732 | \@ifundefined{enitkv@enumitem@#1}% | 
|---|
|  | 733 | {\enitkv@key{enumitem}{#1}[]{\enitkv@setkeys{enumitem}{#2}}}% | 
|---|
|  | 734 | {\enit@error{Duplicated key `#1' in \string\SetEnumitemKey}% | 
|---|
|  | 735 | {There already exists a key with that name}}} | 
|---|
|  | 736 |  | 
|---|
|  | 737 | % +=============================+ | 
|---|
|  | 738 | % |       PROCESSING KEYS       | | 
|---|
|  | 739 | % +=============================+ | 
|---|
|  | 740 | % | 
|---|
|  | 741 | % Set keys | 
|---|
|  | 742 | % ======== | 
|---|
|  | 743 |  | 
|---|
|  | 744 | \def\enit@setkeys#1{% | 
|---|
|  | 745 | \@ifundefined{enit@@#1}{}% | 
|---|
|  | 746 | {\expandafter\expandafter\expandafter | 
|---|
|  | 747 | \enit@setkeys@i\csname enit@@#1\endcsname\@@}} | 
|---|
|  | 748 |  | 
|---|
|  | 749 | % The following is used directly in resumeset: | 
|---|
|  | 750 |  | 
|---|
|  | 751 | \def\enit@setkeys@i#1\@@{% | 
|---|
|  | 752 | \let\enit@delayedkeys\@empty | 
|---|
|  | 753 | \enit@shl{#1}% is or returns \enit@toks | 
|---|
|  | 754 | \expandafter\enit@setkeys@ii\the\enit@toks\@@} | 
|---|
|  | 755 |  | 
|---|
|  | 756 | \def\enit@setkeys@ii#1\@@{% | 
|---|
|  | 757 | \enitkv@setkeys{enumitem}{#1}% | 
|---|
|  | 758 | \enit@toks\expandafter{\enit@delayedkeys}% | 
|---|
|  | 759 | \edef\enit@a{% | 
|---|
|  | 760 | \noexpand\enitkv@setkeys{enumitem-delayed}{\the\enit@toks}}% | 
|---|
|  | 761 | \enit@a} | 
|---|
|  | 762 |  | 
|---|
|  | 763 | % Handling * and ! values | 
|---|
|  | 764 | % ======================= | 
|---|
|  | 765 | % | 
|---|
|  | 766 | % \@gobbletwo removes \c from \c@counter. | 
|---|
|  | 767 |  | 
|---|
|  | 768 | \def\enit@getwidth#1#2#3#4{% | 
|---|
|  | 769 | \let#4#3% | 
|---|
|  | 770 | \def#3##1{% | 
|---|
|  | 771 | \@ifundefined{enit@widest\expandafter\@gobbletwo\string##1}% if no widest=key | 
|---|
|  | 772 | {#1}% | 
|---|
|  | 773 | {\csname enit@widest\expandafter\@gobbletwo\string##1\endcsname{#4}}}} | 
|---|
|  | 774 |  | 
|---|
|  | 775 | \def\enit@valueerror#1{\z@ % if after an assignment, but doesn't catch \ifnum | 
|---|
|  | 776 | \enit@error{No default \string\value\space for `#1'}% | 
|---|
|  | 777 | {You can provide one with widest*}}% | 
|---|
|  | 778 |  | 
|---|
|  | 779 | \let\enit@values\@empty | 
|---|
|  | 780 |  | 
|---|
|  | 781 | \def\enit@calcwidth{% | 
|---|
|  | 782 | \ifenit@calcwidest | 
|---|
|  | 783 | \ifnum\enit@type=\z@ % ie, enum | 
|---|
|  | 784 | \@ifundefined{enit@cw@\@enumctr}% | 
|---|
|  | 785 | {\@namedef{enit@cv@\@enumctr}{\enit@valueerror\@enumctr}}% | 
|---|
|  | 786 | {\edef\enit@values{% | 
|---|
|  | 787 | \enit@values | 
|---|
|  | 788 | \@nameuse{c@\@enumctr}\@nameuse{enit@cw@\@enumctr}\relax}% | 
|---|
|  | 789 | \expandafter | 
|---|
|  | 790 | \edef\csname enit@cv@\@enumctr\endcsname | 
|---|
|  | 791 | {\@nameuse{c@\@enumctr}}}% | 
|---|
|  | 792 | \fi | 
|---|
|  | 793 | \begingroup | 
|---|
|  | 794 | \enit@values | 
|---|
|  | 795 | \def\value##1{\csname enit@cv@##1\endcsname}% | 
|---|
|  | 796 | \let\enit@elt\enit@getwidth | 
|---|
|  | 797 | \enit@labellist | 
|---|
|  | 798 | \settowidth\labelwidth{\@itemlabel}% | 
|---|
|  | 799 | \xdef\enit@a{\labelwidth\the\labelwidth\relax}% | 
|---|
|  | 800 | \endgroup | 
|---|
|  | 801 | \enit@a | 
|---|
|  | 802 | \fi | 
|---|
|  | 803 | \advance\dimen@-\labelwidth} | 
|---|
|  | 804 |  | 
|---|
|  | 805 | \def\enit@calcleft{% | 
|---|
|  | 806 | \dimen@\leftmargin | 
|---|
|  | 807 | \advance\dimen@\itemindent | 
|---|
|  | 808 | \advance\dimen@-\labelsep | 
|---|
|  | 809 | \advance\dimen@-\labelindent | 
|---|
|  | 810 | \ifcase\enit@calc % = 0 = labelindent | 
|---|
|  | 811 | \enit@calcwidth | 
|---|
|  | 812 | \advance\labelindent\dimen@ | 
|---|
|  | 813 | \or % = 1 = labelwidth, so no \enit@calcwidth | 
|---|
|  | 814 | \labelwidth\dimen@ | 
|---|
|  | 815 | \or % = 2 = labelsep | 
|---|
|  | 816 | \enit@calcwidth | 
|---|
|  | 817 | \advance\labelsep\dimen@ | 
|---|
|  | 818 | \or % = 3 = leftmargin | 
|---|
|  | 819 | \enit@calcwidth | 
|---|
|  | 820 | \advance\leftmargin-\dimen@ | 
|---|
|  | 821 | \or % = 4 =itemindent | 
|---|
|  | 822 | \enit@calcwidth | 
|---|
|  | 823 | \advance\itemindent-\dimen@ | 
|---|
|  | 824 | \fi} | 
|---|
|  | 825 |  | 
|---|
|  | 826 | % "Normalizing" labels | 
|---|
|  | 827 | % ==================== | 
|---|
|  | 828 | % | 
|---|
|  | 829 | % Replaces \counter* by \counter{level} (those in \enit@labellist). | 
|---|
|  | 830 | % | 
|---|
|  | 831 | % #1 is either \csname...\endcsmame or the container \@itemlabel -- | 
|---|
|  | 832 | % hence \expandafter | 
|---|
|  | 833 |  | 
|---|
|  | 834 | \def\enit@refstar@i#1#2{% | 
|---|
|  | 835 | \if*#2\@empty | 
|---|
|  | 836 | \noexpand#1{\@enumctr}% | 
|---|
|  | 837 | \else | 
|---|
|  | 838 | \noexpand#1{#2}% | 
|---|
|  | 839 | \fi}% | 
|---|
|  | 840 |  | 
|---|
|  | 841 | \def\enit@refstar#1#2#3#4{% | 
|---|
|  | 842 | \def#2{\enit@refstar@i#2}% | 
|---|
|  | 843 | \def#3{\enit@refstar@i#3}} | 
|---|
|  | 844 |  | 
|---|
|  | 845 | \def\enit@normlabel#1#2{% | 
|---|
|  | 846 | \begingroup | 
|---|
|  | 847 | \def\value{\enit@refstar@i\value}% | 
|---|
|  | 848 | \let\enit@elt\enit@refstar | 
|---|
|  | 849 | \enit@labellist | 
|---|
|  | 850 | \protected@xdef\enit@a{{#2}}% Added braces as \ref is in the | 
|---|
|  | 851 | \endgroup | 
|---|
|  | 852 | \expandafter\let#1\enit@a}                    % global scope. | 
|---|
|  | 853 |  | 
|---|
|  | 854 | % Preliminary settings and default values | 
|---|
|  | 855 | % ======================================= | 
|---|
|  | 856 |  | 
|---|
|  | 857 | \def\enit@prelist#1#2#3{% | 
|---|
|  | 858 | \let\enit@type#1% | 
|---|
|  | 859 | \def\enit@depth{#2}% | 
|---|
|  | 860 | \edef\enit@prevlabel{#3\romannumeral#2}% | 
|---|
|  | 861 | \advance#2\@ne} | 
|---|
|  | 862 |  | 
|---|
|  | 863 | \def\enit@preset#1#2#3{% | 
|---|
|  | 864 | \enit@sepfrommarginfalse | 
|---|
|  | 865 | \enit@calcwidestfalse | 
|---|
|  | 866 | \let\enit@resuming\z@ | 
|---|
|  | 867 | \let\enit@series\relax | 
|---|
|  | 868 | \enit@boxmodetrue | 
|---|
|  | 869 | \def\enit@itemjoin{ }% | 
|---|
|  | 870 | \let\enit@itemjoin@s\relax | 
|---|
|  | 871 | \let\enit@afterlabel\nobreakspace | 
|---|
|  | 872 | \let\enit@before\@empty | 
|---|
|  | 873 | \let\enit@after\@empty | 
|---|
|  | 874 | \let\enit@format\@firstofone % and NOT empty | 
|---|
|  | 875 | \let\enit@ref\relax | 
|---|
|  | 876 | \labelindent\z@skip | 
|---|
|  | 877 | \ifnum\@listdepth=\@ne | 
|---|
|  | 878 | \enit@outerparindent\parindent | 
|---|
|  | 879 | \else | 
|---|
|  | 880 | \parindent\enit@outerparindent | 
|---|
|  | 881 | \fi | 
|---|
|  | 882 | \enit@setkeys{list}% | 
|---|
|  | 883 | \enit@setkeys{list\romannumeral\@listdepth}% | 
|---|
|  | 884 | \enit@setkeys{#1}% | 
|---|
|  | 885 | \enit@setkeys{#1\romannumeral#2}% | 
|---|
|  | 886 | \enit@setresume{#3}} | 
|---|
|  | 887 |  | 
|---|
|  | 888 | % keyval "error" in enumitem-resume: all undefined keys (ie, all | 
|---|
|  | 889 | % except resume*) are ignored, but <series> is treated like | 
|---|
|  | 890 | % resume*=<series> | 
|---|
|  | 891 |  | 
|---|
|  | 892 | \def\enitkv@err@a#1{% | 
|---|
|  | 893 | \@ifundefined{enit@resumekeys@series@\@tempa}{}% | 
|---|
|  | 894 | {\@nameuse{enitkv@enumitem-resume@resume*\expandafter}% | 
|---|
|  | 895 | \expandafter{\@tempa}}} | 
|---|
|  | 896 |  | 
|---|
|  | 897 | % keyval "error" in the optional argument: all undefined keys are | 
|---|
|  | 898 | % passed to the keyval error, but <series> is ignored (already | 
|---|
|  | 899 | % processed in enumitem-resume | 
|---|
|  | 900 |  | 
|---|
|  | 901 | \def\enitkv@err@b#1{% | 
|---|
|  | 902 | \@ifundefined{enit@resumekeys@series@\@tempa}% | 
|---|
|  | 903 | {\enit@savekverr{#1}}% | 
|---|
|  | 904 | {}} | 
|---|
|  | 905 |  | 
|---|
|  | 906 | % Process keys in optional argument: | 
|---|
|  | 907 |  | 
|---|
|  | 908 | \def\enit@setresume#1{% | 
|---|
|  | 909 | \enit@shl{#1}% Returns enit@toks | 
|---|
|  | 910 | \edef\enit@savekeys{\the\enit@toks}% | 
|---|
|  | 911 | \let\enit@savekverr\enitkv@errx | 
|---|
|  | 912 | \let\enitkv@errx\enitkv@err@a | 
|---|
|  | 913 | \edef\enit@b{% | 
|---|
|  | 914 | \noexpand\enitkv@setkeys{enumitem-resume}{\the\enit@toks}}% | 
|---|
|  | 915 | \enit@b | 
|---|
|  | 916 | \let\enitkv@errx\enitkv@err@b | 
|---|
|  | 917 | \ifcase\enit@resuming\or\or % = 2 | 
|---|
|  | 918 | \expandafter | 
|---|
|  | 919 | \enit@setkeys@i\enit@resumekeys,resume=\enit@series\@@ | 
|---|
|  | 920 | \or % = 3 | 
|---|
|  | 921 | \expandafter | 
|---|
|  | 922 | \enit@setkeys@i\enit@resumekeys,resume\@@ | 
|---|
|  | 923 | \fi | 
|---|
|  | 924 | \expandafter\enit@setkeys@i\enit@savekeys\@@ | 
|---|
|  | 925 | \let\enitkv@errx\enit@savekverr} | 
|---|
|  | 926 |  | 
|---|
|  | 927 | % +=============================+ | 
|---|
|  | 928 | % |         LIST TYPES          | | 
|---|
|  | 929 | % +=============================+ | 
|---|
|  | 930 | % | 
|---|
|  | 931 | % Displayed lists | 
|---|
|  | 932 | % =============== | 
|---|
|  | 933 | % #1 #2 implicit | 
|---|
|  | 934 |  | 
|---|
|  | 935 | \def\enit@dylist{% | 
|---|
|  | 936 | \enit@align@right | 
|---|
|  | 937 | \list} | 
|---|
|  | 938 |  | 
|---|
|  | 939 | \def\enit@endlist{% | 
|---|
|  | 940 | \enit@after | 
|---|
|  | 941 | \endlist | 
|---|
|  | 942 | \ifx\enit@series\relax\else % discards resume*, too | 
|---|
|  | 943 | \ifnum\enit@resuming=\@ne % ie, series= | 
|---|
|  | 944 | \enit@setresumekeys{series@\enit@series}\global\global | 
|---|
|  | 945 | \else % ie, resume=, resume*= (save count, but not keys) | 
|---|
|  | 946 | \enit@setresumekeys{series@\enit@series}\@gobblefour\global | 
|---|
|  | 947 | \fi | 
|---|
|  | 948 | \enit@afterlist | 
|---|
|  | 949 | \fi | 
|---|
|  | 950 | \ifnum\enit@resuming=\thr@@ % ie, resume* list (save count only) | 
|---|
|  | 951 | \enit@setresumekeys\@currenvir\@gobblefour\global | 
|---|
|  | 952 | \else | 
|---|
|  | 953 | \enit@setresumekeys\@currenvir\@empty\@empty | 
|---|
|  | 954 | \fi | 
|---|
|  | 955 | \aftergroup\enit@afterlist} | 
|---|
|  | 956 |  | 
|---|
|  | 957 | % #1 = either \@currenvir or series@<series> | 
|---|
|  | 958 | % #2(keys) #3(counter) are \global, \@gobblefour or \@empty | 
|---|
|  | 959 |  | 
|---|
|  | 960 | \def\enit@setresumekeys#1#2#3{% | 
|---|
|  | 961 | \enit@toks\expandafter{\enit@savekeys}% | 
|---|
|  | 962 | \xdef\enit@afterlist{% | 
|---|
|  | 963 | #2\def\enit@noexcs{enit@resumekeys@#1}{\the\enit@toks}% | 
|---|
|  | 964 | \ifnum\enit@type=\z@ % ie, enum | 
|---|
|  | 965 | #3\def\enit@noexcs{enit@resume@#1}{% | 
|---|
|  | 966 | \csname c@\@listctr\endcsname | 
|---|
|  | 967 | \the\csname c@\@listctr\endcsname}% | 
|---|
|  | 968 | \fi}} | 
|---|
|  | 969 |  | 
|---|
|  | 970 | % Inline lists | 
|---|
|  | 971 | % ============ | 
|---|
|  | 972 |  | 
|---|
|  | 973 | % Definition of \@trivlist inside inline lists.  So, when | 
|---|
|  | 974 | % \@trivlist is found in any displayed list (including quote, | 
|---|
|  | 975 | % center, verbatim...) the default \@item is restored. | 
|---|
|  | 976 |  | 
|---|
|  | 977 | \def\enit@intrivlist{% | 
|---|
|  | 978 | \enit@changed@itemfalse | 
|---|
|  | 979 | \let\@item\enit@outer@item | 
|---|
|  | 980 | \let\par\@@par | 
|---|
|  | 981 | \let\@trivlist\enit@outer@triv | 
|---|
|  | 982 | \@trivlist} | 
|---|
|  | 983 |  | 
|---|
|  | 984 | % Keep track of \@item and \item changes | 
|---|
|  | 985 |  | 
|---|
|  | 986 | \newif\ifenit@changed@item | 
|---|
|  | 987 | \enit@changed@itemfalse | 
|---|
|  | 988 |  | 
|---|
|  | 989 | \newif\ifenit@changeditem | 
|---|
|  | 990 | \enit@changeditemfalse | 
|---|
|  | 991 |  | 
|---|
|  | 992 | % List | 
|---|
|  | 993 | % ---- | 
|---|
|  | 994 |  | 
|---|
|  | 995 | % Arguments, as before: | 
|---|
|  | 996 | % \enitdp@<name>, <name>, <max-depth>, <format> | 
|---|
|  | 997 | % About @newlist, see @initem. | 
|---|
|  | 998 |  | 
|---|
|  | 999 | \def\enit@inlist#1#2{% | 
|---|
|  | 1000 | \ifnum\@listdepth>\enit@listdepth\relax | 
|---|
|  | 1001 | \@toodeep | 
|---|
|  | 1002 | \else | 
|---|
|  | 1003 | \global\advance\@listdepth\@ne | 
|---|
|  | 1004 | \fi | 
|---|
|  | 1005 | \let\enit@align\@firstofone | 
|---|
|  | 1006 | \def\@itemlabel{#1}% | 
|---|
|  | 1007 | \@nmbrlistfalse | 
|---|
|  | 1008 | \ifenit@changed@item\else | 
|---|
|  | 1009 | \enit@changed@itemtrue | 
|---|
|  | 1010 | \let\enit@outer@triv\@trivlist | 
|---|
|  | 1011 | \let\@trivlist\enit@intrivlist | 
|---|
|  | 1012 | \@setpar\@empty | 
|---|
|  | 1013 | \let\enit@outer@item\@item | 
|---|
|  | 1014 | \fi | 
|---|
|  | 1015 | #2\relax | 
|---|
|  | 1016 | \global\@newlisttrue | 
|---|
|  | 1017 | \ifenit@boxmode | 
|---|
|  | 1018 | \ifenit@changeditem\else | 
|---|
|  | 1019 | \enit@changeditemtrue | 
|---|
|  | 1020 | \let\enit@outeritem\item | 
|---|
|  | 1021 | \fi | 
|---|
|  | 1022 | \let\@item\enit@boxitem | 
|---|
|  | 1023 | \else | 
|---|
|  | 1024 | \let\@item\enit@noboxitem | 
|---|
|  | 1025 | \ifx\enit@itemjoin@s\relax\else | 
|---|
|  | 1026 | \PackageWarning{enumitem}% | 
|---|
|  | 1027 | {itemjoin* discarded in mode unboxed\MessageBreak}% | 
|---|
|  | 1028 | \fi | 
|---|
|  | 1029 | \fi | 
|---|
|  | 1030 | \let\enit@calcleft\relax | 
|---|
|  | 1031 | \let\enit@afteritem\relax | 
|---|
|  | 1032 | \ifenit@boxmode | 
|---|
|  | 1033 | \global\setbox\enit@inbox\hbox\bgroup\color@begingroup | 
|---|
|  | 1034 | \let\item\enit@endinbox | 
|---|
|  | 1035 | \fi | 
|---|
|  | 1036 | \ignorespaces} | 
|---|
|  | 1037 |  | 
|---|
|  | 1038 | \def\enit@endinlist{% | 
|---|
|  | 1039 | \ifenit@boxmode | 
|---|
|  | 1040 | \unskip | 
|---|
|  | 1041 | \xdef\enit@afteritem{% | 
|---|
|  | 1042 | \ifhmode\spacefactor\the\spacefactor\relax\fi}% | 
|---|
|  | 1043 | \color@endgroup | 
|---|
|  | 1044 | \egroup | 
|---|
|  | 1045 | \ifdim\wd\enit@inbox=\z@ | 
|---|
|  | 1046 | \enit@itemerror | 
|---|
|  | 1047 | \else | 
|---|
|  | 1048 | \ifenit@noinitem\else | 
|---|
|  | 1049 | \ifhmode\unskip\fi | 
|---|
|  | 1050 | \@ifundefined{enit@itemjoin@s}% | 
|---|
|  | 1051 | {\enit@itemjoin}% | 
|---|
|  | 1052 | {\enit@itemjoin@s}% | 
|---|
|  | 1053 | \fi | 
|---|
|  | 1054 | \unhbox\@labels | 
|---|
|  | 1055 | \enit@afterlabel | 
|---|
|  | 1056 | \unhbox\enit@inbox | 
|---|
|  | 1057 | \enit@afteritem | 
|---|
|  | 1058 | \fi | 
|---|
|  | 1059 | \else | 
|---|
|  | 1060 | \unskip | 
|---|
|  | 1061 | \if@newlist | 
|---|
|  | 1062 | \enit@itemerror | 
|---|
|  | 1063 | \fi | 
|---|
|  | 1064 | \fi | 
|---|
|  | 1065 | \enit@after | 
|---|
|  | 1066 | \global\advance\@listdepth\m@ne | 
|---|
|  | 1067 | \global\@inlabelfalse | 
|---|
|  | 1068 | \if@newlist | 
|---|
|  | 1069 | \global\@newlistfalse | 
|---|
|  | 1070 | \@noitemerr | 
|---|
|  | 1071 | \fi | 
|---|
|  | 1072 | \ifx\enit@series\relax\else % discards resume* list, too | 
|---|
|  | 1073 | \ifnum\enit@resuming=\@ne % ie, series | 
|---|
|  | 1074 | \enit@setresumekeys{series@\enit@series}\global\global | 
|---|
|  | 1075 | \else % ie, resume, resume* (save count, but not keys) | 
|---|
|  | 1076 | \enit@setresumekeys{series@\enit@series}\@gobblefour\global | 
|---|
|  | 1077 | \fi | 
|---|
|  | 1078 | \enit@afterlist | 
|---|
|  | 1079 | \fi | 
|---|
|  | 1080 | \ifnum\enit@resuming=\thr@@ % ie, resume* list (save count only) | 
|---|
|  | 1081 | \enit@setresumekeys\@currenvir\@gobblefour\global | 
|---|
|  | 1082 | \else | 
|---|
|  | 1083 | \enit@setresumekeys\@currenvir\@empty\@empty | 
|---|
|  | 1084 | \fi | 
|---|
|  | 1085 | \aftergroup\enit@afterlist} | 
|---|
|  | 1086 |  | 
|---|
|  | 1087 | % \@item: unboxed | 
|---|
|  | 1088 | % --------------- | 
|---|
|  | 1089 |  | 
|---|
|  | 1090 | \def\enit@noboxitem[#1]{% | 
|---|
|  | 1091 | \if@newlist | 
|---|
|  | 1092 | \leavevmode % ships pending labels out | 
|---|
|  | 1093 | \global\@newlistfalse | 
|---|
|  | 1094 | \else | 
|---|
|  | 1095 | \ifhmode | 
|---|
|  | 1096 | \unskip | 
|---|
|  | 1097 | \enit@itemjoin | 
|---|
|  | 1098 | \else | 
|---|
|  | 1099 | \noindent | 
|---|
|  | 1100 | \fi | 
|---|
|  | 1101 | \fi | 
|---|
|  | 1102 | \if@noitemarg | 
|---|
|  | 1103 | \@noitemargfalse | 
|---|
|  | 1104 | \if@nmbrlist | 
|---|
|  | 1105 | \refstepcounter{\@listctr}% after \unskip (hyperref) | 
|---|
|  | 1106 | \fi | 
|---|
|  | 1107 | \fi | 
|---|
|  | 1108 | \mbox{\makelabel{#1}}% | 
|---|
|  | 1109 | \enit@afterlabel | 
|---|
|  | 1110 | \ignorespaces} | 
|---|
|  | 1111 |  | 
|---|
|  | 1112 | % \@item: boxed | 
|---|
|  | 1113 | % ------------ | 
|---|
|  | 1114 | % | 
|---|
|  | 1115 | % We don't want \item to be executed locally, because it sets a flag | 
|---|
|  | 1116 | % (and hyperref adds another flag, too).  So, we redefine it inside | 
|---|
|  | 1117 | % the box to \enit@endinbox which ends the box and then use the actual | 
|---|
|  | 1118 | % (outer) \item.  labels are stored in another box, to detect empty | 
|---|
|  | 1119 | % boxes, ie, misplaced \item's.  Note the 2nd \item ends collecting | 
|---|
|  | 1120 | % the 1st item and ships it out, while the 3rd \item ends collecting | 
|---|
|  | 1121 | % the 2nd item, puts the itemjoin and then ships the 2nd item out. | 
|---|
|  | 1122 | % The flag enit@noinitem keeps track of that. | 
|---|
|  | 1123 |  | 
|---|
|  | 1124 | \newif\ifenit@noinitem | 
|---|
|  | 1125 |  | 
|---|
|  | 1126 | \def\enit@endinbox{% | 
|---|
|  | 1127 | \unskip | 
|---|
|  | 1128 | \xdef\enit@afteritem{% | 
|---|
|  | 1129 | \ifhmode\spacefactor\the\spacefactor\relax\fi}% | 
|---|
|  | 1130 | \color@endgroup | 
|---|
|  | 1131 | \egroup | 
|---|
|  | 1132 | \enit@outeritem} | 
|---|
|  | 1133 |  | 
|---|
|  | 1134 | \def\enit@boxitem[#1]{% | 
|---|
|  | 1135 | \if@newlist | 
|---|
|  | 1136 | \global\@newlistfalse | 
|---|
|  | 1137 | \ifdim\wd\enit@inbox>\z@ | 
|---|
|  | 1138 | \enit@itemerror | 
|---|
|  | 1139 | \fi | 
|---|
|  | 1140 | \enit@noinitemtrue | 
|---|
|  | 1141 | \leavevmode % ships pending labels out | 
|---|
|  | 1142 | \else | 
|---|
|  | 1143 | \ifdim\wd\enit@inbox=\z@ | 
|---|
|  | 1144 | \enit@itemerror | 
|---|
|  | 1145 | \else | 
|---|
|  | 1146 | \ifenit@noinitem | 
|---|
|  | 1147 | \enit@noinitemfalse | 
|---|
|  | 1148 | \else | 
|---|
|  | 1149 | \ifhmode\unskip\fi | 
|---|
|  | 1150 | \enit@itemjoin | 
|---|
|  | 1151 | \fi | 
|---|
|  | 1152 | \unhbox\@labels | 
|---|
|  | 1153 | \enit@afterlabel | 
|---|
|  | 1154 | \unhbox\enit@inbox | 
|---|
|  | 1155 | \enit@afteritem | 
|---|
|  | 1156 | \fi | 
|---|
|  | 1157 | \fi | 
|---|
|  | 1158 | \if@noitemarg | 
|---|
|  | 1159 | \@noitemargfalse | 
|---|
|  | 1160 | \if@nmbrlist | 
|---|
|  | 1161 | \refstepcounter{\@listctr}% | 
|---|
|  | 1162 | \fi | 
|---|
|  | 1163 | \fi | 
|---|
|  | 1164 | \sbox\@labels{\makelabel{#1}}% | 
|---|
|  | 1165 | \let\enit@afteritem\relax | 
|---|
|  | 1166 | \setbox\enit@inbox\hbox\bgroup\color@begingroup | 
|---|
|  | 1167 | \let\item\enit@endinbox | 
|---|
|  | 1168 | \hskip1sp % in case the first thing is \label | 
|---|
|  | 1169 | \ignorespaces} | 
|---|
|  | 1170 |  | 
|---|
|  | 1171 | % Pause item | 
|---|
|  | 1172 | % ---------- | 
|---|
|  | 1173 | % | 
|---|
|  | 1174 | % To do. | 
|---|
|  | 1175 | % | 
|---|
|  | 1176 | % The three types | 
|---|
|  | 1177 | % =============== | 
|---|
|  | 1178 | % | 
|---|
|  | 1179 | % enumerate and enumerate* | 
|---|
|  | 1180 | % ------------------------ | 
|---|
|  | 1181 | % | 
|---|
|  | 1182 | % The following has 4 arguments, which in enumerate are: | 
|---|
|  | 1183 | % \@enumdepth, enum, \thr@@, <format>. | 
|---|
|  | 1184 | % In user defined environments they are: | 
|---|
|  | 1185 | % \enitdp@<name>, <name>, <max-depth>, <format> | 
|---|
|  | 1186 |  | 
|---|
|  | 1187 | \def\enit@enumerate{% | 
|---|
|  | 1188 | \let\enit@list\enit@dylist | 
|---|
|  | 1189 | \enit@enumerate@i} | 
|---|
|  | 1190 |  | 
|---|
|  | 1191 | \@namedef{enit@enumerate*}{% | 
|---|
|  | 1192 | \let\enit@list\enit@inlist | 
|---|
|  | 1193 | \enit@enumerate@i} | 
|---|
|  | 1194 |  | 
|---|
|  | 1195 | \def\enit@enumerate@i#1#2#3#4{% | 
|---|
|  | 1196 | \ifnum#1>#3\relax | 
|---|
|  | 1197 | \enit@toodeep | 
|---|
|  | 1198 | \else | 
|---|
|  | 1199 | \enit@prelist\z@{#1}{#2}% | 
|---|
|  | 1200 | \edef\@enumctr{#2\romannumeral#1}% | 
|---|
|  | 1201 | \expandafter | 
|---|
|  | 1202 | \enit@list | 
|---|
|  | 1203 | \csname label\@enumctr\endcsname | 
|---|
|  | 1204 | {\usecounter\@enumctr | 
|---|
|  | 1205 | \let\enit@calc\z@ | 
|---|
|  | 1206 | \def\makelabel##1{\enit@align{\enit@format{##1}}}% | 
|---|
|  | 1207 | \enit@preset{#2}{#1}{#4}% | 
|---|
|  | 1208 | \enit@normlabel\@itemlabel\@itemlabel | 
|---|
|  | 1209 | \enit@ref | 
|---|
|  | 1210 | \enit@calcleft | 
|---|
|  | 1211 | \enit@before}% | 
|---|
|  | 1212 | \fi} | 
|---|
|  | 1213 |  | 
|---|
|  | 1214 | \let\enit@endenumerate\enit@endlist | 
|---|
|  | 1215 | \@namedef{enit@endenumerate*}{\enit@endinlist} | 
|---|
|  | 1216 |  | 
|---|
|  | 1217 | % itemize and itemize* | 
|---|
|  | 1218 | % -------------------- | 
|---|
|  | 1219 | % | 
|---|
|  | 1220 | % The following has 4 arguments, which in itemize are: | 
|---|
|  | 1221 | % \@itemdepth, item, \thr@@, <format>. | 
|---|
|  | 1222 | % In user defined environments they are: | 
|---|
|  | 1223 | % \enitdp@<name>, <name>, <max-depth>, <format> | 
|---|
|  | 1224 |  | 
|---|
|  | 1225 | \def\enit@itemize{% | 
|---|
|  | 1226 | \let\enit@list\enit@dylist | 
|---|
|  | 1227 | \enit@itemize@i} | 
|---|
|  | 1228 |  | 
|---|
|  | 1229 | \@namedef{enit@itemize*}{% | 
|---|
|  | 1230 | \let\enit@list\enit@inlist | 
|---|
|  | 1231 | \enit@itemize@i} | 
|---|
|  | 1232 |  | 
|---|
|  | 1233 | \def\enit@itemize@i#1#2#3#4{% | 
|---|
|  | 1234 | \ifnum#1>#3\relax | 
|---|
|  | 1235 | \enit@toodeep | 
|---|
|  | 1236 | \else | 
|---|
|  | 1237 | \enit@prelist\@ne{#1}{#2}% | 
|---|
|  | 1238 | \edef\@itemitem{label#2\romannumeral#1}% | 
|---|
|  | 1239 | \expandafter | 
|---|
|  | 1240 | \enit@list | 
|---|
|  | 1241 | \csname\@itemitem\endcsname | 
|---|
|  | 1242 | {\let\enit@calc\z@ | 
|---|
|  | 1243 | \def\makelabel##1{\enit@align{\enit@format{##1}}}% | 
|---|
|  | 1244 | \enit@preset{#2}{#1}{#4}% | 
|---|
|  | 1245 | \enit@calcleft | 
|---|
|  | 1246 | \enit@before}% | 
|---|
|  | 1247 | \fi} | 
|---|
|  | 1248 |  | 
|---|
|  | 1249 | \let\enit@enditemize\enit@endlist | 
|---|
|  | 1250 | \@namedef{enit@enditemize*}{\enit@endinlist} | 
|---|
|  | 1251 |  | 
|---|
|  | 1252 | % description and description* | 
|---|
|  | 1253 | % ---------------------------- | 
|---|
|  | 1254 | % | 
|---|
|  | 1255 | % Make sure \descriptionlabel exists: | 
|---|
|  | 1256 |  | 
|---|
|  | 1257 | \providecommand*\descriptionlabel[1]{% | 
|---|
|  | 1258 | \hspace\labelsep | 
|---|
|  | 1259 | \normalfont\bfseries#1} | 
|---|
|  | 1260 |  | 
|---|
|  | 1261 | \@namedef{enit@description*}{% | 
|---|
|  | 1262 | \let\enit@list\enit@inlist | 
|---|
|  | 1263 | \enit@description@i} | 
|---|
|  | 1264 |  | 
|---|
|  | 1265 | \def\enit@description{% | 
|---|
|  | 1266 | \let\enit@list\enit@dylist | 
|---|
|  | 1267 | \enit@description@i} | 
|---|
|  | 1268 |  | 
|---|
|  | 1269 | \def\enit@description@i#1#2#3#4{% | 
|---|
|  | 1270 | \ifnum#1>#3\relax | 
|---|
|  | 1271 | \enit@toodeep | 
|---|
|  | 1272 | \else | 
|---|
|  | 1273 | \enit@list{}% | 
|---|
|  | 1274 | {\let\enit@type\tw@ | 
|---|
|  | 1275 | \advance#1\@ne | 
|---|
|  | 1276 | \labelwidth\z@ | 
|---|
|  | 1277 | \enit@align@left | 
|---|
|  | 1278 | \let\makelabel\descriptionlabel | 
|---|
|  | 1279 | \enit@style@standard | 
|---|
|  | 1280 | \enit@preset{#2}{#1}{#4}% | 
|---|
|  | 1281 | \enit@calcleft | 
|---|
|  | 1282 | \let\enit@svlabel\makelabel | 
|---|
|  | 1283 | \def\makelabel##1{% | 
|---|
|  | 1284 | \labelsep\z@ | 
|---|
|  | 1285 | \ifenit@boxdesc | 
|---|
|  | 1286 | \enit@svlabel{\enit@align{\enit@format{##1}}}% | 
|---|
|  | 1287 | \else | 
|---|
|  | 1288 | \nobreak | 
|---|
|  | 1289 | \enit@svlabel{\enit@format{##1}}% | 
|---|
|  | 1290 | \aftergroup\enit@postlabel | 
|---|
|  | 1291 | \fi}% | 
|---|
|  | 1292 | \enit@before}% | 
|---|
|  | 1293 | \fi} | 
|---|
|  | 1294 |  | 
|---|
|  | 1295 | \let\enit@enddescription\enit@endlist | 
|---|
|  | 1296 | \@namedef{enit@enddescription*}{\enit@endinlist} | 
|---|
|  | 1297 |  | 
|---|
|  | 1298 | % trivlist | 
|---|
|  | 1299 | % ======== | 
|---|
|  | 1300 |  | 
|---|
|  | 1301 | \def\enit@trivlist{% | 
|---|
|  | 1302 | \let\enit@type\tw@ | 
|---|
|  | 1303 | \parsep\parskip | 
|---|
|  | 1304 | \csname @list\romannumeral\the\@listdepth\endcsname | 
|---|
|  | 1305 | \@nmbrlistfalse | 
|---|
|  | 1306 | \enit@setkeys{trivlist}% | 
|---|
|  | 1307 | \enit@setkeys{trivlist\romannumeral\@listdepth}% | 
|---|
|  | 1308 | \@trivlist | 
|---|
|  | 1309 | \labelwidth\z@ | 
|---|
|  | 1310 | \leftmargin\z@ | 
|---|
|  | 1311 | \itemindent\z@ | 
|---|
|  | 1312 | \let\@itemlabel\@empty | 
|---|
|  | 1313 | \def\makelabel##1{##1}} | 
|---|
|  | 1314 |  | 
|---|
|  | 1315 | % Description styles | 
|---|
|  | 1316 | % ================== | 
|---|
|  | 1317 | % | 
|---|
|  | 1318 | % the next definition is somewhat tricky because labels are boxed. | 
|---|
|  | 1319 | % That's fine when the label is just placed at the begining of a line | 
|---|
|  | 1320 | % of text, but when the box is placed without horizontal material, | 
|---|
|  | 1321 | % leading is killed.  So, we need change somehow \box to \unhbox, but | 
|---|
|  | 1322 | % I don't want to modify \@item.  The code below presumes \@item has | 
|---|
|  | 1323 | % not been changed and arguments gobble the part setting \@labels, | 
|---|
|  | 1324 | % which is replaced by a new one. | 
|---|
|  | 1325 | % | 
|---|
|  | 1326 | % The default value in description is itemindent=!, but some styles | 
|---|
|  | 1327 | % (those whose item text begin at a fixed place, ie, nextline, | 
|---|
|  | 1328 | % multiline and sameline) change it to labelwidth=!. | 
|---|
|  | 1329 | % | 
|---|
|  | 1330 | % We must be careful with the group and the whatsit added by color to | 
|---|
|  | 1331 | % boxes.  Alignment is applied here and some adjustments in skips are | 
|---|
|  | 1332 | % necessary to get proper line breaks (including a \nobreak at the | 
|---|
|  | 1333 | % beginning of \enit@align, ie, after the first whatsit, see above). | 
|---|
|  | 1334 | % To "pass" the inner group added by color to the box, \enit@postlabel | 
|---|
|  | 1335 | % ckecks if the following is }.  ie, \egroup -- if not, the box has | 
|---|
|  | 1336 | % not reached yet its end. | 
|---|
|  | 1337 |  | 
|---|
|  | 1338 | \def\enit@postlabel{% | 
|---|
|  | 1339 | \@ifnextchar\egroup | 
|---|
|  | 1340 | {\aftergroup\enit@postlabel}% | 
|---|
|  | 1341 | {\enit@postlabel@i}} | 
|---|
|  | 1342 |  | 
|---|
|  | 1343 | \def\enit@postlabel@i#1#2#3#4#5{% | 
|---|
|  | 1344 | \def\enit@lblpenalty{\penalty\z@\hskip\skip@}% | 
|---|
|  | 1345 | \ifenit@nextline | 
|---|
|  | 1346 | \ifdim\wd\@tempboxa>\labelwidth | 
|---|
|  | 1347 | \def\enit@lblpenalty{\newline\@nobreaktrue}% | 
|---|
|  | 1348 | \fi | 
|---|
|  | 1349 | \fi | 
|---|
|  | 1350 | \everypar{% | 
|---|
|  | 1351 | \@minipagefalse | 
|---|
|  | 1352 | \global\@newlistfalse | 
|---|
|  | 1353 | \if@inlabel | 
|---|
|  | 1354 | \global\@inlabelfalse | 
|---|
|  | 1355 | {\setbox\z@\lastbox | 
|---|
|  | 1356 | \ifvoid\z@ | 
|---|
|  | 1357 | \kern-\itemindent | 
|---|
|  | 1358 | \fi}% | 
|---|
|  | 1359 | \unhbox\@labels | 
|---|
|  | 1360 | \skip@\lastskip % Save last \labelsep | 
|---|
|  | 1361 | \unskip % Remove it | 
|---|
|  | 1362 | \enit@lblpenalty % Restore it, after penalty | 
|---|
|  | 1363 | \fi | 
|---|
|  | 1364 | \if@nobreak | 
|---|
|  | 1365 | \@nobreakfalse | 
|---|
|  | 1366 | \clubpenalty\@M | 
|---|
|  | 1367 | \else | 
|---|
|  | 1368 | \clubpenalty\@clubpenalty | 
|---|
|  | 1369 | \everypar{}% | 
|---|
|  | 1370 | \fi}% | 
|---|
|  | 1371 | \def\enit@a{#1#2#3#4}% | 
|---|
|  | 1372 | \def\enit@b{\global\setbox\@labels\hbox}% | 
|---|
|  | 1373 | \ifx\enit@a\enit@b\else | 
|---|
|  | 1374 | \enit@error{Non standard \string\item}% | 
|---|
|  | 1375 | {A class or a package has redefined \string\item\MessageBreak | 
|---|
|  | 1376 | and I do not know how to continue}% | 
|---|
|  | 1377 | \fi | 
|---|
|  | 1378 | \global\setbox\@labels\hbox{% | 
|---|
|  | 1379 | \unhbox\@labels | 
|---|
|  | 1380 | \hskip\itemindent | 
|---|
|  | 1381 | \hskip-\labelwidth | 
|---|
|  | 1382 | \hskip-\labelsep | 
|---|
|  | 1383 | \ifdim\wd\@tempboxa>\labelwidth | 
|---|
|  | 1384 | \enit@align{\unhbox\@tempboxa}\unskip % Removes (typically) \hfil | 
|---|
|  | 1385 | \else | 
|---|
|  | 1386 | \leavevmode\hbox to\labelwidth{\enit@align{\unhbox\@tempboxa}}% | 
|---|
|  | 1387 | \fi | 
|---|
|  | 1388 | \hskip\labelsep}} | 
|---|
|  | 1389 |  | 
|---|
|  | 1390 | % +=============================+ | 
|---|
|  | 1391 | % |     (RE)DEFINING LISTS      | | 
|---|
|  | 1392 | % +=============================+ | 
|---|
|  | 1393 | % | 
|---|
|  | 1394 | % Set keys/values | 
|---|
|  | 1395 | % =============== | 
|---|
|  | 1396 | % Remember \romannumeral0 expands to nothing. | 
|---|
|  | 1397 | % #1 = list name, #2 = level, #3 = flag if star, #4 = keys/values | 
|---|
|  | 1398 |  | 
|---|
|  | 1399 | \def\enit@saveset#1#2#3#4{% | 
|---|
|  | 1400 | \setcounter{enit@cnt}{#2}% | 
|---|
|  | 1401 | \ifcase#3% | 
|---|
|  | 1402 | \expandafter | 
|---|
|  | 1403 | \def\csname enit@@#1\romannumeral\c@enit@cnt\endcsname{#4}% | 
|---|
|  | 1404 | \or | 
|---|
|  | 1405 | \expandafter\let\expandafter\enit@b | 
|---|
|  | 1406 | \csname enit@@#1\romannumeral\c@enit@cnt\endcsname | 
|---|
|  | 1407 | \ifx\enit@b\relax | 
|---|
|  | 1408 | \let\enit@b\@empty | 
|---|
|  | 1409 | \fi | 
|---|
|  | 1410 | \expandafter\def | 
|---|
|  | 1411 | \csname enit@@#1\romannumeral\c@enit@cnt\expandafter\endcsname | 
|---|
|  | 1412 | \expandafter{\enit@b,#4}% | 
|---|
|  | 1413 | \fi} | 
|---|
|  | 1414 |  | 
|---|
|  | 1415 | % To do: more robust tests (catch wrong names, but not easy) | 
|---|
|  | 1416 |  | 
|---|
|  | 1417 | % Internally, LaTeX uses a short name for enumerate (enum) | 
|---|
|  | 1418 | % and itemize (item). To be consistent with this convention, | 
|---|
|  | 1419 | % a couple of macros provide a "translation". I'm not very | 
|---|
|  | 1420 | % happy with the current implementation. | 
|---|
|  | 1421 |  | 
|---|
|  | 1422 | \def\enit@shortenumerate{enum} | 
|---|
|  | 1423 | \def\enit@shortitemize{item} | 
|---|
|  | 1424 |  | 
|---|
|  | 1425 | \newcommand\setlist{% | 
|---|
|  | 1426 | \@ifstar{\enit@setlist\@ne}{\enit@setlist\z@}} | 
|---|
|  | 1427 |  | 
|---|
|  | 1428 | \def\enit@setlist#1{% | 
|---|
|  | 1429 | \@ifnextchar[{\enit@setlist@x#1}{\enit@setlist@i#1\@empty}} | 
|---|
|  | 1430 |  | 
|---|
|  | 1431 | % Let's accept \setlist[]*{}, too, because an error in <=3.5.1 | 
|---|
|  | 1432 |  | 
|---|
|  | 1433 | \def\enit@setlist@x#1[#2]{% | 
|---|
|  | 1434 | \@ifstar{\enit@setlist@i\@ne{#2}}{\enit@setlist@i#1{#2}}} | 
|---|
|  | 1435 |  | 
|---|
|  | 1436 | % #1 list names/levels, #2 keys/values | 
|---|
|  | 1437 |  | 
|---|
|  | 1438 | % #1 star flag, #2 list names/levels, #3 keys/values | 
|---|
|  | 1439 |  | 
|---|
|  | 1440 | \def\enit@setlist@i#1#2#3{% | 
|---|
|  | 1441 | \let\enit@eltnames\relax | 
|---|
|  | 1442 | \let\enit@b\@empty | 
|---|
|  | 1443 | \let\enit@eltlevels\relax | 
|---|
|  | 1444 | \let\enit@c\@empty | 
|---|
|  | 1445 | \protected@edef\enit@a{#2}% | 
|---|
|  | 1446 | \@for\enit@a:=\enit@a\do{% the 2nd enit@a is first expanded | 
|---|
|  | 1447 | \@ifundefined{enitdp@\enit@meaning\enit@a}% | 
|---|
|  | 1448 | {\edef\enit@c{\enit@c\enit@eltlevels{\enit@a}}}% | 
|---|
|  | 1449 | {\@ifundefined{enit@short\enit@meaning\enit@a}% | 
|---|
|  | 1450 | \@empty | 
|---|
|  | 1451 | {\edef\enit@a{\@nameuse{enit@short\enit@a}}}% | 
|---|
|  | 1452 | \edef\enit@b{\enit@b\enit@eltnames{\enit@a}}}}% | 
|---|
|  | 1453 | \ifx\enit@b\@empty | 
|---|
|  | 1454 | \def\enit@b{\enit@eltnames{list}}% | 
|---|
|  | 1455 | \fi | 
|---|
|  | 1456 | \ifx\enit@c\@empty | 
|---|
|  | 1457 | \def\enit@c{\enit@eltlevels{0}}% | 
|---|
|  | 1458 | \fi | 
|---|
|  | 1459 | \def\enit@eltnames##1{% | 
|---|
|  | 1460 | \def\enit@a{##1}% | 
|---|
|  | 1461 | \enit@c}% | 
|---|
|  | 1462 | \def\enit@eltlevels##1{% | 
|---|
|  | 1463 | \enit@saveset\enit@a{##1}#1{#3}}% | 
|---|
|  | 1464 | \enit@b}% | 
|---|
|  | 1465 |  | 
|---|
|  | 1466 | % Deprecated: | 
|---|
|  | 1467 |  | 
|---|
|  | 1468 | \newcommand\setdisplayed[1][0]{\setlist[trivlist,#1]} | 
|---|
|  | 1469 | \let\enitdp@trivlist\@empty % dummy, let know it exists | 
|---|
|  | 1470 | \newcommand\setenumerate[1][0]{\setlist[enumerate,#1]} | 
|---|
|  | 1471 | \newcommand\setitemize[1][0]{\setlist[itemize,#1]} | 
|---|
|  | 1472 | \newcommand\setdescription[1][0]{\setlist[description,#1]} | 
|---|
|  | 1473 |  | 
|---|
|  | 1474 | % New lists | 
|---|
|  | 1475 | % ========= | 
|---|
|  | 1476 |  | 
|---|
|  | 1477 | % When defining a list, \label... and counters must be defined | 
|---|
|  | 1478 | % for each level, too: | 
|---|
|  | 1479 |  | 
|---|
|  | 1480 | \def\enit@xset@itemize{% | 
|---|
|  | 1481 | \@namedef{label\enit@c\romannumeral\count@}{% | 
|---|
|  | 1482 | \enit@error{Undefined label}% | 
|---|
|  | 1483 | {You have defined a list, but labels have | 
|---|
|  | 1484 | not been setup.\MessageBreak | 
|---|
|  | 1485 | You can set the label field with \string\setlist.}}} | 
|---|
|  | 1486 | \@namedef{enit@xset@itemize*}{\enit@xset@itemize} | 
|---|
|  | 1487 |  | 
|---|
|  | 1488 | \def\enit@xset@enumerate{% | 
|---|
|  | 1489 | \enit@xset@itemize | 
|---|
|  | 1490 | \@ifundefined{c@\enit@c\romannumeral\count@}% | 
|---|
|  | 1491 | {\@definecounter{\enit@c\romannumeral\count@}}{}} | 
|---|
|  | 1492 | \@namedef{enit@xset@enumerate*}{\enit@xset@enumerate} | 
|---|
|  | 1493 |  | 
|---|
|  | 1494 | \let\enit@xset@description\@empty | 
|---|
|  | 1495 | \@namedef{enit@xset@description*}{\enit@xset@description} | 
|---|
|  | 1496 |  | 
|---|
|  | 1497 | \newcommand\newlist{\enit@newlist\newenvironment} | 
|---|
|  | 1498 | \newcommand\renewlist{\enit@newlist\renewenvironment} | 
|---|
|  | 1499 |  | 
|---|
|  | 1500 | % <new/renew>, <name>, <type>, <max-depth> | 
|---|
|  | 1501 |  | 
|---|
|  | 1502 | \def\enit@newlist#1#2#3#4{% | 
|---|
|  | 1503 | \@ifundefined{enit@xset@#3}% | 
|---|
|  | 1504 | {\enit@error{Unknown list type `#3')}% | 
|---|
|  | 1505 | {Valid types are: | 
|---|
|  | 1506 | enumerate, itemize, description,\messageBreak | 
|---|
|  | 1507 | enumerate*, itemize*, description*}}% | 
|---|
|  | 1508 | {}% | 
|---|
|  | 1509 | \setcounter{enit@cnt}{#4}% | 
|---|
|  | 1510 | \count@\@ne | 
|---|
|  | 1511 | \@ifundefined{enit@short#2}% | 
|---|
|  | 1512 | {\def\enit@c{#2}}% | 
|---|
|  | 1513 | {\edef\enit@c{\csname enit@short#2\endcsname}}% | 
|---|
|  | 1514 | \loop | 
|---|
|  | 1515 | \@nameuse{enit@xset@#3}% Uses \enit@c | 
|---|
|  | 1516 | \ifnum\count@<\c@enit@cnt | 
|---|
|  | 1517 | \advance\count@\@ne | 
|---|
|  | 1518 | \repeat | 
|---|
|  | 1519 | \@ifundefined{enitdp@#2}% | 
|---|
|  | 1520 | {\expandafter\newcount\csname enitdp@#2\endcsname}{}% | 
|---|
|  | 1521 | \csname enitdp@#2\endcsname\z@ | 
|---|
|  | 1522 | \advance\c@enit@cnt\m@ne | 
|---|
|  | 1523 | \edef\enit@a{% | 
|---|
|  | 1524 | \noexpand#1{#2}[1][]% | 
|---|
|  | 1525 | {\enit@noexcs{enit@#3}% | 
|---|
|  | 1526 | \enit@noexcs{enitdp@#2}% | 
|---|
|  | 1527 | {\enit@c}% | 
|---|
|  | 1528 | {\the\c@enit@cnt}% | 
|---|
|  | 1529 | {####1}}% | 
|---|
|  | 1530 | {\enit@noexcs{enit@end#3}}}% | 
|---|
|  | 1531 | \enit@a} | 
|---|
|  | 1532 |  | 
|---|
|  | 1533 | % Changing the default nesting limit | 
|---|
|  | 1534 | % ---------------------------------- | 
|---|
|  | 1535 |  | 
|---|
|  | 1536 | \newcommand\setlistdepth{\def\enit@listdepth} | 
|---|
|  | 1537 | \setlistdepth{5} | 
|---|
|  | 1538 |  | 
|---|
|  | 1539 | % +=============================+ | 
|---|
|  | 1540 | % |       PACKAGE OPTIONS       | | 
|---|
|  | 1541 | % +=============================+ | 
|---|
|  | 1542 |  | 
|---|
|  | 1543 | \newif\ifenit@loadonly | 
|---|
|  | 1544 |  | 
|---|
|  | 1545 | \DeclareOption{ignoredisplayed}{\let\enit@trivlist\trivlist} | 
|---|
|  | 1546 | \DeclareOption{loadonly}{\enit@loadonlytrue} | 
|---|
|  | 1547 | \DeclareOption{shortlabels} | 
|---|
|  | 1548 | {\def\enit@shl#1{% | 
|---|
|  | 1549 | \ifnum\enit@type=\tw@ | 
|---|
|  | 1550 | \enit@toks{#1}% | 
|---|
|  | 1551 | \else | 
|---|
|  | 1552 | \def\enit@c{#1}% | 
|---|
|  | 1553 | \enit@first#1,\@nil\@@nil % Returns enit@toks | 
|---|
|  | 1554 | \fi}} | 
|---|
|  | 1555 | \DeclareOption{inline} | 
|---|
|  | 1556 | {\newenvironment{enumerate*}[1][]% | 
|---|
|  | 1557 | {\@nameuse{enit@enumerate*}\enitdp@enumerate{enum}\thr@@{#1}} | 
|---|
|  | 1558 | {\@nameuse{enit@endenumerate*}} | 
|---|
|  | 1559 | \newenvironment{itemize*}[1][]% | 
|---|
|  | 1560 | {\@nameuse{enit@itemize*}\enitdp@itemize{item}\thr@@{#1}} | 
|---|
|  | 1561 | {\@nameuse{enit@enditemize*}} | 
|---|
|  | 1562 | \newenvironment{description*}[1][]% | 
|---|
|  | 1563 | {\@nameuse{enit@description*}\enitdp@description{description}\@M{#1}} | 
|---|
|  | 1564 | {\@nameuse{enit@enddescription*}}} | 
|---|
|  | 1565 |  | 
|---|
|  | 1566 | \let\enit@shl\enit@toks | 
|---|
|  | 1567 |  | 
|---|
|  | 1568 | \ProcessOptions | 
|---|
|  | 1569 |  | 
|---|
|  | 1570 | \let\trivlist\enit@trivlist | 
|---|
|  | 1571 |  | 
|---|
|  | 1572 | % If there is no loadonly, redefine the basic lists: | 
|---|
|  | 1573 |  | 
|---|
|  | 1574 | \ifenit@loadonly\else | 
|---|
|  | 1575 |  | 
|---|
|  | 1576 | \let\enitdp@enumerate\@enumdepth | 
|---|
|  | 1577 | \renewenvironment{enumerate}[1][] | 
|---|
|  | 1578 | {\enit@enumerate\enitdp@enumerate{enum}\thr@@{#1}} | 
|---|
|  | 1579 | {\enit@endenumerate} | 
|---|
|  | 1580 |  | 
|---|
|  | 1581 | \let\enitdp@itemize\@itemdepth | 
|---|
|  | 1582 | \renewenvironment{itemize}[1][] | 
|---|
|  | 1583 | {\enit@itemize\enitdp@itemize{item}\thr@@{#1}} | 
|---|
|  | 1584 | {\enit@enditemize} | 
|---|
|  | 1585 |  | 
|---|
|  | 1586 | \newcount\enitdp@description | 
|---|
|  | 1587 | \renewenvironment{description}[1][] | 
|---|
|  | 1588 | {\enit@description\enitdp@description{description}\@M{#1}} | 
|---|
|  | 1589 | {\enit@enddescription} | 
|---|
|  | 1590 |  | 
|---|
|  | 1591 | \fi | 
|---|
|  | 1592 |  | 
|---|
|  | 1593 | \endinput | 
|---|