diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-11 23:55:54 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-11 23:55:54 +0000 |
commit | 48bce6b693f4f70c1f461085584c633a7e601f67 (patch) | |
tree | a78f620174a07f00c01244d781b3a05f6beb8363 /Master/texmf-dist | |
parent | adc51a053169fcbb1f7679fa070418976f26c333 (diff) |
trunk/Master/texmf-dist/source/latex/paralist
git-svn-id: svn://tug.org/texlive/trunk@433 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r-- | Master/texmf-dist/source/latex/paralist/paralist.drv | 55 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/paralist/paralist.dtx | 1531 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/paralist/paralist.ins | 38 |
3 files changed, 1624 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/paralist/paralist.drv b/Master/texmf-dist/source/latex/paralist/paralist.drv new file mode 100644 index 00000000000..360d8c60648 --- /dev/null +++ b/Master/texmf-dist/source/latex/paralist/paralist.drv @@ -0,0 +1,55 @@ +%% +%% This is file `paralist.drv', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% paralist.dtx (with options: `driver') +%% +%% Copyright 1998-2002 Bernd Schandl +%% email schandl@gmx.net +%% www http://schandl.gmxhome.de/paralist +%% +%% This file can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License distributed from CTAN +%% archives in the directory macros/latex/base/lppl.txt; either +%% version 1 of the license, or (at your option) any later version. +%% +%% \CharacterTable +%% {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 +%% 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 +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +\ProvidesFile{paralist.drv}% + [2002/03/18 v2.3b Extended list environments (BS)] +\documentclass[11pt]{ltxdoc} +\usepackage[defblank,neverdecrease]{paralist} + +%% Comment out the next line if you want the documentation for the source code. +\OnlyDescription + +%% Uncomment the next two lines for a change history. +%% See also the instructions above. +%% \AtBeginDocument{\RecordChanges} +%% \AtEndDocument{\PrintChanges} + +%% Uncomment the next two lines for a command index. +%% See also the instructions above. +%% \AtBeginDocument{\CodelineIndex} +%% \AtEndDocument{\setcounter{IndexColumns}{2}\PrintIndex} + +\begin{document} + \DocInput{paralist.dtx} +\end{document} + diff --git a/Master/texmf-dist/source/latex/paralist/paralist.dtx b/Master/texmf-dist/source/latex/paralist/paralist.dtx new file mode 100644 index 00000000000..bcaa740dd34 --- /dev/null +++ b/Master/texmf-dist/source/latex/paralist/paralist.dtx @@ -0,0 +1,1531 @@ +% \iffalse +% File paralist.dtx +% Copyright 1998-2002 Bernd Schandl +% email schandl@gmx.net +% www http://schandl.gmxhome.de/paralist +% +% Documentation and documented source code for the paralist package. +% +% See the README file for instructions. +% +% This file can be redistributed and/or modified under the terms +% of the LaTeX Project Public License distributed from CTAN +% archives in the directory macros/latex/base/lppl.txt; either +% version 1 of the license, or (at your option) any later version. +% +% \fi +% \CheckSum{1046} +%% \CharacterTable +%% {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 +%% 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 +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +% \iffalse +%<*dtx> + \ProvidesFile{paralist.dtx}% +%</dtx> +%<package>\ProvidesPackage{paralist}% +%<driver>\ProvidesFile{paralist.drv}% +% \fi +% \ProvidesFile{paralist.dtx}% + [2002/03/18 v2.3b Extended list environments (BS)] +% \iffalse +%<*driver> +\documentclass[11pt]{ltxdoc} +\usepackage[defblank,neverdecrease]{paralist} + +%% Comment out the next line if you want the documentation for the source code. +\OnlyDescription + +%% Uncomment the next two lines for a change history. +%% See also the instructions above. +%% \AtBeginDocument{\RecordChanges} +%% \AtEndDocument{\PrintChanges} + +%% Uncomment the next two lines for a command index. +%% See also the instructions above. +%% \AtBeginDocument{\CodelineIndex} +%% \AtEndDocument{\setcounter{IndexColumns}{2}\PrintIndex} + +\begin{document} + \DocInput{paralist.dtx} +\end{document} +%</driver> +% \fi +% +% \changes{v1.0 (1998/10/09)}{}{Initial version} +% \changes{v1.1 (1998/10/18)}{}{Added some examples} +% \changes{v1.2 (1999/01/10)}{1999/01/07}{Most of the package and the +% documentation rewritten} +% \changes{v1.5 (1999/03/15)}{1999/03/15}{Released under LPPL} +% \changes{v1.7 (1999/04/01)}{1999/03/31}{Use \cs{GetFileInfo}} +% \changes{v1.9 (2000/03/05)}{2000/03/05}{Email and WWW changed} +% \changes{v2.2 (2001/09/30)}{2001/09/30}{WWW changed} +% \changes{v2.2a (2001/10/02)}{2001/10/02}{Minor documentation changes} +% +% +% \GetFileInfo{paralist.dtx} +% +% \makeatletter +% \renewenvironment{theglossary}{% +% \glossary@prologue \GlossaryParms \let\item\@idxitem \ignorespaces}{} +% \makeatother +% +% \MakeShortVerb{\|} +% +% \let\package\textsf +% \let\tab\indent +% \IndexMin3cm +% +% \title{\package{paralist}\thanks{Package version \fileversion{} of +% \filedate{}.} \\ Extended List Environments} +% \author{Bernd Schandl \\ {\small |schandl@gmx.net|}} +% \date{Printed on \today} +% \maketitle +% +% \begin{abstract} +% This package provides some new list environments. Itemized and enumerated +% lists can be typeset within paragraphs, as paragraphs and in a compact +% version. Most environments have optional arguments to format the labels. +% Additionally, the \LaTeX\ environments |itemize| and |enumerate| can be +% extended to use a similar optional argument. +% \end{abstract} +% +% \section{Introduction} +% +% In a posting to |comp.text.tex| in May 1998, someone asked about the +% possibility of an enumerated environment that +% \begin{inparaenum}[(a)] +% \item can be used within paragraphs, +% \item takes care of enumeration and +% \item has items that can be referenced. \label{pl2} +% \end{inparaenum} +% Another posting mentioned the package \package{theapa} as +% a possible solution. Now that I was looking for that kind of environment and +% found those old postings, I had a look at \package{theapa} and decided to +% take out the part about list environments and rewrite it a little bit. +% +% Over time, compact versions of |enumerate|, |itemize| and |description| have +% been added and optional arguments for most environments make it possible to +% define a special way of formatting the labels. +% +% \section{Package Options} +% +% Certain parts of the package are only executed if appropriate options are +% specified. +% \begin{compactdesc} +% \renewcommand*\makelabel[1]{\hspace\labelsep +% \normalfont\mdseries\sffamily #1} +% \item[newitem/olditem] With \textsf{newitem} (set by default), the \LaTeX\ +% environment |itemize| will be redefined to have an optional argument to +% specify the format of the label. See Section~\ref{sec:format}. +% Specifying \textsf{olditem} will leave |itemize| as it is. +% \item[newenum/oldenum] With \textsf{newenum} (set by default), the \LaTeX\ +% environment |enumerate| will be redefined to have an optional argument +% to specify the format of the label. See Section~\ref{sec:format}. +% Specifying \textsf{oldenum} will leave |enumerate| as it is. +% \item[alwaysadjust] The width of the labels of the environments +% |compactenum|, |enumerate|, |compactitem| and |itemize| is always +% adjusted to the actual label. For the default labels, this means that +% the label width is usually decreased. +% \item[neveradjust] The width of the labels is never adjusted, not even for +% environments where you defined the labels manually using the optional +% argument. This option is ignored if option \textsf{alwaysadjust} is used +% as well. +% \item[neverdecrease] If the width of the labels is adjusted, this option +% avoids the decrease of the width. Here is an example why this might make +% sense. If no \textsf{\dots adjust} option is specified, then the +% indentation of the \cs{item} in |\begin{enumerate}| and +% |\begin{enumerate}[1.]| is different although they have the same +% labels. +% \item[defblank] The two environments |inparablank| and |asparablank| will +% be defined. See Section~\ref{sec:blank}. +% \changes{v2.0 (2001/03/03)}{2001/03/03}{New options \textsf{pointlessenum} +% and \textsf{pointedenum}} +% \item[pointlessenum] The items in the enumerated environments are labeled +% and referenced as in ``1'', ``1.1'', ``1.1.1'' and ``1.1.1.1''. See +% also Section~\ref{sec:format}. +% \item[pointedenum] The items in the enumerated environments are labeled +% as in ``1.'', ``1.1.'', ``1.1.1.'' and ``1.1.1.1.'' and referenced +% without the trailing point. See also Section~\ref{sec:format}. This +% option is ignored if \textsf{pointlessenum} is used. +% \item[flushright] The labels in the four lists mentioned above are set +% flush right. As this is the \LaTeX\ default, this is also the default +% for this package. +% \item[flushleft] The labels in the four lists mentioned above are set +% flush left. +% \changes{v1.9 (2000/03/05)}{2000/03/05}{New options +% \textsf{cfg}/\textsf{nocfg}} +% \item[cfg] The configuration file |paralist.cfg| is loaded if it +% exists. (default) +% \item[nocfg] The configuration file is not loaded. +% \end{compactdesc} +% The option \textsf{increaseonly} is deprecated; use \textsf{neverdecrease} +% instead. +% +% \section{Formatting the Labels} +% \label{sec:format} +% +% All the itemized and enumerated environments have optional arguments to +% specify the format of the labels. The following examples will only work if +% you have loaded \package{paralist} \emph{without} the options +% \textsf{olditem} and \textsf{oldenum}. +% +% Using the \LaTeX\ standard classes, |itemize| uses the following symbols +% for the labels of the four list levels: {\textbullet} +% {\normalfont\bfseries \textendash} {\textasteriskcentered} +% {\textperiodcentered}. If you want to change this for a particular +% environment, just say something like\\ +% \tab|\begin{itemize}[$\star$]|\\ +% and $\star$ will be used instead of the default symbol. +% +% The optional argument of the enumerated environment is a little more +% complicated, but whoever has worked with David Carlisle's +% \package{enumerate} package can skip the rest of the section since exactly +% the same mechanism (and almost the same code) is used. +% +% The tokens |A|, |a|, |I|, |i|, and |1| can be used in the optional argument +% to produce the counter with one of the styles \cs{Alph}, \cs{alph}, +% \cs{Roman}, \cs{roman} and \cs{arabic}.\footnote{% +% The set of tokens can be extended. Look for \cs{pl@hook} in the code +% section.} +% These letters may be surrounded by any other string involving any other +% \TeX\ expression. However, the tokens |A a I i 1| must be inside a |{ }| +% group if they should not be taken as special. A few examples follow.\\ +% \tab|\begin{enumerate}[(i)]|\\ +% produces the labels (i), (ii), (iii) \dots\\ +% \tab|\begin{enumerate}[{example} a)]|\\ +% produces example a), example b), example c) \dots\\ +% \tab|\begin{enumerate}[{A}-1]|\\ +% produces A-1, A-2, A-3 \dots\\ +% \tab|\begin{enumerate}[\bfseries {Item} I]|\\ +% produces \textbf{Item I}, \textbf{Item II}, \textbf{Item III} \dots +% +% Note that in the last example |[\textbf{Item I}]| does not work because +% the special token |I| is inside a group. +% +% The \cs{ref} command produces only the counter without the surrounding text, +% so in the examples above you would get i, a, 1 and I respectively if you +% referenced the first item. +% +% \DescribeMacro{\pointedenum} +% \DescribeMacro{\pointlessenum} +% There are also two package options and two corresponding macros to format +% the labels and references of enumerated environments. The option +% \textsf{pointedenum} and the macro |\pointedenum| format the labels as in +% ``1.'', ``1.1.'', ``1.1.1.'' and ``1.1.1.1.'' and the references without the +% trailing point. The option \textsf{pointlessenum} and the macro +% |\pointlessenum| do not use the trailing point in the labels either. +% +% While the package options make a global change, the macros can be used for a +% local change or to define a special environment, for example\\ +% \tab|\newenvironment{myenum}%|\\ +% \tab| {\pointedenum\begin{enumerate}}%|\\ +% \tab| {\end{enumerate}}|\\ +% Note that |\begin{enumerate}| is used \emph{after} |\pointedenum|, otherwise +% the optional argument of enumerate would not work (in case you want to use +% them within the same environment which doesn't really make sense). +% +% \DescribeMacro{\paradescriptionlabel} +% In the document classes, the label format for the |description| environment +% is defined as\\ +% \tab|\newcommand*\descriptionlabel[1]{%|\\ +% \tab| \hspace\labelsep\normalfont\bfseries #1}|.\\ +% This is also used by |compactdesc|. For the environments |inparadesc| and +% |asparadesc|, there is a separate macro called \cs{paradescriptionlabel} +% defined (almost) like this:\\ +% \tab|\newcommand*\paradescriptionlabel[1]{%|\\ +% \tab| \normalfont\bfseries #1}|. +% +% +% \section{Defaults for Labels and Margins} +% +% If you want your lists labeled differently than the \LaTeX\ default +% throughout your document, it is a bit awkward to use the optional argument +% of the environments all the time. Therefore three macros are provided +% to define the labels and the left margins of the list environments. +% +% Note that the macros defining the labels do \emph{not} adapt the left +% margins of the list environments because this may have unexpected side +% effects. If you want that change, you have to explicitly use +% \cs{setdefaultleftmargin}. +% +% If in any of the following three macros an argument is empty, then +% the according label or margin is left unchanged. +% +% \DescribeMacro{\setdefaultitem} +% The default labels of itemized environments can be set by using the macro +% \cs{setdefaultitem} which needs four arguments. To get the \LaTeX\ default +% labels say\\ +% \tab|\setdefaultitem{\textbullet}%|\\ +% \tab| {\normalfont\bfseries \textendash}%|\\ +% \tab| {\textasteriskcentered}{\textperiodcentered}|\\ +% (which is of course silly because you don't need to do anything if you want +% to stick with the default labels). If you want a triangle +% ($\,\triangleright$) instead of the endash for level two just say\\ +% \tab|\setdefaultitem{}{$\triangleright$}{}{}|. +% +% \DescribeMacro{\setdefaultenum} +% The labels of enumerated lists are formatted with \cs{setdefaultenum} +% using the mechanism described in Section~\ref{sec:format}. The \LaTeX\ +% default labels could be defined by\\ +% \tab|\setdefaultenum{1.}{(a)}{i.}{A.}|.\\ +% If you want capital Roman letters for level three, just say\\ +% \tab|\setdefaultenum{}{}{I.}{}|. +% +% \DescribeMacro{\setdefaultleftmargin} +% To change the left margin of the lists, use \cs{setdefaultleftmargin}. +% The length \cs{leftmargin}$\,n$ specifies the indentation of a list of level +% $n$ with respect to the list of level $n-1$ or the surrounding text +% (if $n=1$). The environments that use \cs{leftmargin}$\,n$ are (at least) +% |enumerate|, |compactenum|, |itemize| and |compactitem| (maybe a few more +% that I am not aware of). The \LaTeX\ settings could be defined by\\ +% \tab|\setdefaultleftmargin{2.5em}{2.2em}{1.87em}{1.7em}{1em}{1em}|.\\ +% In \textsf{twocolumn} mode \LaTeX\ uses a smaller margin for the first, +% fifth and sixth level which could be defined by\\ +% \tab|\setdefaultleftmargin{2em}{}{}{}{.5em}{.5em}|. +% +% The macros \cs{defaultitem}, \cs{defaultenum} and |\defaultleftmargin| +% should not be used anymore. They are only kept for backward compatibility +% with package versions~$<2.1$. +% +% If some of your changes should appear in \emph{every} document that uses +% \package{paralist}, put them in a file |paralist.cfg| which is read at the +% end of the package in case it exists (unless you specified the option +% \textsf{nocfg}). +% +% \section{New Environments} +% +% \subsection{Enumerated Environments} +% +% \DescribeEnv{asparaenum} +% The environment |asparaenum| is an enumerated environment in which the +% items are formatted as separate paragraphs. +% +% As an example, we use |asparaenum| within this paragraph. +% \begin{asparaenum} +% \item Every \cs{item} is basically set as a separate paragraph. The second +% line is \emph{not} indented (this is a feature, not a bug). +% \item The next \cs{item} looks like this and is labeled. \label{pl1} +% \end{asparaenum} +% The example was produced by the following piece of code: +%\begin{verbatim} +% \begin{asparaenum} +% \item Every ... +% \item The next ... \label{pl1} +% \end{asparaenum} +%\end{verbatim} +% By saying |\ref{pl1}| we get \ref{pl1}. +% +% \DescribeEnv{inparaenum} +% The |inparaenum| environment formats an enumerated list within a paragraph, +% just like the one in the introduction. +% +% The example in the introduction was set by the following commands: +%\begin{verbatim} +% ... of an enumerated environment that +% \begin{inparaenum}[(a)] +% \item can be used within paragraphs, +% \item takes care of enumeration and +% \item has items that can be referenced. \label{pl2} +% \end{inparaenum} +% Another posting mentioned ... +%\end{verbatim} +% By saying |\ref{pl2}| we get \ref{pl2}. +% +% \DescribeEnv{compactenum} +% The |compactenum| environment is just a compact version of the standard +% |enumerate| environment. All the vertical skips are set to zero (actually +% they are adjustable, see Section~\ref{sec:Finetuning}). +% +% \subsection{Itemized Environments} +% +% \DescribeEnv{asparaitem} +% The |asparaitem| environment is very similar to |asparaenum|. It just uses +% symbols instead of enumerating the items. The environment has an optional +% argument which specifies the symbol. For an example see +% Section~\ref{sec:Nesting-Environments}. +% +% \DescribeEnv{inparaitem} +% Similar to |inparaenum| I added an environment |inparaitem| which also +% has an optional argument. I don't really know why anybody would use it, but +% I added it because of symmetry. +% +% \DescribeEnv{compactitem} +% The |compactitem| environment is again just a compact version of the +% standard |itemize| environment with all the vertical skips set to zero. +% So by using this environment +% \begin{compactitem}[$\circ$] +% \item you can save some space and +% \item specify the symbol. +% \item Let me add a longer item so that you can see that we have a different +% indentation than in the |asparaitem| environment. +% \end{compactitem} +% The code of the example above is +%\begin{verbatim} +% \begin{compactitem}[$\circ$] +% \item you can save some space and +% \item specify the symbol. +% \item Let me add ... +% \end{compactitem} +%\end{verbatim} +% +% \subsection{Descriptive Environments} +% +% \DescribeEnv{asparadesc} +% The |asparadesc| environment is again very similar to |asparaenum|. It just +% uses the optional arument of \cs{item} as the ``intro'' for the paragraph. +% +% \DescribeEnv{inparaitem} +% Again similar to |inparaenum|, I added an environment |inparadesc|. Probably +% nobody would use it but I added it because of symmetry. +% +% \DescribeEnv{compactdesc} +% The |compactdesc| environment is copied from the \LaTeX{} standard classes +% with all the vertical skips set to zero. By the way, does anybody know why +% |description| has to be defined by the document class and is not defined in +% |ltlists.dtx|? +% +% \subsection{Blank Environments} +% \label{sec:blank} +% +% Someone requested list environments that print their items as if there was no +% list. It seems that this makes entering structured data a little easier in +% LyX. Since not everybody needs these (odd) environments they are only +% defined if the package is loaded with the option \textsf{defblank}. The +% following two environments do not have optional arguments because there is +% no label to format. +% +% \DescribeEnv{asparablank} +% Every item is formatted just as if it was a regular paragraph. If you want +% to use the optional argument of \cs{item}, you have to add some white space +% at the end because \cs{labelsep} is set to zero. Use something like\\ +% \tab|\item[\textbullet\hspace{.5em}]| +% +% \DescribeEnv{inparablank} +% The items are set +% \begin{inparablank} +% \item just as regular text. +% \item The ``white space problem'' mentioned in the last paragraph +% \item is handled automatically. +% \end{inparablank} +% If I didn't tell you, you wouldn't know that this paragraph is set using the +% following construction: +%\begin{verbatim} +% ... are set +% \begin{inparablank} +% \item just as ... +% \item The ... +% \item is handled ... +% \end{inparablank} +% If I didn't ... +%\end{verbatim} +% +%\section{Nesting Environments} +%\label{sec:Nesting-Environments} +% +% All the environments can be nested just as the standard list environments +% although the results might sometimes not be as expected. For example, it's +% probably not a good idea to call another list environment within a +% |inpara...| environment, but why should anyone want to do this? The maximal +% nesting level is six (four of the same kind), just as for the \LaTeX\ +% environments. +% +% This paragraph is +% \begin{asparaitem}[$\star$] +% \item an example for the usage of |asparaitem| and its optional argument, +% \item and a demonstration that +% \begin{inparaenum}[(i)] +% \item you can use |inparaenum| within |asparaitem| and +% \item you can still reference it. \label{pl3} +% \end{inparaenum} +% \end{asparaitem} +% The reference was in subitem (\ref{pl3}). +% The code of the last example is +%\begin{verbatim} +% \begin{asparaitem}[$\star$] +% \item an example ... +% \item and a demonstration that +% \begin{inparaenum}[(i)] +% \item you can use ... +% \item can still ... \label{pl3} +% \end{inparaenum} +% \end{asparaitem} +% The reference was in subitem (\ref{pl3}). +%\end{verbatim} +% +%\section{Fine-Tuning} +%\label{sec:Finetuning} +% +% Ok, I already hear someone saying ``Your compact lists are a nice idea, +% but I'd like to have it a little less compact.'' Here is a solution. The +% following skips can be adjusted using \cs{setlength} and affect the +% spacing of the |compact...| environments. The names are chosen similar to +% the \LaTeX{} names, so I just copy the explanation from |ltlists.dtx|. +% \begin{compactdesc} +% \item[\cs{pltopsep}:] Space between first item and preceding paragraph. +% \item[\cs{plpartopsep}:] Extra space added to \cs{topsep} when +% environment starts a new paragraph (is called in vmode). +% \item[\cs{plitemsep}:] Space between successive items. +% \item[\cs{plparsep}:] Space between paragraphs within an item -- the +% \cs{parskip} for this environment. +% \end{compactdesc} +% Actually, the two |...topsep| skips are added before \emph{and after} the +% list. +% +% The default value for all of them is 0\,pt. It is probably a good idea to +% define them depending on the font size if they are non-zero, i.\,e.\ using +% units such as |ex| or |em|. +% +% \section{Bugs and Wishes} +% +% No bugs \dots that I know of. +% +% \changes{v2.3 (2002/03/10)}{2002/03/10}{Describe incombatibility with +% \package{babel}} +% Well, there is actually one issue if you use the \package{babel} package +% with one of the options \textsf{acadian}, \textsf{canadien}, +% \textsf{francais}, \textsf{frenchb} or \textsf{french} (which all do +% essentially the same). Since it redefines the itemize environment +% at the \cs{start\{document\}}, the definition of |itemize| made by +% \package{paralist} is lost. There are three possible fixes: +% \begin{compactenum} +% \item Accept the |itemize| environment without optional argument.~|:(| +% \item Use \cs{FrenchItemizeSpacingfalse} after loading \package{babel} which +% will avoid the redefinition of |itemize| by \package{babel}.~|:/| +% \item Figure out a way to combine the code in \package{babel} and +% \package{paralist} and send the solution to me.~|:)| +% \end{compactenum} +% +% Feel free to let me know about any problems, suggestions and wishes you have +% concerning this package and its documentation. Praise is welcome, +% too |;-)| The most recent version of this package can always be found on +% CTAN or at |http://schandl.gmxhome.de/paralist/|. +% +% \section{Acknowledgments} +% +% I want to thank all the users who helped me with their +% comments finding bugs and extending the package. A big ``Thank you'' goes to +% David Carlisle, because there wouldn't be any optional arguments for the +% enumerated environments without the code from his +% \package{enumerate} package. Some pieces of code of the |inpara...| +% environments are inspired by Mogens Lemvig Hansen's \package{shortlst} +% package. +% +% \StopEventually +% +% \section{Implementation} +% +% At the beginning of this file, the |\ProvidesPackage| macro was executed. +% So we only need to state that we need \LaTeXe. +% \begin{macrocode} +%<*package> +\NeedsTeXFormat{LaTeX2e} +% \end{macrocode} +% +% \subsection{Package Options} +% +% \changes{v1.2 (1999/01/10)}{1999/01/07}{Package options added} +% \changes{v1.3 (1999/01/19)}{1999/01/18}{Option \textsf{increaseonly} added} +% \changes{v2.1 (2001/09/20)}{2001/09/16}{Options \textsf{olditem} and +% \textsf{oldenum} added} +% \changes{v2.1 (2001/09/20)}{2001/09/16}{Options \textsf{newitem} and +% \textsf{newenum} are set by default} +% \changes{v2.1 (2001/09/20)}{2001/09/17}{Options \textsf{alwaysadjust}, +% \textsf{neveradjust} and \textsf{neverdecrease} added; option +% \textsf{increaseonly} only kept for compatibility} +% \changes{v2.1 (2001/09/20)}{2001/09/16}{Options \textsf{flushleft} and +% \textsf{flushright} added} +% First we define the package options. The option \textsf{increaseonly} is +% only kept for compatibility. +% \begin{macrocode} +\newif\if@plnewitem\@plnewitemtrue +\newif\if@plnewenum\@plnewenumtrue +\newif\if@plalwaysadjust\@plalwaysadjustfalse +\newif\if@plneveradjust\@plneveradjustfalse +\newif\if@plneverdecrease\@plneverdecreasefalse +\newif\if@pldefblank\@pldefblankfalse +\newif\if@plpointedenum\@plpointedenumfalse +\newif\if@plpointlessenum\@plpointlessenumfalse +\newif\if@plflushright\@plflushrighttrue +\newif\if@plloadcfg\@plloadcfgtrue +\DeclareOption{newitem}{\@plnewitemtrue} +\DeclareOption{olditem}{\@plnewitemfalse} +\DeclareOption{newenum}{\@plnewenumtrue} +\DeclareOption{oldenum}{\@plnewenumfalse} +\DeclareOption{alwaysadjust}{\@plalwaysadjusttrue} +\DeclareOption{neveradjust}{\@plneveradjusttrue} +\DeclareOption{neverdecrease}{\@plneverdecreasetrue} +\DeclareOption{increaseonly}{\@plneverdecreasetrue + \PackageWarningNoLine{Paralist}{Option increaseonly deprecated. + \MessageBreak Use option neverdecrease instead}} +\DeclareOption{defblank}{\@pldefblanktrue} +\DeclareOption{pointedenum}{\@plpointedenumtrue} +\DeclareOption{pointlessenum}{\@plpointlessenumtrue} +\DeclareOption{cfg}{\@plloadcfgtrue} +\DeclareOption{nocfg}{\@plloadcfgfalse} +\DeclareOption{flushright}{\@plflushrighttrue} +\DeclareOption{flushleft}{\@plflushrightfalse} +\ExecuteOptions{newitem,newenum,cfg,flushright} +\ProcessOptions\relax +% \end{macrocode} +% \changes{v2.3 (2002/03/10)}{2002/03/07}{Option \textsf{alwaysadjust} +% overwrites \textsf{neveradjust}} +% Make sure that \textsf{alwaysadjust} overwrites \textsf{neveradjust}. +% \begin{macrocode} +\if@plalwaysadjust\@plneveradjustfalse\fi +% \end{macrocode} +% +% \subsection{New Skips} +% +% \changes{v1.2 (1999/01/10)}{1999/01/07}{Counters \texttt{asparaenum} and +% \texttt{inparaenum} removed} +% The new skips are all set to zero. +% \changes{v1.1 (1998/10/18)}{}{Skips to adjust spacing in \texttt{compact...} +% environments defined} +% \begin{macrocode} +\newlength{\pltopsep} +\newlength{\plpartopsep} +\newlength{\plitemsep} +\newlength{\plparsep} +\setlength{\pltopsep}{0pt} +\setlength{\plpartopsep}{0pt} +\setlength{\plitemsep}{0pt} +\setlength{\plparsep}{0pt} +% \end{macrocode} +% +% \subsection{Little ``Helper'' Macros} +% +% \begin{macro}{\if@empty} +% \changes{v1.4 (1999/01/27)}{1999/01/19}{New macro} +% A small macro to detect whether |#1| is empty. +% \begin{macrocode} +\def\if@empty#1#2#3{% + \def\@tempa{#1}% + \ifx\@tempa\@empty#2\else#3\fi} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\pl@item} +% \changes{v1.2 (1999/01/10)}{1999/01/07}{New macro \cs{pl@item} used for all +% \texttt{inpara...} environments} +% \changes{v1.7 (1999/04/01)}{1999/04/01}{Use \cs{nobreakspace} instead of +% \texttt{\textasciitilde}} +% \changes{v1.7 (1999/04/01)}{1999/04/01}{Put argument in group to keep +% e.\,g.~font changes local} +% \changes{v2.1 (2001/09/20)}{2001/09/16}{Use \cs{makelabel}} +% The following macro is used for all \texttt{inpara...} environments. +% It adds space after the label only when the label has a positive width. +% \begin{macrocode} +\def\pl@item[#1]{% + \if@noitemarg + \@noitemargfalse + \if@nmbrlist + \refstepcounter{\@listctr}% + \fi + \fi + \settowidth{\@tempdima}{#1}% + \ifdim\@tempdima>\z@\makelabel{{#1}}\nobreakspace\fi + \ignorespaces + } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\paradescriptionlabel} +% \changes{v2.1 (2001/09/20)}{2001/09/16}{New macro} +% Similar to the \LaTeX\ macro \cs{descriptionlabel} we define a macro +% for the description environments in and as paragraphs. +% \begin{macrocode} +\def\paradescriptionlabel#1{{\normalfont\bfseries #1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\enumlabel} +% \changes{v2.1 (2001/09/20)}{2001/09/16}{New macro} +% \changes{v2.2 (2001/09/30)}{2001/09/23}{Use \cs{hfil} instead of \cs{hss} +% for flushleft} +% \changes{v2.2 (2001/09/30)}{2001/09/30}{No need for \cs{llap} in flushright} +% Similar to the \LaTeX\ macro \cs{descriptionlabel} we define a macro +% for the enumerated environments depending on whether the label should be set +% flush left or flush right. +% \begin{macrocode} +\if@plflushright + \def\enumlabel#1{\hss#1} +\else + \def\enumlabel#1{#1\hfil} +\fi +% \end{macrocode} +% \end{macro} +% \begin{macro}{\itemlabel} +% \changes{v2.1 (2001/09/20)}{2001/09/16}{New macro} +% \changes{v2.2 (2001/09/30)}{2001/09/23}{Use \cs{hfil} instead of \cs{hss} +% for flushleft} +% \changes{v2.2 (2001/09/30)}{2001/09/30}{No need for \cs{llap} in flushright} +% Similar to the \LaTeX\ macro \cs{descriptionlabel} we define a macro +% for the itemized environments depending on whether the label should be set +% flush left or flush right. +% \begin{macrocode} +\if@plflushright + \def\itemlabel#1{\hss#1} +\else + \def\itemlabel#1{#1\hfil} +\fi +% \end{macrocode} +% \end{macro} +% +% \subsection{Adjusting the Label Width} +% +% The width of the label is only adjusted either if the format of the label +% was specified manually and the option \textsf{neveradjust} was \emph{not} +% used or if the option \textsf{alwaysadjust} was used. Then +% |\leftmargin|$\,n$ is set to the width of the label plus |\labelsep|. +% The width of the label is only decreased if the option +% \textsf{neverdecrease} was \emph{not} used. +% +% \changes{v2.3 (2002/03/10)}{2002/03/07}{New flags to decide on label width +% adjustment} +% First we need some flags to indicate whether the label was redefined by the +% environment and whether the label should be adjusted. +% \begin{macrocode} +\newif\if@plmylabel\@plmylabelfalse +\newif\if@pldoadjust\@pldoadjustfalse +% \end{macrocode} +% +% \begin{macro}{\@adjust@enum@labelwidth} +% \changes{v1.3 (1999/01/19)}{1999/01/18}{Depending on option +% \textsf{increaseonly}, \cs{leftmargin}$\,n$ may only be increased} +% \changes{v2.1 (2001/09/20)}{2001/09/16}{New macro} +% \changes{v2.3 (2002/03/10)}{2002/03/07}{Use new flags} +% For the enumerated environments, the counter is first set to 7 so that we +% get the width of `vii' if Roman numbering is in force. +% \begin{macrocode} +\def\@adjust@enum@labelwidth{% + \if@plneveradjust\else + \if@plalwaysadjust\@pldoadjusttrue\else + \if@plmylabel\@pldoadjusttrue\fi + \fi + \fi + \if@pldoadjust + \csname c@\@enumctr\endcsname7 + \settowidth{\@tempdima}{% + \csname label\@enumctr\endcsname\hspace{\labelsep}}% +% \end{macrocode} +% \changes{v2.3 (2002/03/10)}{2002/03/10}{Use \cs{@listdepth} for $n$ in +% \cs{leftmargin}$\,n$} +% The \cs{leftmargin}$\,n$ has to be adjusted (where $n$ is \cs{@listdepth}) +% but we first have to increase \cs{@listdepth} by one since the list has not +% yet started. This is reset right afterwards. +% \begin{macrocode} + \advance\@listdepth by 1\relax + \if@plneverdecrease + \ifdim\@tempdima > + \csname leftmargin\romannumeral\@listdepth\endcsname + \csname leftmargin\romannumeral\@listdepth\endcsname + \@tempdima + \fi + \else + \csname leftmargin\romannumeral\@listdepth\endcsname + \@tempdima + \fi + \advance\@listdepth by -1\relax + \fi + \@pldoadjustfalse + \@plmylabelfalse} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@adjust@item@labelwidth} +% \changes{v1.3 (1999/01/19)}{1999/01/18}{\cs{leftmargin}$\,n$ adapted +% according to the width of the symbol} +% \changes{v1.3 (1999/01/19)}{1999/01/18}{Depending on option +% \textsf{increaseonly}, \cs{leftmargin}$\,n$ may only be increased} +% \changes{v2.1 (2001/09/20)}{2001/09/16}{New macro} +% \changes{v2.3 (2002/03/10)}{2002/03/07}{Use new flags} +% For itemized labels, no counter needs to be set. The label is hidden in a +% macro the name of which is stored in \cs{@itemitem}. +% \begin{macrocode} +\def\@adjust@item@labelwidth{% + \if@plneveradjust\else + \if@plalwaysadjust\@pldoadjusttrue\else + \if@plmylabel\@pldoadjusttrue\fi + \fi + \fi + \if@pldoadjust + \settowidth{\@tempdima}{% + \csname\@itemitem\endcsname\hspace{\labelsep}}% +% \end{macrocode} +% \changes{v2.3 (2002/03/10)}{2002/03/10}{Use \cs{@listdepth} for $n$ in +% \cs{leftmargin}$\,n$} +% The \cs{leftmargin}$\,n$ has to be adjusted (where $n$ is \cs{@listdepth}) +% but we first have to increase \cs{@listdepth} by one since the list has not +% yet started. This is reset right afterwards. +% \begin{macrocode} + \advance\@listdepth by 1\relax + \if@plneverdecrease + \ifdim\@tempdima > + \csname leftmargin\romannumeral\@listdepth\endcsname + \csname leftmargin\romannumeral\@listdepth\endcsname + \@tempdima + \fi + \else + \csname leftmargin\romannumeral\@listdepth\endcsname + \@tempdima + \fi + \advance\@listdepth by -1\relax + \fi + \@pldoadjustfalse + \@plmylabelfalse} +% \end{macrocode} +% \end{macro} +% +% \subsection{Label of Enumerated Environments} +% +% \changes{v1.2 (1999/01/10)}{1999/01/07}{Added optional argument to all +% enumerated environments} +% It follows all the stuff for the optional argument of the enumerated +% environments. The code and most of its documentation is basically +% copied from David Carlisle's \package{enumerate} package. +% +% \begin{macro}{\pl@lab} +% First we define an internal token register which is used to build up +% the label command from the optional argument. +% \begin{macrocode} +\newtoks\pl@lab +% \end{macrocode} +% \end{macro} +% \begin{macro}{\pl@qmark} +% This just expands to a `?'. \cs{ref} will produce this, if no counter +% is printed. +% \begin{macrocode} +\def\pl@qmark{?} +% \end{macrocode} +% \end{macro} +% The next four macros build up the command that will print the +% label. They each gobble one token or group from the optional argument +% and add corresponding tokens to the register |\pl@lab|. They each end +% with a call to |\pl@loop|, which starts the processing of the next +% token. +% \begin{macro}{\pl@label} +% \changes{v1.8 (1999/04/29)}{1999/04/28}{Count the number of tokens} +% Add the counter to the label. Argument |#2| will be one of the `special' +% tokens |A a I i 1|, and is thrown away. |#1| will be a command +% like \cs{Roman}. In every call \cs{@tempcnta} is increased, so we can +% check at the end that exactly one counter was defined. +% \begin{macrocode} +\def\pl@label#1#2{% + \edef\pl@the{\noexpand#1{\@enumctr}}% + \pl@lab\expandafter{\the\pl@lab\csname the\@enumctr\endcsname}% + \advance\@tempcnta1 + \pl@loop} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\pl@space} +% \begin{macro}{\pl@sp@ce} +% Add a space to the label. The tricky bit is to gobble the space token, +% as you can not do this with a macro argument. +% \begin{macrocode} +\def\pl@space{\afterassignment\pl@sp@ce\let\@tempa= } +\def\pl@sp@ce{\pl@lab\expandafter{\the\pl@lab\space}\pl@loop} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\pl@group} +% Add a |{ }| group to the label. +% \begin{macrocode} +\def\pl@group#1{\pl@lab\expandafter{\the\pl@lab{#1}}\pl@loop} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\pl@other} +% Add anything else to the label. +% \begin{macrocode} +\def\pl@other#1{\pl@lab\expandafter{\the\pl@lab#1}\pl@loop} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\pl@loop} +% \begin{macro}{\pl@loop@} +% The body of the main loop. +% Eating tokens this way instead of using |\@tfor| lets you see +% spaces and \emph{all} braces. |\@tfor| would treat |a| and +% |{a}| as special, but not |{{a}}|. +% \begin{macrocode} +\def\pl@loop{\futurelet\pl@temp\pl@loop@} +\def\pl@loop@{% + \ifx A\pl@temp \def\@tempa{\pl@label\Alph }\else + \ifx a\pl@temp \def\@tempa{\pl@label\alph }\else + \ifx i\pl@temp \def\@tempa{\pl@label\roman }\else + \ifx I\pl@temp \def\@tempa{\pl@label\Roman }\else + \ifx 1\pl@temp \def\@tempa{\pl@label\arabic}\else + \ifx \@sptoken\pl@temp \let\@tempa\pl@space \else + \ifx \bgroup\pl@temp \let\@tempa\pl@group \else + \ifx \@@@\pl@temp \let\@tempa\@gobble \else + \let\@tempa\pl@other +% \end{macrocode} +% Hook for possible extensions. +% \begin{macrocode} + \pl@hook + \fi\fi\fi\fi\fi\fi\fi\fi +% \end{macrocode} +% \end{macro} +% Process the current token, then look at the next. +% \begin{macrocode} + \@tempa} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\pl@hook} +% \changes{v1.6 (1999/03/27)}{1999/03/26}{Added extension hook} +% Hook for possible extensions. +% Some packages may want to extend the number of special characters +% that are associated with counter representations. You can use +% e.\,g.~Greek or Russian characters. Here is an example of a footnote +% symbol counter, triggered by |*|. +% +% To enable a new counter type based on a letter, you just need +% to add a new |\ifx| clause similar to the code above. To make +% |*| trigger footnote symbol counting do the following. +% +% Initialize the hook, in case the package is loaded before +% \package{paralist}.\\ +% \tab|\providecommand\pl@hook{}| +% +% Add to the hook a new |\ifx| clause that associates |*| with the +% |\fnsymbol| counter command. +%\begin{verbatim} +% \g@addto@macro\pl@hook{% +% \ifx *\pl@temp +% \def\@tempa{\pl@label\fnsymbol}% +% \fi} +%\end{verbatim} +% This code sequence should work whether it is loaded before or after +% the \package{paralist} package. Any number of new counter types may be added +% in this way. +% +% At this point we just need to initialize the hook, taking care not +% to overwrite any definitions another package may already have added. +% \begin{macrocode} +\providecommand\pl@hook{} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@enumlabel@} +% \changes{v1.8 (1999/04/29)}{1999/04/28}{Use token counter and take care +% of extra bracket} +% \changes{v2.1 (2001/09/20)}{2001/09/17}{Adjustment of label width moved to +% a separate macro} +% \changes{v2.3 (2002/03/10)}{2002/03/07}{Set new flags} +% The following macro handles the optional argument of an enumerated +% environment. Its first argument is the macro that should be called +% after \cs{@enumlabel@} has done the job, the second one is the +% optional argument from the calling environment. +% \begin{macrocode} +\def\@enumlabel@#1[#2]{% +% \end{macrocode} +% The flag is set that the environment redefines its label. +% \begin{macrocode} + \@plmylabeltrue +% \end{macrocode} +% We initialize the number of counter-defining tokens to 0. +% Then \cs{pl@lab} and \cs{pl@the} are initialized. Later, \cs{pl@the} +% will be used to define \cs{theenum}\,$n$. +% \begin{macrocode} + \@tempcnta0 + \pl@lab{}% + \let\pl@the\pl@qmark +% \end{macrocode} +% Now we analyze the second argument using a loop. +% As we will explain in the definition of |asparaenum|, we had to add an +% extra bracket |[| to the second argument, which we have to gobble +% before we start processing it. The macro +% \cs{@@@} is never expanded (or even defined), it is just used to detect +% the end of the token list. +% \begin{macrocode} + \expandafter\pl@loop\@gobble#2\@@@ +% \end{macrocode} +% If there was no special token or several special tokens we issue a +% warning. +% \begin{macrocode} + \ifnum\@tempcnta=1\else + \PackageWarning{paralist}{Incorrect label; no or multiple + counters.\MessageBreak The label is: \@gobble#2}% + \fi +% \end{macrocode} +% Define |\labelenum|$\,n$ and |\theenum|$\,n$. +% \begin{macrocode} + \expandafter\edef\csname label\@enumctr\endcsname{\the\pl@lab}% + \expandafter\let\csname the\@enumctr\endcsname\pl@the +% \end{macrocode} +% Finally call the macro that finishes the \cs{begin} part of the +% calling environment. +% \begin{macrocode} + #1} +% \end{macrocode} +% \end{macro} +% +% \subsection{Label of the Itemized Environment} +% +% \begin{macro}{\@itemlabel@} +% \changes{v2.1 (2001/09/20)}{2001/09/17}{Adjustment of label width moved to +% a separate macro} +% \changes{v2.3 (2002/03/10)}{2002/03/07}{Set new flags} +% The handling of the optional argument of itemized environments is a lot +% easier. +% \begin{macrocode} +\def\@itemlabel@#1[#2]{% + \@plmylabeltrue + \def\pl@itemitem{#2}% + \def\@itemitem{pl@itemitem}% + #1} +% \end{macrocode} +% \end{macro} +% +% \subsection{Enumerated Environments} +% +% \begin{environment}{asparaenum} +% \changes{v1.2 (1999/01/10)}{1999/01/07}{Rewritten} +% \changes{v1.8 (1999/04/29)}{1999/04/28}{Add extra bracket to optional +% argument} +% The first environment formats the enumerated items as paragraphs. +% Most of the skips are set to zero, the items are indented as if +% they were paragraphs and |\makelabel| is redefined so that it +% just prints the counter. +% \begin{macrocode} +\def\asparaenum{% + \ifnum\@enumdepth>\thr@@ + \@toodeep + \else + \advance\@enumdepth\@ne + \edef\@enumctr{enum\romannumeral\the\@enumdepth}% + \fi +% \end{macrocode} +% In the following line the second bracket |[| seems to be superfluous. +% Here is why we need it. If \TeX\ finds an argument in curly braces +% then it strips of the braces before handing the argument to the +% macro \cs{@enumlabel@}. So the optional argument |[{\bfseries a}]| +% would be accepted, although the counter is in a group. By adding +% the bracket to the argument we will never have braces around the +% whole argument. In the macro \cs{@enumlabel@} the bracket is +% gobbled before the processing of the argument starts. +% \begin{macrocode} + \@ifnextchar[{\@enumlabel@{\@asparaenum@}[}{\@asparaenum@}} +\def\@asparaenum@{% + \expandafter\list\csname label\@enumctr\endcsname{% + \usecounter{\@enumctr}% + \labelwidth\z@ + \labelsep.5em + \leftmargin\z@ + \parsep\parskip + \itemsep\z@ + \topsep\z@ + \partopsep\parskip + \itemindent\parindent + \advance\itemindent\labelsep + \def\makelabel##1{##1}}} +\let\endasparaenum\endlist +% \end{macrocode} +% \end{environment} +% \begin{environment}{inparaenum} +% \changes{v1.0a (1998/10/13)}{}{Corrected definition of \cs{theinparaenum}} +% \changes{v1.1 (1998/10/18)}{}{Make space after number non-breaking} +% \changes{v1.2 (1999/01/10)}{1999/01/07}{Rewritten} +% \changes{v1.8 (1999/04/29)}{1999/04/28}{Add extra bracket to optional +% argument} +% \changes{v2.1 (2001/09/20)}{2001/09/16}{Define \cs{makelabel}} +% Now the enumerated environment within a paragraph. Since it is +% not really a list we have to redefine |\@item|. +% \begin{macrocode} +\def\inparaenum{% + \ifnum\@enumdepth>\thr@@ + \@toodeep + \else + \advance\@enumdepth\@ne + \edef\@enumctr{enum\romannumeral\the\@enumdepth}% + \fi + \@ifnextchar[{\@enumlabel@{\@inparaenum@}[}{\@inparaenum@}} +\def\@inparaenum@{% + \usecounter{\@enumctr}% + \def\@itemlabel{\csname label\@enumctr\endcsname}% + \let\@item\pl@item + \def\makelabel##1{##1}% + \ignorespaces} +\let\endinparaenum\ignorespacesafterend +% \end{macrocode} +% \end{environment} +% \begin{environment}{compactenum} +% \changes{v1.1 (1998/10/18)}{}{Environment added} +% \changes{v1.2 (1999/01/10)}{1999/01/07}{Rewritten} +% \changes{v1.8 (1999/04/29)}{1999/04/28}{Add extra bracket to optional +% argument} +% For the |compactenum| environment all vertical skips have to +% be set to the \cs{pl...} values. +% \begin{macrocode} +\def\compactenum{% + \ifnum\@enumdepth>\thr@@ + \@toodeep + \else + \advance\@enumdepth\@ne + \edef\@enumctr{enum\romannumeral\the\@enumdepth}% + \fi + \@ifnextchar[{\@enumlabel@{\@compactenum@}[}{\@compactenum@}} +% \end{macrocode} +% \changes{v2.1 (2001/09/20)}{2001/09/17}{Adjustment of label width done in +% \cs{@compactenum@}} +% \changes{v2.1 (2001/09/20)}{2001/09/17}{Set label width according to left +% margin} +% \changes{v2.1 (2001/09/20)}{2001/09/17}{Use \cs{enumlabel}} +% \changes{v2.3a (2002/03/10)}{2002/03/10}{Use \cs{@listdepth} for $n$ in +% \cs{leftmargin}$\,n$} +% The width of the label is adjusted before starting the list if necessary. +% \begin{macrocode} +\def\@compactenum@{% + \@adjust@enum@labelwidth + \expandafter\list\csname label\@enumctr\endcsname{% + \usecounter{\@enumctr}% + \parsep\plparsep + \itemsep\plitemsep + \topsep\pltopsep + \partopsep\plpartopsep + \labelwidth + \csname leftmargin\romannumeral\@listdepth\endcsname + \advance\labelwidth-\labelsep + \let\makelabel\enumlabel}} +\let\endcompactenum\endlist +% \end{macrocode} +% \end{environment} +% \begin{environment}{enumerate} +% \changes{v1.2 (1999/01/10)}{1999/01/07}{Added} +% \changes{v1.8 (1999/04/29)}{1999/04/28}{Add extra bracket to optional +% argument} +% If the user has requested it, we redefine the |enumerate| environment. +% \begin{macrocode} +\if@plnewenum + \def\enumerate{% + \ifnum \@enumdepth >\thr@@ + \@toodeep + \else + \advance\@enumdepth \@ne + \edef\@enumctr{enum\romannumeral\the\@enumdepth}% + \fi + \@ifnextchar[{\@enumlabel@{\@enumerate@}[}{\@enumerate@}} +% \end{macrocode} +% \changes{v2.1 (2001/09/20)}{2001/09/17}{Adjustment of label width done in +% \cs{@enumerate@}} +% \changes{v2.1 (2001/09/20)}{2001/09/17}{Set label width according to left +% margin} +% \changes{v2.1 (2001/09/20)}{2001/09/17}{Use \cs{enumlabel}} +% \changes{v2.3a (2002/03/10)}{2002/03/10}{Use \cs{@listdepth} for $n$ in +% \cs{leftmargin}$\,n$} +% The width of the label is adjusted before starting the list if necessary. +% \begin{macrocode} + \def\@enumerate@{% + \@adjust@enum@labelwidth + \expandafter\list\csname label\@enumctr\endcsname{% + \usecounter{\@enumctr}% + \labelwidth + \csname leftmargin\romannumeral\@listdepth\endcsname + \advance\labelwidth-\labelsep + \let\makelabel\enumlabel}} +\fi +% \end{macrocode} +% \end{environment} +% +% \subsection{Itemized Environments} +% +% \begin{environment}{asparaitem} +% \changes{v1.2 (1999/01/10)}{1999/01/07}{Rewritten} +% This is pretty much the same as |asparaenum|. We just don't need +% a counter. +% \begin{macrocode} +\def\asparaitem{% + \ifnum\@itemdepth>\thr@@ + \@toodeep + \else + \advance\@itemdepth\@ne + \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% + \fi + \@ifnextchar[{\@itemlabel@{\@asparaitem@}}{\@asparaitem@}} +\def\@asparaitem@{% + \expandafter\list\csname\@itemitem\endcsname{% + \labelwidth\z@ + \labelsep.5em + \leftmargin\z@ + \parsep\parskip + \itemsep\z@ + \topsep\z@ + \partopsep\parskip + \itemindent\parindent + \advance\itemindent\labelsep + \def\makelabel##1{##1}}} +\let\endasparaitem\endlist +% \end{macrocode} +% \end{environment} +% \begin{environment}{inparaitem} +% \changes{v1.1 (1998/10/18)}{}{Make space after symbol non-breaking} +% \changes{v1.2 (1999/01/10)}{1999/01/07}{Rewritten} +% \changes{v2.1 (2001/09/20)}{2001/09/16}{Define \cs{makelabel}} +% Again the same as |inparaenum| without the counter stuff but with an +% optional argument. +% \begin{macrocode} +\def\inparaitem{% + \ifnum\@itemdepth>\thr@@ + \@toodeep + \else + \advance\@itemdepth\@ne + \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% + \fi + \@ifnextchar[{\@itemlabel@{\@inparaitem@}}{\@inparaitem@}} +\def\@inparaitem@{% + \def\@itemlabel{\csname\@itemitem\endcsname}% + \let\@item\pl@item + \def\makelabel##1{##1}% + \ignorespaces} +\let\endinparaitem\ignorespacesafterend +% \end{macrocode} +% \end{environment} +% \begin{environment}{compactitem} +% \changes{v1.1 (1998/10/18)}{}{Environment added} +% \changes{v1.2 (1999/01/10)}{1999/01/07}{Rewritten} +% The |compactitem| environment is basically the same as the \LaTeX{} +% original. All the vertical skips are set to the \cs{pl...} values. +% \begin{macrocode} +\def\compactitem{% + \ifnum\@itemdepth>\thr@@ + \@toodeep + \else + \advance\@itemdepth\@ne + \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% + \fi + \@ifnextchar[{\@itemlabel@{\@compactitem@}}{\@compactitem@}} +% \end{macrocode} +% \changes{v2.1 (2001/09/20)}{2001/09/17}{Adjustment of label width done in +% \cs{@compactitem@}} +% \changes{v2.1 (2001/09/20)}{2001/09/17}{Set label width according to left +% margin} +% \changes{v2.1 (2001/09/20)}{2001/09/17}{Use \cs{itemlabel}} +% \changes{v2.3a (2002/03/10)}{2002/03/10}{Use \cs{@listdepth} for $n$ in +% \cs{leftmargin}$\,n$} +% The width of the label is adjusted before starting the list if necessary. +% \begin{macrocode} +\def\@compactitem@{% + \@adjust@item@labelwidth + \expandafter\list\csname\@itemitem\endcsname{% + \parsep\plparsep + \itemsep\plitemsep + \topsep\pltopsep + \partopsep\plpartopsep + \labelwidth + \csname leftmargin\romannumeral\@listdepth\endcsname + \advance\labelwidth-\labelsep + \let\makelabel\itemlabel}} +\let\endcompactitem\endlist +% \end{macrocode} +% \end{environment} +% \begin{environment}{itemize} +% \changes{v1.2 (1999/01/10)}{1999/01/07}{Added} +% If the user has requested it, we redefine the |itemize| environment. +% \begin{macrocode} +\if@plnewitem + \def\itemize{% + \ifnum \@itemdepth >\thr@@ + \@toodeep + \else + \advance\@itemdepth\@ne + \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% + \fi + \@ifnextchar[{\@itemlabel@{\@itemize@}}{\@itemize@}} +% \end{macrocode} +% \changes{v2.1 (2001/09/20)}{2001/09/17}{Adjustment of label width done in +% \cs{@itemize@}} +% \changes{v2.1 (2001/09/20)}{2001/09/17}{Set label width according to left +% margin} +% \changes{v2.1 (2001/09/20)}{2001/09/17}{Use \cs{itemlabel}} +% \changes{v2.3a (2002/03/10)}{2002/03/10}{Use \cs{@listdepth} for $n$ in +% \cs{leftmargin}$\,n$} +% The width of the label is adjusted before starting the list if necessary. +% \begin{macrocode} + \def\@itemize@{% + \@adjust@item@labelwidth + \expandafter\list\csname\@itemitem\endcsname{% + \labelwidth + \csname leftmargin\romannumeral\@listdepth\endcsname + \advance\labelwidth-\labelsep + \let\makelabel\itemlabel}} +\fi +% \end{macrocode} +% \end{environment} +% +% \subsection{Descriptive Environments} +% +% \begin{environment}{asparadesc} +% \changes{v2.1 (2001/09/20)}{2001/09/16}{New environment} +% A bit easier than |asparaenum| since the label handling is easier. +% \begin{macrocode} +\def\asparadesc{% + \list{}{% + \labelwidth\z@ + \labelsep.5em + \leftmargin\z@ + \parsep\parskip + \itemsep\z@ + \topsep\z@ + \partopsep\parskip + \itemindent\parindent + \advance\itemindent\labelsep + \let\makelabel\paradescriptionlabel}} +\let\endasparadesc\endlist +% \end{macrocode} +% \end{environment} +% \begin{environment}{inparadesc} +% \changes{v2.1 (2001/09/20)}{2001/09/16}{New environment} +% Again a bit easier than |inparaenum| since the label handling is easier. +% \begin{macrocode} +\def\inparadesc{% + \let\@itemlabel\@empty + \let\@item\pl@item + \let\makelabel\paradescriptionlabel + \ignorespaces} +\let\endinparadesc\ignorespacesafterend +% \end{macrocode} +% \end{environment} +% \begin{environment}{compactdesc} +% \changes{v1.1 (1998/10/18)}{}{Environment added} +% \changes{v1.2 (1999/01/10)}{1999/01/07}{Rewritten} +% The |compactdesc| environment is copied from |article.cls| with the skips +% set to the \cs{pl...} skips. +% \begin{macrocode} +\def\compactdesc{% + \list{}{% + \parsep\plparsep + \itemsep\plitemsep + \topsep\pltopsep + \partopsep\plpartopsep + \labelwidth\z@ + \itemindent-\leftmargin + \let\makelabel\descriptionlabel}} +\let\endcompactdesc\endlist +% \end{macrocode} +% \end{environment} +% +% \subsection{Blank Environments} +% +% \begin{environment}{asparablank} +% \changes{v1.2 (1999/01/10)}{1999/01/07}{Added} +% This list formats its entries as if there was no list. Thus no test for +% the list depth is performed. To avoid unnecessary white space, \cs{labelsep} +% is set to zero. If the optional argument of \cs{item} is used, some +% separating space has to inserted ``by hand''. +% \begin{macrocode} +\if@pldefblank + \def\asparablank{% + \list{}{% + \labelwidth\z@ + \labelsep\z@ + \leftmargin\z@ + \parsep\parskip + \itemsep\z@ + \topsep\z@ + \partopsep\parskip + \itemindent\parindent + \advance\itemindent\labelsep + \def\makelabel##1{##1}}} + \let\endasparablank\endlist +% \end{macrocode} +% \end{environment} +% \begin{environment}{inparablank} +% \changes{v1.2 (1999/01/10)}{1999/01/07}{Added} +% The |inparablank| environment handles the ``white space problem'' +% automatically. +% \begin{macrocode} + \def\inparablank{% + \let\@itemlabel\@empty + \let\@item\pl@item + \ignorespaces} + \let\endinparablank\ignorespacesafterend +\fi +% \end{macrocode} +% \end{environment} +% +% \subsection{Setting Defaults} +% +% Here are the macros to define the default labels and left margins +% for itemized and enumerated environments. +% \begin{macro}{\setdefaultitem} +% \changes{v2.1 (2001/09/20)}{2001/09/19}{New macro} +% The macro for the item labels just redefines \cs{labelitem}$\,n$. +% \begin{macrocode} +\def\setdefaultitem#1#2#3#4{% + \if@empty{#1}{}{\def\labelitemi{#1}}% + \if@empty{#2}{}{\def\labelitemii{#2}}% + \if@empty{#3}{}{\def\labelitemiii{#3}}% + \if@empty{#4}{}{\def\labelitemiv{#4}}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\defaultitem} +% \changes{v1.4 (1999/01/27)}{1999/01/19}{New macro} +% \changes{v2.1 (2001/09/20)}{2001/09/17}{Macro deprecated and only kept for +% compatibility} +% This macro is deprecated and only kept for backward compatibility. +% \begin{macrocode} +\def\defaultitem{% + \PackageWarning{Paralist}{Macro \protect\defaultitem\space + deprecated. \MessageBreak Use macro \protect\setdefaultitem + \space instead!! \MessageBreak Used} + \setdefaultitem} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\setdefaultenum} +% \changes{v2.1 (2001/09/20)}{2001/09/19}{New macro} +% \changes{v2.3b (2002/03/18)}{2002/03/18}{Fix handling of flags} +% The macro to define the enumerated labels uses the same mechanism +% as the optional argument of the enumerated environments. First, we set +% \cs{@enumctr} to |enum|$\,n$, then \cs{@enumlabel@} is used to format the +% counter. As explained above we have to add the extra bracket |[| to avoid +% losing braces |{}| around the whole argument. Note that the state of +% \cs{if@alwaysadjust} has to be saved and restored. +% \begin{macrocode} +\newif\if@pltemp +\def\setdefaultenum#1#2#3#4{% + \if@plneveradjust\@pltemptrue\else\@pltempfalse\fi + \@plneveradjusttrue + \if@empty{#1}{}{% + \def\@enumctr{enumi}% + \@enumlabel@{\relax}[[#1]}% + \if@empty{#2}{}{% + \def\@enumctr{enumii}% + \@enumlabel@{\relax}[[#2]}% + \if@empty{#3}{}{% + \def\@enumctr{enumiii}% + \@enumlabel@{\relax}[[#3]}% + \if@empty{#4}{}{% + \def\@enumctr{enumiv}% + \@enumlabel@{\relax}[[#4]}% + \if@pltemp\@plneveradjusttrue\else\@plneveradjustfalse\fi + \@plmylabelfalse + \relax} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\defaultenum} +% \changes{v1.4 (1999/01/27)}{1999/01/19}{New macro} +% \changes{v1.8 (1999/04/29)}{1999/04/28}{Add extra bracket to argument of +% \cs{@enumlabel@}} +% \changes{v2.1 (2001/09/20)}{2001/09/17}{Macro deprecated and only kept for +% compatibility} +% This macro is deprecated and only kept for backward compatibility. +% \begin{macrocode} +\def\defaultenum{% + \PackageWarning{Paralist}{Macro \protect\defaultenum\space + deprecated. \MessageBreak Use macro \protect\setdefaultenum + \space instead!! \MessageBreak Used} + \setdefaultitem} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\setdefaultleftmargin} +% \changes{v2.1 (2001/09/20)}{2001/09/17}{New macro} +% Finally a macro to define all the left margins for the lists. +% \begin{macrocode} +\def\setdefaultleftmargin#1#2#3#4#5#6{% + \if@empty{#1}{}{\leftmargini#1}% + \if@empty{#2}{}{\leftmarginii#2}% + \if@empty{#3}{}{\leftmarginiii#3}% + \if@empty{#4}{}{\leftmarginiv#4}% + \if@empty{#5}{}{\leftmarginv#5}% + \if@empty{#6}{}{\leftmarginvi#6}% + \relax} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\defaultleftmargin} +% \changes{v1.4 (1999/01/27)}{1999/01/19}{New macro} +% \changes{v2.1 (2001/09/20)}{2001/09/17}{Macro deprecated and only kept for +% compatibility} +% This macro is deprecated and only kept for backward compatibility. +% \begin{macrocode} +\def\defaultleftmargin#1#2#3#4{% + \setdefaultleftmargin{#1}{#2}{#3}{#4}{}{}% + \PackageWarning{Paralist}{Macro \protect\defaultleftmargin + \space deprecated. \MessageBreak Use macro + \protect\setdefaultleftmargin\space instead!! + \MessageBreak But note that it has six arguments! + \MessageBreak Used}} +% \end{macrocode} +% \end{macro} +% +% \subsection{Points or no Points?} +% +% \begin{macro}{\pl@pointxxxenum} +% \changes{v2.0a (2001/03/03)}{2001/03/03}{New macro} +% We define macros for the options \textsf{pointlessenum} and +% \textsf{pointedenum}. First the common part consisting of the format of the +% counters itself and the references. The references to an item of level N is +% generated by using |\p@enumN\theenumN|, so we have to make all |\p@enumN|'s +% do nothing. +% \begin{macrocode} +\def\pl@pointxxxenum{% + \def\theenumi{\arabic{enumi}}% + \def\theenumii{\theenumi.\arabic{enumii}}% + \def\theenumiii{\theenumii.\arabic{enumiii}}% + \def\theenumiv{\theenumiii.\arabic{enumiv}}% + \def\p@enumi{}% + \def\p@enumii{}% + \def\p@enumiii{}% + \def\p@enumiv{}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\pl@pointedenum} +% \changes{v2.0a (2001/03/03)}{2001/03/03}{New macro} +% \begin{macro}{\pl@pointlessenum} +% \changes{v2.0a (2001/03/03)}{2001/03/03}{New macro} +% The format of the labels either adds a point or it doesn't. +% \begin{macrocode} +\def\pl@pointedenum{% + \def\labelenumi{\theenumi.}% + \def\labelenumii{\theenumii.}% + \def\labelenumiii{\theenumiii.}% + \def\labelenumiv{\theenumiv.}} +\def\pl@pointlessenum{% + \def\labelenumi{\theenumi}% + \def\labelenumii{\theenumii}% + \def\labelenumiii{\theenumiii}% + \def\labelenumiv{\theenumiv}} +% \end{macrocode} +% \end{macro} \end{macro} +% \begin{macro}{\pointedenum} +% \changes{v2.0a (2001/03/03)}{2001/03/03}{New macro} +% \begin{macro}{\pointlessenum} +% \changes{v2.0a (2001/03/03)}{2001/03/03}{New macro} +% Now the user level macros to turn the new feature on. +% \begin{macrocode} +\def\pointedenum{\pl@pointxxxenum\pl@pointedenum} +\def\pointlessenum{\pl@pointxxxenum\pl@pointlessenum} +% \end{macrocode} +% \end{macro} \end{macro} +% The options just use those user level macros globally. +% \begin{macrocode} +\if@plpointedenum\pointedenum\fi +\if@plpointlessenum\pointlessenum\fi +% \end{macrocode} +% +% \subsection{Configuration File} +% +% \changes{v1.6 (1999/03/27)}{1999/03/26}{Read configuration file in case it +% exists} +% Read the file |paralist.cfg| if it exists and the |nocfg| was not given. +% \begin{macrocode} +\if@plloadcfg + \InputIfFileExists{paralist.cfg}{% + \PackageInfo{Paralist}{% + Using the configuration file paralist.cfg}}{} +\fi +%</package> +% \end{macrocode} +% +% \Finale + + + + + + diff --git a/Master/texmf-dist/source/latex/paralist/paralist.ins b/Master/texmf-dist/source/latex/paralist/paralist.ins new file mode 100644 index 00000000000..86faa2e1a82 --- /dev/null +++ b/Master/texmf-dist/source/latex/paralist/paralist.ins @@ -0,0 +1,38 @@ +% File paralist.ins +% Copyright 1998-2002 Bernd Schandl +% email schandl@gmx.net +% www http://schandl.gmxhome.de/paralist +% +% Installation file for the paralist package. +% +% See the README file for instructions. +% +% This file can be redistributed and/or modified under the terms +% of the LaTeX Project Public License distributed from CTAN +% archives in the directory macros/latex/base/lppl.txt; either +% version 1 of the license, or (at your option) any later version. +% +\input docstrip +\keepsilent + +% define preamble +\preamble + +Copyright 1998-2002 Bernd Schandl +email schandl@gmx.net +www http://schandl.gmxhome.de/paralist + +This file can be redistributed and/or modified under the terms +of the LaTeX Project Public License distributed from CTAN +archives in the directory macros/latex/base/lppl.txt; either +version 1 of the license, or (at your option) any later version. + +\endpreamble + + +\generate{% + \file{paralist.sty}{\from{paralist.dtx}{package}}% + \usepostamble\empty + \file{paralist.drv}{\from{paralist.dtx}{driver}}} + +\endbatchfile |