diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /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.dtx | 2380 |
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: |