diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/dlfltxb/dlfltxbtocconfig.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/dlfltxb/dlfltxbtocconfig.sty | 379 |
1 files changed, 379 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/dlfltxb/dlfltxbtocconfig.sty b/Master/texmf-dist/tex/latex/dlfltxb/dlfltxbtocconfig.sty new file mode 100644 index 00000000000..3f4168bc030 --- /dev/null +++ b/Master/texmf-dist/tex/latex/dlfltxb/dlfltxbtocconfig.sty @@ -0,0 +1,379 @@ +\ProvidesPackage{dlfltxbtocconfig}[2007/12/27 v0.5 by Lars Madsen] + +% This package be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of LaTeX +%% version 2003/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% The Current Maintainer of this work is Lars Madsen (daleif@imf.au.dk). +%% + + +% HISTORY +% +% 20071227 a few internal macros changed to reflect changes in +% mempatch 4.9 + +% we need to be running under the memoir class +\@ifclassloaded{memoir}{}{% + \PackageError{dlfltxbtoconfig}{This package is build to run under + the memoir class, no other class will work}{}} + +% test for features present in mempatch 4.9 +\@ifundefined{cftinsertcode}{ + \PackageError{dlfltxbtoconfig}{Macro \string\cftinsertcode is missing. + We need features from mempatch version 4.9 or newer, please + upgrade memoir and mempatch.}{} +}{} + + +% add a \par to the end of the TOC +\AtEndDocument{\addtocontents{toc}{\par}} + +% we will use a special spart in the short ToC only the short ToC uses +% this so we define it to do nothing +\providecommand\l@spart[2]{} +% similar to \part but only adds something to the ToC +\newcommand\spart[1]{\cleartorecto\phantomsection\addcontentsline{toc}{spart}{\protect\partnumberline{}#1}} + + +% this is now directly included in memoir +% % the command inserted into the ToC holding the hook +% \newcommand\cftdlfinsert[1]{\@nameuse{cftdlfinsert#1}} +% % creates a hook to be executed in the ToC, since we use \@nameuse it +% % does not matter if the hook does not exist +% \newcommand\cftdlfinsertcode[2]{\@namedef{cftdlfinsert#1}{#2}} +% % inserts a hook into the ToC file +% \newcommand\cftdlfinserthook[1]{\addtocontents{toc}{\protect\cftdlfinsert\protect{#1\protect}}} + + + +% used for calculating the widest section and sunsection numbers +% we reset them back to zero in the ToC preprocessor +\newlength\secwidest +\settowidth\secwidest{99.99} +\newlength\subsecwidest +\settowidth\subsecwidest{99.99} + +% the name of the ToC file, just such that one can use it on sample +% data by just redefining this macro +\def\feline@includetocfile{\@starttoc{toc}} + +%\PackageWarning{dlfltxbtocconfig}{ToCfile: \feline@tocfile} + +% LoT and LoF handling +\cftsetindents{figure} {0em} {3.0em} +\cftsetindents{table} {0em} {3.0em} +\renewcommand{\cftfiguredotsep} {\cftnodots} +\renewcommand{\cfttabledotsep} {\cftnodots} + + +%%%%%%%%%%%%%%%%%%%% +%% %% +%% MakeShortToC %% +%% %% +%%%%%%%%%%%%%%%%%%%% + + + +% This macro is used to print the two ToCs +\newcommand\MakeShortToC{ + \begingroup + \renewcommand{\contentsname}{Kort oversigt} + \setcounter{tocdepth}{0} + % no precis' + \renewcommand\precistoctext[1]{} + % mess with internal command + \renewcommand\changetocdepth[1]{} + \renewcommand\cftchapterfont{\normalfont\itshape} + \renewcommand\cftchapterpagefont{\normalfont\itshape} + \renewcommand\cftchapterleader{\enspace\textperiodcentered\enspace} + % no part numbers + \renewcommand\partnumberline[1]{} + % no parts + \renewcommand\l@part[2]{} + % we will use spart ToC entries and ignore parts + \renewcommand\l@spart[2]{% + \noindent + \qquad\qquad\hrulefill\par% + \noindent% + \raisebox{-3pt}[0pt][0pt]{\qquad\qquad\parbox[t]{0.35\textwidth}{\itshape\bfseries ##1}}% + \vskip-\baselineskip + \par + } + % no chapternumbers + \renewcommand\chapternumberline[1]{} + % reconfigure the way chapters and appendices are presented + \renewcommand*{\l@chapapp}[3]{% + \ifnum \c@tocdepth >\m@ne + \cftchapterbreak + \vskip \cftbeforechapterskip + { +% \leftskip -10pt%\cftchapterindent\relax +% \rightskip 0\textwidth%\@tocrmarg + \leftskip \fill + \rightskip 0pt + \parfillskip 0pt%-\rightskip + \parindent 0pt + \@afterindenttrue + \interlinepenalty\@M + \leavevmode + \def\@chapapp@head{##3}% + {\cftchapterpagefont ##2}\nobreak% + \cftchapterfillnum% + {##1}% + }% + \fi} + % it is best not have have long chapter title, but in case they are + % long, we will put them into a box + \renewcommand*\cftchapterfillnum[1]{% + {\cftchapterleader}\nobreak + {\parbox[t]{0.5\textwidth}{\raggedright\cftchapterfont ##1}}\par + } + % set the distance between chapters + \setlength\cftbeforechapterskip{4pt} + % set the title of the short ToC + \@nameuse{@tocmaketitle} + % add the short ToC to the ToC + \phantomsection + \addcontentsline{toc}{chapter}{\contentsname} + % reag in the ToC + \makeatletter +% \input\feline@tocfile +\feline@includetocfile + \endgroup + \cleartorecto +} + + + +%%%%%%%%%%%%%%%%%%%%% +%% %% +%% MakeNormalToC %% +%% %% +%%%%%%%%%%%%%%%%%%%%% + + + +\newcommand\cftdlfsubsubseccomma{% + \@ifundefined{aldinesmall}{% + , \hskip .5em plus 3pt minus 3pt% + }{% + \hskip .5em plus 3pt minus 3pt\aldinesmall\nolinebreak% + \hskip .5em plus 3pt minus 3pt\nopagebreak% + }} + + +% This macro is used to print the two ToCs +\newcommand\MakeNormalToC{ + \begingroup + + \newcommand\feline@partToCtext[1]{% + \begingroup% + \fboxsep=2pt% + {\parbox{\linewidth-2\fboxsep-2\fboxrule}% + {\itshape\LARGE \strut\hfill {##1} \hfill\strut}}% + \endgroup% + } + + + % no pagenumbers for part + \cftpagenumbersoff{part} + + \DeclareRobustCommand\precistoctext[1]{% + {\nopagebreak\leftskip0pt\relax + % \advance\leftskip\cftchapternumwidth\relax + \rightskip\@tocrmarg plus 4em \relax + \noindent\parbox{\linewidth-2em-\@tocrmarg}% + {\precistocfont\raggedright\footnotesize ##1}\par}\vskip5pt} + + % reconfiguring the way parts will appear + \renewcommand*{\l@part}[2]{% + \ifnum \c@tocdepth >-2\relax + \cftpartbreak% + \vskip\cftbeforepartskip + \begingroup + { + \leftskip 0pt%\cftpartindent\relax + \rightskip 0pt%\@tocrmarg + \parfillskip -0pt%\rightskip + \parindent 0pt\relax\@afterindenttrue + \interlinepenalty\@M + \leavevmode + \feline@partToCtext{##1} + \par + }\nopagebreak + \global\@nobreaktrue + \everypar{\global\@nobreakfalse\everypar{}}% + \endgroup + \fi} + % it is good to break begore a part instead of having a part at the + % bottom of a page + \renewcommand\cftpartbreak{\par\addpenalty{-\@highpenalty} + \if@nobreak\else + \vskip\z@\@plus\bottomsectionskip + \penalty\z@ + \vskip\z@\@plus -\bottomsectionskip + \fi + } + % no part numbers + \renewcommand\partnumberline[1]{} + + + % need more space for ToC page numbers + \setpnumwidth{2.55em} + \setrmarg{3.55em} + % need more space for ToC section numbers, we will use calculated numbers + \cftsetindents{section} {0em} {\secwidest+0.5em} + \cftsetindents{subsection} {\secwidest+0.5em} {\subsecwidest+0.5em} + \cftsetindents{subsubsection}{\secwidest+\subsecwidest+1em}{0em} +% % need more space for LoF & LoT numbers + %remove the dotted leaders + \renewcommand{\cftsectiondotsep} {\cftnodots} + \renewcommand{\cftsubsectiondotsep} {\cftnodots} + \renewcommand{\cftsubsubsectiondotsep}{\cftnodots} + \renewcommand{\cftparagraphdotsep} {\cftnodots} + \renewcommand{\cftsubparagraphdotsep} {\cftnodots} + + % if someone wrote \bfseries or similar in the title of a + % subsubsection, we will remove it + \let\feline@oldnumberline\numberline + \let\oldbfseries=\bfseries + \let\oldem=\em + \let\oldttfamily=\ttfamily + \renewcommand{\cftsubsubsectionfont}{\small\itshape} + \renewcommand{\cftsubsubsectionpagefont}{\footnotesize\itshape\scshape} + % reconfigure the way subsubsectins are displayed + \renewcommand{\l@subsubsection}[2]{% + \ifnum \c@tocdepth > 2\relax% + \let\bfseries\relax% + \let\em\relax% + \let\ttfamily\relax% + % \def\numberline##1{\textit{##1}~}% % numbers + \def\numberline####1{}% % no numbers + \leftskip=\cftsubsubsectionindent% + \settowidth\@tempdima{\textbf{999999}}% + \rightskip=\@tempdima plus 4em +% \parfillskip=\fill% + \parfillskip=2em plus 1fil + \nopagebreak% added 20060713 + % instead of using a comma to separate entries we will use a leaf + % (requires the fourier package + \ifhmode \cftdlfsubsubseccomma\else\noindent\fi% +% \noindent + \ignorespaces% + {\cftsubsubsectionfont ##1}~~{\cftsubsubsectionpagefont ##2}% + \let\numberline\feline@oldnumberline\ignorespaces% + \let\bfseries\oldbfseries\ignorespaces% + \let\em\oldem\ignorespaces% + \let\ttfamily\oldttfamily\ignorespaces% + \fi% + } + + % getting chapternames and appendix names into the ToC + \renewcommand\cftchaptername{\chaptername~~} + \renewcommand\cftappendixname{\appendixname~~} + + \renewcommand{\contentsname}{Indholdsfortegnelse} + \setcounter{tocdepth}{3} % subsections + \addtodef{\cftchapterbreak}{\par}{} + \renewcommand{\cftchapterleader}{\cftdotfill{\cftchapterdotsep}} + +% \setlength\cftbeforechapterskip{2.5em plus 1em minus 0.5em} + \setlength\cftbeforepartskip{2.5em plus 1em minus 1.5em} + + % handle some added hooks + \cftinsertcode{A}{ + \renewcommand\cftchapterfont{\normalfont} + \renewcommand\cftchapterpagefont{\normalfont} + \setlength\cftbeforechapterskip{0pt} + } + + \cftinsertcode{B}{ + \renewcommand\cftchapterfont{\bfseries} + \renewcommand\cftchapterpagefont{\bfseries} + \addtolength\cftbeforechapterskip{1.25em plus 0.7em minus 1em} + } + + \cftinsertcode{C}{\setlength\cftbeforechapterskip{0pt}} + + + % set the title of the short ToC + \@nameuse{@tocmaketitle} + % add the short ToC to the ToC + \phantomsection + \addcontentsline{toc}{chapter}{\contentsname} + % reag in the ToC + \makeatletter +% \input\feline@tocfile +\feline@includetocfile + \endgroup + \cleartorecto +} + +%%%%%%%%%%%%%%%%%%%%%%%% +%% %% +%% ToC preprocessor %% +%% %% +%%%%%%%%%%%%%%%%%%%%%%%% + + + +% this macro preprocesses the ToC and figures out which section and +% subsection numbers are the widest, these will be saved into +%\secwidest and \subsecwidest +\newcommand\preprocessToC{ + \begingroup +% \newif\ifshortToC + \makeatletter + \let\l@part=\@gobbletwo + \let\l@chapapp=\@gobbletwo + \let\l@subsubsection=\@gobbletwo + + \setlength{\global\secwidest}{0pt} + \setlength{\global\subsecwidest}{0pt} + + \def\PARSER##1##2##3##4\END{%\typeout{##2} + \settowidth\unitlength{##3}% + \ifdim\unitlength>##1% + \settowidth{\global##1}{##3}% + \fi% + } + \renewcommand\l@section[2]{% + \PARSER\secwidest##1\END% + } + \renewcommand\l@subsection[2]{% + \PARSER\subsecwidest##1\END% + } + \let\precistoctext\@gobble + +% \input\feline@tocfile + \feline@includetocfile + \typeout{widest section: \the\secwidest} + \typeout{widest subsection: \the\subsecwidest} + \endgroup +} + + +% the internal macros tha lives inside the ToC file +\def\cftSubsectionIndentsBackToNormal{% + \cftsetindents{subsubsection}{\secwidest+\subsecwidest+1em}{0em}% +} +\def\cftSubsectionIndentsPullBack{% + \cftsetindents{subsubsection}{\secwidest+0.5em}{0em}% +} + +\newcommand\ToCSubsectionIndentsPullBack{% + \addtocontents{toc}{\protect\cftSubsectionIndentsPullBack}} +\newcommand\ToCSubsectionIndentsBackToNormal{% + \addtocontents{toc}{\protect\cftSubsectionIndentsBackToNormal}} + +% preserving some old syntax +\let\RedofelineEmulSubSubSec\ToCSubsectionIndentsBackToNormal +\let\felineEmulSubSubSec\ToCSubsectionIndentsPullBack + |