From 6cb6bb4e14d1047d4c14719b41b3bdb09aafdaf1 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 30 Nov 2018 21:48:04 +0000 Subject: enumitem (30nov18) git-svn-id: svn://tug.org/texlive/trunk@49282 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/enumitem/README | 106 -- Master/texmf-dist/doc/latex/enumitem/README.md | 30 + Master/texmf-dist/doc/latex/enumitem/enumitem.pdf | Bin 330873 -> 135285 bytes Master/texmf-dist/doc/latex/enumitem/enumitem.tex | 1387 +++++++++++++-------- Master/texmf-dist/tex/latex/enumitem/enumitem.sty | 438 +++++-- Master/tlpkg/libexec/ctan2tds | 1 + 6 files changed, 1218 insertions(+), 744 deletions(-) delete mode 100644 Master/texmf-dist/doc/latex/enumitem/README create mode 100644 Master/texmf-dist/doc/latex/enumitem/README.md diff --git a/Master/texmf-dist/doc/latex/enumitem/README b/Master/texmf-dist/doc/latex/enumitem/README deleted file mode 100644 index dc3f320e75f..00000000000 --- a/Master/texmf-dist/doc/latex/enumitem/README +++ /dev/null @@ -1,106 +0,0 @@ -Enumitem 3.5.2 -~~~~~~~~~~~~~~ - -A package to customize the three basic lists (enumerate, -itemize and description) by means of a set of parameters, -and to clone them to define new "logical" lists. -It provides most of the flexibility you may want to -design your own lists: -- fancy labels and fancy refs, -- leftmargin, labelsep and labelwidth automatically set, -- changes applied globally or only in one of the three - types or even in a single list (including topsep) by - means of a sort of "inheritance", -- inline lists, -- several description styles (which fix some bad - spacing, too), -- starting value and counter resuming, -- trivlists properly formatted, -- control on page breaking, -- gathering of lists to be treated like a unit. - -Recent changes (3.0) -~~~~~~~~~~~~~~~~~~~~ - -1) Inline lists, with keys to set how items are joined (ie, the -punctuation between items). Two modes are provided: `boxed' an -`unboxed' -- with the former (the default) a different punctuation -before the last item is allowed. -2) \setlist is calc-savvy (eg, for use in loops), and you can set -diferent lists and levels at once. -3) All lengths related to labels can take the value * (and not only -labelsep and leftmargin). Its behaviour has been made consistent and -there is new value ! which does not compute the widest label. -4) With \restartlist{list-name}, list counters can be restarted (in -case you are using `resume'). -5) `resume*' can be combined with other keys. -6) Lists can be gathered globally using series, so that they are -considered a single list. To start a series just use -series= and then resume it with resume= or -resume*=. -7) The ``experimental'' fullwidth has been replaced by a new key -`wide'. -8) \SetLabelAlign defines new align values. -9) You can define ``abstract'' values (eg, label=numeric) and -new keys. - -Bug fixes (3.0) -~~~~~~~~~~~~~~~ - -- Star values (eg, leftmargin=*) could not be overriden -and new values were ignored. -- nolistsep as the first of several keys was not always -recognized and therefore treated like a short label -(ie, nol\roman*stsep). -- labelwidth didn't always work (when there was a prior -`widest' and *) -- With align=right the label and the following text could -overlap. -- description didn't get the correct list level. -- At some point (2.x?) \value* stopped working. - -3.1 -~~~ -- Fixed incompatibility with xkeyval - -3.2 -~~~ -- start and widest* are calc-savvy. -- \value can be used with widest* -- Some internal restrictions in \arabic and the like has been removed. -It is more flexible at the cost of having a more ``relaxed'' error -checking. - -3.3 -~~~ -- Using *-values with itemize and description didn't work. - -3.4 -~~~ -- New key nosep, replacing nolistsep, which didn't work as -documented. -- Fixed spacing in inline boxed lists. -- Fixed (hopefully) the bug with noitemsep and shorlabels. - -3.5.0 -~~~~~ -- Fixed the fix related to inline lists (spacefactor). -- Fixed some problems in nested boxed inline lists. -(- And sub-sub-versions are introduced.) - -3.5.1 -~~~~~ -- resume* only worked once, and subsequent ones -behaved like resume. - -3.5.2 -~~~~~ -- \setlist* didn't work. - -_________________________________________________________________ -Javier Bezos | http://www.tex-tipografia.com -................................................................. -2011-09-28 - - - diff --git a/Master/texmf-dist/doc/latex/enumitem/README.md b/Master/texmf-dist/doc/latex/enumitem/README.md new file mode 100644 index 00000000000..b436e03cef9 --- /dev/null +++ b/Master/texmf-dist/doc/latex/enumitem/README.md @@ -0,0 +1,30 @@ +## Enumitem 3.6 + +This package provides most of the flexibility you may want to customize +the three basic list environments (`enumerate`, `itemize` and +`description`) and to design your own lists, with a `=` +syntax. + +### Latest changes + +``` +3.6 2018-11-30 + - New key 'left', for fast, tab-like positioning of the label. + - The key 'widest' now works with 'itemize' and 'description'. + - New key 'first', for code at the beginning of the list body. + - \DrawEnumitemLabel, for visual debugging of the label position. + - Extended settings for trivlist, with a new package option + 'includedisplayed'. + - Size dependent lengths (first steps). + - Fix - 'format'/'font' was not taken into account when computing + 'widest'. +``` + +License: MIT + +Repository: https://github.com/jbezos/enumitem + +________ +Javier Bezos --- http://www.texnia.com + +2018/11/30 diff --git a/Master/texmf-dist/doc/latex/enumitem/enumitem.pdf b/Master/texmf-dist/doc/latex/enumitem/enumitem.pdf index 35249ad491c..c841946c9ea 100644 Binary files a/Master/texmf-dist/doc/latex/enumitem/enumitem.pdf and b/Master/texmf-dist/doc/latex/enumitem/enumitem.pdf differ diff --git a/Master/texmf-dist/doc/latex/enumitem/enumitem.tex b/Master/texmf-dist/doc/latex/enumitem/enumitem.tex index 33cbb130ff2..6fad4dcebfb 100644 --- a/Master/texmf-dist/doc/latex/enumitem/enumitem.tex +++ b/Master/texmf-dist/doc/latex/enumitem/enumitem.tex @@ -1,27 +1,25 @@ -% +--------------------------------------------------+ -% | Typeset this file to document enumitem.sty | -% +--------------------------------------------------+ % -% Copyright (c) 2003-2011 by Javier Bezos. -% All Rights Reserved. +% Copyright (C) 2003-2018 Javier Bezos http://www.texnia.com +% +% This file may be distributed and/or modified under the conditions of +% the MIT License. A version can be found at the end of this file. +% +% Repository: https://github.com/jbezos/enumitem % -% This file is part of the enumitem distribution release 3.5.2 -% ------------------------------------------------------------ -% -% It may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either version 1.3 -% of this license or (at your option) any later version. -% The latest version of this license is in -% http://www.latex-project.org/lppl.txt -% and version 1.3 or later is part of all distributions of LaTeX -% version 2003/12/01 or later. -% -% This work has the LPPL maintenance status "maintained". -% -% The Current Maintainer of this work is Javier Bezos. \documentclass[a4paper]{ltxguide} +\raggedright +\parskip=.8ex +\advance\oddsidemargin-.5cm +\advance\textwidth1cm +\addtolength{\textheight}{2cm} +\addtolength{\topmargin}{-1.5cm} + +\usepackage{xcolor,bera} + +\definecolor{notes}{rgb}{.75, .3, .3}% + \makeatletter \newenvironment{desc} {\if@nobreak @@ -30,25 +28,35 @@ \fi \decl} {\enddecl} +\def\@begintheorem#1#2{% + \list{}{}% + \global\advance\@listdepth\m@ne + \item[{\sffamily\bfseries\color{notes}\MakeUppercase{#1}}]}% +\makeatother +\newtheorem{warning}{Warning} +\newtheorem{note}{Note} +\newtheorem{example}{Example} \makeatother -\newcommand\3{\unskip\enspace\fbox{\fontsize{4}{4}\selectfont NEW 3.0}} +\usepackage{framed} +\definecolor{shadecolor}{rgb}{0.96,0.96,0.93} +\let\bblxv\verbatim +\let\bblexv\endverbatim +\def\verbatim{\begin{shaded*}\bblxv\vskip-\baselineskip\vskip2.5\parsep} +\def\endverbatim{\bblexv\vskip-2\baselineskip\end{shaded*}} -\usepackage{hyperref} +\newcommand\New[1]{% + \colorbox[rgb]{.87, .9, .83}{New #1}\enspace\ignorespaces} -%\usepackage{pslatex} +\usepackage{hyperref} \title{Customizing lists\\with the\\\textsf{enumitem} package} \author{Javier Bezos\footnote{For bug reports, comments and -suggestions go to \href{http://www.tex-tipografia.com/enumitem.html}% -{\texttt{http://www.tex-tipografia.com/enumitem.html}}. -English is not my strong point, so contact me when you -find mistakes in the manual. Other packages by the same author: -\textsf{gloss} (with Jos\'e Luis D\'{\i}az), \textsf{accents, -tensind, esindex, dotlessi, titlesec, titletoc}.}} +suggestions go to \href{http://www.texnia.com/enumitem.html}% +{\texttt{http://www.texnia.com/enumitem.html}}.}} -\date{Version 3.5.2\\2011-09-28} +\date{Version 3.6\\2018/11/30} \IfFileExists{enumitem.sty}{\usepackage{enumitem}}{} @@ -64,54 +72,50 @@ tensind, esindex, dotlessi, titlesec, titletoc}.}} \begin{document} \maketitle +\tableofcontents \section{Introduction} -When I began to use \LaTeX{} several year ago, two particular points -annoyed me because I found customizing them was very complicated ----headlines/footlines and lists. A new way to redefine the former is -accomplished in my own \textsf{titlesec} package, but none was -available to customize the latter except: +This package provides most of the flexibility you may want to customize +the three basic list environments (|enumerate|, |itemize| and +|description|) and to design your own lists, with a |=| +syntax: \begin{itemize} -\item \textsf{enumerate}, which just allows to change the label and -it does it pretty well. +\item Fancy labels and fancy refs, including a syntax similar to that +in the \textsf{enumerate} package. + +\item Alternative ways for positioning the label, with a new + parameter (|labelindent|) and a tab-like setting (|left|). + +\item Settings applied globally or only in one of the three types or +even in a single list (including |\topsep|). -\item \textsf{mdwlist}, which only ``provides some vaguely useful -list-related commands and environments,'' as its manual states, -and not a coherent way of handling lists. +\item Inline lists. + +\item Several description styles (which fix some bad spacing, too). + +\item |trivlist|s properly formatted. + +\item Gathering of lists to be treated like a unit, as well as counter +resuming. -\item \textsf{paralist}, which provides lists within a paragraph (the -original purpose of this package), a few other hard-wired -specific changes and the optional argument of \textsf{enumerate}. \end{itemize} -One of the main drawbacks of the standard |list| is its weird -parameters, whose meaning is not always obvious. In order to provide -a cleaner interface two approaches were possible: either defining new -lists, or introducing a new syntax making the standard lists easier to -customize. For marks I took the first approach in titlesec, just -because I did not manage to find a satisfactory solution with the -\LaTeX{} internal macros, but since lists are in some sense more -``complete'' than sections and marks, I have taken here the second -approach. - -In the interface a sort of ``inheritance'' is used. You can -set globally the behaviour of lists and then override several -parameters of, say, enumerate and then in turn override -a few paremeters of a particular instance. The values will -be searched in the hierarchy. - -\section{The package} - -This package is intended to ease customizing the three -basic list environments: |enumerate|, |itemize| and -|description|. It extends their syntax to allow -an optional argument where a set of parameters in the -form |key=value| are available: +In the interface a sort of ``inheritance'' is used. You can set +globally the behaviour of lists and then override several parameters +of, say, |enumerate| and then in turn override a few paremeters of a +particular instance. The values will be searched in the hierarchy. + +The package extends the syntax of the lists to allow an optional +argument where a set of parameters in the form |key=value| are +available. These keys are equivalent to the well known list parameters +-- please, see a \LaTeX{} manual for a description of them. Next +sections explains the extensions provided by |enumitem|. \begin{itemize} \item Vertical spacing: \begin{itemize} +\setlength{\itemsep}{0pt} \item |topsep| \item |partopsep| \item |parsep| @@ -120,6 +124,7 @@ Vertical spacing: \item Horizontal spacing: \begin{itemize} +\setlength{\itemsep}{0pt} \item |leftmargin| \item |rightmargin| \item |listparindent| @@ -129,19 +134,64 @@ Horizontal spacing: \end{itemize} \end{itemize} -For example: +\begin{example} + A straighforward example is: \begin{verbatim} \begin{itemize}[itemsep=1ex,leftmargin=1cm] \end{verbatim} +\end{example} + +\begin{note} + A way to see how these parameters work is with the |layout| package + (the manual is named |layman.pdf|). +\end{note} + +\section{Quick reference} -The keys above are equivalent to the well known list parameters---see a -\LaTeX{} manual for a description of them. Next sections explains the -extensions provided by |enumitem|. +Some common settings. See the manual below for details. + +\begin{itemize} +\def\verbatim{\begin{shaded*}\bblxv} +\def\endverbatim{\bblexv\vskip-1.6\baselineskip\end{shaded*}} + +\item To remove the vertical space altogether in a list: +\begin{verbatim} +\begin{enumerate}[nosep] +\end{verbatim} + +\item To remove the vertical space altogether in \textit{all} lists: +\begin{verbatim} +\setlist{nosep} +\end{verbatim} + +\item To start the label at the margin and the item text at the + current parindent: +\begin{verbatim} +\begin{enumerate}[left=0pt .. \parindent] +\end{verbatim} + +\item To configure the labels like in \textsf{enumerate}: include the +package option |shortlabels| and then, as a first element, write your +label: +\begin{verbatim} +\begin{enumerate}[(1)] +\end{verbatim} + +\item To continue the previous list, after a ``pause'': +\begin{verbatim} +\begin{enumerate}[resume*] +\end{verbatim} + +\item To use the three basic list in line: just add the package option +|inline| and then the environments |enumerate*|, |itemize*| and +|description*|. + +\end{itemize} \section{Keys} -This section describes the keys in displayed lists. Most of them are -available in inline lists, where further keys are available (see +This section describes the keys in displayed lists. Most of them are +available in inline lists, where further keys are available (see \ref{s.inline}). \subsection{Label and cross references format} @@ -150,47 +200,55 @@ available in inline lists, where further keys are available (see |label=| \end{desc} -Sets the label to be used in the current level. -A set of starred versions of |\alph|, |\Alph|, -|\arabic|, |\roman| and |\Roman|, without argument -stand for the current counter in |enumerate|.\footnote{Actually, -the asterisk is currently the argument but things may change. -Consider them as starred variants and follow the corresponding -syntax.} Thus +Sets the label to be used in the current level. A set of starred +versions of |\alph|, |\Alph|, |\arabic|, |\roman| and |\Roman|, without +argument stand for the current counter in +|enumerate|.\footnote{Actually, the asterisk is currently the argument +but things may change. Consider them as starred variants and follow the +corresponding syntax.} It works with |\value|, too (provided the widest +label is not to be computed or |widest*| is used, see below). + +\begin{note} + If you prefer setting labels like the \textsf{enumerate} package, use + ``short labels'' (see section \ref{s.short}). +\end{note} + +\begin{example} + The following prints \textit{a}), \textit{b}), and so on (this is a + standard style in Spanish, and formerly used by Chicago, too). \begin{verbatim} \begin{enumerate}[label=\emph{\alph*})] \end{verbatim} -prints \textit{a}), \textit{b}), and so on (this is a -standard style in Spanish, and formerly used by Chicago, too). - -It works with |\value|, too (provided the widest label is not to be -computed or \verb|widest*| is used, see below). A fancier example -(which looks ugly, but it is intended only to illustrate what is -possible; requires \textsf{color} and \textsf{pifont}): +\end{example} + +\begin{warning} + The value of |label| is a moving argument, and fragile commands must + be protected \textit{except} the counters. Because of that, use of + |\value| is somewhat tricky, because |\the| or |\ifnum| + expects an actual value, which is not the case when |label| is + being processed to replace internally the |*| by the form with + the counter argument. The best solution is usually encapsulating the + logic inside a new ``counter'' with the help of + |\AddEnumerateCounter|.\footnote{Which is admittedly somewhat + convoluted. A better way to accomplish this is on the way.} +\end{warning} + +\begin{example} + A fancier example + (which looks ugly, but it is intended only to illustrate what is + possible; requires \textsf{color} and \textsf{pifont}): \begin{verbatim} -\begin{enumerate}[label=\protect\fcolorbox{blue}{yellow}{\protect\ding{\value*}}, - start=172] +\begin{enumerate}[label=\protect\fcolorbox{blue}{yellow}{\protect\ding{\value*}}] \end{verbatim} - -The value of |label| is a moving argument, and fragile commands must -be protected \textit{except} the counters. Because of that, use of -\verb|\value| is somewhat tricky, because \verb|\the| or \verb|\ifnum| -expects an actual value, which is not the case when \verb|label| is -being processed to replace internally the \verb|*| by the form with -the counter argument. The best solution is usually encapsulating the -logic inside a new ``counter'' with the help of -\verb|\AddEnumerateCounter|.\footnote{Which is admittedly somewhat -convoluted. A better way to accomplish this is on the way.} - -If you prefer setting labels like the \textsf{enumerate} package, use -``short labels'' (see section \ref{s.short}). +\end{example} \begin{desc} |label*=| \end{desc} -Like |label| but its value is appended to the parent label. For example, the follollowing defines a |legal| list (1., -1.1., 1.1.1., and so on): +Like |label| but its value is appended to the parent label. For +example, the following defines a |legal| list (1., 1.1., 1.1.1., and so +on): \begin{verbatim} \newlist{legal}{enumerate}{10} \setlist[legal]{label*=\arabic*.} @@ -201,153 +259,240 @@ Like |label| but its value is appended to the parent label. For example, the fo \end{desc} By default, |label| sets also the form of cross references and -|\the...| (overriding the settings in previous hierarchical +|\the...| (overriding the settings in parent hierarchical levels), but you can define a different format with this key. For example, to remove the right parethesis: \begin{verbatim} \begin{enumerate}[label=\emph{\alph*}),ref=\emph{\alph*}] \end{verbatim} -In both |label| and |ref|, the counters can be -used as usual: + +\begin{note} + In both |label| and |ref|, the counters can be used as usual. So, and + provided the current level is the second one: \begin{verbatim} \begin{enumerate}[label=\theenumi.\arabic*.] \end{verbatim} -or + or \begin{verbatim} \begin{enumerate}[label=\arabic{enumi}.\arabic*.] -\end{verbatim} -(provided the current level is the second one). - -Note the |label|s are \textit{not} accumulated to form -the reference. If you want, say, something like 1.\textit{a} -from 1) as first level and \textit{a}) as second level, -you must set it with |ref|. You may use -|\ref{level1}.\ref{level2}| with appropiate |ref| -settings, but as Robin Fairbairns points out in the \TeX{} FAQ -\begin{quote} -\dots{} [that] would be both tedious and error-prone. What is more, it -would be undesirable, since you would be constructing a visual -representation which is inflexible (you could not change all the -references to elements of a list at one fell swoop). -\end{quote} -This is sensible and I recommend to follow the advice, but sometimes -you might want something like: +\end{verbatim} +\end{note} + +\begin{note} + The |label|s are \textit{not} accumulated to form the reference. + If you want, say, something like 1.\textit{a} from 1) as first level + and \textit{a}) as second level, you must set it with |ref|. You may + use |\ref{level1}.\ref{level2}| with appropiate |ref| settings, but as + Robin Fairbairns points out in the \TeX{} FAQ: + \begin{quote} + \dots{} [that] would be both tedious and error-prone. What is more, it + would be undesirable, since you would be constructing a visual + representation which is inflexible (you could not change all the + references to elements of a list at one fell swoop). + \end{quote} + This is sensible and I recommend to follow the advice, but sometimes + you might want something like: \begin{verbatim} ... subitem \ref{level2} of item \ref{level1} ... \end{verbatim} +\end{note} -The value of |ref| is a moving argument, and fragile -commands must be protected \textit{except} the counters. +\begin{warning} + The value of |ref| is a moving argument, and fragile commands must be + protected \textit{except} the counters. +\end{warning} \begin{desc} -|font=|\qquad\verb|format=| +|font=|\qquad|format=| \end{desc} Sets the label font. Useful when the label is changed with the optional argument of |\item| and in \texttt{description}. The last command in || can take an argument with the item label. In \texttt{description} class setting are in force, so you may want begin -with \verb|\normalfont|. A synonymous is \texttt{format}. +with |\normalfont|. A synonymous is \texttt{format}. \begin{desc} -|align=left|\qquad |align=right|\qquad |align=parleft|\3 +|align=left|\qquad |align=right|\qquad |align=parleft| \end{desc} How the label is aligned (with relation to the label box edges). Three values are possible: |left|, the default |right| and -\verb|parleft| (a parbox of width \verb|\labelwidth| with flush left +|parleft| (a parbox of width |\labelwidth| with flush left text). The parameters controlling the label spacing should be properly set, either by hand or more conveniently with the |*| settings (see below): \begin{verbatim} \begin{enumerate}[label=\Roman*., align=left, leftmargin=*] \end{verbatim} -(When the label box is supposed to have its natural width, use -|left|.) +When the label box is supposed to have its natural width, use +|left|. \begin{desc} -|\SetLabelAlign{}{}|\3 +|\SetLabelAlign{}{}| \end{desc} New align types can be defined (or the existing ones redefined) with |\SetLabelAlign|; the predefined values are equivalent -to:\footnote{Prior to version 3.0 the left alignments was incorrectly -defined and the label and the text could overlap.} +to: \begin{verbatim} \SetLabelAlign{right}{\hss\llap{#1}} \SetLabelAlign{left}{#1\hfil} \SetLabelAlign{parleft}{\strut\smash{\parbox[t]\labelwidth{\raggedright##1}}} \end{verbatim} -If the last thing in the definition is a skip (typically \verb|\hfil|), it is -removed sometimes by description. If for some reason you want to avoid -this, just add \verb|\null| at the end. - -Although primarily intended for the alignment, this commands has other -uses (as in the provided \verb|parleft|). For example, with the -following all labels with |align=right| are set as superscripts: +\begin{example} + Although primarily intended for the alignment, this commands has other + uses (an example is the provided |parleft|). For example, with the + following all labels with |align=right| are set as superscripts: \begin{verbatim} \SetLabelAlign{right}{\hss\llap{\textsuperscript{#1}}} \end{verbatim} -(A new name is also possible, of course.) - -If you want the internal settings for \texttt{align} and \texttt{font} -be ignored, you can override the \textsf{enumitem} definition of -\verb|\makelabel| in \texttt{before}: + A new name is also possible, of course. +\end{example} + +\begin{note} + If the last thing in the definition is a skip (typically |\hfil|), it is + removed sometimes by |description|. If for some reason you want to avoid + this, just add |\null| at the end. +\end{note} + +\begin{note} + If you want the internal settings for \texttt{align} and \texttt{font} + be ignored, you can override the \textsf{enumitem} definition of + |\makelabel| in \texttt{before}: \begin{verbatim} \begin{description}[before={\renewcommand\makelabel[1]{\ref{##1}}}] \end{verbatim} -(Alternatively, define a macro and use \verb|\let|.) + Alternatively, define a macro and use |\let|. +\end{note} \subsection{Horizontal spacing of labels} +The horizontal space in the left margin of the current level is +distributed in the following way:\footnote{Admittedly, these figures +are not exactly the clearest possible, and I intend to improve them in +a future release.} +\begin{center} +\begin{tabular}{cc} +\fbox{\fbox{\strut \texttt{labelindent}} + \fbox{\strut \texttt{labelwidth}} + \fbox{\strut \texttt{labelsep} $-$ \texttt{itemintent}}} +& +\fbox{\strut\texttt{itemindent}}\\ +\texttt{leftmargin} +\end{tabular} +\end{center} +Here |labelindent| is a new parameter introduced by \textit{enumitem}, +described below. The rest are those in standard \LaTeX. + +Actually, the layout is more complex because the label box (ie, +|labelwidth|) could stick into the margin, which means |labelindent| +takes a negative value. + +\begin{note} + Since |\parindent| is not used as such inside lists, but instead + is set internally to either |\itemindent| or |\listparindent|, + when used as the value of a parameter \textsf{enumitem} returns + the global value, i. e., the value it has outside the outermost + list. +\end{note} + +\begin{note} +\New{3.6} If you find these parameters baffling, you are not alone. You +can visualize them by writing |\DrawEnumitemLabel| just before the +first item (or in |first|), which draws 4 rules from top to bottom, +|leftmargin| (thin), |labelindent| (thick if positive, thin if +negative), |labelwidth| (thick) and |labelsep| (thick). If 0, a rule is +not shown. +\end{note} + \begin{desc} |labelindent=|\\ -\verb|\labelindent| +|\labelindent| \end{desc} -This parameter is added in \textsf{enumitem} for the blank space from -the margin of the enclosing list/text to the left edge of the label box. This -means there is a redundancy because one of the parameters depends on -the others, i.e., it has to be computed from the other values, as -described below. There is a new counter length |\labelindent| which -defaults to 0 pt. The five parameteres are related in the following -way: +This parameter is added in \textsf{enumitem} for the blank space from +the margin of the enclosing list/text to the left edge of the label +box. This means there is a redundancy because one of the parameters +depends on the others, i.e., it has to be computed from the other +values, as described below. By default, the computed value is +|labelindent|, even if explicitly set with some value (it defaults to +0~pt). So, if you are setting it to some value, very likely you want to +set some other parameter to |!| or |*|, because otherwise it is +ignored. + +There is a new counter length |\labelindent|. + +The five parameteres are related in the following way: \[ -\verb|\leftmargin|+\verb|\itemindent| = -\verb|\labelindent|+\verb|\labelwidth|+\verb|\labelsep| +|\leftmargin|+|\itemindent| = +|\labelindent|+|\labelwidth|+|\labelsep| \] \begin{desc} -|leftmargin=!|\qquad|itemindent=!|\qquad|labelsep=!| -\qquad|labelwidth=!|\qquad|labelindent=!|\3 +|left=|\\ +|left= .. | \end{desc} -Sets which value is to be computed from the others. This is done -after \textit{all} keys has been read. Explicit values are not lost, and -so with the following hierarchical settings: +\New{3.6} This is a convenience key to set quickly the most common +layouts for the label. You may regard it as a sort or ``rule'' with two +tab stops: the start of the label and the start of the text (both with +relation to the normal side margin). With only ||, the +left margin (the ``start of text'') is computed with the |labelsep|. + +\begin{example} + Typical settings would be: \begin{verbatim} +\begin{enumerate}[left= 0pt] +\begin{enumerate}[left= 0pt .. \parindent] +\begin{enumerate}[left= \parindent] +\begin{enumerate}[left= \parindent .. 2\parindent] +\begin{enumerate}[left= -\parindent .. 0pt] +\end{verbatim} +\end{example} + +\begin{note} + The label width is set to the default widest one. If there are lists + with Arabic numerals $\ge 10$, you may want to set |widest|, too. +\end{note} + +\begin{note} +|left=| sets |leftmargin=*|; +|left= .. | sets |labelsep=*|. +\end{note} + +\begin{desc} +|leftmargin=!|\qquad|itemindent=!|\qquad|labelsep=!| +\qquad|labelwidth=!|\qquad|labelindent=!| +\end{desc} + +Sets which value is to be computed from the others. The default is +|labelindent=!|, but note some keys set another value (|wide| and +description |style|s). Computations are done after \textit{all} +keys has been read. Explicit values are not lost, and so with the +following hierarchical settings: \begin{verbatim} leftmargin=2em labelindent=1em,leftmargin=! labelindent=! \end{verbatim} |leftmargin| is again 2em and |labelindent| is the computed parameter. -The default is |labelindent=!|, but note some keys sets another value -(\verb|wide| and description \verb|style|s). -With |align=right| (the default), |labelindent=!| and -|labelwidth=!| behave similarly in practice. +\begin{note} + With |align=right| (the default), |labelindent=!| and |labelwidth=!| + behave similarly in practice. +\end{note} \begin{desc} |leftmargin=*|\qquad|itemindent=*|\qquad|labelsep=*| \qquad|labelwidth=*|\qquad|labelindent=*| \end{desc} -Like before, but |labelwidth| is set to the width of the current -label, using the default value of \textit{0} in |\arabic*|, -\textit{viii} in |\roman*|, \textit{m} in |\alph*| and -similarly in uppercase forms (these values can be changed with -|widest|, see below). Examples are: +Like before, but in addition |labelwidth| is first set to the width of +the current label, using the default value of \textit{0} in |\arabic*|, +\textit{viii} in |\roman*|, \textit{m} in |\alph*| and similarly in +uppercase forms (these values can be changed with |widest|, see below). +Examples are: \begin{verbatim} \begin{itemize}[label=\textbullet, leftmargin=*] \begin{enumerate}[label=\roman*), leftmargin=*, widest=iii] @@ -357,75 +502,60 @@ similarly in uppercase forms (these values can be changed with labelindent=\parindent, labelsep=*] \end{verbatim} -The most useful are |labelsep=*| and |leftmargin=*|. -With the former the item body begins at a fixed place (namely, -|leftmargin|), while with the latter begins at a variable place -depending on the label (but always the same within a list, of course). -Most of times, what you would want is |leftmargin=*|. - -Unfortunately, \LaTeX{} does not define a default |labelsep| to -be applied to all lists---simply the current value is used. With -\textsf{enumitem} you can set default values for every list, as -described below, and so, if you want to make sure |labelsep| is -under your control, all you need is something like: +The most useful are |labelsep=*| and |leftmargin=*|. With the former +the item body begins at a fixed place (namely, |leftmargin|), while +with the latter begins at a variable place depending on the label (but +always the same within a list, of course). + +\begin{note} + Unfortunately, \LaTeX{} does not define a default |labelsep| to + be applied to all lists---simply the current value is used. With + \textsf{enumitem} you can set default values for every list, as + described below, and so, if you want to make sure |labelsep| is + under your control, all you need is something like: \begin{verbatim} -\setlist{itemsep=.5em} +\setlist{labelsep=.5em} \end{verbatim} +\end{note} -|labelwidth=*| and |labelwidth=!| are synonymous. +\begin{note} + |labelwidth=*| and |labelwidth=!| are synonymous. +\end{note} \begin{desc} -|widest=|\qquad|widest*=|\3\qquad|widest| +|widest=|\qquad|widest*=|\qquad|widest| \end{desc} -To be used in conjunction with the \texttt{*}-values, if -desired. It overrides the default value for the widest -printed counter. Sometimes, if lists are not very long, a value of -|a| for |\alph| is more sensible than the default |m|: +To be used in conjunction with the \texttt{*}-values, if desired. It +overrides the default value for the widest printed counter. Sometimes, +if lists are not very long, a value of |a| for |\alph| is more sensible +than the default |m|: \begin{verbatim} \begin{enumerate}[leftmargin=*,widest=a] % Assume standard 2nd level \end{verbatim} With no value, the default is restored. With |widest*|, the string is built using || as the value of the counter (e.g., with -\verb|\roman|, -\verb|widest=viii| and \verb|widest*=8| are the same). +|\roman|, +|widest=viii| and |widest*=8| are the same). -Since |\value| does not return a string but a number, -|widest| and the \verb|*| values cannot be used with it. -However, with \verb|widest*|, being a number, it is allowed. +Since |\value| does not return a string but a number, |widest| and the +|*| values cannot be used with it. However, with |widest*|, +being a number, it is allowed. -\subsection{More on horizontal spacing} - -Since |\parindent| is not used as such inside lists, but instead -is set internally to either |\itemindent| or |\listparindent|, -when used as the value of a parameter \textsf{enumitem} returns the -global value, i. e., the value it has outside the outermost list. - -The horizontal space in the left margin of the current level is -distributed in the following way:\footnote{Admittedly, these figures -are not exactly the clearest possible, and I intend to improve them in -a future release} -\begin{center} -\begin{tabular}{cc} -\fbox{\fbox{\strut \texttt{labelindent}} - \fbox{\strut \texttt{labelwidth}} - \fbox{\strut \texttt{labelsep} $-$ \texttt{itemintent}}} -& -\fbox{\strut\texttt{itemindent}}\\ -\texttt{leftmargin} -\end{tabular} -\end{center} +\New{3.6} It can be used with |itemize| and |description|, too. +However, since the latter does some tricky formatting inside the label +you might need change the computed parameter (eg, |itemindent=*| with +|align=left|). \begin{desc} -\verb|labelsep*=|\3 +|labelsep*=| \end{desc} -Remember |labelsep| spans part of |leftmargin| and -|itemindent| if the latter is not zero. This is often somewhat -confusing, so a new key is provided---with \texttt{labelsep*} the -value is reckoned from the left margin (it just sets |\labelsep| -and then adds |\itemindent| to it, but in addition later changes to -|itemindent| are taken into account): +Remember |labelsep| spans part of |leftmargin| and |itemindent| if the +latter is not zero. This is often somewhat confusing, so a new key is +provided---with \texttt{labelsep*} the value is reckoned from the left +margin (it just sets |\labelsep| and then adds |\itemindent| to it, but +in addition later changes to |itemindent| are taken into account): \begin{center} \begin{tabular}{cc} \fbox{\fbox{\strut \texttt{labelindent}} @@ -438,12 +568,59 @@ and then adds |\itemindent| to it, but in addition later changes to \end{center} \begin{desc} -|labelindent*=|\3 +|labelindent*=| \end{desc} Like |labelindent|, but it is reckoned from the left margin in the current list and not from that in the enclosing list/text. +\begin{example} + A first pattern aligns the label with the surrounding |\parindent| + while the item body is indented depending on the label and a fixed + |labelsep|: +\begin{verbatim} +labelindent=\parindent, +leftmargin=* +\end{verbatim} + A fairly frequent variant is aligning the label with the surrounding + text (remember |labelindent| is |0pt| by default if it is not the + computed parameter): +\begin{verbatim} +leftmargin=* +\end{verbatim} + The former looks better in the first level while the latter seems + preferable in subsequent ones. That can be easily set with +\begin{verbatim} +\setlist{leftmargin=*} +\setlist[1]{labelindent=\parindent} % Only the level 1 +\end{verbatim} +\end{example} + +\begin{example} + A second pattern aligns the item body with the surrounding + |\parindent|. In this case (remember |labelindent| is the computed + parameter if not set): +\begin{verbatim} +leftmargin=\parindent +\end{verbatim} +\end{example} + +\begin{example} + A third pattern would be the label aligned with |\parindent|, + and the item body with |2\parindent|: +\begin{verbatim} +labelindent=\parindent, +leftmargin=2\parindent, +itemsep=* +\end{verbatim} + Again, a variant would be the label aligned with the surrounding + text, and the itembody with |\parindent|: +\begin{verbatim} +leftmargin=\parindent, +itemsep=* +\end{verbatim} +\end{example} + \subsection{Numbering, stopping, and resuming} \begin{desc} @@ -480,30 +657,34 @@ environment (this is the only place where it makes sense). It should be used sparingly---if you are using it often, then very likely you want to define a new list (see \ref{s.clone}). Further keys are allowed, and in this case the saved options are overriden by those in the current -list (i.e., the position of \texttt{resume*} does not matters). For -example: +list (i.e., the position of \texttt{resume*} does not matters). +If there is a series of a certain list with +\texttt{resume*}, options are taken from the list previous to the +first one, except for \texttt{start}. + +\begin{example} + For example: \begin{verbatim} \begin{enumerate}[resume*,start=1] % or [start=1,resume*] \end{verbatim} -uses the keys in the previuos \texttt{enumerate}, but restarts the -counter. If there is a series of a certain list with -\texttt{resume*}, options are taken from the list previous to the -first one, except for \texttt{start}. + uses the keys in the previuos \texttt{enumerate}, but restarts the + counter. +\end{example} \subsection{Series} \begin{desc} -|series=|\3\\ +|series=|\\ ||\qquad|resume*=| -\qquad|resume=|\3 +\qquad|resume=| \end{desc} -A new method (3.0) of continuing lists is by means of the key -\texttt{series}, so that they behave like a unit. A list with key +Another method to continue lists is by means of the key +\texttt{series}, so that they behave like a unit. A list with key \texttt{series} is considered the starting list and its settings are stored \textit{globally}, so that they can be used later with -\texttt{resume}/\texttt{resume*}. All these keys take a value with -the series name (which must be different from existing keys): +\texttt{resume}/\texttt{resume*}. All these keys take a value with the +series name (which must be different from existing keys): \begin{itemize} \item |resume=| just continue numbering items in the series, @@ -512,14 +693,16 @@ starting list, \item ||, i.e., the series name used as a key, is an alternative to |resume*=|. \end{itemize} -For example: + +\begin{example} + Consider: \begin{verbatim} \begin{enumerate}[label=\arabic*(a),leftmargin=1cm,series=lafter] \item A \item B \end{enumerate} \end{verbatim} -You get: 1(a) 2(a). You can continue with: + You get: 1(a) 2(a). You can continue with: \begin{verbatim} \begin{enumerate}[label=\arabic*(b),resume*=lafter] % or [label=\arabic*(b),lafter] @@ -527,17 +710,19 @@ You get: 1(a) 2(a). You can continue with: \item B \end{enumerate} \end{verbatim} -You get: 3(b) 4(b). (But you can use |start=1|, if you like.) + You get: 3(b) 4(b). (But you can use |start=1|, if you like.) +\end{example} Note you can add further arguments, which are executed after those saved at the starting list and therefore take precedence over them -- in particular, |resume*| itself takes precedence over a |start| (e.g., |start=1|) in the the starting list. -Every time a series is started, several commands are defined -internally, so to avoid wasting resources and use the same name for -non-overlapping series. - +\begin{note} + Every time a series is started, several commands are defined + internally. Thus, to avoid wasting resources use the same name for + non-overlapping series. +\end{note} \subsection{Penalties} @@ -562,11 +747,14 @@ value, while the starred one adds the code to the existing one (in the setting hierarchy, see below, \textit{not} with relation to the enclosing list/text). It can contain, say, rules and text, but this has not been extensively tested. All calculations have been finished, -and you can access and manipulate the list parameters. For example, -to have both margins (left and right) set to the widest label: +and you can access and manipulate the list parameters. + +\begin{example} + To have both margins (left and right) set to the widest label: \begin{verbatim} \setlist{leftmargin=*,before=\setlength{\rightmargin}{\leftmargin}} \end{verbatim} +\end{example} \begin{desc} |after=|\qquad|after*=| @@ -574,6 +762,21 @@ to have both margins (left and right) set to the widest label: Same, but just before the list ends. +\begin{desc} +|first=|\qquad|first*=| +\end{desc} + +Same, but as the very first thing in the list body, so that +\begin{verbatim} +\begin{itemize}[first=] +\end{verbatim} +is the same as +\begin{verbatim} +\begin{itemize} + +\end{verbatim} +With it you may insert, for example, an |\item|. + \subsection{Description styles} A key available in |description|. @@ -583,39 +786,40 @@ A key available in |description|. Sets the description \textit{style}. || can be any of the following: -\begin{itemize} - -\item |standard|: like |description| in standard classes, although +\begin{description} +\item[|standard|] Like |description| in standard classes, although with other classes it could be somewhat different. The label is -boxed. Sets \verb|itemindent=!|. +boxed. Sets |itemindent=!|. -\item |unboxed|: much like the standard |description|, but +\item[|unboxed|] Much like the standard |description|, but the label is not boxed to avoid uneven spacing and unbroken labels if -they are long. Sets \verb|itemindent=!|. +they are long. Sets |itemindent=!|. -\item |nextline|: if the label does not fit in the margin, the text +\item [|nextline|] If the label does not fit in the margin, the text continues in the next line, otherwise it is placed in a box of width |\leftmargin| $-$ |\labelsep|, i.e., the item body never sticks into -the left margin. Sets \verb|labelwidth=!|. +the left margin. Sets |labelwidth=!|. -\item |sameline|: like |nextline| but if the label does not +\item[|sameline|] Like |nextline| but if the label does not fit in the margin the text continues in the same line. Same as -\verb|style=unboxed,labelwidth=!|. +|style=unboxed,labelwidth=!|. -\item |multiline|: the label is placed in a parbox whose width is +\item[|multiline|] The label is placed in a parbox whose width is |leftmargin|, with several lines if -necessary. Same as \verb|style=standard,align=parleft,labelwidth=!|. - -Three caveats: (1) mixing boxed and unboxed labels has not a -well-defined behaviour, (2) when nesting list all combinations are -allowed but not all make sense, and (3) nesting \verb|nextline| lists -is not supported (it works, but its behaviour might change in the -future, because the current one is not what one could expect). - - +necessary. Same as |style=standard,align=parleft,labelwidth=!|. -\end{itemize} +\end{description} +\begin{warning} +\begin{enumerate} +\item Mixing boxed and unboxed labels has not a well-defined behaviour. +\item When nesting list all combinations are allowed but not all make + sense. +\item Nesting |nextline| lists is not supported (it works, but its + behaviour might change in the future, because the current one is not + what one could expect). +\end{enumerate} +\end{warning} \subsection{Compact lists} @@ -632,8 +836,8 @@ was not the intended behaviour.} \subsection{``Wide'' lists} \begin{desc} -\verb|wide|\3\\ -\verb|wide=| +|wide|\\ +|wide=| \end{desc} With this convenience key, the leftmargin is null and the label is @@ -647,26 +851,147 @@ listparindent=\parindent, labelwidth=0pt, itemindent=! \end{verbatim} With |wide=| you may set at once another value instead of |\parindent|. Of course, these keys can be overriden after -\verb|wide|, too; for example, remembering that with left-aligned labels +|wide|, too; for example, remembering that with left-aligned labels the text is pushed if the they are wider than |labelwidth|, you can set |labelwidth=1.5em| for a minimal width, or instead of |itemindent=!| you may prefer |itemindent=*|, which sets the minimal width to that of widest label. In level 2 you may prefer |labelindent=2\parindent|, and so on. You may also want to -combine it with |noitemsep| or |nolistsep|. +combine it with |noitemsep| or |nosep|. + +\subsection{\textsf{enumerate}-like labels} +\label{s.short} + +\begin{desc} +|shortlabels| (package option) +\end{desc} + +With the package option \texttt{shortlabels} you can use an +\textsf{enumerate}-like syntax, where |A|, |a|, |I|, +|i| and |1| stand for |\Alph*|, |\alph*|, +|\Roman*|, |\roman*| and |\arabic*|. This is intended +mainly as a sort of compatibility mode with the \textsf{enumerate} +package, and therefore the following special rule applies: if the very +first option (at any level) is not recognized as a valid key, then it +will be considered a label with the \textsf{enumerate}-like syntax. For +example: +\begin{verbatim} +\begin{enumerate}[i), labelindent=\parindent, labelsep=*] +... +\end{enumerate} +\end{verbatim} +Although perhaps not so useful, you can omit |label=| in the +itemize environment under similar conditions, too: +\begin{verbatim} +\begin{itemize}[\textbullet] +... +\end{itemize} +\end{verbatim} + +\begin{desc} +|\SetEnumerateShortLabel{}{}| +\end{desc} + +With this command, you can define new keys (or redefine them), which is +particularly useful for enumerate to be adapted to especific +typographical rules or to extend it for non-Latin scrips. Here +|| contains one of the starred versions of +counters. + +\begin{example} + For example: +\begin{verbatim} +\SetEnumerateShortLabel{i}{\textsc{\roman*}} +\end{verbatim} + redefines |i| so that items using this key are numbered with + small caps roman numerals. +\end{example} + +\begin{note} + The key has to be a single character. +\end{note} + +\subsection{Generic keys and values} + +\begin{desc} +|\SetEnumitemKey{}{}| +\end{desc} + +With this command you can create your own (valueless) keys. Keys so +defined can then be used like the others. + +\begin{example} + With +\begin{verbatim} +\SetEnumitemKey{midsep}{topsep=3pt,partopsep=0pt} +\end{verbatim} + you may write +\begin{verbatim} +\begin{enumerate}[midsep] +\end{verbatim} +\end{example} + +\begin{example} + Another example is multicolumn lists, with \textsf{multicol}: +\begin{verbatim} +\SetEnumitemKey{twocol}{ + itemsep=1\itemsep, + parsep=1\parsep, + before=\raggedcolumns\begin{multicols}{2}, + after=\end{multicols}} +\end{verbatim} + Here, the settings for \texttt{itemsep} and \texttt{parsep} kill the + stretch and shrink parts. Of course, you may want to define a + new list. +\end{example} + +\begin{warning} + The package may introduce new keys in the future, so + |\SetEnumitemKey| is a potential source of forward + incompatibilities. However, it's safe using a non-letter character + other than hyphen or star in the key name (e.g., |:name| or + |2_col|), because \textsf{enumitem} will not use them. +\end{warning} + +\begin{desc} +|\SetEnumitemValue{}{}{}| +\end{desc} + +This commands provides a further abstraction layer for the +|=| pairs. With it you can define logical names which +are translated to the actual value. For example, with: +\begin{verbatim} +\SetEnumitemValue{label}{numeric}{\arabic*.} +\SetEnumitemValue{leftmargin}{standard}{\parindent} +\end{verbatim} +you might say: +\begin{verbatim} +\begin{enumerate}[label=numeric,leftmargin=standard] +\end{verbatim} +So, you can left to the final design what |label=numeric| means. \section{Inline lists} \label{s.inline} -\3 - Inline lists are ``horizontal'' lists set as ordinary text inside a paragraph. With this package you can create inline lists, as -explained below, with \verb|\newlist|, which have their own labels and -counters. However, in most cases inline versions of standard lists, +explained below, with |\newlist|, which have their own labels and +counters. However, very often inline versions of standard lists, with the same labelling schema, will be enough -- the package option -\verb|inline| does that. - +|inline| does that. + +\begin{warning} + Items are boxed, so floats are lost and nested lists are not allowed + (remember many displayed elements are defined as lists). Display math + is forbidden too, and due to an optimization done by \TeX{} when + bulding lists, explicit hyphenation may be wrong.\footnote{A Knuthian + ``premature optimization''? Who knows, but anyway Lua\TeX{} has + removed it, so hyphenation with this engine should be correct.} There + was a reason for this default setting, namely, this feature was + mainly devised for short items (a few words), and the parameter + |itemjoin*| could be useful for logical markup. To overcome these + limitations, you may set |mode=unboxed|, described below. +\end{warning} \begin{desc} |inline| \qquad(package option)\\ @@ -678,13 +1003,26 @@ With the package option \texttt{inline}, three environments for inline lists are defined: \texttt{enumerate*}, \texttt{itemize*}, and \texttt{description*}. They emulate the behaviour of \textsf{paralist} and \textsf{shortlst} in that labels and settings -are shared with the displayed (ie, ``normal'') lists \texttt{enumerate}, -\texttt{itemize} and \texttt{description}, respectively (however, -remember resuming is based on environment names, not on list types). This applies -only to those created with \texttt{inline} -- inline lists created -with |\newlist| as described below are independent and use their -own labels and settings. Note as well \verb|inline| is not required -if you needn't inline versions of standard lists. +are shared with the displayed (ie, ``normal'') lists +\texttt{enumerate}, \texttt{itemize} and \texttt{description}, +respectively (however, remember resuming is based on environment +names, not on list types). This applies only to those created with +\texttt{inline} -- inline lists created with |\newlist| as described +below are independent and use their own labels and settings. + +\begin{note} + Note |inline| is not required if you do not need the inline + versions of standard lists, but instead you define your own + standalone inline lists with |\newlist|. +\end{note} + +\begin{warning} + Settings for these three environments as defined by |inline| are + shared with the displayed variants, so they cannot be redefined + directly with |\newlist|. Trying to do it raises a cryptic error. If + you need separate setting, define them with |\newlist| and not with + |inline|. +\end{warning} \begin{desc} |itemjoin=|\qquad|itemjoin*=| @@ -694,27 +1032,29 @@ if you needn't inline versions of standard lists. Format is set with keys \texttt{itemjoin} (default is a space), and \texttt{afterlabel} (default is |\nobreakspace|, ie, |~|). An additional key is \texttt{itemjoin*}, which, if set, is used -instead of \texttt{itemjoin} before the last item. So, with +instead of \texttt{itemjoin} before the last item. + +|itemjoin| is ignored in vertical mode (i.e., in mode unboxed +and just after a quote, a displayed list and the like). + +\begin{example} + With \begin{verbatim} before=\unskip{: }, itemjoin={{; }}, itemjoin*={{, and }} \end{verbatim} -the following punctuation between items is used: -\begin{quote} -Blah blah: (a) one; (b) two; (c) three, and (d) four. Blah blah -\end{quote} - -\verb|itemjoin| is ignored in vertical mode (i.e., in mode unboxed -and just after a quote, a displayed list and the like). + the following punctuation between items is used: + \begin{quote} + Blah blah: (a) one; (b) two; (c) three, and (d) four. Blah blah + \end{quote} +\end{example} \begin{desc} |mode=unboxed|\qquad|mode=boxed| \end{desc} -Items are boxed, so floats are lost and nested lists are not allowed -(remember many displayed elements are defined as lists). If using -floats or lists inside inline lists is important, use an alternative -``mode'', which you can activate with -\texttt{mode=unboxed} (the default is \texttt{mode=boxes}). With it +If using floats, lists or displayed math inside inline lists is +important, use an alternative ``mode'', which you can activate with +\texttt{mode=unboxed} (the default is \texttt{mode=boxed}). With it, floats may be used freely, but misplaced |\item|s are not catched and \texttt{itemjoin*} is ignored (a warning is written to the log about this fact). @@ -730,17 +1070,16 @@ possible: |\setlist[]{}| \end{desc} Where || is the list level (one or more) in |list|, and the -corresponding levels in |enumerate| and -|itemize|.\footnote{\verb|\string\setenumerate|, -\verb|\string\setitemize| and \verb|\string\setdescription| are -deprecated.} With no -||, the format applies to all of them. Here list does not -mean any list but only the three ones handled by this package and -those redefined by this package or defined with |\newlist| (see -below). For example: +corresponding levels in |enumerate| and +|itemize|.\footnote{|\string\setenumerate|, +|\string\setitemize| and |\string\setdescription| are +deprecated.} With no ||, the format applies to all of them. +Here `list' does not mean any list but only the three ones handled by +this package, and those redefined by this package or defined with +|\newlist| (see below). For example: \begin{verbatim} \setlist{noitemsep} -\setlist[1]{\labelindent=\parindent} % << Usually a good idea +\setlist[1]{labelindent=\parindent} % << Usually a good idea \setlist[itemize]{leftmargin=*} \setlist[itemize,1]{label=$\triangleleft$} \setlist[enumerate]{labelsep=*, leftmargin=1.5pc} @@ -771,54 +1110,59 @@ you load this package you can write things like: \newcommand{\mylistname}{enumerate} \setlist[\mylistname,\value{toplist}+1]{labelsep=\itemindent+2em] \end{verbatim} -This allows defining lists within loops. +This allows defining lists with the help of loops. -Currently, a way to discriminate the font size is not provided -(|\normalsize|, |\small|\dots). +\begin{warning} + It seems there is no way to catch a misspelled name in |\setlist| or + |\newlist|, and a meaningless error ``Missing number, treated as + zero'' is raised. +\end{warning} -\section{\textsf{enumerate}-like labels} -\label{s.short} +\section{Size dependent settings} + +\New{3.6} The following package option is requrired for making use of +this feature. \begin{desc} -|shortlabels| (package option) +|sizes| (package option) \end{desc} -With the package option \texttt{shortlabels} you can use an -\textsf{enumerate}-like syntax, where |A|, |a|, |I|, -|i| and |1| stand for |\Alph*|, |\alph*|, -|\Roman*|, |\roman*| and |\arabic*|. This is intended -mainly as a sort of compatibility mode with the \textsf{enumerate} -package, and therefore the following special rule applies: if the very -first option (at any level) is not recognized as a valid key, then it -will be considered a label with the \textsf{enumerate}-like syntax. For -example: -\begin{verbatim} -\begin{enumerate}[i), labelindent=\parindent] -... -\end{enumerate} -\end{verbatim} -Although perhaps not so useful, you can omit |label=| in the -itemize environment under similar conditions, too: +Lengths can contain size-based settings as follows (the value before +the first $<$ is a default).% TODO -- An alternative |\setlist|. +\begingroup +\makeatletter +\renewcommand\verbatim@font{\normalfont\ttfamily} \begin{verbatim} -\begin{itemize}[\textbullet] -... -\end{itemize} +\setlist{ + topsep= 20pt <-10> 6pt <10-> 40pt, + leftmargin= <-10> 0cm <10> 1cm <10-> 2cm , + rightmargin= <-10> 0cm <10> 1cm <10-> 2cm , + } \end{verbatim} +\endgroup -\begin{desc} -|\SetEnumerateShortLabel{}{}| -\end{desc} - -With this command, you can define new keys (or redefine them), which is -particularly useful for enumerate to be adapted to especific -typographical rules or to extend it for non-Latin scrips. Here -|| contains one of the starred versions of -counters. For example: +Names are accepted, too: |script|, |tiny|, |footnote|, |small|, +|normal|, |large|, |Large|, |LARGE|, |huge|, |Huge| (ie, remove `size' +from the \LaTeX{} name if necessary). For example: +% TODO - |\SetEnumitemSizes| to configure it. +\begingroup +\makeatletter +\renewcommand\verbatim@font{\normalfont\ttfamily} \begin{verbatim} -\SetEnumerateShortLabel{i}{\textsc{\roman*}} +\setlist{ + topsep= 20pt <-normal> 6pt 40pt, + leftmargin= <-normal> 0cm 1cm 2cm , + rightmargin= <-normal> 0cm 1cm 2cm , + } \end{verbatim} -redefines |i| so that items using this key are numbered with -small caps roman numerals. The key has to be a single letter. +\endgroup + +Single values take precedence over ranges. In ranges, the last match +wins. The range |a-b| is $a \le \mbox{size} < b$ (the lower bound is +included, but not the upper one). These rules allow in the examples +above the setting for |10| or |normal| in the logical place. Remember +nominal sizes are not always the real sizes -- for example, with option +|11pt|, |\normalsize| (and |normal|) is 10.95. \section{Cloning the basic lists} \label{s.clone} @@ -829,23 +1173,46 @@ small caps roman numerals. The key has to be a single letter. \end{desc} The three lists can be cloned so that you can define ``logical'' -environments behaving like them. To define a new lists (or redefine a +environments behaving like them. To define a new lists (or redefine a existing one), use |\newlist| (or |\renewlist|), where || is -|enumerate|, |itemize| or |description|. - -If is |enumerate|, a set of counters with names |i|, -|ii|, |iii|, |iv|, etc. (depending on ) -is defined. Don't use an arbitrarily large number for , to -avoid creating too many counters. Then you can use those counters in -labels; e. g., if you have defined a list named \texttt{steps}, you -can define a label with: +|enumerate|, |itemize| or |description|. Inline lists have types +\texttt{enumerate*}, \texttt{itemize*}, and \texttt{description*}. + +\begin{note} + The inline ||s are available always, even without the package + option |inline|, which just defines three environments of the + corresponding types with those names. +\end{note} + +If || is |enumerate|, a set of counters with names |i|, +|ii|, |iii|, |iv|, etc. (depending on ||) +is defined. + +Then you can use those counters in labels; e. g., if you have defined a +list named \texttt{steps}, you can define a label with: \begin{verbatim} label=\arabic{stepsii}.\arabic{stepsi} \end{verbatim} +\begin{warning} + Don't use an arbitrarily large number for ||, to avoid + creating too many counters and related macros. +\end{warning} + +\begin{warning} + For consistency with the counter naming schema in \LaTeX, list levels + are also named internally with a roman numeral, ie, ||i, + ||ii, ||iii, etc. For this reason (both counter and list + names), defining two lists as, say, |books| and |booksi| leads to + unexpected results (currently without any warning, which should be + fixed). + % TODO - Perhaps I must change the internal names, so that + % this restriction doesn't apply to itemize and description.] +\end{warning} + \begin{desc} -\verb|\setlist[,]{}|\\ -\verb|\setlist*[,]{}| +|\setlist[,]{}|\\ +|\setlist*[,]{}| \end{desc} After creating a list, you can (in fact you @@ -857,7 +1224,7 @@ must, at least the label) set the new list with |\setlist|: \setlist[steps,1,2]{label=(\arabic*)} \end{verbatim} Names in the optional argument of |\setlist| say which lists applies the -settings to, and numbers say the level (it is calc-savvy). Several +settings to, and numbers say the level (it is |calc|-savvy). Several lists and/or several levels can be given, and all combinations are set; e.g.: \begin{verbatim} @@ -867,33 +1234,31 @@ set; e.g.: No number (or 0) means ``all levels'' and no name means ``all lists''; no optional argument means ``all lists at all levels''. -The three inline lists have types \texttt{enumerate*}, -\texttt{itemize*}, and \texttt{description*}, which are available -always, even without the package option |inline| (which just defines -three environments with these names). - -The starred form \verb|\setlist*| adds the settings to previous ones. +The starred form |\setlist*| adds the settings to the previous ones. \begin{desc} -\verb|\setlistdepth{|\3 +|\setlistdepth{}| \end{desc} By default, \LaTeX{} has a limit of 5 nesting levels, but when -cloning list this value may be too short, and therefore you may want +cloning lists this value may be too short, and therefore you may want to set a new value. In levels below the 5th (or the deepest defined by a -class), the settings of the last are used (i.e., \verb|\@listvi|). +class), the settings of the last are used (i.e., |\@listvi|). \section{More about counters} \subsection{New counter representation} \begin{desc} -\verb|\AddEnumerateCounter{}{}{}| +|\AddEnumerateCounter{}{}{}| \end{desc} ``Registers'' a counter representation so that \textsf{enumitem} recognizes it. Intended mainly for non Latin scripts, but also useful -in Latin scripts. For example: +in Latin scripts. + +\begin{example} +The following example defines a new counter with named ordinals: \begin{verbatim} \makeatletter \def\ctext#1{\expandafter\@ctext\csname c@#1\endcsname} @@ -902,153 +1267,73 @@ Fourth\or Fifth\or Sixth\fi} \makeatother \AddEnumerateCounter{\ctext}{\@ctext}{Second} \end{verbatim} -A starred variant allows to give a number instead of a string as the -widest label; for example, if the widest label is that corresponding -to the value 2:\3 -\begin{verbatim} -\AddEnumerateCounter*{\ctext}{\@ctmoreext}{2} -\end{verbatim} -This variant is to be preferred if the representation is not a plain -string but it is styled, e.g., -with small caps. (The counter names can contain |@| even if not a letter.) +\end{example} -\subsection{Restarting \texttt{enumerate}s} +\begin{note} + The counter names can contain |@| even if not a letter without + raising an error, as shown in the example above. +\end{note} -\begin{desc} -|\restartlist{}|\3 -\end{desc} +A starred variant allows to give a number instead of a string as the +widest label. -Currently, with +\begin{example} + If the widest label is that corresponding to the value 2: \begin{verbatim} -\setlist[enumerate]{resume} -\end{verbatim} -you can get a continuous numbering through a document. A new command has -been added for restarting the counter in the middle of the document: -\begin{verbatim} -\restartlist{} +\AddEnumerateCounter*{\ctext}{\@ctmoreext}{2} \end{verbatim} +\end{example} -It is based solely in the list name, not the list type, which means -\texttt{enumerate*} as defined with the package option \texttt{inline} -is not the same as \texttt{enumerate}, because its name is different. - -\section{Generic keys and values} - -\begin{desc} -|\SetEnumitemKey{}{}|\3 -\end{desc} +This variant is to be preferred if the representation is not a plain +string but it is styled, e.g., with small caps. -With this command you can create your own (valueless) keys. For -example: +\begin{example} + An example for Russian is: \begin{verbatim} -\SetEnumitemKey{midsep}{topsep=3pt,partopsep=0pt} +\AddEnumerateCounter*{\asbuk}{\c@asbuk}{7} \end{verbatim} +\end{example} -Keys so defined can then be used like the others. Another example is -multicolumn lists, with \textsf{multicol}: -\begin{verbatim} -\SetEnumitemKey{twocol}{ - itemsep=1\itemsep, - parsep=1\parsep, - before=\raggedcolumns\begin{multicols}{2}, - after=\end{multicols}} -\end{verbatim} - -(The settings for \texttt{itemsep} and \texttt{parsep} kill the -stretch and shrink parts. Of course, you may want to define a -new list.) - -Note the package may introduce new keys in the future, so -\verb|\SetEnumitemKey| is a potential source of forward -incompatibilities. However, it's safe using a non-letter character -other than hyphen or star in the key name (e.g., \verb|:name| or -\verb|2_col|). +\subsection{Restarting \texttt{enumerate}s} \begin{desc} -|\SetEnumitemValue{}{}{}|\3 +|\restartlist{}| \end{desc} -This commands provides a further abstraction layer for the -|=| pairs. With it you can define logical names which -are translated to the actual value. For example, with: +Currently you can get a continuous numbering through a document with: \begin{verbatim} -\SetEnumitemValue{label}{numeric}{\arabic*.} -\SetEnumitemValue{leftmargin}{standard}{\parindent} -\end{verbatim} -you might say: -\begin{verbatim} -\begin{enumerate}[label=numeric,leftmargin=standard] +\setlist[enumerate]{resume} \end{verbatim} -So, you can left to the final design what |label=numeric| means. +|\restartlist| has been added for restarting the counter in the middle +of the document. For example, you could emit a |\restartlist| when +chapters start, so that there is a continuous numbering through every +chapter. + +\begin{warning} +It is based solely in the list \textit{name}, \textit{not} the list +\textit{type}, which means \texttt{enumerate*} as defined with the +package option \texttt{inline} is not the same as \texttt{enumerate}, +because its name is different. +\end{warning} \section{Package options} -Besides \verb|inline|, \verb|ignoredisplayed|, and \verb|shortlabels|, -the following option is available. +Besides |inline|, |ignoredisplayed|, |sizes| and +|shortlabels|, the following option is available. \begin{desc} -\verb|loadonly| +|loadonly| \end{desc} With this package option the package is loaded but the three lists are not redefined. You can create your own lists, yet, or even redefine the existing ones. -\section{Three patterns} - -Three list layouts could be considered very -frequent. Let us apply the parameters above to define them. (Below -are samples.) - -The first pattern aligns the label with the surrounding -|\parindent| while the item body is indented depending -on the label and a fixed |labelsep|: -\begin{verbatim} -labelindent=\parindent, -leftmargin=* -\end{verbatim} -A fairly frequent variant is aligning the label with the -surrounding text (rememeber |labelindent| is |0pt| by -default): -\begin{verbatim} -leftmargin=* -\end{verbatim} -The former looks better in the first level while the latter -seems preferable in subsequent ones. That can be easily -set with -\begin{verbatim} -\setlist{leftmargin=*} -\setlist[1]{labelindent=\parindent} % Only the level 1 -\end{verbatim} - -The second pattern aligns the item body with the surrounding -|\parindent|. In this case: -\begin{verbatim} -leftmargin=\parindent -\end{verbatim} - -A third pattern would be to align the label with |\parindent| -and the item body with |2\parindent|: -\begin{verbatim} -labelindent=\parindent, -leftmargin=2\parindent, -itemsep=* -\end{verbatim} -Again, a variant would be to align the label with the surrounding -text and the itembody with |\parindent|: -\begin{verbatim} -leftmargin=\parindent, -itemsep=* -\end{verbatim} - -Note here |\parindent| means the global value applied -to normal paragraphs. - \section{The trivlist issue} \LaTeX{} uses a simplified version of |list| named |trivlist| to set -displayed material, like |center|, |verbatim|, \verb|tabbing|, -\verb|theorem|, etc., even if conceptually they are not lists. +displayed material, like |center|, |verbatim|, |tabbing|, +|theorem|, etc., even if conceptually they are not lists. Unfortunately, |trivlist| uses the current list settings, which has the odd side effect that changing the vertical spacing of lists also changes sometimes the spacing in these environments. @@ -1057,28 +1342,32 @@ This package modifies |trivlist| so that the default settings for the current level (ie, those set by the corresponding |clo| files) are set again. In standard \LaTeX{} that is usually redundand, but if we want to fine tune lists, not resetting the default values -could be a real issue (particularly if you use the |nolistsep| +could be a real issue (particularly if you use the |nosep| option). A minimal control of vertical spacing has been made possible -with\footnote{\verb|\string\setdisplayed| is deprecated.} +with\footnote{|\string\setdisplayed| is deprecated.} \begin{itemize} \item |\setlist[trivlist,]{}| \end{itemize} -but |trivlist| itself, which is not used directly very -often, does not accept an optional argument. This feature -is not intended as a full-fledge |trivlist| formatter. +but |trivlist| itself, which is not used directly very often, does not +accept an optional argument. This feature is not intended as a +full-fledge |trivlist| formatter. + +If for some reason you do not want to change |trivlist| and preserve +the original definition, you can use the package option +|ignoredisplayed|. + +% TODO - Document it may be applied to quote, tabbing, etc. -If for some reason you do not want to change |trivlist| -and preserve the original definition, you can use the -package option |ignoredisplayed|. +\New{3.6} If, on the other hand, you want to also apply the changes for +all lists to trivlists, just set the package option |includedisplayed|. \section{Samples} \expandafter\ifx\csname setenumerate\endcsname\relax -Please, install first the package and then typeset this -document again. +Please, install first the package and then typeset this document again. \else @@ -1109,7 +1398,7 @@ Una olla de algo m\'{a}s vaca que carnero, salpic\'{o}n las m\'{a}s noches, duelos y quebrantos los s\'{a}bados... \end{verbatim} -The rule shows \verb|labelindent|. +The rule shows |labelindent|. \samplesep @@ -1128,7 +1417,7 @@ noches, duelos y quebrantos los s\'{a}bados... With |\begin{enumerate}[leftmargin=*] % labelindent=0pt by default|. -The rule shows \verb|labelindent|. +The rule shows |labelindent|. \samplesep @@ -1147,7 +1436,7 @@ noches, duelos y quebrantos los s\'{a}bados... With |\begin{enumerate}[leftmargin=\parindent]|. -The rule shows \verb|leftmargin|. +The rule shows |leftmargin|. \samplesep @@ -1166,16 +1455,16 @@ noches, duelos y quebrantos los s\'{a}bados... With |\begin{enumerate}[labelindent=\parindent,|\allowbreak | leftmargin=*,|\allowbreak| label=\Roman*.,|\allowbreak -| widest=IV,|\allowbreak| align=left]|. +| widest=III,|\allowbreak| align=left]|. -The rule shows \verb|labelindent|. +The rule shows |labelindent|. Note \samplesep \showsep En un lugar de la Mancha, de cuyo nombre no quiero acordarme, no ha mucho tiempo que viv\'{\i}a un hidalgo de los de \begin{enumerate}[labelindent=\parindent, leftmargin=*, - label=\Roman*., widest=IV, align=left] + label=\Roman*., widest=III, align=left] \item lanza en astillero, \item adarna antigua, \item roc\'{\i}n flaco, y @@ -1292,8 +1581,8 @@ noches, duelos y quebrantos los s\'{a}bados... \newsample -Same, but with |multiline|. Note the text overlaps if -the item body is too short. +Same, but with |multiline|. Note the text overlaps if the item body is +too short. \samplesep @@ -1304,7 +1593,7 @@ no ha mucho tiempo que viv\'{\i}a un hidalgo de los de \item[Lo primero que ten\'{\i}a el Quijote] lanza en astillero, \item[Lo segundo] adarna antigua, \item[Lo tercero] roc\'{\i}n flaco, y -\item[Y por \'{u}ltimo, lo cuar] galgo corredor. +\item[Y por \'{u}ltimo, lo cuarto] galgo corredor. \end{description} Una olla de algo m\'{a}s vaca que carnero, salpic\'{o}n las m\'{a}s noches, duelos y quebrantos los s\'{a}bados... @@ -1364,24 +1653,23 @@ or \textsf{titlesec} and it is not stable enough yet. \item List resuming is based on environment names, and when a -|\newenvironment| contains a list you may want to use |\begin| and -|\end|. Using the corresponding commands, however, is not an error, -but it is your responsability to make sure the result is correct. - -\item -It seems there is no way to catch a misspelled name in |\setlist| -and a meaningless error ``Missing number, treated as zero'' is raised. +|\newenvironment| contains a list you may want to use |\begin{}| +and |\end{}|. Using the corresponding low-level commands (ie, +|\| and |\end|) is not an error, but it is your +responsability to make sure the result is correct. \item The behaviour of mixed boxed labels (including enumerate and itemize) and unboxed labels is not well-defined. The same applies to boxed and unboxed inline lists (which could even raise an error). + +\item Similarly, resuming a series and a list at the same time is allowed, too, but again its behaviour is not well-defined. \item (3.5.2) An incompatibility with 2.x has popped up -- if you were -using the optional argument to pass a value to a \verb|\ref| or other +using the optional argument to pass a value to a |\ref| or other macro requiring expandable macros, an error is raised. A quick fix -is letting \verb|\makelabel| to |\descriptionlabel| in \texttt{before}. +is letting |\makelabel| to |\descriptionlabel| in \texttt{before}. \end{itemize} @@ -1389,67 +1677,67 @@ is letting \verb|\makelabel| to |\descriptionlabel| in \texttt{before}. \begin{itemize} \item Inline lists, with keys to set how items are joined (ie, the -punctuation between items). Two modes are provided: \verb|boxed| and -\verb|unboxed|. +punctuation between items). Two modes are provided: |boxed| and +|unboxed|. -\item \verb|\setlist| is \textsf{calc}-savvy (eg, for use in loops), +\item |\setlist| is \textsf{calc}-savvy (eg, for use in loops), and you can set diferent lists and levels at once. \item All lengths -related to labels can take the value \verb|*| (and not only -\verb|labelsep| and \verb|leftmargin|). Its behaviour has been made -consistent and there is new value \verb|!| which does not compute the +related to labels can take the value |*| (and not only +|labelsep| and |leftmargin|). Its behaviour has been made +consistent and there is new value |!| which does not compute the widest label. -\item With \verb|\restartlist{}|, list counters can be restarted (in -case you are using \verb|resume|). +\item With |\restartlist{}|, list counters can be restarted (in +case you are using |resume|). -\item \verb|resume*| can be combined with other keys. +\item |resume*| can be combined with other keys. \item Lists can be gathered globally using series, so that they are considered a single list. To start a series just use |series=| and then resume it with |resume=| or |resume*=|. -\item The ``experimental'' \verb|fullwidth| has been replaced by a new key -\verb|wide|. +\item The ``experimental'' |fullwidth| has been replaced by a new key +|wide|. \item|\SetLabelAlign| defines new align values. -\item You can define ``abstract'' values (eg, \verb|label=numeric|) and +\item You can define ``abstract'' values (eg, |label=numeric|) and new keys. \end{itemize} \begin{itemize} -\item (3.2) \verb|start| and \verb|widest*| are \textsf{calc}-savvy. -\item (3.2) \verb|\value| can be used with \verb|widest*|. -\item (3.2) Some internal restrictions in \verb|\arabic| and the like +\item (3.2) |start| and |widest*| are \textsf{calc}-savvy. +\item (3.2) |\value| can be used with |widest*|. +\item (3.2) Some internal restrictions in |\arabic| and the like has been removed. It is more flexible at the cost of having a more ``relaxed'' error checking. \end{itemize} \subsection{Bug fixes} \begin{itemize} -\item Star values (eg, \verb|leftmargin=*|) could not be overriden +\item Star values (eg, |leftmargin=*|) could not be overriden and new values were ignored. -\item \verb|nolistsep| as the first of several keys was not always +\item |nolistsep| as the first of several keys was not always recognized and therefore treated like a short label -(i.e., \verb|nol\roman*stsep|). -\item \verb|labelwidth| did not always work (when there was a prior -\verb|widest| and \verb|*|) -\item With \verb|align=right| the label and the following text could +(i.e., |nol\roman*stsep|). +\item |labelwidth| did not always work (when there was a prior +|widest| and |*|) +\item With |align=right| the label and the following text could overlap. -\item \verb|description| did not get the correct list level. -\item At some point (2.x?) \verb|\value*| stopped working. +\item |description| did not get the correct list level. +\item At some point (2.x?) |\value*| stopped working. \item (3.1) Unfortunately, \textsf{xkeyval} ``kills'' \textsf{keyval}, so the lattest has been replicated in \textsf{enumitem}. -\item (3.3) Fixes a serious bug -- with \verb|*| neither -\verb|itemize| nor \verb|description| worked. -\item (3.4) Fixes bad spacing in mode boxed (misplaced \verb|\unskip| +\item (3.3) Fixes a serious bug -- with |*| neither +|itemize| nor |description| worked. +\item (3.4) Fixes bad spacing in mode boxed (misplaced |\unskip| before the first item and wrong spacefactor between items). -\item (3.4) \verb|nolistsep| did not work as intended, but since the -error has been there for several years, a new key \verb|nosep| is +\item (3.4) |nolistsep| did not work as intended, but since the +error has been there for several years, a new key |nosep| is provided. -\item (3.4) The issue with \verb|nolistsep| with \verb|shortlabels| +\item (3.4) The issue with |nolistsep| with |shortlabels| (see above) was not fixed in all cases. Hopefully now it is. \item (3.5.0) Fixed the fix related to the spacefactor between items. \item (3.5.0) Fixed a problem with nested boxed inline lists. @@ -1458,10 +1746,31 @@ bahaved like \texttt{resume}. \item (3.5.2) Fixed |\setlist*|, which didn't work. \end{itemize} - \subsection{Acknowledgements} I wish to thank particularly the comments and suggestions from Lars Madsen, who has found some bugs, too. \end{document} + +MIT License +----------- + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Master/texmf-dist/tex/latex/enumitem/enumitem.sty b/Master/texmf-dist/tex/latex/enumitem/enumitem.sty index 7a505b85541..9269843da11 100644 --- a/Master/texmf-dist/tex/latex/enumitem/enumitem.sty +++ b/Master/texmf-dist/tex/latex/enumitem/enumitem.sty @@ -1,25 +1,17 @@ -% +--------------------------------------------------+ -% | Typeset enumitem.tex to get the documentation. | -% +--------------------------------------------------+ % -% Copyright (c) 2003-2011 by Javier Bezos. -% All Rights Reserved. +% Copyright (C) 2003-2018 Javier Bezos http://www.texnia.com % -% This file is part of the enumitem distribution release 3.5.2 -% ----------------------------------------------------------- -% -% It may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either version 1.3 -% of this license or (at your option) any later version. -% The latest version of this license is in -% http://www.latex-project.org/lppl.txt -% and version 1.3 or later is part of all distributions of LaTeX -% version 2003/12/01 or later. -% -% This work has the LPPL maintenance status "maintained". -% -% The Current Maintainer of this work is Javier Bezos. +% This file may be distributed and/or modified under the conditions of +% the MIT License. A version can be found at the end of this file. % +% Repository: https://github.com/jbezos/enumitem +% +% Release +% ~~~~~~~ + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{enumitem}[2018/11/30 v3.6 Customized lists] + % Notes % ~~~~~ % @@ -40,22 +32,18 @@ % - Define keys with values % - Revise @nobreak % -% Release -% ~~~~~~~ - -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{enumitem}[2011/09/28 v3.5.2 Customized lists] - % +=============================+ % | EMULATING KEYVAL | % +=============================+ % -% "Thanks" to xkeyval, which use the same macros names as +% "Thanks" to xkeyval, which uses the same macro names as % keyval :-(, the latter has to be replicated in full here -% to ensure it works as intended. The original work if by +% to ensure it works as intended. The original work is by % David Carlisle, under license LPPL. Once the code is here, -% it could be optimized by adpting it to the specific needs -% of titlesec (to do). +% it could be optimized by adapting it to the specific needs +% of enumitem (to do). + +% TODO - Update to the latest changes in keyval \def\enitkv@setkeys#1#2{% \def\enitkv@prefix{enitkv@#1@}% @@ -63,9 +51,9 @@ \enitkv@do#2,\relax,} \def\enitkv@do#1,{% - \ifx\relax#1\empty\else - \enitkv@split#1==\relax - \expandafter\enitkv@do\fi} + \ifx\relax#1\empty\else + \enitkv@split#1==\relax + \expandafter\enitkv@do\fi} \def\enitkv@split#1=#2=#3\relax{% \enitkv@@sp@def\@tempa{#1}% @@ -124,23 +112,25 @@ {\csname enitkv@#1@#2\endcsname{#3}}% \@namedef{enitkv@#1@#2}##1} +% This ends the code copied from keyval (under LPPL). + % +=============================+ % | DEFINITIONS | % +=============================+ % % (1) The package uses a token register very often. To be on the -% safe side, instead of \toks@, etc., a new one is declared. +% safe side, instead of \toks@, etc., a new one is declared. % (2) \enit@inbox is the box storing the items in boxed inline -% lists. +% lists. % (3) \enit@outerparindent is used to save the outer parindent -% so that it can be used in the key parindent +% so that it can be used in the key parindent % (4) \enit@type has three values: 0 = enum, 1 = item, 2 = desc. % (5) \enit@calc stores which dimen is to be computed: -% 0=labelindent, 1=labelwidth, 2=labelsep, 3=leftmargin, -% 4=itemindent +% 0=labelindent, 1=labelwidth, 2=labelsep, 3=leftmargin, +% 4=itemindent % (6) \enit@resuming has four values: 0 = none, 1 = series, -% 2 = resume* series (computed in group enumitem-resume), -% 3 = resume* list (ie, with no value). +% 2 = resume* series (computed in group enumitem-resume), +% 3 = resume* list (ie, with no value). \chardef \enit@iv=4 \newlength\labelindent @@ -162,11 +152,32 @@ \def\enit@meaning{\expandafter\strip@prefix\meaning} \def\enit@noexcs#1{\expandafter\noexpand\csname#1\endcsname} +\long\def\enit@afterelse#1\else#2\fi{\fi#1} +\long\def\enit@afterfi#1\fi{\fi#1} +\def\enit@ifunset#1{% + \expandafter\ifx\csname#1\endcsname\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} +\enit@ifunset{ifcsname}% + {}% + {\def\enit@ifunset#1{% + \ifcsname#1\endcsname + \expandafter\ifx\csname#1\endcsname\relax + \enit@afterelse\expandafter\@firstoftwo + \else + \enit@afterfi\expandafter\@secondoftwo + \fi + \else + \expandafter\@firstoftwo + \fi}} + % Miscelaneous errors % =================== \def\enit@error{\PackageError{enumitem}} - + \def\enit@checkerror#1#2{% \enit@error{Unknown value `#2' for key `#1'}% {See the manual for valid values}} @@ -203,13 +214,12 @@ \else \count@\@listdepth \global\advance\@listdepth\@ne - \@ifundefined{@list\romannumeral\the\@listdepth}% + \enit@ifunset{@list\romannumeral\the\@listdepth}% {\expandafter\let \csname @list\romannumeral\the\@listdepth\expandafter\endcsname \csname @list\romannumeral\the\count@\endcsname}{}% \fi} - % +=============================+ % | KEYS | % +=============================+ @@ -230,16 +240,19 @@ % ================ \enitkv@key{enumitem}{topsep}{% - \setlength\topsep{#1}} + \enit@setlength\topsep{#1}} + +% \enitkv@key{enumitem}{bottomsep}{% + % \def\enit@bottomsep{#1}} \enitkv@key{enumitem}{itemsep}{% - \setlength\itemsep{#1}} + \enit@setlength\itemsep{#1}} \enitkv@key{enumitem}{parsep}{% - \setlength\parsep{#1}} + \enit@setlength\parsep{#1}} \enitkv@key{enumitem}{partopsep}{% - \setlength\partopsep{#1}} + \enit@setlength\partopsep{#1}} % Horizontal spacing % ================== @@ -261,13 +274,21 @@ \enit@calcwidestfalse \let\enit@calc\z@ \fi - \setlength#1{#3}% + \enit@setlength#1{#3}% \fi\fi} \def\enitkv@enumitem@widest#1{% \expandafter\let\csname enit@cw@\@enumctr\endcsname\relax \@namedef{enit@widest@\@enumctr}##1{#1}} +\def\enitkv@enumitem@widest#1{% + \ifcase\enit@type % enumerate + \expandafter\let\csname enit@cw@\@enumctr\endcsname\relax + \@namedef{enit@widest@\@enumctr}##1{\enit@format{#1}}% + \else % itemize / description + \def\enit@widest@{\enit@format{#1}}% + \fi} + \def\enitkv@enumitem@widest@default{% \expandafter\let\csname enit@cw@\@enumctr\endcsname\relax \expandafter\let\csname enit@widest@\@enumctr\endcsname\relax} @@ -284,7 +305,7 @@ \ifnum\enit@calc=\z@ \enit@calcwidestfalse \fi - \setlength\labelindent{#1}% + \enit@setlength\labelindent{#1}% \advance\labelindent\leftmargin} \enitkv@key{enumitem}{labelindent}{% @@ -311,10 +332,10 @@ \fi} \enitkv@key{enumitem}{listparindent}{% - \setlength\listparindent{#1}} + \enit@setlength\listparindent{#1}} \enitkv@key{enumitem}{rightmargin}{% - \setlength\rightmargin{#1}} + \enit@setlength\rightmargin{#1}} % labelsep, from itemindent; labelsep*, from leftmargin @@ -324,20 +345,33 @@ \enit@calcwidestfalse \let\enit@calc\z@ \fi - \setlength\labelsep{#1}% + \enit@setlength\labelsep{#1}% \advance\labelsep\itemindent} \enitkv@key{enumitem}{labelsep}{% \enit@sepfrommarginfalse \enit@calcset\labelsep\tw@{#1}} +\enitkv@key{enumitem}{left}{% + \enit@setleft#1..\@empty..\@@} + +\def\enit@setleft#1..#2..#3\@@{% + \enit@setlength\labelindent{#1}% + \edef\enit@a{#3}% + \ifx\enit@a\@empty + \enit@calcset\leftmargin\thr@@*% + \else + \enit@setlength\leftmargin{#2}% + \enit@calcset\labelsep\tw@*% + \fi} + % Series, resume and start % ======================== \enitkv@key{enumitem-resume}{series}{% \enit@checkseries@m \let\enit@resuming\@ne - \@ifundefined{enitkv@enumitem@#1}{}% + \enit@ifunset{enitkv@enumitem@#1}{}% {\enit@error{Invalid series name `#1'}% {Do not name a series with an existing key}}% \def\enit@series{#1}} @@ -351,12 +385,12 @@ \def\enitkv@enumitem@resume@default{% \@nameuse{enit@resume@\@currenvir}\relax} - + \@namedef{enitkv@enumitem-resume@resume*}#1{% \enit@checkseries@m \let\enit@resuming\tw@ \edef\enit@series{#1}% - \@ifundefined{enit@resumekeys@series@#1}% + \enit@ifunset{enit@resumekeys@series@#1}% {\enit@noserieserror{#1}}% {\expandafter\let\expandafter\enit@resumekeys \csname enit@resumekeys@series@#1\endcsname}} @@ -371,7 +405,7 @@ \enit@checkseries{resume*}} \newcommand\restartlist[1]{% - \@ifundefined{end#1}% + \enit@ifunset{end#1}% {\enit@error{Undefined list `#1'}% {No list has been defined with that name.}}% {\expandafter\let @@ -383,16 +417,16 @@ % Penalties % ========= - + \enitkv@key{enumitem}{beginpenalty}{% \@beginparpenalty#1\relax} - + \enitkv@key{enumitem}{midpenalty}{% \@itempenalty#1\relax} \enitkv@key{enumitem}{endpenalty}{% \@endparpenalty#1\relax} - + % Font/Format % =========== @@ -406,7 +440,7 @@ % ================== \enitkv@key{enumitem}{style}[normal]{% - \@ifundefined{enit@style@#1}% + \enit@ifunset{enit@style@#1}% {\enit@checkerror{style}{#1}}% {\enit@nextlinefalse \enit@boxdescfalse @@ -440,7 +474,7 @@ % -------- \enitkv@key{enumitem}{align}{% - \@ifundefined{enit@align@#1}% + \enit@ifunset{enit@align@#1}% {\enit@checkerror{align}{#1}}% {\csname enit@align@#1\endcsname}} @@ -489,7 +523,7 @@ % in the same hierarchy level. Explicit refs above the % current hierarchy level are overriden by label (besides ref), % too. Since an explicit ref has preference, it's delayed. - + \enitkv@key{enumitem}{ref}{% \g@addto@macro\enit@delayedkeys{,ref=#1}} @@ -540,6 +574,8 @@ \def\enit@addcounter@s#1#2#3{% \enit@addcounter{#1}{#2}% {\@nameuse{enit@sc@\expandafter\@gobble\string#2}{#3}}} + +% TODO - \SetEnumerateCounter % The 5 basic counters: @@ -568,7 +604,7 @@ % ---- \enitkv@key{enumitem}{mode}{% - \@ifundefined{enit@mode#1}% + \enit@ifunset{enit@mode#1}% {\enit@checkerror{mode}{#1}}% {\csname enit@mode#1\endcsname}} @@ -613,7 +649,7 @@ \in@{=}{#1}% Quick test, if contains =, it's key=value \ifin@\else \enitkv@@sp@def\enit@a{#1}% - \@ifundefined{enitkv@enumitem@\enit@meaning\enit@a}% + \enit@ifunset{enitkv@enumitem@\enit@meaning\enit@a}% {\ifnum\enit@type=\z@ \def\enit@elt{\enit@replace\enit@a}% \enit@marklist % Returns \enit@toks @@ -657,20 +693,27 @@ \enitkv@key{enumitem}{before}{% \def\enit@before{#1}} -\enitkv@key{enumitem}{after}{% - \def\enit@after{#1}} - \enitkv@key{enumitem}{before*}{% \expandafter\def\expandafter\enit@before\expandafter {\enit@before#1}} +\enitkv@key{enumitem}{after}{% + \def\enit@after{#1}} + \enitkv@key{enumitem}{after*}{% \expandafter\def\expandafter\enit@after\expandafter {\enit@after#1}} +\enitkv@key{enumitem}{first}{% + \def\enit@keyfirst{#1}} + +\enitkv@key{enumitem}{first*}{% + \expandafter\def\expandafter\enit@keyfirst\expandafter + {\enit@keyfirst#1}} + % Miscelaneous keys % ================ - + \enitkv@key{enumitem}{nolistsep}[true]{% \partopsep=\z@skip \topsep=\z@ plus .1pt @@ -683,7 +726,6 @@ \itemsep=\z@skip \parsep=\z@skip} - \enitkv@key{enumitem}{noitemsep}[true]{% \itemsep=\z@skip \parsep=\z@skip} @@ -692,7 +734,7 @@ \enit@align@left \leftmargin\z@ \labelwidth\z@ - \setlength\labelindent{#1}% + \enit@setlength\labelindent{#1}% \listparindent\labelindent \enit@calcset\itemindent\enit@iv!} @@ -710,15 +752,15 @@ % ------------ \newcommand\SetEnumitemValue[2]{% Implicit #3 - \@ifundefined{enit@enitkv@#1}% - {\@ifundefined{enitkv@enumitem@#1}% + \enit@ifunset{enit@enitkv@#1}% + {\enit@ifunset{enitkv@enumitem@#1}% {\enit@error{Wrong key `#1' in \string\SetEnumitemValue}% {Perhaps you have misspelled it}}{}% \expandafter\let\csname enit@enitkv@#1\expandafter\endcsname \csname enitkv@enumitem@#1\endcsname}{}% \@namedef{enitkv@enumitem@#1}##1{% \def\enit@a{##1}% - \@ifundefined{enit@enitkv@#1@\enit@meaning\enit@a}% + \enit@ifunset{enit@enitkv@#1@\enit@meaning\enit@a}% {\@nameuse{enit@enitkv@#1}{##1}}% {\@nameuse{enit@enitkv@#1\expandafter\expandafter\expandafter}% \expandafter\expandafter\expandafter @@ -729,7 +771,7 @@ % ------------- \newcommand\SetEnumitemKey[2]{% - \@ifundefined{enitkv@enumitem@#1}% + \enit@ifunset{enitkv@enumitem@#1}% {\enitkv@key{enumitem}{#1}[]{\enitkv@setkeys{enumitem}{#2}}}% {\enit@error{Duplicated key `#1' in \string\SetEnumitemKey}% {There already exists a key with that name}}} @@ -742,7 +784,7 @@ % ======== \def\enit@setkeys#1{% - \@ifundefined{enit@@#1}{}% + \enit@ifunset{enit@@#1}{}% {\expandafter\expandafter\expandafter \enit@setkeys@i\csname enit@@#1\endcsname\@@}} @@ -768,7 +810,7 @@ \def\enit@getwidth#1#2#3#4{% \let#4#3% \def#3##1{% - \@ifundefined{enit@widest\expandafter\@gobbletwo\string##1}% if no widest=key + \enit@ifunset{enit@widest\expandafter\@gobbletwo\string##1}% if no widest=key {#1}% {\csname enit@widest\expandafter\@gobbletwo\string##1\endcsname{#4}}}} @@ -780,8 +822,8 @@ \def\enit@calcwidth{% \ifenit@calcwidest - \ifnum\enit@type=\z@ % ie, enum - \@ifundefined{enit@cw@\@enumctr}% + \ifcase\enit@type% ie, enum + \enit@ifunset{enit@cw@\@enumctr}% {\@namedef{enit@cv@\@enumctr}{\enit@valueerror\@enumctr}}% {\edef\enit@values{% \enit@values @@ -789,16 +831,29 @@ \expandafter \edef\csname enit@cv@\@enumctr\endcsname {\@nameuse{c@\@enumctr}}}% + \begingroup + \enit@values + \def\value##1{\csname enit@cv@##1\endcsname}% + \let\enit@elt\enit@getwidth + \enit@labellist + \settowidth\labelwidth{\@itemlabel}% + \xdef\enit@a{\labelwidth\the\labelwidth\relax}% + \endgroup + \enit@a + \or + \ifx\enit@widest@\relax + \settowidth\labelwidth{\@itemlabel}% + \else + \settowidth\labelwidth{\enit@widest@}% + \fi + \else + \ifx\enit@widest@\relax + \settowidth\labelwidth{\@itemlabel}% + \else + \settowidth\labelwidth{\makelabel{\enit@widest@}}% + \fi + \advance\labelwidth-\labelsep \fi - \begingroup - \enit@values - \def\value##1{\csname enit@cv@##1\endcsname}% - \let\enit@elt\enit@getwidth - \enit@labellist - \settowidth\labelwidth{\@itemlabel}% - \xdef\enit@a{\labelwidth\the\labelwidth\relax}% - \endgroup - \enit@a \fi \advance\dimen@-\labelwidth} @@ -859,10 +914,11 @@ \def\enit@depth{#2}% \edef\enit@prevlabel{#3\romannumeral#2}% \advance#2\@ne} - + \def\enit@preset#1#2#3{% \enit@sepfrommarginfalse \enit@calcwidestfalse + \let\enit@widest@\relax \let\enit@resuming\z@ \let\enit@series\relax \enit@boxmodetrue @@ -871,6 +927,7 @@ \let\enit@afterlabel\nobreakspace \let\enit@before\@empty \let\enit@after\@empty + \let\enit@keyfirst\@empty \let\enit@format\@firstofone % and NOT empty \let\enit@ref\relax \labelindent\z@skip @@ -890,16 +947,16 @@ % resume*= \def\enitkv@err@a#1{% - \@ifundefined{enit@resumekeys@series@\@tempa}{}% + \enit@ifunset{enit@resumekeys@series@\@tempa}{}% {\@nameuse{enitkv@enumitem-resume@resume*\expandafter}% \expandafter{\@tempa}}} % keyval "error" in the optional argument: all undefined keys are % passed to the keyval error, but is ignored (already -% processed in enumitem-resume +% processed in enumitem-resume) \def\enitkv@err@b#1{% - \@ifundefined{enit@resumekeys@series@\@tempa}% + \enit@ifunset{enit@resumekeys@series@\@tempa}% {\enit@savekverr{#1}}% {}} @@ -924,6 +981,101 @@ \expandafter\enit@setkeys@i\enit@savekeys\@@ \let\enitkv@errx\enit@savekverr} +% Handling <> sytax for font sizes +% ================================ +% The following code is based on LaTeX (\DeclareFontShape). Only the +% code for <> is preserved (no functions), and a default value can be +% set before the first <>. In addition, here single values take +% precedende over ranges. The original work is by the LaTeX Team, +% under license LPPL. + +\def\enit@ifnot@nil#1{% + \def\enit@a{#1}% + \ifx\enit@a\@nnil + \expandafter\@gobble + \else + \expandafter\@firstofone + \fi} + +\def\enit@remove@to@nnil#1\@nnil{} +\def\enit@remove@angles#1>{\enit@simple@size} + +\def\enit@simple@size#1<{% + \if<#1<% + \expandafter\enit@remove@angles + \else + \def\enit@c{#1}% + \expandafter\enit@remove@to@nnil + \fi} + +\def\enit@extractrange#1<#2>{% + \ifx\enit@c\relax + \def\enit@c{#1}% + \fi + \enit@isrange#2->\@nil#2>} + +\def\enit@isrange#1-#2\@nil{% + \if>#2% + \expandafter\enit@check@single + \else + \expandafter\enit@check@range + \fi} + +\def\enit@check@range#1-#2>#3<#4\@nnil{% + \enit@ifnot@nil{#3}{% + \def\enit@b{\enit@extractrange<#4\@nnil}% + \upper@bound=% + \enit@ifunset{enit@sizefor@#2}{0#2\p@}{\@nameuse{enit@sizefor@#2}\p@}% + %%% usar count@ + \ifdim\upper@bound=\z@ \upper@bound\maxdimen \fi + \ifdim\f@size\p@<\upper@bound + \lower@bound=% + \enit@ifunset{enit@sizefor@#1}{0#1\p@}{\@nameuse{enit@sizefor@#1}\p@}% + \ifdim\f@size\p@<\lower@bound + \else + \enit@simple@size#3<#4\@nnil + \fi + \fi + \enit@b}} + +\def\enit@check@single#1>#2<#3\@nnil{% + \def\enit@b{\enit@extractrange<#3\@nnil}% + \ifdim\f@size\p@= + \enit@ifunset{enit@sizefor@#1}{0#1\p@}{\@nameuse{enit@sizefor@#1}\p@}% + \enit@simple@size#2<#3\@nnil + \let\enit@d\enit@c + \fi + \enit@b} + +\def\enit@try@size@range#1{% + \def\enit@a{#1}% + \let\enit@c\relax % last in range + \let\enit@d\relax % single + \expandafter\enit@extractrange\enit@a <-*>\@nil<\@nnil} + +% \enit@setlength is defined in the options section + +% This ends the code adapted from latex (under LPPL). + +% TODO - \SetEnumitemSizes +% TODO - \setlist[opt]{..} + +\def\enit@getsizefor#1#2{% + {\let\selectfont\relax + #2% + \expandafter\xdef\csname enit@sizefor@#1\endcsname{\f@size}}} + +\enit@getsizefor{script}\scriptsize +\enit@getsizefor{tiny}\tiny +\enit@getsizefor{footnote}\footnotesize +\enit@getsizefor{small}\small +\enit@getsizefor{normal}\normalsize +\enit@getsizefor{large}\large +\enit@getsizefor{Large}\Large +\enit@getsizefor{LARGE}\LARGE +\enit@getsizefor{huge}\huge +\enit@getsizefor{Huge}\Huge + % +=============================+ % | LIST TYPES | % +=============================+ @@ -1047,7 +1199,7 @@ \else \ifenit@noinitem\else \ifhmode\unskip\fi - \@ifundefined{enit@itemjoin@s}% + \enit@ifunset{enit@itemjoin@s}% {\enit@itemjoin}% {\enit@itemjoin@s}% \fi @@ -1209,6 +1361,7 @@ \enit@ref \enit@calcleft \enit@before}% + \enit@keyfirst \fi} \let\enit@endenumerate\enit@endlist @@ -1229,7 +1382,7 @@ \@namedef{enit@itemize*}{% \let\enit@list\enit@inlist \enit@itemize@i} - + \def\enit@itemize@i#1#2#3#4{% \ifnum#1>#3\relax \enit@toodeep @@ -1244,6 +1397,7 @@ \enit@preset{#2}{#1}{#4}% \enit@calcleft \enit@before}% + \enit@keyfirst \fi} \let\enit@enditemize\enit@endlist @@ -1290,6 +1444,7 @@ \aftergroup\enit@postlabel \fi}% \enit@before}% + \enit@keyfirst \fi} \let\enit@enddescription\enit@endlist @@ -1303,8 +1458,11 @@ \parsep\parskip \csname @list\romannumeral\the\@listdepth\endcsname \@nmbrlistfalse + \enit@setglobalkeys % ie, list and list \enit@setkeys{trivlist}% \enit@setkeys{trivlist\romannumeral\@listdepth}% + \enit@setkeys{\@currenvir}% + \enit@setkeys{\@currenvir\romannumeral\@listdepth}% \@trivlist \labelwidth\z@ \leftmargin\z@ @@ -1312,6 +1470,17 @@ \let\@itemlabel\@empty \def\makelabel##1{##1}} +% Let's recognize also the standard trivlists (except theorems) + +\let\enitdp@quote\@empty +\let\enitdp@quotation\@empty +\let\enitdp@verse\@empty +\let\enitdp@thebibliography\@empty +\let\enitdp@center\@empty +\let\enitdp@flushleft\@empty +\let\enitdp@flushright\@empty +\let\enitdp@tabbing\@empty + % Description styles % ================== % @@ -1444,9 +1613,9 @@ \let\enit@c\@empty \protected@edef\enit@a{#2}% \@for\enit@a:=\enit@a\do{% the 2nd enit@a is first expanded - \@ifundefined{enitdp@\enit@meaning\enit@a}% + \enit@ifunset{enitdp@\enit@meaning\enit@a}% {\edef\enit@c{\enit@c\enit@eltlevels{\enit@a}}}% - {\@ifundefined{enit@short\enit@meaning\enit@a}% + {\enit@ifunset{enit@short\enit@meaning\enit@a}% \@empty {\edef\enit@a{\@nameuse{enit@short\enit@a}}}% \edef\enit@b{\enit@b\enit@eltnames{\enit@a}}}}% @@ -1487,7 +1656,7 @@ \def\enit@xset@enumerate{% \enit@xset@itemize - \@ifundefined{c@\enit@c\romannumeral\count@}% + \enit@ifunset{c@\enit@c\romannumeral\count@}% {\@definecounter{\enit@c\romannumeral\count@}}{}} \@namedef{enit@xset@enumerate*}{\enit@xset@enumerate} @@ -1500,15 +1669,15 @@ % , , , \def\enit@newlist#1#2#3#4{% - \@ifundefined{enit@xset@#3}% + \enit@ifunset{enit@xset@#3}% {\enit@error{Unknown list type `#3')}% {Valid types are: - enumerate, itemize, description,\messageBreak + enumerate, itemize, description,\MessageBreak enumerate*, itemize*, description*}}% {}% \setcounter{enit@cnt}{#4}% \count@\@ne - \@ifundefined{enit@short#2}% + \enit@ifunset{enit@short#2}% {\def\enit@c{#2}}% {\edef\enit@c{\csname enit@short#2\endcsname}}% \loop @@ -1516,7 +1685,7 @@ \ifnum\count@<\c@enit@cnt \advance\count@\@ne \repeat - \@ifundefined{enitdp@#2}% + \enit@ifunset{enitdp@#2}% {\expandafter\newcount\csname enitdp@#2\endcsname}{}% \csname enitdp@#2\endcsname\z@ \advance\c@enit@cnt\m@ne @@ -1543,6 +1712,11 @@ \newif\ifenit@loadonly \DeclareOption{ignoredisplayed}{\let\enit@trivlist\trivlist} +\DeclareOption{includedisplayed}{% + \def\enit@setglobalkeys{% + \enit@setkeys{list}% + \enit@setkeys{list\romannumeral\@listdepth}}} +\let\enit@setglobalkeys\relax \DeclareOption{loadonly}{\enit@loadonlytrue} \DeclareOption{shortlabels} {\def\enit@shl#1{% @@ -1563,6 +1737,13 @@ {\@nameuse{enit@description*}\enitdp@description{description}\@M{#1}} {\@nameuse{enit@enddescription*}}} +\let\enit@setlength\setlength +\DeclareOption{sizes} + {\def\enit@setlength#1#2{% + \enit@try@size@range{#2}% Returns \enit@c and or enit@d + \ifx\enit@d\relax\else\let\enit@c\enit@d\fi + \setlength#1{\enit@c}}} + \let\enit@shl\enit@toks \ProcessOptions @@ -1590,4 +1771,63 @@ \fi +% +=============================+ +% | TOOLS | +% +=============================+ + +\def\DrawEnumitemLabel{% + \ifvmode + \hbox{\hskip\@totalleftmargin + \hskip-\leftmargin + \vrule width \leftmargin height 8pt depth -7pt + \hskip\itemindent + \ifdim\labelindent<\z@ + \hskip-\leftmargin + \hskip\labelindent + \vrule width -\labelindent height 6pt depth -5pt + \hskip\labelindent + \else + \hskip-\labelsep + \hskip-\labelwidth + \hskip-\labelindent + \vrule width \labelindent height 6pt depth -4pt + \fi + \vrule width \labelwidth height 4pt depth -2pt + \vrule width \labelsep height 2pt}% + \else + \enit@error + {\string\DrawEnumitemLabel\space must be used in vertical mode}% + {Very likely, just inserting a blank line before will fix it}} + +% TODO - option 'verbose' + +% +=============================+ +% | TWO-PASS TOOLS | +% +=============================+ + +% TODO - downstep +% TODO - autowidest + \endinput + +MIT License +----------- + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index 5f0aa9ec3e2..e13d15d99c5 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -560,6 +560,7 @@ chomp ($Build = `cd $Master/../Build/source && pwd`); 'hyph-utf8', "&MAKEcopy", 'hyphen-german',"die 'skipping, part of hyph-utf8'", 'ibygrk', "&MAKEflatten", + 'icon-appr', "die 'skipping, per author (dps) request'", 'ieeeconf', "die 'skipping, use IEEEconf'", 'ieeetran', "die 'skipping, use IEEEtran'", 'ifacmtg', "die 'skipping, nonfree license'", -- cgit v1.2.3