summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/outlines/outlines.sty
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/outlines/outlines.sty')
-rw-r--r--macros/latex/contrib/outlines/outlines.sty147
1 files changed, 147 insertions, 0 deletions
diff --git a/macros/latex/contrib/outlines/outlines.sty b/macros/latex/contrib/outlines/outlines.sty
new file mode 100644
index 0000000000..1d67e5c7b8
--- /dev/null
+++ b/macros/latex/contrib/outlines/outlines.sty
@@ -0,0 +1,147 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% outlines.sty - Provides an "outline" environment for mixed-level
+% outline lists
+%
+% Charles Pecheur, UCL, 2005 -- 2012
+% charles.pecheur@uclouvain.be
+%
+% Note: this package has no connection with outline.sty or outliner.sty,
+% that are available on CTAN
+%
+% This work 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 2005/12/01 or later.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Usage:
+%
+% \usepackage{outlines}
+%
+% \begin{outline}[<list-style>]
+% \1 <level 1 text>
+% \1[<label>] <level 1 text>
+% \2 <level 2 text>
+% \3 <level 3 text>
+% \4 <level 4 text>
+% \0 <normal paragraph>
+% ...
+% \end{outline}
+%
+% where:
+% + <list-style> is an optional list environment name
+% (e.g. itemize, enumerate, ...). The default is itemize.
+% The same style is used for all levels that have not been overridden.
+% + <label> is an optional label, as in \item[<label>].
+% + Levels may be mixed freely, except that a \1 must come before
+% the first \2, a \2 before the first \3, etc.
+% (this restriction is inherited from list environments).
+% + \0 gives a normal, non-list paragraph.
+% + List styles for each level can be overridden by re-defining
+% \outlinei, ..., \outlineiiii, either globally or inside an outline block.
+%
+% Do not nest outlines inside outlines or other lists. Lists inside outlines
+% should work fine.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ProvidesPackage{outlines}[2012/1/23 1.1 Ch. Pecheur]
+\RequirePackage{ifthen}
+
+\makeatletter
+% \ol@type stores the default list style
+\newcommand{\ol@type}{itemize}
+% \ol@typei ... store the (list) environment names used in outlines
+\newcommand{\outlinei}{\ol@type}
+\newcommand{\outlineii}{\ol@type}
+\newcommand{\outlineiii}{\ol@type}
+\newcommand{\outlineiiii}{\ol@type}
+% \ol@inci ..., \ol@deci ... increase/decrease the indentation level
+\newcommand{\ol@inci}{\begin{\outlinei}}
+\newcommand{\ol@deci}{\end{\outlinei}}
+\newcommand{\ol@incii}{\begin{\outlineii}}
+\newcommand{\ol@decii}{\end{\outlineii}}
+\newcommand{\ol@inciii}{\begin{\outlineiii}}
+\newcommand{\ol@deciii}{\end{\outlineiii}}
+\newcommand{\ol@inciiii}{\begin{\outlineiiii}}
+\newcommand{\ol@deciiii}{\end{\outlineiiii}}
+
+% \ol@toz, \ol@toi ... "transition" to indentation level 0..4 by opening or
+% closing nested list levels as needed.
+% They are dynamically modified according to the current level.
+\newcommand{\ol@toz}{}
+\newcommand{\ol@toi}{}
+\newcommand{\ol@toii}{}
+\newcommand{\ol@toiii}{}
+\newcommand{\ol@toiiii}{}
+
+% \ol@commands{C0}{C1}{C2}{C3}{C4} set the level transition commands
+% above to C0..C4
+\newcommand{\ol@commands}[5]{%
+ \renewcommand{\ol@toz}{#1}%
+ \renewcommand{\ol@toi}{#2}%
+ \renewcommand{\ol@toii}{#3}%
+ \renewcommand{\ol@toiii}{#4}%
+ \renewcommand{\ol@toiiii}{#5}%
+}
+
+% \ol@exit resets transition commands. This is not mandatory, just cleaner.
+\newcommand{\ol@exit}{%
+ \ol@commands{}{}{}{}{}}
+% \ol@z, \ol@i ... update all transitions for level 0..4
+\newcommand{\ol@z}{%
+ \ol@commands%
+ {}%
+ {\ol@inci}%
+ {\ol@inci\ol@incii}%
+ {\ol@inci\ol@incii\ol@inciii}%
+ {\ol@inci\ol@incii\ol@inciii\ol@inciiii}}
+\newcommand{\ol@i}{%
+ \ol@commands%
+ {\ol@deci}%
+ {}%
+ {\ol@incii}%
+ {\ol@incii\ol@inciii}%
+ {\ol@incii\ol@inciii\ol@inciiii}}
+\newcommand{\ol@ii}{%
+ \ol@commands%
+ {\ol@decii\ol@deci}%
+ {\ol@decii}%
+ {}%
+ {\ol@inciii}%
+ {\ol@inciii\ol@inciiii}}
+\newcommand{\ol@iii}{%
+ \ol@commands%
+ {\ol@deciii\ol@decii\ol@deci}%
+ {\ol@deciii\ol@decii}%
+ {\ol@deciii}%
+ {}%
+ {\ol@inciiii}}
+\newcommand{\ol@iiii}{%
+ \ol@commands%
+ {\ol@deciiii\ol@deciii\ol@decii\ol@deci}%
+ {\ol@deciiii\ol@deciii\ol@decii}%
+ {\ol@deciiii\ol@deciii}%
+ {\ol@deciiii}%
+ {}}
+
+
+% the outline environment provides commands \1..\4 for
+% introducing items at level 1..4, and \0 for normal paragraphs
+% within the outline section.
+\newenvironment{outline}[1][]{%
+ \ifthenelse{\equal{#1}{}}{}{\renewcommand{\ol@type}{#1}}%
+ \ol@z%
+ \newcommand{\0}{\ol@toz\ol@z}%
+ \newcommand{\1}{\ol@toi\ol@i\item}%
+ \newcommand{\2}{\ol@toii\ol@ii\item}%
+ \newcommand{\3}{\ol@toiii\ol@iii\item}%
+ \newcommand{\4}{\ol@toiiii\ol@iiii\item}%
+}{%
+ \ol@toz\ol@exit%
+}
+
+\makeatother
+
+