summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/dlfltxb/dlfltxbtocconfig.sty
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2008-01-19 15:20:26 +0000
committerNorbert Preining <preining@logic.at>2008-01-19 15:20:26 +0000
commitad6fb43bb22068e7d16a9ed534f4614699d8fcd7 (patch)
treed7ac91a072f216ce631d617fd2a9d56d0077264b /Master/texmf-dist/tex/latex/dlfltxb/dlfltxbtocconfig.sty
parentaa6ced3deb6c3429cc177f028065c87696e2eabd (diff)
update dlbfltx
git-svn-id: svn://tug.org/texlive/trunk@6315 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/dlfltxb/dlfltxbtocconfig.sty')
-rw-r--r--Master/texmf-dist/tex/latex/dlfltxb/dlfltxbtocconfig.sty379
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
+