summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/gene/limap/limap.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/gene/limap/limap.dtx
Initial commit
Diffstat (limited to 'macros/latex/contrib/gene/limap/limap.dtx')
-rw-r--r--macros/latex/contrib/gene/limap/limap.dtx2380
1 files changed, 2380 insertions, 0 deletions
diff --git a/macros/latex/contrib/gene/limap/limap.dtx b/macros/latex/contrib/gene/limap/limap.dtx
new file mode 100644
index 0000000000..1a3ea7bb9d
--- /dev/null
+++ b/macros/latex/contrib/gene/limap/limap.dtx
@@ -0,0 +1,2380 @@
+%%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%\iffalse
+%% Purpose:
+%% A package for typesetting Information Maps.
+%%
+%% Documentation:
+%% The documentation can be generated from the original file
+%% limap.dtx with the doc class/package. LaTeX the file limap.tex
+%% to get the full documentation in pdf format.
+%%
+%% Author: Gerd Neugebauer
+%% Im Lerchelsb\"ohl 5
+%% 64521 Gro\ss-Gerau (Germany)
+%% Mail: gene@gerd-neugebauer.de
+%%
+%% Copyright (C) 1999-2017 Gerd Neugebauer
+%%
+%% limap.dtx may be distributed under the terms of the LaTeX Project
+%% Public License version 1.3c, as described in lppl.txt.
+%%
+%% This class is still under development and may be replaced with a
+%% new version which provides an enhanced functionality.
+%%
+%\fi
+%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \title{\texttt{limap}: A \LaTeX\ Package and Class for Typesetting Information Maps}
+% \author{Gerd Neugebauer\\\normalsize
+% Net: \texttt{\href{mailto:gene@gerd-neugebauer.de}{gene@gerd-neugebauer.de}}}
+% \hypersetup{
+% pdftitle = {limap},
+% pdfsubject = {A LaTeX Package for Typesetting Information Maps},
+% pdfauthor = {Gerd Neugebauer},
+% }
+%
+% \date{This file documents \filename\ version \fileversion\ as of
+% \filedate.\\ Documentation date: \docdate}
+%
+% \maketitle
+%
+%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \changes{1.0}{2000/03/01}{First public release.}
+% \changes{2.0}{2016/04/16}{Fix in |MapTableofContents|: Trailing percent made unnecessary}
+% \changes{2.0}{2016/04/16}{Extensions integrated into the package.
+% Documentation improved.}
+% \changes{2.0}{2016/04/14}{Renamed |MapTOCemph| to |MapTOCheadfont|.}
+% \changes{2.0}{2016/04/15}{Renamed |MapTitleSize| to |MapTitleFont|.}
+% \changes{2.0}{2016/04/16}{Renamed |MapTitlefraction| to |MapTitleFraction|.}
+% \changes{2.0}{2016/04/16}{Environment |MapTabular| added}
+% \changes{2.0}{2016/04/16}{Renamed |MapTextfraction| to |MapTextFraction|.}
+% \changes{2.0}{2016/04/16}{Parameter |MapBlockLabelFont| introduced.}
+% \changes{2.0}{2016/04/16}{Parameter |MapBlockLabelFont| introduced.}
+% \changes{2.0}{2016/04/17}{Renamed |MapTitleContinuedSize| to |MapTitleContinuedFont|.}
+% \changes{2.0}{2016/05/22}{TOC Re-engineered to allow
+% interaction with hyperref.}
+% \changes{2.0}{2016/05/22}{Option |nolines| added.}
+% \changes{2.1}{2016/05/24}{|WideBlock| fixed and samples added.}
+% \changes{2.1}{2016/05/26}{|MapTabularFraction| added.}
+%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \DoNotIndex{\ ,\",\',\.,\[,\\,\],\^,\`,\~,\@,\@author,\@auxout}
+% \DoNotIndex{\@currentlabel,\@currenvir,\@date}
+% \DoNotIndex{\@dottedtocline,\@gobble,\@gobbletwo,\@highpenalty}
+% \DoNotIndex{\@ifnextchar,\@ifstar,\@ifundefined}
+% \DoNotIndex{\@namedef,\@nameuse,\@pnumwidth,\@startsection,\@starttoc}
+% \DoNotIndex{\@tempdima,\@title,\@thefnmark,\@undefined}
+% \DoNotIndex{\@ixpt,\@vpt,\@vipt,\@viipt,\@viiipt}
+% \DoNotIndex{\@xpt,\@xipt,\@xiipt,\@xivpt,\@xvii,\@xxpt,\@xxvpt}
+% \DoNotIndex{\AA,\AE,\CodelineIndex,\CurrentOption}
+% \DoNotIndex{\DescribeEnv,\DescribeMacro,\DeclareOption,\DeleteShortVerb,\DocInput}
+% \DoNotIndex{\EnableCrossrefs,\H,\InputIfFileExists}
+% \DoNotIndex{\L,\LARGE,\LaTeX,\Large}
+% \DoNotIndex{\LoadClass,\NeedsTeXFormat,\O,\OE,\OptionNotUsed}
+% \DoNotIndex{\PackageError,\PackageWarning,\PassOptionsToClass}
+% \DoNotIndex{\ProcessOptions,\ProvidesClass,\PrintDescribeEnv,\PrintDescribeMacro}
+% \DoNotIndex{\PrintChanges,\PrintIndex}
+% \DoNotIndex{\ProvidesPackage,\R,\RecordChanges,\RequirePackage,\TeX}
+% \DoNotIndex{\SpecialEnvIndex,\SpecialUsageIndex}
+% \DoNotIndex{\aa,\addcontentsline,\addpenalty,\addtolength,\advance}
+% \DoNotIndex{\addvspace,\ae,\ast,\arabic}
+% \DoNotIndex{\b,\baselineskip,\begin,\begingroup,\bfseries,\bgroup}
+% \DoNotIndex{\bigskip,\bottomrule,\box,\bullet}
+% \DoNotIndex{\c,\cal,\catcode,\centering,\chapter,\chardef,\circ}
+% \DoNotIndex{\cfoot,\clearpage,\closein,\closeout}
+% \DoNotIndex{\clubpenalty,\color,\csname}
+% \DoNotIndex{\d,\def,\dimen,\diamond,\divide,\documentclass,\dots,\dp}
+% \DoNotIndex{\definecolor}
+% \DoNotIndex{\edef,\egroup,\else,\em,\emph,\empty,\end,\endcsname}
+% \DoNotIndex{\endgroup,\endinput,\endlist}
+% \DoNotIndex{\expandafter,\fbox,\fi,\footnotesize,\footskip,\framebox}
+% \DoNotIndex{\frenchspacing,\futurelet,\gdef,\global,\gobble}
+% \DoNotIndex{\hangafter,\hangindent,\hbox,\headheight,\headsep,\hfil}
+% \DoNotIndex{\hfill,\hrule,\hskip,\hspace,\hss,\ht,\huge,\hypersetup}
+% \DoNotIndex{\ifcat,\ifeof}
+% \DoNotIndex{\ifdim,\ifnum,\iftrue,\ifx,\ignorespaces,\immediate,\index}
+% \DoNotIndex{\input,\it}
+% \DoNotIndex{\itemindent,\itemsep,\jobname,\kern,\l,\labelsep,\labelwidth}
+% \DoNotIndex{\large,\leavevmode,\leftmark,\leftskip,\let,\lhead,\list}
+% \DoNotIndex{\llap,\long,\lower}
+% \DoNotIndex{\makeatletter,\makeatother}
+% \DoNotIndex{\m@th,\makebox,\magstep,\makeindex,\markboth,\mbox,\medskip}
+% \DoNotIndex{\marginpar,\midrule,\multicolumn}
+% \DoNotIndex{\newblock,\newcommand,\newcount,\newenvironment,\newfont}
+% \DoNotIndex{\newif,\newlength,\newline,\newpage,\newread,\newwrite}
+% \DoNotIndex{\nobreak,\noindent,\normalsize,\null}
+% \DoNotIndex{\o,\oddsidemargin,\oe,\openin,\openout,\or}
+% \DoNotIndex{\pagestyle,\par,\paragraph,\parbox}
+% \DoNotIndex{\parfillskip,\parindent,\parsep,\parskip,\part,\partopsep}
+% \DoNotIndex{\penalty,\providecommand,\quad}
+% \DoNotIndex{\raggedbottom,\raggedright,\raise,\raisebox,\refstepcounter}
+% \DoNotIndex{\relax,\renewcommand,\renewenvironment,\rhead}
+% \DoNotIndex{\rightskip,\rm,\rule}
+% \DoNotIndex{\sbox,\sc,\section,\setcounter,\setlength,\settowidth}
+% \DoNotIndex{\sf,\sfcode,\sl}
+% \DoNotIndex{\sloppy,\small,\space,\ss,\string}
+% \DoNotIndex{\setsansfont,\setmonofont,\setmainfont}
+% \DoNotIndex{\subparagraph,\subsubparagraph}
+% \DoNotIndex{\subsection,\subsubsection,\symbol}
+% \DoNotIndex{\t,\tenex,\textheight,\textit,\textsf,\textstyle,\textwidth}
+% \DoNotIndex{\textrm,\the,\thepage,\thispagestyle,\textregistered}
+% \DoNotIndex{\topmargin,\toprule,\topsep,\tt,\typeout}
+% \DoNotIndex{\u,\unitlength,\usecounter,\usepackage,\usetikzlibrary}
+% \DoNotIndex{\v,\varepsilon,\vbox}
+% \DoNotIndex{\vfill,\vsize,\voffset,\vskip,\vspace,\vss}
+% \DoNotIndex{\wd,\widowpenalty,\write,\xdef,\z@,\(,\)}
+%
+%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \CheckSum{813}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%%
+%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \begin{Abstract}
+% The Information Mapping\R method provides a methodology for
+% structuring and presenting information. It claims to be useful
+% for readers who are more concerned about finding the right
+% information than reading the document as a whole. Thus short,
+% highly structured, and context free pieces of information are
+% used.
+%
+% \texttt{limap} provides a \LaTeX{} package and a \LaTeX{}
+% class. The package contains definitions to typeset maps and
+% blocks according to the Information Mapping\R method. The class
+% provides all definitions to typeset a whole document.
+% \end{Abstract}
+%
+% \newpage
+% \begin{Map}{}
+% \vspace*{-6ex}%
+% \Block{Copyright}%
+% Copyright \textcopyright\ 1999–2016
+% \href{http://www.gerd-neugebauer.de}{Gerd Neugebauer}
+%
+% \Block{Licenses}%
+% The source files of |limap| and the derived files
+% \begin{itemize}\itemsep=0pt
+% \item |limap.dtx|
+% \item |limap.ins|
+% \item |README.md|
+% \item |Makefile|
+% \item |limap.sty|
+% \item |limap.cls|
+% \item |limap.pdf|
+% \end{itemize}
+% may be distributed under the terms of the \LaTeX\ Project
+% Public License version 1.3c, as described in the file
+% |lppl.txt|.
+%
+% The documentation can be used under the
+% \href{http://creativecommons.org/licenses/by-sa/4.0/}{Creative
+% Commons Attributation-Share Alike 4.0 License} (CC BY-SA 4.0).
+%
+% The files in the |samples| directory are distributed unter
+% \href{http://creativecommons/zero/1.0}{Creative Commons CC0
+% 1.0 Universal}.
+%
+% \Block{Net}%
+% The sources of |limap| are hosted on Sourceforge as part of the
+% project \texttt{gene-tex-lib}. The sources can be found under
+% the URL
+% \url{https://sourceforge.net/p/gene-tex-lib/svn/HEAD/tree/limap/}.
+%
+% A bundled distribution can be obtained via CTAN under the
+% package URL
+% \url{https://www.ctan.org/pkg/limap} or from the package's home
+% page under \url{http://www.gerd-neugebauer.de/sowftware/TeX/limap}.
+%
+% \Block{Contact}%
+% The author can be contacted under the following coordinates:
+%
+% \begin{minipage}{.6\linewidth}\parindent=2em
+% Gerd Neugebauer \medskip\par
+% Im Lerchelsb\"ohl 5 \par
+% 64521 Gro\ss-Gerau \par
+% Germany \medskip\par
+% \href{mailto:gene@gerd-neugebauer.de}{gene@gerd-neugebauer.de}
+% \end{minipage}
+% \end{Map}
+% \newpage
+% \tableofcontents
+% \newpage
+%
+%
+% \begin{Map}{Motivation}
+%
+% \Block{Methodology}%
+% The information mapping\R method provides a methodology to
+% structure information in a special way. The aim is to help a
+% reader who uses the document to search for relevant information
+% instead of consuming it from start to end. The information
+% mapping method also claims to raise the productivity of
+% writers.
+%
+% \Block{No tutorial}%
+% This document does not include an introduction to the
+% information mapping method itself. The reader is referred to
+% other documents. Maybe an accompanying document will be
+% distributed along with this package.
+%
+% Unfortunately the methodology – or the name – is protected by
+% a trademark. Thus the teaching of the methodology is restricted
+% to licensed institutions.
+%
+% \Block{Principles}%
+% \begin{center}
+% \begin{tikzpicture}[mindmap,concept color=blue!16]\bfseries\scriptsize
+% \node [concept,ball color=blue!8] {Information Mapping\R}
+% child[grow=150,concept color=blue!20!black] {%
+% node[concept,ball color=blue!20!black] {\color{white}Principles}
+% child[grow=30,concept color=blue!48] {%
+% node[concept,ball color=blue!48] {Chunking}}
+% child[grow=80,concept color=blue!48] {%
+% node[concept,ball color=blue!48] {Relevance}}
+% child[grow=130,concept color=blue!48] {%
+% node[concept,ball color=blue!48] {Labelling}}
+% child[grow=180,concept color=blue!48] {%
+% node[concept,ball color=blue!48] {Consistency}}
+% child[grow=230,concept color=blue!48] {%
+% node[concept,ball color=blue!48] {Accessible details}}
+% child[grow=280,concept color=blue!48] {%
+% node[concept,ball color=blue!48] {Integrated graphics}}
+% };
+% \end{tikzpicture}
+% \end{center}
+%
+% \Block{Information Type}%
+%
+% \begin{center}
+% \begin{tikzpicture}[mindmap,concept color=blue!48]\bfseries\scriptsize
+% \node [concept,ball color=blue!8] {Information Mapping\R}
+% child[grow=-30,concept color=blue!20!black] {%
+% node[concept,ball color=blue!20!black] {\color{white}Infor-mation Type}
+% child[grow=100,concept color=blue!48] {%
+% node[concept,ball color=blue!48] {Procedure}}
+% child[grow=50,concept color=blue!48] {%
+% node[concept,ball color=blue!48] {Process}}
+% child[grow=0,concept color=blue!48] {%
+% node[concept,ball color=blue!48] {Principle}}
+% child[grow=-50,concept color=blue!48] {%
+% node[concept,ball color=blue!48] {Concept}}
+% child[grow=-110,concept color=blue!48] {%
+% node[concept,ball color=blue!48] {Structure}}
+% child[grow=-160,concept color=blue!48] {%
+% node[concept,ball color=blue!48] {Fact}}
+% };
+% \end{tikzpicture}
+% \end{center}
+%
+% \Block{Problems of restructuring}%
+% You as \LaTeX\ user may have encountered the problem when
+% restructuring a document: The sections know exactly the level
+% they belong to. If you introduce a new section and put another
+% section into it you have to change all sectioning commands to
+% reflect the new level of the section and their subsections.
+%
+% The macros of |limap| abstract away the level of the document
+% structuring. Any structuring unit is a “Block”. It may contain
+% text or other blocks. Such blocks are the replacement or the
+% sectioning commands. When you restructure your document you
+% simply shift the block and anything it contains to the new
+% place and you are done.
+%
+% The same mechanism can help you to include the same material in
+% several documents – at different sectioning levels!
+%
+% \Block{Structure and constituents}%
+% The general approach focuses very much on the structure of
+% the document. The following diagram illustrates the terminology
+% used within this documentation.
+%
+% \begin{center}\small
+% \tikzstyle{class}=[rectangle,
+% text centered,
+% minimum width=6em,
+% minimum height=3em,
+% draw=black!60!red,
+% drop shadow,
+% top color=yellow!92!red!10!white,
+% bottom color=yellow!92!red!40!white]
+% \tikzstyle{arrow}=[draw=black!60!red, thick]
+% \begin{tikzpicture}
+% \path (3.75,6) node(doc) [class]{\bfseries Document}
+% (3.75,4) node(map) [class]{\bfseries Map}
+% (3.75,2) node(block) [class]{\bfseries Block}
+% (0,0) node(text) [class]{\bfseries Text}
+% (2.5,0) node(table) [class]{\bfseries Table}
+% (5,0) node(image) [class]{\bfseries Image}
+% (7.5,0) node(figure) [class]{\bfseries Diagram};
+% \draw[arrow,very thick,->] (doc) -- (map);
+% \node[left] at ($(doc)!.6!(map)$) {\scriptsize 1..*};
+% \draw[arrow,very thick,->] (map) -- (block);
+% \node[left] at ($(map)!.6!(block)$) {\scriptsize 1..9};
+% \draw[arrow,very thick,->] (map) -- +(1.5,0) -- +(1.5,1) -- +(.75,1) -- (map);
+% \draw (4.75,4.75) node {\scriptsize 0..*};
+% \draw[arrow,very thick,->] (block) -- (text);
+% \node[left] at ($(block)!.6!(text)$) {\scriptsize 0..*};
+% \draw[arrow,very thick,->] (block) -- (table);
+% \node[left] at ($(block)!.6!(table)$) {\scriptsize 0..1};
+% \draw[arrow,very thick,->] (block) -- (image);
+% \node[right] at ($(block)!.6!(image)$) {\scriptsize 0..1};
+% \draw[arrow,very thick,->] (block) -- (figure);
+% \node[right] at ($(block)!.6!(figure)$) {\scriptsize 0..1};
+% \end{tikzpicture}
+% \end{center}
+%
+% \Block{Class or package}%
+% To support the information mapping\R method several \LaTeX{}
+% macros and environments are provided which allow you to enter a
+% logical description of the relevant concepts. Those macros are
+% provided in the package and class file. It is up to you to
+% choose one of them.
+%
+% \Block{Interoperabilty with other classes and packages}%
+% The main part of the user interface is inherited from \LaTeX.
+% The major differences are the sectioning commands which are
+% made obsolete in parts by the information mapping\R method.
+% Thus most packages can be used to typeset contents of a block.
+% \end{Map}
+%
+% \begin{Map}{Getting Started}
+%
+% \Block{Introduction}%
+% If you are starting to use |limap| you should be vaguely
+% familiar with the underlying methodology. This documentation
+% does not provide an introduction.
+%
+% When you start using this class or package you should say
+% “Good bye” to the classical document structuring macros in
+% the \LaTeX\ standard classes.
+%
+% \Block{Class or package}%
+% First of all you should decide whether to use the |limap| class
+% or the |limap| package. The class is meant for a complete document.
+% The package allows to combine |limap| with arbitrary other
+% document classes.
+%
+% \Block{Contents}%
+% In the maps contained herein you will find an introduction on
+% the use of the |limap| macros and environments. They are
+% accompanied by illustrating sample code.
+% \MapTableOfContents
+%
+% \begin{Map}{Using the Document Class}
+%
+% \Block{Using the document class}%
+% This package provides both a class file as well as a package.
+% The package contains the definitions of maps, blocks, and
+% others. They can be used together with any base class. This
+% is illustrated in the following preamble:
+% \begin{verbatim}
+% \documentclass{book}
+% \usepackage{limap}
+% \begin{document} \end{verbatim}
+%
+% \Block{Suppressing the block lines}%
+% This class option |nolines| can be used to suppress the line
+% above and below block. This is illustrated in the following
+% preamble:
+% \begin{verbatim}
+% \documentclass[nolines]{limap}
+% \begin{document} \end{verbatim}
+%
+% \Block{Other options}%
+% Any option not processed by |limap.cls| is passed to the
+% underlying document class used. Thus it is possible to
+% customize the underlying class any further.
+%
+% \Block{Several types of options}%
+% In the maps contained herein you will find the supported
+% options for the document class |limap|.
+% \MapTableOfContents
+%
+% \begin{Map}{Document Class Options for Language Selection}
+%
+% \Block{Introduction}%
+% The document class |limap| inserts some words. Thus it has to
+% know the language it is supposed to use. Thus the language
+% has to be specified as one document class option.
+% \begin{verbatim}
+% \documentclass[german]{limap}
+% \begin{document} \end{verbatim}
+%
+% \Block{Supported languages}%
+% First, we describe the settings influencing the language
+% specific settings. They do not make provisions to use the
+% appropriate hyphenation patterns. They just arrange things
+% such that the internally used texts are displayed in the
+% chosen language.
+%
+% \begin{MapTabular}{@{\tt }lp{.75\linewidth}}\toprule
+% \rm Option & Description\\\midrule
+% austrian & Activate the language specific text
+% fragments for the Austrian language (in fact
+% German with one minor modification).\\
+% english & Activate the language specific text fragments
+% for the English language.\\
+% french & Activate the language specific text fragments
+% for the French language.\\
+% german & Activate the language specific text fragments
+% for the German language.\\
+% USenglish & Activate the language specific text
+% fragments for the American
+% English.\\\bottomrule
+% \end{MapTabular}
+%
+% \Block{Default language}%
+% The default language is |english|. It is used if no language
+% is set.
+%
+% \Block{Beware of hyphenation}%
+% Note that the hyphenation patterns are not loaded
+% automatically. You have to load the hyphenation patterns,
+% for instance with the
+% \href{https://www.ctan.org/pkg/babel}{babel} package.
+%
+% This behavior has been chosen to allow you to select the
+% language package of your choice. Also you can pass in
+% additional options to this package more easily.
+% \end{Map}
+%
+% \begin{Map}{Document Class Options for Variant Selection}
+%
+% \Block{Introduction}%
+% The document class |limap| is based on another document
+% class. Thus you can use the well-known macros and
+% environments defined there and take advantage of the
+% extensions provided by |limap|.
+%
+% \begin{verbatim}
+% \documentclass{limap}
+% \begin{document} \end{verbatim}
+% \Block{Variants}%
+% The class has two additional options to determine the base
+% class to be used. The first option is the variant. It can take
+% the following values:
+%
+% \begin{MapTabular}{@{\tt }ll}\toprule
+% \rm Option & Description\\\midrule
+% base & Use the base set of classes. This is the default.\\
+% koma & Use the set of classes from
+% \href{https://www.ctan.org/pkg/koma-script}{koma-script}.\\\bottomrule
+% \end{MapTabular}
+%
+% \Block{Default variant}%
+% If no document class option is used then |base| is the
+% default variant.
+% \end{Map}
+%
+% \begin{Map}{Document Class Options for Base Class Selection}
+%
+% \Block{Introduction}%
+% The document class |limap| follows the logic introduced in
+% the \LaTeX\ standard document classes. The type of the base
+% document class can be given as argument to the |limap| class.
+%
+% \begin{verbatim}
+% \documentclass[book]{limap}
+% \begin{document} \end{verbatim}
+%
+%
+% \Block{Class type}%
+% The second option is the class type. It determines which kind of
+% document to typeset. It can take the following values:
+%
+% \begin{MapTabular}{@{\tt }ll}\toprule
+% \rm Option & Description\\\midrule
+% book & Typeset a book type document.\\
+% report & Typeset a report type document.\\
+% article & Typeset an article type document.\\
+% letter & Typeset a letter type document.\\\bottomrule
+% \end{MapTabular}
+%
+% \Block{Mapping of variant and type}%
+% The following table shows which base classes are loaded according
+% to the given values:
+%
+% \begin{MapTabular}{@{\tt }lcc}\toprule
+% \rm Type /variant & \emph{base} & \emph{koma} \\\midrule
+% book & book & scrbook \\
+% report & report & scrreprt \\
+% article & article & scrartcl \\
+% letter & letter & scrlettr \\\bottomrule
+% \end{MapTabular}
+%
+% \Block{Default type}%
+% The default type is |report|. It is used if no type is set.
+% \end{Map}
+% \end{Map}
+%
+% \begin{Map}{Using the Package}
+% \Block{Introduction}%
+% The package |limap| can be used together with most document
+% classes. An exception are classes for slides like the
+% \href{https://www.ctan.org/pkg/beamer}{beamer} class.
+%
+% As usual it is declared in the document preamble.
+%
+% \begin{verbatim}
+% \documentclass{report}
+% \usepackage{limap}
+% \begin{document} \end{verbatim}
+% \Block{Content}%
+% The following additional information is available.
+% \MapTableOfContents
+%
+% \begin{Map}{Package Options for Language Selection}
+%
+% \Block{Introduction}%
+% The package |limap| inserts some words. Thus it has to
+% know the language it is supposed to use. Thus the language
+% has to be specified as package option.
+% \begin{verbatim}
+% \usepackage[german]{limap}
+% \begin{document} \end{verbatim}
+%
+% \Block{Inheritance of document class options}%
+% Alternatively the language selecting option can be specified
+% as document class option. Thus several packages can share the
+% same setting.
+% \begin{verbatim}
+% \documentclass[german]{scrbook}
+% \documentclass{limap}
+% \begin{document} \end{verbatim}
+%
+% \Block{Supported languages}%
+% Here we describe the settings influencing the language
+% specific settings. They do not make provisions to use the
+% appropriate hyphenation patterns. They just arrange things
+% such that the internally used texts are displayed in the
+% chosen language.
+%
+% \begin{MapTabular}{@{\tt }lp{.75\linewidth}}\toprule
+% \rm Option & Description\\\midrule
+% austrian & Activate the language specific text
+% fragments for the Austrian language (in fact
+% German with one minor modification).\\
+% english & Activate the language specific text fragments
+% for the English language.\\
+% french & Activate the language specific text fragments
+% for the French language.\\
+% german & Activate the language specific text fragments
+% for the German language.\\
+% USenglish & Activate the language specific text
+% fragments for the American English.\\\bottomrule
+% \end{MapTabular}
+%
+% \Block{Default language}%
+% The default language is |english|. It is used if no language
+% is set.
+%
+% \Block{Beware of hyphenation}%
+% Note that the hyphenation patterns are not loaded
+% automatically. You have to load the hyphenation patterns,
+% for instance with the
+% \href{https://www.ctan.org/pkg/babel}{babel} package.
+%
+% This behavior has been chosen to allow you to select the
+% language package of your choice. Also you can pass in
+% additional options to this package more easily.
+% \end{Map}
+% \end{Map}
+% \end{Map}
+%
+% \begin{Map}{The Block}\label{map:block}
+%
+% \Block{Meaning}%
+% A “block” is the essential building units of the |limap|
+% package. You can think of it as paragraph with a title.
+%
+% \Block{Appearance}%
+% The blocks are usually typeset with the block label on the left
+% side and the contents to its right. They are surrounded by
+% white-space and a thin line above and below.
+%
+% \DescribeMacro{\Block}
+% The macro |\Block| can be used to typeset an block. It
+% takes one argument which is the block label.
+%
+% This is a shorthand for denoting a block. The end mark can be
+% omitted if you use the macro instead of the environment.
+% Nevertheless this is depreciated.
+%
+% \Block{Example}%
+% The following sample illustrates how to enter a block.
+% \begin{verbatim}
+% \Block{Block Label}
+% And now comes the block text. It can consist of one or more
+% classical paragraphs, or tables, or pictures, or something
+% else. \end{verbatim}
+%
+% \Block{Just in a map}%
+% Note that the macro |\Block| can be used inside a map only. If
+% you try to use it outside the scope of a map you will get an
+% error.
+%
+% \Block{More on blocks}%
+% Several more aspects of blocks are covered in the following
+% maps.
+% \MapTableOfContents
+%
+% \begin{Map}{Configuring Blocks}
+%
+% \DescribeMacro{\MapBlockLabelFont}
+% The macro |\MapBlockLabelFont| determines the font changing
+% command to be used for typesetting the block label. The
+% default is empty.
+%
+% \Block{Colored block labels}%
+% The macro |\MapBlockLabelFont| can for instance be used to achieve
+% colored block labels. For this purpose we can include the package
+% |xcolor| in the preamble and select for instance a named color
+% for the rule.
+% This is illustrated in the following example.
+% \begin{verbatim}
+% \usepackage[svgnames]{xcolor}
+% \renewcommand\MapBlockLabelFont{\color{Navy}} \end{verbatim}
+% \DescribeMacro{\MapParskip}
+% The macro |\MapParskip| determines the vertical distance of the
+% text from the separating rules. The default is \MapParskip.
+% \begin{verbatim}
+% \renewcommand\MapParskip{.25ex} \end{verbatim}
+%
+% \DescribeMacro{\MapTitleFraction}
+% The macro |\MapTitleFraction| determines the part of the page
+% width devoted to the block label area. It is a fraction in the
+% range from 0 to 1. The default value of |\MapTitleFraction| is
+% 0\MapTitleFraction.
+% \begin{verbatim}
+% \renewcommand\MapTitleFraction{.25} \end{verbatim}
+%
+% \DescribeMacro{\MapTextFraction}
+% This macro determines the part of the page width devoted to the
+% text area. It is a fraction in the range from 0 to 1. The
+% default value of |\MapTextFraction| is 0\MapTextFraction.
+%
+% |\MapTitleFraction| and |\MapTextFraction| should add up to
+% something less or equal to 1. Otherwise you will get some
+% “overfull hbox” messages.
+% \begin{verbatim}
+% \renewcommand\MapTextFraction{.8} \end{verbatim}
+% \vspace*{-\MapParskip}
+% \end{Map}
+%
+% \begin{Map}{Configuring the Rules of Blocks}
+%
+% \Block{Motivation}%
+% Blocks are usually surrounded by horizontal rules. The
+% appearance of these rules can be influenced by some macros.
+%
+% \DescribeMacro{\MapRuleWidth} The macro |\MapRuleWidth|
+% determines the width of the rules drawn between blocks. It is
+% defined as a macro containig a length. The default is
+% \MapRuleWidth.
+%
+% \begin{verbatim}
+% \setlength\MapRuleWidth{1mm} \end{verbatim}
+%
+% \Block{Suppress visible rules}%
+% For some people the rules are distracting since they emphasize
+% the structure too much. In such situations the rule width might
+% be reduced. In the extreme case it can even be set to 0pt to
+% suppress the lines at all as in the following example:
+%
+% \begin{verbatim}
+% \renewcommand\MapRuleWidth{0pt} \end{verbatim}
+%
+% \DescribeMacro{\MapRuleStart}
+% The macro |\MapRuleStart| is inserted before rules around
+% blocks. It can be used to inject some code before the rule is
+% typeset. Initially it is empty.
+%
+% \Block{Colored rules}%
+% The macro |\MapRuleStart| can for instance be used to achieve
+% colored rules. For this purpose we can include the package
+% |xcolor| in the preamble and select a named color for the rule.
+% This is illustrated in the following example.
+% \begin{verbatim}
+% \usepackage[svgnames]{xcolor}
+% \renewcommand\MapRuleStart{\color{Silver}} \end{verbatim}
+% \vspace*{-3ex}
+% \end{Map}
+%
+% \begin{Map}{A Wide Block}
+%
+% \Block{Motivation}%
+% Sometimes it is necessary to extend the content of a block to
+% the whole width of the page. This can be the case for
+% illustrations or large tables.
+%
+% \DescribeMacro{\WideBlock}
+% The macro |\WideBlock| can be used to typeset a piece of
+% information on the whole page width. It is normally used after an
+% initiating block containing the title of the whole construction.
+%
+% The macro |\WideBlock| takes one argument which contains the
+% material to span the whole page width.
+%
+% \Block{Example}%
+% The following sample illustrates how to enter a wide block.
+% \begin{verbatim}
+% \Block{Block Label}
+% And now comes the block text.
+% \WideBlock{\includegraphics{images/overview.svg}} \end{verbatim}
+%
+% \Block{Block Label}
+% And now comes the wide block produced with the help of
+% Ti\textit{kZ} and its decoration with random steps.
+%
+% \vspace*{-\MapParskip}
+% \WideBlock{\centering
+% \begin{tikzpicture}
+% \node [draw=black!50!white,
+% ball color=yellow!85!red!12!white,draw,thick,
+% minimum height=20mm, minimum width=147mm,
+% decorate, decoration={random steps,
+% segment length=5pt,amplitude=4pt}]
+% {\it A very, very, very, very, very, very, very, very, very, very, very, very, very
+% wide block content};
+% \end{tikzpicture}}\\
+% \vspace*{-\MapParskip}
+% \end{Map}
+% \end{Map}
+%
+% \begin{Map}{The Map}\label{map:map}
+%
+% \Block{Structuring documents}%
+% The maps are the structuring units of the |limap| package. Maps
+% may recursively contain maps and other material. The other
+% material is usually named a block. This recursive structure is
+% illustrated in the following figure.
+%
+% \newcount\picX
+% \newcount\picY
+% \newcount\picW
+% \picX=0
+% \picY=0
+% \picW=20
+% \long\def\picMap(#1)#2{%
+% \put(\the\picX,\the\picY){\framebox(\the\picW,#1)[tl]{Map}}
+% \begingroup\advance\picW-2
+% \advance\picY1 \advance\picX1
+% #2
+% \endgroup
+% \advance\picY#1 \advance\picY2
+% }%
+% \def\picBlock{%
+% \put(\the\picX,\the\picY){\makebox(\the\picW,3)[tl]{\tiny Block}}
+% \put(\the\picX,\the\picY){\line(1,0){\the\picW}}
+% \begingroup \advance\picX6
+% \advance\picY1
+% \advance\picW-6
+% \multiput(\the\picX,\the\picY)(0,.5){5}{\line(1,0){\the\picW}}
+% \endgroup
+% \advance\picY4
+% \put(\the\picX,\the\picY){\line(1,0){\the\picW}}
+% }%
+% \begin{center}\unitlength=1mm
+% \begin{picture}(20,72)\sf\scriptsize
+% \picMap(71){
+% \picMap(21){
+% \picMap(16){
+% \picBlock
+% \picBlock
+% \picBlock
+% }
+% }
+% \picMap(16){
+% \picBlock
+% \picBlock
+% \picBlock
+% }
+% \picMap(16){
+% \picBlock
+% \picBlock
+% \picBlock
+% }
+% \picBlock
+% \picBlock
+% }
+% \end{picture}
+% \end{center}
+%
+% \DescribeEnv{Map}
+% The environment |Map| can be used to typeset a map. It
+% takes a single argument which contains the map title. The map
+% title is typeset above the map and is repeated on each
+% continuation page.
+%
+% \Block{Example}%
+%
+% \begin{verbatim}
+% \begin{Map}{Map Title}
+% \Block{Block Label}
+% And now comes the block text. It can consist of
+% one or more classical paragraphs, or tables, or
+% pictures, or something else.
+% \end{Map} \end{verbatim}
+%
+% \Block{To at most 12~cascaded Maps}
+% There is a technical restriction in the current implementation
+% of Maps. This restriction does not allow more than 12 cascaded
+% Maps, i.e. Maps in Maps \ldots in Maps.
+%
+% According to the good old 7$\pm$2 rule a full populated
+% document of this level would contain 282\,429\,536\,481 Maps. I
+% think it should take some time until this limit is reached.
+%
+% \Block{More on maps}%
+% Some more aspects are covered in the following pages.
+% \MapTableOfContents
+%
+% \begin{Map}{Referencing Maps}
+%
+% \Block{Referencing maps}%
+% Maps can be referenced in the usual \LaTeX\ way. For this
+% purpose you place a macro invocation of |\label| right behind
+% the beginning of the |Map|.
+%
+% Then you can add references somewhere in the document with
+% |\ref| and |\pageref|. For backward references two \LaTeX\ runs
+% are required.
+%
+% \Block{Example}%
+% \begin{verbatim}
+% \begin{Map}{Map Title}\label{my.label}
+% \Block{Block Label}
+% As said on page~\pageref{my.label}... \end{verbatim}
+% \Block{Caveat emptor}%
+% |limap| automatically labels any map with a label of the form
+% \texttt{Map|@|}\textsl{n} where \textsl{n} is a
+% sequence number. Thus avoid to use such labels yourself.
+% \end{Map}
+%
+% \begin{Map}{Configuring Maps}
+%
+% \DescribeMacro{\MapFont}
+% The macro |\MapFont| determines the font changing command to be
+% used when starting a new map.
+% \begin{verbatim}
+% \renewcommand\MapFont{\tt} \end{verbatim}
+%
+% \DescribeMacro{\MapTitleFont}
+% The macro |\MapTitleFont| determines the font changing command to
+% be used when typesetting the title of a map. The default is |\Large|.
+% \begin{verbatim}
+% \renewcommand\MapTitleFont{\huge\bfseries} \end{verbatim}
+%
+% \DescribeMacro{\MapContinued}
+% The macro |\MapContinued| contains the text appearing at the end
+% of map which are continued on the next page. It is initiated
+% when the class or package is loaded. It can overwritten
+% afterwards – for instance in the preamble.
+% \begin{verbatim}
+% \renewcommand\MapContinued{} \end{verbatim}
+%
+% \DescribeMacro{\MapContinuing}
+% The macro |\MapContinuing| contains the text appearing at the
+% beginning of map which are continued from the previous page. It
+% is typeset after the map title. It is initiated
+% when the class or package is loaded. It can overwritten
+% afterwards – for instance in the preamble.
+% \begin{verbatim}
+% \renewcommand\MapContinuing{} \end{verbatim}
+%
+% \DescribeMacro{\MapTitleContinuedFont}
+% This macro determines the font changing command to be used for
+% typesetting the additional text after titles on followup pages of
+% multi-page maps.
+%
+% The default value is |\small|.
+% \begin{verbatim}
+% \renewcommand\MapTitleContinuedFont{\normalsize} \end{verbatim}
+%
+% \DescribeMacro{\MapNewpage}
+% The macro |\MapNewpage| is expanded whenever a new page is
+% required between maps. Thus it can be used to suppress the
+% newpages by |\let|ing it to |\relax|. Note that this is not in
+% the spirit of the Information Mapping\R method.
+%
+% \DescribeMacro{\MapTOC}
+% The macro |\MapTOC| is expanded to generate the entry in the
+% table of contents. It can be redefined to allow another
+% behavior.
+% \end{Map}
+% \end{Map}
+%
+% \begin{Map}{The Table of Contents}
+%
+% \Block{Everything is local}%
+% The concept of the underlying methodology is that everything
+% should be addressed relative to the current location. We see
+% this when dealing with maps (see page~\pageref{map:map}). The
+% same principle is applied to the table of contents.
+%
+% \Block{Direct children are included}%
+% The table of contents includes all maps contained in the map in
+% which it appears. This means the immediate children of the map
+% are shown.
+%
+% \Block{Block context required}%
+% The table of contents is typeset inside a block (see
+% page~\pageref{map:block}).
+%
+% \DescribeMacro{\MapTableOfContents}
+% The macro |\MapTableOfContents| can be used to typeset the table
+% of contents for a map. This table of contents includes all
+% sub-maps of the map it is contained in – not recursively but
+% only one level deeper.
+%
+% The macro |\MapTableOfContents| does not take any argument.
+%
+% \Block{Example}%
+% \begin{verbatim}
+% \Block{Contents}
+% And some wise words about the table of contents.
+% \MapTableOfContents \end{verbatim}
+%
+% \DescribeMacro{\MapTableOfContentsStyle}
+% The macro |\MapTableOfContentsStyle| can be used to determine
+% the style of the |\MapTableOfContents| The default style is an
+% open layout utilizing the package
+% \href{https://www.ctan.org/pkg/booktabs}{booktabs}.
+%
+% The macro |\MapTableOfContentsStyle| takes one argument. This
+% argument may have one of the following values:
+%
+% \begin{MapTabular}{ll}\toprule
+% Argument & Meaning \\\midrule
+% open & an open style for the TOC\\\hline
+% boxed & a boxed style for the TOC\\\bottomrule
+% \end{MapTabular}%
+% \vspace*{-5ex}
+% \begin{Map}{Blocks in the Table of Contents}
+%
+% \Block{Motivation}%
+% Sometimes it can be desirable to add the blocks to the global
+% table of contents. Here we will see how this can be achieved.
+%
+% \DescribeMacro{\MapBlockStartHook}
+% The macro |\MapBlockStartHook| is expanded at the beginning of
+% each block it if is defined. It takes a single argument which
+% is the title of the block.
+%
+% \DescribeMacro{\MapBlockTOC}
+% The macro |\MapBlockTOC| is a macro which adds one line to the
+% table of contents. It takes one argument which is the text to
+% be added.
+%
+% \Block{Example}%
+% Put the following code in the preamble to get the blocks into
+% the table of contents.
+% \begin{verbatim}
+% \let\MapBlockStartHook\MapBlockTOC \end{verbatim}
+%
+% %\vspace*{-5ex}
+% \end{Map}
+% \end{Map}
+% \begin{Map}{Tables}
+%
+% \Block{Introduction}%
+% Tables play an important role as part of maps. Usually they are
+% included into a block and preceded by some useful introduction.
+%
+% \Block{Combination with booktabs}%
+% The document class |limap| and the package |limap|
+% automatically include the package
+% \href{https://www.ctan.org/pkg/booktabs}{booktabs}. This
+% package contains some support for typesetting proper tables.
+% You should have a look at the documentation of |booktabs| and
+% follow the recommendations given there.
+%
+% |booktabs| is automatically loaded by |limap| upon start-up.
+%
+% \DescribeEnv{MapTabular}
+% The environment |MapTabular| provides a convenient way to
+% include a table into a block. It produces a |tabular*|
+% environment and sets the width to the width of the text column
+% of the block.
+%
+% \Block{Example}%
+% \begin{verbatim}
+% \Block{Table block}
+% Sheding some insight on the following table.
+%
+% \begin{MapTabular}{lll}\toprule
+% a & b & \\\midrule
+% x & y & Z\\\hline
+% X & Y & Z\\\bottomrule
+% \end{MapTabular} \end{verbatim}
+% \DescribeMacro{\MapTabularFraction}
+% The tabular is always centered in the text column of the block. The
+% macro |\MapTabularFraction| contains a factor for the line
+% width occupied by the tabular. This value is used to determine
+% the width of the tabular. The default value for the macro
+% |\MapTabularFraction| is 0\MapTabularFraction.
+% \begin{verbatim}
+% \renewcommand\MapTabularFraction{.7} \end{verbatim}
+% \vspace*{-4ex}
+% \end{Map}
+%
+% \begin{Map}{Configuration}
+%
+% \Block{Introduction}%
+% |limap| is designed with a set of extension points. Those are
+% mainly definition which can be overwritten to achieve a certain
+% effect.
+%
+% \Block{Configuration in the preamble}%
+% Any configuration change performed in the preamble of a
+% document is global. It lasts until oberwritten within the
+% document.
+%
+% \Block{Configuration in the document}%
+% The configuration parameters can be overwritten in the document
+% just before they are needed. This is not recommended since it
+% makes it harder to achieve consistency.
+%
+% \Block{External configuration}%
+% The confiration can be externalised. For this purpose a special
+% file |limap.cfg| is loaded with the class or package in case it
+% exists. This file can contain configuration options for
+% |limap|. Thus it is possible to share the same appearance
+% among different documents.
+%
+% \Block{Contents}%
+% The following maps contain the various aspects of the
+% configuration of |limap|.
+% \MapTableOfContents
+%
+% \begin{Map}{The Configuration File limap.cfg}
+%
+% \Block{Default configuration file}%
+% When the class or package is loaded as a last action a
+% configuration file is loaded if it can be found. The name of
+% the configuration file is \texttt{limap.cfg}. This file can
+% contain re-definitions of the several macros to adjust the
+% behavior of |limap| on a per directory, per user or per
+% installation base.
+%
+% \Block{Note}%
+% Some settings are activated before the configuration file is
+% loaded. Thus some settings may not have any effect at all.
+% \end{Map}
+%
+% \begin{Map}{Changing or Adding Language Specific Settings}
+%
+% \Block{Overview}%
+% Several strings are used automatically by the current class or
+% package. Default values for several languages are hardwired in
+% the implementation. Nevertheless it is possible to change those
+% language specific settings.
+%
+% If you create settings for a new language it is highly
+% recommended to contact the author to integrate them into the
+% default distribution.
+%
+% The following macros can be redefined in the preamble after the
+% package or class has been loaded to reset the language specific
+% text.
+%
+% \DescribeMacro{\MapTOCname}
+% The macro |\MapTOCname| contains the text of the heading in table
+% of contents of maps for the column of map titles. It is initiated
+% when the class or package is loaded. It can overwritten
+% afterwards – for instance in the preamble.
+% \begin{verbatim}
+% \renewcommand\MapTOCname{Issue} \end{verbatim}
+%
+% \DescribeMacro{\MapTOCpage}
+% The macro |\MapTOCpage| contains the text of the heading in table
+% of contents of maps for the column of page numbers. It is initiated
+% when the class or package is loaded. It can overwritten
+% afterwards – for instance in the preamble.
+% \begin{verbatim}
+% \renewcommand\MapTOCname{Reference} \end{verbatim}
+%
+% \Block{Providing a new language}%
+% If you want to provide a new language \textit{lang} you can
+% define the macro |\LIMAP@SelectLanguage@|\textit{lang} which
+% redefines the macros given above. This definition has to be
+% present before the package is loaded.
+%
+% Note that the macro name contains the @ character. Thus the
+% definition should be made in a package of its own.
+% \end{Map}
+% \end{Map}
+%
+%
+%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \StopEventually{}
+% \newpage
+% \if@undefined\environment
+% \newenvironment{environment}[1]{}{}
+% \fi
+%
+% \begin{Map}{The Implementation}
+% \Block{Overview}%
+% This part of the document describes the implementation. Usually
+% it is not meant for the casual user. Nevertheless it might be
+% fruitful for those searching for inspiration or for tricks when
+% using this class or package.
+%
+% \Block{Contents}%
+% \MapTableOfContents
+%
+% \begin{Map}{The Version Information}
+%
+% \Block{Purpose}%
+% The version information is included for printing it on the
+% documentation and at start-up when the class or package is
+% loaded. It has to preceed the documentation driver to properly
+% include this information into the printed manual.
+%
+% \Block{}%
+% \begin{macro}{\filename}
+% |\filename| is the name of the dtx file containing this class
+% and package.
+% \begin{macrocode}
+\def\filename{limap.dtx}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\fileversion}
+% |\fileversion| is the version number of the |dtx| file. It is
+% used as a version number for the class and package.
+% \begin{macrocode}
+\def\fileversion{2.2}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\filedate}
+% |\filedate| is the change date of the |dtx| file. It is used
+% as a version date and documentation date.
+% \begin{macrocode}
+\def\filedate{2016/05/29}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\docversion}
+% |\docversion| is the version number of the documentation. It
+% is identical to the version number of the |dtx| file.
+% \begin{macrocode}
+\let\docversion=\fileversion
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\docdate}
+% |\docdate| is the change date of the documentation. It is
+% identical to the change date of the |dtx| file.
+% \begin{macrocode}
+\let\docdate=\filedate
+% \end{macrocode}
+% \end{macro}
+% \end{Map}
+%
+% \begin{Map}{The Documentation Driver}
+% \Block{Purpose}%
+% The documentation driver is necessary to provide a self
+% documenting |dtx| file. With this construction the dtx file can
+% be run through \LaTeX\ to produce the documentation.
+%
+% The driver section contains a complete \LaTeX\ document which
+% loads the |dtx| file. The special class |ltxdoc| is used and
+% some arrangements are made for this purpose.
+%
+% \Block{Driver code}%
+% The driver code is not exported by the installer.
+%
+% \begin{macrocode}
+%<*driver>
+\documentclass[a4paper]{ltxdoc}
+\RequirePackage{textcomp}
+\usepackage{limap}
+\let\LimapFilename\filename
+\let\LimapFileversion\fileversion
+\let\LimapFiledate\filedate
+\let\LimapDocdate\docdate
+% \end{macrocode}
+% \Block{Page Layout}%
+% \begin{macrocode}
+\oddsidemargin=10pt
+\evensidemargin=10pt
+\textwidth=430pt
+\textheight=650pt
+\voffset=-12mm
+% \end{macrocode}
+% \Block{Headings}%
+% \begin{macrocode}
+\usepackage{fancyhdr}
+\addtolength{\headheight}{2ex}%
+\pagestyle{fancy}%
+\cfoot{}
+\rhead{\small\sf\thepage}
+\lhead{\textit{\footnotesize limap} – Package and Class}
+% \end{macrocode}
+% \Block{Links and such}%
+% \begin{macrocode}
+\usepackage{hyperref}
+% \end{macrocode}
+% \Block{Fonts}%
+% \begin{macrocode}
+\usepackage{fontspec}
+\setmainfont{TeX Gyre Heros}
+\setsansfont{TeX Gyre Heros}%[Scale=MatchLowercase]
+\setmonofont{Inconsolata}%[Scale=MatchLowercase]
+% \end{macrocode}
+% \Block{Coloring}%
+% \begin{macrocode}
+\usepackage[svgnames]{xcolor}
+\renewcommand\MapTitleFont{\Large\bfseries\color{Navy}}
+\renewcommand\MapBlockLabelFont{\bfseries\color{Navy}}
+\definecolor{linkColor}{rgb}{.66,.2,.2}
+\hypersetup{colorlinks,
+ citecolor=linkColor,
+ filecolor=linkColor,
+ linkcolor=linkColor,
+ urlcolor=linkColor}
+\renewcommand\MapRuleStart{\color{Navy}}
+\renewcommand\MapRuleWidth{1pt}
+% \end{macrocode}
+% \Block{Graphics}%
+% \begin{macrocode}
+\usepackage{tikz}
+\usetikzlibrary{decorations.pathmorphing}
+\usetikzlibrary{shadows}
+\usetikzlibrary{mindmap}
+\usetikzlibrary{calc}
+% \end{macrocode}
+% \Block{Saving version}%
+% \begin{macrocode}
+\let\filename\LimapFilename
+\let\fileversion\LimapFileversion
+\let\filedate\LimapFiledate
+\let\docdate\LimapDocdate
+% \end{macrocode}
+% \Block{Adapting doc.sty}%
+% \begin{macrocode}
+\def\theCodelineNo{\color{DarkGreen}\rmfamily\scriptsize\arabic{CodelineNo}}%
+\makeatletter
+\renewcommand\DescribeMacro{\catcode`\\=12\Describe@@Macro}
+\def\Describe@@Macro#1{\Block{\PrintDescribeMacro{#1}}%
+ \SpecialUsageIndex{#1}\@esphack\ignorespaces}
+\renewcommand\DescribeEnv{\catcode`\\=12\Describe@@Env}
+\def\Describe@@Env#1{\Block{\PrintDescribeEnv{#1}}%
+ \SpecialEnvIndex{#1}\@esphack\ignorespaces}
+\makeatother
+\let\maketitle\MakeTitle
+% \end{macrocode}
+% \Block{Some additions}%
+% \begin{macrocode}
+\newcommand\R{\(^{\textrm{\footnotesize\textregistered}}\) }
+\let\marginpar\Block
+\InputIfFileExists{limap.dcf}{}{}
+\RecordChanges
+\EnableCrossrefs
+\CodelineIndex
+% \end{macrocode}
+% \Block{The content}%
+% Now everything is prepared. Let the show begin\ldots
+% \begin{macrocode}
+\begin{document}
+\DeleteShortVerb{|}
+\DocInput{\filename}
+%\newpage
+%\PrintChanges
+\newpage
+\setcounter{IndexColumns}{2}
+\PrintIndex
+\end{document}
+%</driver>
+% \end{macrocode}
+% \end{Map}
+%
+%
+% \begin{Map}{The \TeX\ Code}
+%
+% \Block{Overview}%
+% The rest of the document describes the implementation. Usually
+% it is not meant for the casual user. Nevertheless it might be
+% fruitful for those searching for inspiration or for tricks when
+% using this class or package.
+%
+% \Block{Contents}%
+% \MapTableOfContents
+%
+% \begin{Map}{The Package and Class Declarations}
+%
+% \Block{Preliminaries}%
+% First of all we request a descent version of \LaTeX\ to be
+% used. I don't think it does have to be too new.
+%
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+% \end{macrocode}
+%
+% \Block{Package identification}%
+% When the package is generated, the package identification is
+% included.
+% \begin{macrocode}
+%<*package>
+\ProvidesPackage{limap}[\filedate\space Gerd Neugebauer]
+%</package>
+% \end{macrocode}
+%
+% \Block{Class identification}%
+% When the class is generated, the class identification is
+% included.
+% \begin{macrocode}
+%<*class>
+\ProvidesClass{limap}[\filedate\space Gerd Neugebauer]
+%</class>
+% \end{macrocode}
+% \end{Map}
+%
+% \begin{Map}{Language Specific Macros}
+%
+% \Block{Introduction}%
+% This section contains internal macros used to implement the
+% functionality. New languages can be easily be added. For this
+% purpose only a new macro has to be defined and a package/class
+% option for the convenience of the user.
+%
+% Consider you want to add a new language “latin” then you have
+% to provide the command |\LIMAP@SelectLanguage@latin|. This
+% macro should simply redefine the macros containing strings of
+% the language specific texts. Examples for other languages are
+% provided in this section.
+%
+% To enable the language settings for “latin” the macro
+% |\LIMAP@Language| has to be defined to contain the value
+% “latin”. Usually this is accomplished by providing a
+% convenient option to the package or class.
+%
+% \Block{}%
+% \begin{macro}{\defineLimapLanguage}
+% Provide the definitions for a language. The different texts
+% to be used are stored in a macro which defines the target
+% macros when expanded.
+% \begin{macrocode}
+\def\defineLimapLanguage#1#2#3#4#5{%
+ \expandafter\def\csname LIMAP@SelectLanguage@#1\endcsname{%
+ \def\MapContinued{#2}%
+ \def\MapContinuing{#3}%
+ \def\MapTOCname{#4}%
+ \def\MapTOCpage{#5}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{Definitions for the language “austrian“}%
+% \begin{macrocode}
+\defineLimapLanguage{austrian}%
+ { Fortsetzung}{Fortsetzung\dots}%
+ {Titel}{Seite}
+% \end{macrocode}
+%
+% \Block{Definitions for the language “german“}%
+% \begin{macrocode}
+\defineLimapLanguage{german}%
+ { Fortsetzung}{Fortsetzung\dots}%
+ {Titel}{Seite}
+% \end{macrocode}
+%
+% \Block{Definitions for the language “english“}%
+% \begin{macrocode}
+\defineLimapLanguage{english}%
+ { Continued}{Continuing\dots}%
+ {Title}{Page}
+% \end{macrocode}
+%
+% \Block{Definitions for the language “USenglish“}%
+% \begin{macrocode}
+\defineLimapLanguage{USenglish}%
+ { Continued}{Continuing\dots}%
+ {Title}{Page}
+% \end{macrocode}
+%
+% \Block{Definitions for the language “french“}%
+% \begin{macrocode}
+\defineLimapLanguage{french}%
+ { continuation}{continuation\dots}%
+ {Intitulé}{Page}
+% \end{macrocode}
+%
+% \Block{}%
+% \begin{macro}{\LIMAP@Language}
+% The macro |\LIMAP@Language| determines the language to be
+% used for several small text fragments to be inserted at
+% certain places. It is redefined by package/class options and
+% evaluated at the end to activate the selected settings.
+% \begin{macrocode}
+\providecommand\LIMAP@Language{english}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macrocode}
+\DeclareOption{austrian}{\renewcommand\LIMAP@Language{austrian}}
+\DeclareOption{german}{\renewcommand\LIMAP@Language{german}}
+\DeclareOption{french}{\renewcommand\LIMAP@Language{french}}
+\DeclareOption{english}{\renewcommand\LIMAP@Language{english}}
+\DeclareOption{USenglish}{\renewcommand\LIMAP@Language{USenglish}}
+% \end{macrocode}
+%
+% \Block{}%
+% \begin{macro}{\ifLIMAP@strict}
+% The boolean |\ifLIMAP@strict| determines if the lower
+% sectioning macros should be disabled in the class.
+% \begin{macrocode}
+\newif\ifLIMAP@strict \LIMAP@stricttrue
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macrocode}
+\DeclareOption{nonstrict}{\LIMAP@strictfalse}
+% \end{macrocode}
+%
+% \Block{}%
+% \begin{macrocode}
+\DeclareOption{nolines}{\def\MapRuleWidth{0pt}\ignorespaces}
+% \end{macrocode}
+%
+% \begin{Map}{Determining the Appropriate Base Class}
+%
+% \Block{}%
+% \begin{macrocode}
+%<*class>
+% \end{macrocode}
+%
+% \begin{macro}{\LIMAP@ClassType}
+% The macro |\LIMAP@ClassType| determines the type of the class
+% to be used. Usually it can take the values |book|, |report|,
+% |article|, and |letter| (for completeness). This macro is
+% redefined when the options of the class are evaluated.
+% Finally this macro helps to select the appropriate base
+% class.
+% \begin{macrocode}
+\providecommand\LIMAP@ClassType{report}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macrocode}
+\DeclareOption{book}{\renewcommand\LIMAP@ClassType{book}}
+\DeclareOption{report}{\renewcommand\LIMAP@ClassType{report}}
+\DeclareOption{article}{\renewcommand\LIMAP@ClassType{article}}
+\DeclareOption{letter}{\renewcommand\LIMAP@ClassType{letter}}
+% \end{macrocode}
+%
+% \Block{}%
+% \begin{macro}{\LIMAP@Variant}
+% The macro |\LIMAP@Variant| determines the variant of the
+% class to be used. Usually it can take the values |base| and
+% |koma|. This macro is redefined when the options of the class
+% are evaluated. Finally this macro helps to select the
+% appropriate base class.
+% \begin{macrocode}
+\providecommand\LIMAP@Variant{base}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{Options for selecting the variant}%
+% \begin{macrocode}
+\DeclareOption{koma}{\renewcommand\LIMAP@Variant{koma}}
+\DeclareOption{base}{\renewcommand\LIMAP@Variant{base}}
+% \end{macrocode}
+%
+% \Block{Mapping to document class}%
+% Define a mapping between the variant and class type to the class
+% name to be used.
+% \begin{macrocode}
+\newcommand\LIMAP@Class@base@article{article}
+\newcommand\LIMAP@Class@base@report{report}
+\newcommand\LIMAP@Class@base@book{book}
+\newcommand\LIMAP@Class@base@letter{letter}
+\newcommand\LIMAP@Class@koma@article{scrartcl}
+\newcommand\LIMAP@Class@koma@report{scrreprt}
+\newcommand\LIMAP@Class@koma@book{scrbook}
+\newcommand\LIMAP@Class@koma@letter{scrlettr}
+%</class>
+% \end{macrocode}
+%
+% \Block{Pass on the unknown options}%
+% \begin{macrocode}
+%<*class>
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{%
+ \csname LIMAP@Class@\LIMAP@Variant @\LIMAP@ClassType\endcsname}%
+ }
+%</class>
+% \end{macrocode}
+%
+% Thus the class specific options are completed.
+%
+% Now we can process all options.
+% \begin{macrocode}
+\ProcessOptions
+% \end{macrocode}
+%
+% \Block{}%
+% \begin{macrocode}
+%<*class>
+% \end{macrocode}
+% The requested class is loaded and the options remaining are
+% processed.
+% \begin{macrocode}
+\LoadClass{\csname
+ LIMAP@Class@\LIMAP@Variant @\LIMAP@ClassType\endcsname}
+%</class>
+% \end{macrocode}
+% \end{Map}
+%
+% \begin{Map}{Loading Required Packages}
+%
+% \Block{longtable for breakable tables}%
+% The package
+% \href{https://www.ctan.org/pkg/longtable}{longtable} is used
+% internally to implement a part of the required functionality.
+% Thus we need to ensure that it is loaded.
+% \begin{macrocode}
+\RequirePackage{longtable}
+% \end{macrocode}
+% \Block{etoolbox}%
+% \begin{macrocode}
+\RequirePackage{etoolbox}
+% \end{macrocode}
+%
+% \Block{booktabs for nice tables}%
+% The package \href{https://www.ctan.org/pkg/booktabs}{booktabs}
+% is used internally to implement a part of the required
+% functionality. Thus we need to ensure that it is loaded.
+% \begin{macrocode}
+\RequirePackage{booktabs}
+% \end{macrocode}
+%
+% \Block{fancyhdr for head and foot lines}%
+%
+% \begin{macrocode}
+%<*class>
+\RequirePackage{fancyhdr}
+\addtolength{\headheight}{2ex}%
+\pagestyle{fancy}%
+\cfoot{}
+\rhead{\small\thepage}
+\lhead{\textit{\footnotesize\@title}}
+\def\@title{}
+%</class>
+% \end{macrocode}
+%
+% \Block{No vertical adjustment of pages}%
+% Since the blocks are not supposed to line up at the end of the
+% page we declare |\raggedbottom|.
+% \begin{macrocode}
+\raggedbottom
+% \end{macrocode}
+% \end{Map}
+% \end{Map}
+%
+% \begin{Map}{Layout Parameters}
+%
+% \Block{Overview}%
+% The layout can be influenced by a large number of parameters.
+% Thus the design decisions have been made transparent (to a
+% certain degree at least). These options are not meant to be
+% changed except when a new layout is being designed and
+% implemented.
+%
+% \Block{}%
+% \begin{macro}{\MapRuleWidth}
+% The macro |\MapRuleWidth| determines the width of the rules
+% drawn between blocks.
+% \begin{macrocode}
+\providecommand\MapRuleWidth{.25pt}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\MapRuleStart}
+% The macro |\MapRuleStart| is inserted before the rules
+% drawn between blocks.
+% \begin{macrocode}
+\newcommand\MapRuleStart{}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\MapContinued}
+% This macro determines the text to be used in the title of
+% continued maps. This macro is reset when the language
+% specific initializations are performed.
+% \begin{macrocode}
+\newcommand\MapContinued{}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\MapContinuing}
+% The macro |\MapContinuing| determines the text to be used at
+% the bottom of the map which is continued. This macro is reset
+% when the language specific initializations are performed.
+% \begin{macrocode}
+\newcommand\MapContinuing{}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\MapContinuingFormat}
+% This macro determines the format of the bottom line on
+% continued maps. I.e. it includes the text as well as font
+% changing commands. The text is passed to this command as
+% argument 1.
+% \begin{macrocode}
+\newcommand\MapContinuingFormat[1]{\textit{\footnotesize #1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\MapContinuedFormat}
+% This macro determines the format of the bottom line on
+% continued maps. I.e. it includes the text passed to it as
+% argument 1 as well as font changing commands.
+% \begin{macrocode}
+\newcommand\MapContinuedFormat[1]{, {\MapTitleContinuedFont #1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\MapFont}
+% The macro |\MapFont| determines the font changing command to
+% be used when starting a new map.
+% \begin{macrocode}
+\let\MapFont\textsf
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\MapTitleFont}
+% The macro |\MapTitleFont| determines the size changing
+% command to be used when typesetting the title of a map.
+% \begin{macrocode}
+\let\MapTitleFont\Large
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\MapTitleContinuedFont}
+% This macro determines the font changing command to be used
+% for typesetting the additional text after titles on followup
+% pages of multipage maps.
+% \begin{macrocode}
+\let\MapTitleContinuedFont\small
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\MapBlockLabelFont}
+% This macro determines the font changing command to be used
+% for typesetting the block label.
+% \begin{macrocode}
+\def\MapBlockLabelFont{}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\MapParskip}
+% The macro |\MapParskip| determines the distance of the text
+% from the separating rules.
+% \begin{macrocode}
+\newcommand\MapParskip{2ex}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\MapTitleFraction}
+% The macro |\MapTitleFraction| determines the part of the page
+% width devoted to the title area. It is a fraction in the
+% range from 0 to 1.
+% \begin{macrocode}
+\newcommand\MapTitleFraction{.2}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\MapTextFraction}
+% This macro determines the part of the page width devoted to
+% the text area. It is a fraction in the range from 0 to 1.
+% |\MapTitleFraction| and |\MapTextFraction| should add up to
+% something less or equal to 1. Otherwise you will get some
+% “overfull hbox” messages.
+% \begin{macrocode}
+\newcommand\MapTextFraction{.75}
+% \end{macrocode}
+% \end{macro}
+% \end{Map}
+%
+% \begin{Map}{Adaptable Macros}
+%
+% \Block{Overview}%
+%
+% \begin{macro}{\MapNewpage}
+% The macro |\MapNewpage| is expanded whenever a new page is
+% required between maps. Thus it can be used to suppress the
+% newpages by |\let|ing it to |\relax|.
+% \begin{macrocode}
+\let\MapNewpage\newpage
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\MapTOC}
+% The macro |\MapTOC| is expanded to generate the entry in the
+% table of contents. It can be redefined to allow another
+% behavior.
+% \begin{macrocode}
+\newcommand\MapTOC[1]{%
+ \refstepcounter{\@nameuse{Map@TOC@name\the\Map@level}}%
+ \addcontentsline{toc}{\@nameuse{Map@TOC@name\the\Map@level}}{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\MapBlockTOC}
+% The macro |\MapBlockTOC| can be used to add an entry for a
+% block to the table of contents.
+% \changes{2.2}{2017/07/20}{new}
+% \begin{macrocode}
+\newcommand\MapBlockTOC[1]{%
+ \begingroup\count0=\Map@level \advance\count0 1%
+ \addcontentsline{toc}{\@nameuse{Map@TOC@name\the\count0}}{#1}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\MapTOCname}
+% The macro |\MapTOCname| contains the heading for the section
+% title in contents blocks. This macro is reset when the
+% language specific initializations are performed.
+% \begin{macrocode}
+\newcommand\MapTOCname{}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\MapTOCpage}
+% The macro |\MapTOCpage| contains the heading for the page
+% number in contents blocks. This macro is reset when the
+% language specific initializations are performed.
+% \begin{macrocode}
+\newcommand\MapTOCpage{}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\MapTOCheadfont}
+% The macro |\MapTOCheadfont| contains the font switching
+% command for typesetting the head line of map table of
+% contents.
+% \begin{macrocode}
+\newcommand\MapTOCheadfont{\scriptsize\emph}
+% \end{macrocode}
+% \end{macro}
+% \end{Map}
+%
+% \begin{Map}{Internal Macros, Lengths, and Counters}
+%
+% \Block{}%
+% This section contains internal macros used to implement the
+% functionality.
+%
+% \Block{}%
+% \begin{macro}{\Map@length}
+% The length register |\Map@length| is allocated to store the
+% width of the space between the columns of a block.
+% \begin{macrocode}
+\newlength{\Map@length}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\Map@level}
+% The macro |\Map@level| determines the level of inclusion of
+% maps. It is used to determine the appearance in the table of
+% contents.
+% \begin{macrocode}
+\newcount\Map@level
+\Map@level=0
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\Map@blockcount}
+% The macro |\Map@blockcount| is used to count the blocks per
+% map to issue a package warning if required.
+% \begin{macrocode}
+\newcount\Map@blockcount
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\LT@final@warn}
+% The macro |\LT@final@warn| is defined in |longtable|. It is
+% redefined to show |limap| are originator.
+% \begin{macrocode}
+\def\LT@final@warn{%
+ \AtEndDocument{%
+ \PackageWarning{limap}%
+ {Table \@width s have changed. Rerun LaTeX.\@gobbletwo}}%
+ \global\let\LT@final@warn\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{Map}
+%
+% \begin{Map}{Typesetting a Map}
+%
+% \Block{}%
+% \begin{environment}{Map}
+% The environment |Map|determines the appearance of a map. It is
+% implemented as a |longtable| environment which takes care for
+% the page breaks and inserts material at the end of the page
+% and the beginning of the new page upon page break.
+% \end{environment}
+% \begin{macrocode}
+\def\Map#1{%
+% \end{macrocode}
+% First the messages of |longtable| are modified to show this
+% package name instead.
+% \begin{macrocode}
+ \def\LT@err{\PackageError{limap}}%
+ \def\LT@warn{\PackageWarning{limap}}%
+% \end{macrocode}
+% \Block{}%
+% The map local macro |\Block| is
+% activated. The counter for blocks is reset.
+% \begin{macrocode}
+ \let\Block\Map@Block
+ \let\endBlock\Map@endBlock
+ \Map@blockcount=0
+% \end{macrocode}
+% \Block{}%
+% The number of the map in the internal counting is set by
+% incrementing the old value.
+% \begin{macrocode}
+ \global\advance\Map@no1
+% \end{macrocode}
+% \Block{}%
+%
+% \begin{macrocode}
+ \ifx\Map@UP\empty\else
+ \immediate\write\@auxout
+ {\string\expandafter\string\xdef\string\csname\space
+ Map@parts@\Map@UP\string\endcsname{\string\csname\space
+ Map@parts@\Map@UP\string\endcsname\the\Map@no:}}%
+ \fi
+% \end{macrocode}
+% \Block{}%
+%
+% \begin{macrocode}
+ \edef\Map@UP{\the\Map@no}%
+ \ifnum\Map@level>0
+ \xdef\Map@@up{\Map@UP}% Just to save the value across blocks.
+ \endgroup
+ \Map@end
+ \begingroup
+ \edef\Map@UP{\Map@@up}%
+ \def\@currenvir{Map}%
+ \fi
+ \edef\Map@this{\the\Map@no}%
+% \end{macrocode}
+% \Block{}%
+% The entries for future use of sub-maps are written to the |aux| file.
+% \begin{macrocode}
+ \immediate\write\@auxout
+ {\string\global\string\@namedef{Map@parts@\the\Map@no}{}}%
+% \end{macrocode}
+% \Block{}%
+%
+% \begin{macrocode}
+ \global\advance\Map@level1
+ \def\Map@TITLE{#1}%
+ \Map@start
+ }
+% \end{macrocode}
+% \Block{}%
+%
+% \begin{macrocode}
+\def\endMap{%
+ \Map@end
+ \global\advance\Map@level-1
+ \ignorespaces
+}
+% \end{macrocode}
+%
+% \Block{}%
+% \begin{macro}{\ifMap@open@}
+% The conditional |\ifMap@open@| is used to record the opening
+% and closing of the |longtable| environment, since can not be
+% used inside itself. Thus it can be closed before a new
+% instance is opened.
+% \begin{macrocode}
+\newif\ifMap@open@
+\Map@open@false
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\Map@TOC@name}
+% The macros |\Map@TOC@name|\dots provide a mapping between a
+% number and a sectioning unit. This mapping is used when the
+% entry in the table of contents is generated.
+% \begin{macrocode}
+\@namedef{Map@TOC@name0}{chapter}
+\@namedef{Map@TOC@name1}{section}
+\@namedef{Map@TOC@name2}{subsection}
+\@namedef{Map@TOC@name3}{subsubsection}
+\@namedef{Map@TOC@name4}{paragraph}
+\@namedef{Map@TOC@name5}{subparagraph}
+\@namedef{Map@TOC@name6}{subsubparagraph}
+\@namedef{Map@TOC@name7}{subsubparagraph}
+\@namedef{Map@TOC@name8}{subsubparagraph}
+\@namedef{Map@TOC@name9}{subsubparagraph}
+\@namedef{Map@TOC@name10}{subsubparagraph}
+\@namedef{Map@TOC@name11}{subsubparagraph}
+\@namedef{Map@TOC@name12}{subsubparagraph}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\Map@start}
+% The macro |\Map@start| is used to initiate the use of a map.
+% It takes no arguments. The map title is passed in via the
+% macro |\Map@TITLE|.
+%
+% It uses the |longtable| environment to perform the page
+% breaking and marking of continued pages.
+% \begin{macrocode}
+\newcommand\Map@start{%
+ \advance\Map@counter1
+ \setlength{\Map@length}{\textwidth}%
+ \addtolength{\Map@length}{-\MapTitleFraction\textwidth}%
+ \addtolength{\Map@length}{-\MapTextFraction\textwidth}%
+ \ifx\Map@TITLE\empty\else
+ \MapTOC{\Map@TITLE}%
+ \fi
+ \longtable
+ {@{}p{\MapTitleFraction\textwidth}@{\hspace{\Map@length}}
+ p{\MapTextFraction\textwidth}@{}}%
+ \multicolumn{2}{@{}p{\textwidth}@{}}{%
+ \MapFont{\MapTitleFont\rule{0pt}{3ex}%
+ \Map@TITLE}}
+ \endfirsthead
+ \multicolumn{2}{@{}p{\textwidth}@{}}{%
+ \MapFont{\MapTitleFont\rule{0pt}{3ex}%
+ \Map@TITLE\MapContinuedFormat{\MapContinued}}}%
+ \endhead
+ \\
+ &\MapRuleStart
+ \rule{\MapTextFraction\textwidth}{\MapRuleWidth}\newline
+ \mbox{}\hfill
+ \raisebox{3pt}{\MapContinuingFormat{\MapContinuing}}
+ \endfoot
+ &\MapRuleStart
+ \rule{\MapTextFraction\textwidth}{\MapRuleWidth}%
+ \vspace{\MapParskip}
+ \endlastfoot
+ \xdef\@currentlabel{\Map@TITLE}%
+ \label{Map@\the\Map@no}%
+ \global\Map@open@true
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\Map@end}
+% The macro |\Map@end| is expanded when the end of the end of
+% the |longtable| environment might be needed. The boolean
+% |\ifMap@open@| determines whether such an environment is
+% really open.
+% \begin{macrocode}
+\newcommand\Map@end{%
+ \ifMap@open@\vspace*{1.5ex}
+ \global\Map@open@false
+ \endlongtable
+ \MapNewpage
+ \fi
+ \iftrue
+ \ifnum\Map@blockcount>9
+ \PackageWarning{limap}%
+ {*** The current map contains too much blocks:
+ \the\Map@blockcount}%
+ \else\ifnum\Map@blockcount>7
+ \PackageWarning{limap}%
+ {--- The current map contains \the\Map@blockcount blocks.}%
+ \fi\fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\Map@UP}
+% The macro |\Map@UP| contains the number of the parent map or
+% the empty string.
+% \begin{macrocode}
+\newcommand\Map@UP{}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\Map@no}
+% The counter |\Map@no| contains the sequence number for all
+% maps. This value is used internally to reference single maps.
+% \begin{macrocode}
+\newcount\Map@no
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\Map@counter}
+% The counter |\Map@counter| contains the number of a map in
+% the context of the containing map .
+% \begin{macrocode}
+\newcount\Map@counter
+\Map@counter=0
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\Map@parts@}
+% The macro |\Map@parts@| is used to store the parts of the
+% top-level maps. This is the initialization of a feature
+% otherwise used in the aux file.
+% \begin{macrocode}
+\@namedef{Map@parts@}{}
+% \end{macrocode}
+% \end{macro}
+% \end{Map}
+%
+% \begin{Map}{Typesetting a Block}
+%
+% \Block{}%
+% Blocks are the basic building unit of maps. Here the Block is
+% defined in all it's beauty.
+%
+% \begin{environment}{Map@Block}
+% This macro is used to typeset a block inside a Map. To avoid
+% abuse outside of a map it is activated within a Map only.
+% \changes{2.2}{2017/07/20}{|MapBlockStartHook| added.}
+% \begin{macrocode}
+\newenvironment{Map@Block}[1]{\par
+ \vspace*{-\parskip}\vspace*{-1ex}%
+ \\\null\par
+ \vspace*{\MapParskip}%
+ \raggedright\hspace{0pt}\MapFont{\MapBlockLabelFont{#1}}%
+ \gdef\@currentlabel{#1}%
+ &\parskip=\MapParskip
+ {\MapRuleStart
+ \rule{\MapTextFraction\textwidth}{\MapRuleWidth}}\par
+ \ifx\@undefined\MapBlockStartHook\else
+ \MapBlockStartHook{#1}%
+ \fi
+% \end{macrocode}
+%
+% The final action is empty. Thus the block can be used as a simple
+% macro as well.
+% \begin{macrocode}
+}{%
+}
+% \end{macrocode}
+% \end{environment}
+%
+% \Block{}%
+% \begin{macro}{\Block}
+% The macro |\Block| issues an error when used outside of a Map
+% environment.
+% \begin{macrocode}
+\newcommand\Block[1]{\PackageWarning{limap}{The sectioning command
+ `Block' has been encountered outside the scope of a Map
+ environment.}}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\WideBlock}
+% The macro |\WideBlock| takes one argument which is added to
+% the current block where the whole width of the table is used.
+% \begin{macrocode}
+\newcommand\WideBlock{\\\multicolumn2{@{}l@{}}}
+% \end{macrocode}
+% \end{macro}
+% \end{Map}
+%
+% \begin{Map}{Typesetting a Table of Contents}
+%
+%
+% \Block{}%
+% \begin{macrocode}
+\newif\if@Map@toc@sep@
+% \end{macrocode}
+%
+% \Block{}%
+% \begin{macro}{\MapTableOfContents@open}
+% The macro |\MapTableOfContents@open| produces the table of
+% contents for the current map. It produces a tabular
+% containing the titles and pages of all maps directly
+% contained in the current map. It utilizes a tabular
+% environment and booktabs.
+% \begin{macrocode}
+\def\MapTableOfContents@open{%
+ \centering
+ \begin{tabular}{p{.6\textwidth}r}\toprule
+ \MapTOCheadfont{\MapTOCname}&
+ \MapTOCheadfont{\MapTOCpage}\\\midrule
+ \ifcsdef{Map@parts@\the\Map@no}{
+ \edef\Map@tmp@{\csname Map@parts@\the\Map@no\endcsname:}%
+ \expandafter\Map@toc@loop\Map@tmp@
+ \\\bottomrule
+ }{}
+ \end{tabular}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\MapTableOfContents@boxed}
+% The macro |MapTableOfContents@boxed| produces the table of
+% contents for the current map. It produces a tabular
+% containing the titles and pages of all maps directly
+% contained in the current map. It utilizes a tabular
+% environment and booktabs.
+% \begin{macrocode}
+\def\MapTableOfContents@boxed{%
+ \centering
+ \begin{tabular}{|p{.6\textwidth}|r|}\hline
+ \MapTOCheadfont{\MapTOCname}&
+ \MapTOCheadfont{\MapTOCpage}\\\hline
+ \ifcsdef{Map@parts@\the\Map@no}{
+ \edef\Map@tmp@{\csname Map@parts@\the\Map@no\endcsname:}%
+ \expandafter\Map@toc@loop\Map@tmp@
+ \\\hline
+ }{}
+ \end{tabular}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\MapTableOfContentsStyle}
+% The macro |MapTableOfContentsStyle| determines the style of
+% the TOCs. It can take the values |open| or |boxed|.
+% \begin{macrocode}
+\newcommand\MapTableOfContentsStyle{open}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\MapTableOfContents}
+% The macro |MapTableOfContents| produces the table of
+% contents for the current map. It produces a tabular
+% containing the titles and pages of all maps directly
+% contained in the current map.
+% \begin{macrocode}
+\newcommand\MapTableOfContents{\par
+ \global\@Map@toc@sep@false
+ \csname MapTableOfContents@\MapTableOfContentsStyle\endcsname
+ \vspace*{-1.5\parskip}\par\ignorespaces
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{macro}{\Map@toc@loop}
+% The macro |\Map@toc@loop| is a recursive solution to loop
+% through all elements of a list of children. The argment is
+% expected to be a colon separated list of numbers. The end is
+% marked by two colons in row.
+%
+% Each number is a reference to a map. The respective line in
+% the toc table is produced.
+% \begin{macrocode}
+\def\Map@toc@loop#1:{%
+ \def\Map@tmp@{#1}%
+ \ifx\Map@tmp@\empty
+ \global\let\Map@next@=\relax
+ \else
+ \if@Map@toc@sep@
+ \gdef\Map@next@{\\
+ \ref{Map@#1}&\pageref{Map@#1}%
+ \Map@toc@loop}%
+ \else
+ \gdef\Map@next@{%
+ \ref{Map@#1}&\pageref{Map@#1}%
+ \Map@toc@loop}%
+ \global\@Map@toc@sep@true
+ \fi
+ \fi
+ \Map@next@
+}
+% \end{macrocode}
+% \end{macro}
+% \end{Map}
+%
+% \begin{Map}{Typesetting a Table}
+%
+% \Block{}%
+% \begin{macro}{\MapTabularFraction}
+% The macro |\MapTabularFraction| contains a factor for the line
+% width. This is used to determine the width of the table. The
+% tabular is centered in the text column.
+% \begin{macrocode}
+\newcommand\MapTabularFraction{.95}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{environment}{MapTabular}
+% The environment |MapTabular| produces the |tabular| environment
+% with the width of the text column.
+% \begin{macrocode}
+\newenvironment{MapTabular}{%
+ \begin{center}
+ \begin{tabular*}{\MapTabularFraction\linewidth}%
+}{%
+ \end{tabular*}
+ \end{center}\ignorespaces
+}
+% \end{macrocode}
+% \end{environment}
+% \end{Map}
+%
+% \begin{Map}{Typesetting the Title Page}
+%
+% \Block{}%
+% \begin{macro}{\MakeTitle}
+% The macro |\MakeTitle| can be used as a replacement for the
+% |\maketitle| macro.
+% \begin{macrocode}
+\newcommand\MakeTitle{\thispagestyle{empty}
+ \rule{0pt}{.25\textheight}\par
+ \mbox{}\hfill
+ \begin{minipage}{\MapTextFraction\textwidth}
+ \raggedright
+ \rule{\textwidth}{2pt}\par
+ \vspace*{2.5\MapParskip}%
+ \sf{\huge \@title\par}%
+ \vspace*{2.5\MapParskip}%
+ \rule{\textwidth}{2pt}\par
+ \vspace*{2.5\MapParskip}%
+ \MapFont{\large \@author} \par
+ \vspace*{2.5\MapParskip}%
+ \MapFont{\footnotesize \@date}
+ \vspace*{\MapParskip}%
+ \end{minipage}%
+ \vspace*{-22ex}%
+ \par
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \Block{}%
+% \begin{environment}{Abstract}
+% This macro is used to typeset the abstract.
+% \begin{macrocode}
+\newenvironment{Abstract}{\vfill
+ \par
+ \mbox{}\hfill
+ \begin{minipage}{\MapTextFraction\textwidth}\parskip=1ex
+ \rule{\textwidth}{1pt}\medskip\par
+% \end{macrocode}
+%
+% \begin{macrocode}
+}{\par\rule{\textwidth}{1pt}
+ \end{minipage}%
+ \par
+}
+% \end{macrocode}
+% \end{environment}
+%
+% \Block{Use maketitle and abstract}%
+% The new |\maketitle| macro is activated for the class.
+%
+% \begin{macrocode}
+%<*class>
+\let\maketitle\MakeTitle
+\let\abstract\Abstract
+\let\endabstract\endAbstract
+%</class>
+% \end{macrocode}
+% \end{Map}
+%
+% \begin{Map}{Final Actions}
+%
+% \Block{Local configuration}%
+% Load the configuration file at the end if it can be found.
+% \begin{macrocode}
+\InputIfFileExists{limap.cfg}{}{}
+% \end{macrocode}
+%
+% \Block{}%
+% Finally we have to activate the proper settings for the chosen
+% language.
+% \begin{macrocode}
+\csname LIMAP@SelectLanguage@\LIMAP@Language\endcsname
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ifLIMAP@strict
+ \def\chapter{\PackageWarning{limap}{The sectioning command
+ `chapter' is not available.}}
+% \def\section{\PackageWarning{limap}{The sectioning command
+% `section' is not available.}}
+ \def\subsection{\PackageWarning{limap}{The sectioning command
+ `subsection' is not available.}}
+ \def\subsubsection{\PackageWarning{limap}{The sectioning command
+ `subsubsection' is not available.}}
+ \def\paragraph{\PackageWarning{limap}{The sectioning command
+ `paragraph' is not available.}}
+ \def\subparagraph{\PackageWarning{limap}{The sectioning command
+ `subparagraph' is not available.}}
+ \def\subsubparagraph{\PackageWarning{limap}{The sectioning command
+ `subsubparagraph' is not available.}}
+\fi
+% \end{macrocode}
+%
+% \Block{Finale}%
+% That's all for this time.
+% \end{Map}
+% \end{Map}
+% \end{Map}
+%
+% \Finale
+%
+\endinput
+%
+% Local Variables:
+% mode: latex
+% TeX-master: "limap.dtx"
+% End: