paralist.sty 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473
  1. %%
  2. %% This is file `paralist.sty',
  3. %% generated with the docstrip utility.
  4. %%
  5. %% The original source files were:
  6. %%
  7. %% paralist.dtx (with options: `package')
  8. %%
  9. %% Copyright 1998-2002 Bernd Schandl
  10. %% email schandl@gmx.net
  11. %% www http://schandl.gmxhome.de/paralist
  12. %%
  13. %% This file can be redistributed and/or modified under the terms
  14. %% of the LaTeX Project Public License distributed from CTAN
  15. %% archives in the directory macros/latex/base/lppl.txt; either
  16. %% version 1 of the license, or (at your option) any later version.
  17. %%
  18. %% \CharacterTable
  19. %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  20. %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
  21. %% Digits \0\1\2\3\4\5\6\7\8\9
  22. %% Exclamation \! Double quote \" Hash (number) \#
  23. %% Dollar \$ Percent \% Ampersand \&
  24. %% Acute accent \' Left paren \( Right paren \)
  25. %% Asterisk \* Plus \+ Comma \,
  26. %% Minus \- Point \. Solidus \/
  27. %% Colon \: Semicolon \; Less than \<
  28. %% Equals \= Greater than \> Question mark \?
  29. %% Commercial at \@ Left bracket \[ Backslash \\
  30. %% Right bracket \] Circumflex \^ Underscore \_
  31. %% Grave accent \` Left brace \{ Vertical bar \|
  32. %% Right brace \} Tilde \~}
  33. %%
  34. \ProvidesPackage{paralist}%
  35. [2002/03/18 v2.3b Extended list environments (BS)]
  36. \NeedsTeXFormat{LaTeX2e}
  37. \newif\if@plnewitem\@plnewitemtrue
  38. \newif\if@plnewenum\@plnewenumtrue
  39. \newif\if@plalwaysadjust\@plalwaysadjustfalse
  40. \newif\if@plneveradjust\@plneveradjustfalse
  41. \newif\if@plneverdecrease\@plneverdecreasefalse
  42. \newif\if@pldefblank\@pldefblankfalse
  43. \newif\if@plpointedenum\@plpointedenumfalse
  44. \newif\if@plpointlessenum\@plpointlessenumfalse
  45. \newif\if@plflushright\@plflushrighttrue
  46. \newif\if@plloadcfg\@plloadcfgtrue
  47. \DeclareOption{newitem}{\@plnewitemtrue}
  48. \DeclareOption{olditem}{\@plnewitemfalse}
  49. \DeclareOption{newenum}{\@plnewenumtrue}
  50. \DeclareOption{oldenum}{\@plnewenumfalse}
  51. \DeclareOption{alwaysadjust}{\@plalwaysadjusttrue}
  52. \DeclareOption{neveradjust}{\@plneveradjusttrue}
  53. \DeclareOption{neverdecrease}{\@plneverdecreasetrue}
  54. \DeclareOption{increaseonly}{\@plneverdecreasetrue
  55. \PackageWarningNoLine{Paralist}{Option increaseonly deprecated.
  56. \MessageBreak Use option neverdecrease instead}}
  57. \DeclareOption{defblank}{\@pldefblanktrue}
  58. \DeclareOption{pointedenum}{\@plpointedenumtrue}
  59. \DeclareOption{pointlessenum}{\@plpointlessenumtrue}
  60. \DeclareOption{cfg}{\@plloadcfgtrue}
  61. \DeclareOption{nocfg}{\@plloadcfgfalse}
  62. \DeclareOption{flushright}{\@plflushrighttrue}
  63. \DeclareOption{flushleft}{\@plflushrightfalse}
  64. \ExecuteOptions{newitem,newenum,cfg,flushright}
  65. \ProcessOptions\relax
  66. \if@plalwaysadjust\@plneveradjustfalse\fi
  67. \newlength{\pltopsep}
  68. \newlength{\plpartopsep}
  69. \newlength{\plitemsep}
  70. \newlength{\plparsep}
  71. \setlength{\pltopsep}{0pt}
  72. \setlength{\plpartopsep}{0pt}
  73. \setlength{\plitemsep}{0pt}
  74. \setlength{\plparsep}{0pt}
  75. \def\if@empty#1#2#3{%
  76. \def\@tempa{#1}%
  77. \ifx\@tempa\@empty#2\else#3\fi}
  78. \def\pl@item[#1]{%
  79. \if@noitemarg
  80. \@noitemargfalse
  81. \if@nmbrlist
  82. \refstepcounter{\@listctr}%
  83. \fi
  84. \fi
  85. \settowidth{\@tempdima}{#1}%
  86. \ifdim\@tempdima>\z@\makelabel{{#1}}\nobreakspace\fi
  87. \ignorespaces
  88. }
  89. \def\paradescriptionlabel#1{{\normalfont\bfseries #1}}
  90. \if@plflushright
  91. \def\enumlabel#1{\hss#1}
  92. \else
  93. \def\enumlabel#1{#1\hfil}
  94. \fi
  95. \if@plflushright
  96. \def\itemlabel#1{\hss#1}
  97. \else
  98. \def\itemlabel#1{#1\hfil}
  99. \fi
  100. \newif\if@plmylabel\@plmylabelfalse
  101. \newif\if@pldoadjust\@pldoadjustfalse
  102. \def\@adjust@enum@labelwidth{%
  103. \if@plneveradjust\else
  104. \if@plalwaysadjust\@pldoadjusttrue\else
  105. \if@plmylabel\@pldoadjusttrue\fi
  106. \fi
  107. \fi
  108. \if@pldoadjust
  109. \csname c@\@enumctr\endcsname7
  110. \settowidth{\@tempdima}{%
  111. \csname label\@enumctr\endcsname\hspace{\labelsep}}%
  112. \advance\@listdepth by 1\relax
  113. \if@plneverdecrease
  114. \ifdim\@tempdima >
  115. \csname leftmargin\romannumeral\@listdepth\endcsname
  116. \csname leftmargin\romannumeral\@listdepth\endcsname
  117. \@tempdima
  118. \fi
  119. \else
  120. \csname leftmargin\romannumeral\@listdepth\endcsname
  121. \@tempdima
  122. \fi
  123. \advance\@listdepth by -1\relax
  124. \fi
  125. \@pldoadjustfalse
  126. \@plmylabelfalse}
  127. \def\@adjust@item@labelwidth{%
  128. \if@plneveradjust\else
  129. \if@plalwaysadjust\@pldoadjusttrue\else
  130. \if@plmylabel\@pldoadjusttrue\fi
  131. \fi
  132. \fi
  133. \if@pldoadjust
  134. \settowidth{\@tempdima}{%
  135. \csname\@itemitem\endcsname\hspace{\labelsep}}%
  136. \advance\@listdepth by 1\relax
  137. \if@plneverdecrease
  138. \ifdim\@tempdima >
  139. \csname leftmargin\romannumeral\@listdepth\endcsname
  140. \csname leftmargin\romannumeral\@listdepth\endcsname
  141. \@tempdima
  142. \fi
  143. \else
  144. \csname leftmargin\romannumeral\@listdepth\endcsname
  145. \@tempdima
  146. \fi
  147. \advance\@listdepth by -1\relax
  148. \fi
  149. \@pldoadjustfalse
  150. \@plmylabelfalse}
  151. \newtoks\pl@lab
  152. \def\pl@qmark{?}
  153. \def\pl@label#1#2{%
  154. \edef\pl@the{\noexpand#1{\@enumctr}}%
  155. \pl@lab\expandafter{\the\pl@lab\csname the\@enumctr\endcsname}%
  156. \advance\@tempcnta1
  157. \pl@loop}
  158. \def\pl@space{\afterassignment\pl@sp@ce\let\@tempa= }
  159. \def\pl@sp@ce{\pl@lab\expandafter{\the\pl@lab\space}\pl@loop}
  160. \def\pl@group#1{\pl@lab\expandafter{\the\pl@lab{#1}}\pl@loop}
  161. \def\pl@other#1{\pl@lab\expandafter{\the\pl@lab#1}\pl@loop}
  162. \def\pl@loop{\futurelet\pl@temp\pl@loop@}
  163. \def\pl@loop@{%
  164. \ifx A\pl@temp \def\@tempa{\pl@label\Alph }\else
  165. \ifx a\pl@temp \def\@tempa{\pl@label\alph }\else
  166. \ifx i\pl@temp \def\@tempa{\pl@label\roman }\else
  167. \ifx I\pl@temp \def\@tempa{\pl@label\Roman }\else
  168. \ifx 1\pl@temp \def\@tempa{\pl@label\arabic}\else
  169. \ifx \@sptoken\pl@temp \let\@tempa\pl@space \else
  170. \ifx \bgroup\pl@temp \let\@tempa\pl@group \else
  171. \ifx \@@@\pl@temp \let\@tempa\@gobble \else
  172. \let\@tempa\pl@other
  173. \pl@hook
  174. \fi\fi\fi\fi\fi\fi\fi\fi
  175. \@tempa}
  176. \providecommand\pl@hook{}
  177. \def\@enumlabel@#1[#2]{%
  178. \@plmylabeltrue
  179. \@tempcnta0
  180. \pl@lab{}%
  181. \let\pl@the\pl@qmark
  182. \expandafter\pl@loop\@gobble#2\@@@
  183. \ifnum\@tempcnta=1\else
  184. \PackageWarning{paralist}{Incorrect label; no or multiple
  185. counters.\MessageBreak The label is: \@gobble#2}%
  186. \fi
  187. \expandafter\edef\csname label\@enumctr\endcsname{\the\pl@lab}%
  188. \expandafter\let\csname the\@enumctr\endcsname\pl@the
  189. #1}
  190. \def\@itemlabel@#1[#2]{%
  191. \@plmylabeltrue
  192. \def\pl@itemitem{#2}%
  193. \def\@itemitem{pl@itemitem}%
  194. #1}
  195. \def\asparaenum{%
  196. \ifnum\@enumdepth>\thr@@
  197. \@toodeep
  198. \else
  199. \advance\@enumdepth\@ne
  200. \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
  201. \fi
  202. \@ifnextchar[{\@enumlabel@{\@asparaenum@}[}{\@asparaenum@}}
  203. \def\@asparaenum@{%
  204. \expandafter\list\csname label\@enumctr\endcsname{%
  205. \usecounter{\@enumctr}%
  206. \labelwidth\z@
  207. \labelsep.5em
  208. \leftmargin\z@
  209. \parsep\parskip
  210. \itemsep\z@
  211. \topsep\z@
  212. \partopsep\parskip
  213. \itemindent\parindent
  214. \advance\itemindent\labelsep
  215. \def\makelabel##1{##1}}}
  216. \let\endasparaenum\endlist
  217. \def\inparaenum{%
  218. \ifnum\@enumdepth>\thr@@
  219. \@toodeep
  220. \else
  221. \advance\@enumdepth\@ne
  222. \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
  223. \fi
  224. \@ifnextchar[{\@enumlabel@{\@inparaenum@}[}{\@inparaenum@}}
  225. \def\@inparaenum@{%
  226. \usecounter{\@enumctr}%
  227. \def\@itemlabel{\csname label\@enumctr\endcsname}%
  228. \let\@item\pl@item
  229. \def\makelabel##1{##1}%
  230. \ignorespaces}
  231. \let\endinparaenum\ignorespacesafterend
  232. \def\compactenum{%
  233. \ifnum\@enumdepth>\thr@@
  234. \@toodeep
  235. \else
  236. \advance\@enumdepth\@ne
  237. \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
  238. \fi
  239. \@ifnextchar[{\@enumlabel@{\@compactenum@}[}{\@compactenum@}}
  240. \def\@compactenum@{%
  241. \@adjust@enum@labelwidth
  242. \expandafter\list\csname label\@enumctr\endcsname{%
  243. \usecounter{\@enumctr}%
  244. \parsep\plparsep
  245. \itemsep\plitemsep
  246. \topsep\pltopsep
  247. \partopsep\plpartopsep
  248. \labelwidth
  249. \csname leftmargin\romannumeral\@listdepth\endcsname
  250. \advance\labelwidth-\labelsep
  251. \let\makelabel\enumlabel}}
  252. \let\endcompactenum\endlist
  253. \if@plnewenum
  254. \def\enumerate{%
  255. \ifnum \@enumdepth >\thr@@
  256. \@toodeep
  257. \else
  258. \advance\@enumdepth \@ne
  259. \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
  260. \fi
  261. \@ifnextchar[{\@enumlabel@{\@enumerate@}[}{\@enumerate@}}
  262. \def\@enumerate@{%
  263. \@adjust@enum@labelwidth
  264. \expandafter\list\csname label\@enumctr\endcsname{%
  265. \usecounter{\@enumctr}%
  266. \labelwidth
  267. \csname leftmargin\romannumeral\@listdepth\endcsname
  268. \advance\labelwidth-\labelsep
  269. \let\makelabel\enumlabel}}
  270. \fi
  271. \def\asparaitem{%
  272. \ifnum\@itemdepth>\thr@@
  273. \@toodeep
  274. \else
  275. \advance\@itemdepth\@ne
  276. \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
  277. \fi
  278. \@ifnextchar[{\@itemlabel@{\@asparaitem@}}{\@asparaitem@}}
  279. \def\@asparaitem@{%
  280. \expandafter\list\csname\@itemitem\endcsname{%
  281. \labelwidth\z@
  282. \labelsep.5em
  283. \leftmargin\z@
  284. \parsep\parskip
  285. \itemsep\z@
  286. \topsep\z@
  287. \partopsep\parskip
  288. \itemindent\parindent
  289. \advance\itemindent\labelsep
  290. \def\makelabel##1{##1}}}
  291. \let\endasparaitem\endlist
  292. \def\inparaitem{%
  293. \ifnum\@itemdepth>\thr@@
  294. \@toodeep
  295. \else
  296. \advance\@itemdepth\@ne
  297. \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
  298. \fi
  299. \@ifnextchar[{\@itemlabel@{\@inparaitem@}}{\@inparaitem@}}
  300. \def\@inparaitem@{%
  301. \def\@itemlabel{\csname\@itemitem\endcsname}%
  302. \let\@item\pl@item
  303. \def\makelabel##1{##1}%
  304. \ignorespaces}
  305. \let\endinparaitem\ignorespacesafterend
  306. \def\compactitem{%
  307. \ifnum\@itemdepth>\thr@@
  308. \@toodeep
  309. \else
  310. \advance\@itemdepth\@ne
  311. \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
  312. \fi
  313. \@ifnextchar[{\@itemlabel@{\@compactitem@}}{\@compactitem@}}
  314. \def\@compactitem@{%
  315. \@adjust@item@labelwidth
  316. \expandafter\list\csname\@itemitem\endcsname{%
  317. \parsep\plparsep
  318. \itemsep\plitemsep
  319. \topsep\pltopsep
  320. \partopsep\plpartopsep
  321. \labelwidth
  322. \csname leftmargin\romannumeral\@listdepth\endcsname
  323. \advance\labelwidth-\labelsep
  324. \let\makelabel\itemlabel}}
  325. \let\endcompactitem\endlist
  326. \if@plnewitem
  327. \def\itemize{%
  328. \ifnum \@itemdepth >\thr@@
  329. \@toodeep
  330. \else
  331. \advance\@itemdepth\@ne
  332. \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
  333. \fi
  334. \@ifnextchar[{\@itemlabel@{\@itemize@}}{\@itemize@}}
  335. \def\@itemize@{%
  336. \@adjust@item@labelwidth
  337. \expandafter\list\csname\@itemitem\endcsname{%
  338. \labelwidth
  339. \csname leftmargin\romannumeral\@listdepth\endcsname
  340. \advance\labelwidth-\labelsep
  341. \let\makelabel\itemlabel}}
  342. \fi
  343. \def\asparadesc{%
  344. \list{}{%
  345. \labelwidth\z@
  346. \labelsep.5em
  347. \leftmargin\z@
  348. \parsep\parskip
  349. \itemsep\z@
  350. \topsep\z@
  351. \partopsep\parskip
  352. \itemindent\parindent
  353. \advance\itemindent\labelsep
  354. \let\makelabel\paradescriptionlabel}}
  355. \let\endasparadesc\endlist
  356. \def\inparadesc{%
  357. \let\@itemlabel\@empty
  358. \let\@item\pl@item
  359. \let\makelabel\paradescriptionlabel
  360. \ignorespaces}
  361. \let\endinparadesc\ignorespacesafterend
  362. \def\compactdesc{%
  363. \list{}{%
  364. \parsep\plparsep
  365. \itemsep\plitemsep
  366. \topsep\pltopsep
  367. \partopsep\plpartopsep
  368. \labelwidth\z@
  369. \itemindent-\leftmargin
  370. \let\makelabel\descriptionlabel}}
  371. \let\endcompactdesc\endlist
  372. \if@pldefblank
  373. \def\asparablank{%
  374. \list{}{%
  375. \labelwidth\z@
  376. \labelsep\z@
  377. \leftmargin\z@
  378. \parsep\parskip
  379. \itemsep\z@
  380. \topsep\z@
  381. \partopsep\parskip
  382. \itemindent\parindent
  383. \advance\itemindent\labelsep
  384. \def\makelabel##1{##1}}}
  385. \let\endasparablank\endlist
  386. \def\inparablank{%
  387. \let\@itemlabel\@empty
  388. \let\@item\pl@item
  389. \ignorespaces}
  390. \let\endinparablank\ignorespacesafterend
  391. \fi
  392. \def\setdefaultitem#1#2#3#4{%
  393. \if@empty{#1}{}{\def\labelitemi{#1}}%
  394. \if@empty{#2}{}{\def\labelitemii{#2}}%
  395. \if@empty{#3}{}{\def\labelitemiii{#3}}%
  396. \if@empty{#4}{}{\def\labelitemiv{#4}}}
  397. \def\defaultitem{%
  398. \PackageWarning{Paralist}{Macro \protect\defaultitem\space
  399. deprecated. \MessageBreak Use macro \protect\setdefaultitem
  400. \space instead!! \MessageBreak Used}
  401. \setdefaultitem}
  402. \newif\if@pltemp
  403. \def\setdefaultenum#1#2#3#4{%
  404. \if@plneveradjust\@pltemptrue\else\@pltempfalse\fi
  405. \@plneveradjusttrue
  406. \if@empty{#1}{}{%
  407. \def\@enumctr{enumi}%
  408. \@enumlabel@{\relax}[[#1]}%
  409. \if@empty{#2}{}{%
  410. \def\@enumctr{enumii}%
  411. \@enumlabel@{\relax}[[#2]}%
  412. \if@empty{#3}{}{%
  413. \def\@enumctr{enumiii}%
  414. \@enumlabel@{\relax}[[#3]}%
  415. \if@empty{#4}{}{%
  416. \def\@enumctr{enumiv}%
  417. \@enumlabel@{\relax}[[#4]}%
  418. \if@pltemp\@plneveradjusttrue\else\@plneveradjustfalse\fi
  419. \@plmylabelfalse
  420. \relax}
  421. \def\defaultenum{%
  422. \PackageWarning{Paralist}{Macro \protect\defaultenum\space
  423. deprecated. \MessageBreak Use macro \protect\setdefaultenum
  424. \space instead!! \MessageBreak Used}
  425. \setdefaultitem}
  426. \def\setdefaultleftmargin#1#2#3#4#5#6{%
  427. \if@empty{#1}{}{\leftmargini#1}%
  428. \if@empty{#2}{}{\leftmarginii#2}%
  429. \if@empty{#3}{}{\leftmarginiii#3}%
  430. \if@empty{#4}{}{\leftmarginiv#4}%
  431. \if@empty{#5}{}{\leftmarginv#5}%
  432. \if@empty{#6}{}{\leftmarginvi#6}%
  433. \relax}
  434. \def\defaultleftmargin#1#2#3#4{%
  435. \setdefaultleftmargin{#1}{#2}{#3}{#4}{}{}%
  436. \PackageWarning{Paralist}{Macro \protect\defaultleftmargin
  437. \space deprecated. \MessageBreak Use macro
  438. \protect\setdefaultleftmargin\space instead!!
  439. \MessageBreak But note that it has six arguments!
  440. \MessageBreak Used}}
  441. \def\pl@pointxxxenum{%
  442. \def\theenumi{\arabic{enumi}}%
  443. \def\theenumii{\theenumi.\arabic{enumii}}%
  444. \def\theenumiii{\theenumii.\arabic{enumiii}}%
  445. \def\theenumiv{\theenumiii.\arabic{enumiv}}%
  446. \def\p@enumi{}%
  447. \def\p@enumii{}%
  448. \def\p@enumiii{}%
  449. \def\p@enumiv{}}
  450. \def\pl@pointedenum{%
  451. \def\labelenumi{\theenumi.}%
  452. \def\labelenumii{\theenumii.}%
  453. \def\labelenumiii{\theenumiii.}%
  454. \def\labelenumiv{\theenumiv.}}
  455. \def\pl@pointlessenum{%
  456. \def\labelenumi{\theenumi}%
  457. \def\labelenumii{\theenumii}%
  458. \def\labelenumiii{\theenumiii}%
  459. \def\labelenumiv{\theenumiv}}
  460. \def\pointedenum{\pl@pointxxxenum\pl@pointedenum}
  461. \def\pointlessenum{\pl@pointxxxenum\pl@pointlessenum}
  462. \if@plpointedenum\pointedenum\fi
  463. \if@plpointlessenum\pointlessenum\fi
  464. \if@plloadcfg
  465. \InputIfFileExists{paralist.cfg}{%
  466. \PackageInfo{Paralist}{%
  467. Using the configuration file paralist.cfg}}{}
  468. \fi
  469. \endinput
  470. %%
  471. %% End of file `paralist.sty'.