summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/dlfltxb/dlfltxbtocconfig.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-03-06 01:07:33 +0000
committerKarl Berry <karl@freefriends.org>2010-03-06 01:07:33 +0000
commitf276a23ea2fc902e50521314bd7378a95c9e4de9 (patch)
tree9f038067b71488e8e592c76a3e74951011666199 /Master/texmf-dist/tex/latex/dlfltxb/dlfltxbtocconfig.sty
parent48e45d82921aca1f3b8fe0bfc9ff3abbb4bb81b4 (diff)
dlfltxb update (4mar10)
git-svn-id: svn://tug.org/texlive/trunk@17337 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.sty358
1 files changed, 298 insertions, 60 deletions
diff --git a/Master/texmf-dist/tex/latex/dlfltxb/dlfltxbtocconfig.sty b/Master/texmf-dist/tex/latex/dlfltxb/dlfltxbtocconfig.sty
index 07bac330fdb..c0ae6d04b5c 100644
--- a/Master/texmf-dist/tex/latex/dlfltxb/dlfltxbtocconfig.sty
+++ b/Master/texmf-dist/tex/latex/dlfltxb/dlfltxbtocconfig.sty
@@ -1,4 +1,4 @@
-\ProvidesPackage{dlfltxbtocconfig}[2008/08/05 v0.65 by Lars Madsen]
+\ProvidesPackage{dlfltxbtocconfig}[2010/03/04 v0.7 by Lars Madsen]
% This package be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -25,7 +25,8 @@
% 20080207 bugfix, \spart renamed to \specialpart, end the bookmark
% for it is removed
% 20080708 small cosmetic changes
-
+% 20081121 tried a look with a line under the part entries in the toc
+% 20100304 updated to use undocumented features from the memoir class
% we need to be running under the memoir class
\@ifclassloaded{memoir}{}{%
@@ -51,23 +52,168 @@
% apparently a bookmark level of 100 removes it from the list of book marks
\newcommand\toclevel@specialpart{100}%
-% 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}}}
+
+% trick with new memoir
+
+
+\newcommand\mem@cft@alt@indents@setter[3]{%
+ % #1 = level (section, and down, chapter is special)
+ % #2 = name of level above
+ % #3 = numwidth
+ \expandafter\setlength{\@nameuse{cft#1numwidth}}{#3}
+ \expandafter\setlength{\@nameuse{cft#1indent}}{\@nameuse{cft#2indent}}
+ \expandafter\addtolength{\@nameuse{cft#1indent}}{\@nameuse{cft#2numwidth}}
+}
+
+% \newlength\maxpnumformatted
+% \newcommand\checkwidest[1]{%
+% \expandafter\renewcommand\csname cft#1formatpnumhook\endcsname[1]{%
+% \settowidth\@tempdimc{{\@nameuse{cft#1pagefont}##1}}%
+% \ifdim\@tempdimc>\maxpnumformatted\global\maxpnumformatted=\@tempdimc\fi}%
+% }
+% \checkwidest{chapter}
+
+\newlength\widestchapter
+\renewcommand\chapternumberlinehook[1]{%
+ \settowidth\@tempdimc{\@nameuse{cftchapterfont}#1}%
+ \ifdim\@tempdimc>\widestchapter\global\widestchapter=\@tempdimc\fi%
+}
+\newlength\widestsection
+\newlength\widestsubsection
+\newlength\widestsubsubsection
+\newlength\widestfigure
+\newlength\widesttable
+
+\def\mem@list{section,subsection,subsubsection,paragraph,subparagraph,figure,table}
+
+\newcommand\mem@wrec[2]{%
+ \expandafter\nametest\expandafter{\cftwhatismyname}{#1}%
+ \ifsamename%
+ \settowidth\@tempdimc{\@nameuse{cft\cftwhatismyname font}#2}%
+ \@ifundefined{widest#1}{%
+ %\typeout{\string\widest#1 not defined, ignoring}
+ }{%
+ \ifdim\dimexpr\@tempdimc>\@nameuse{widest#1}\relax%
+ \global\@nameuse{widest#1}=\@tempdimc\fi%
+ }%
+ \fi%
+}
+
+\renewcommand\numberlinehook[1]{%
+ \@for\hest:=\mem@list\do{%
+ \expandafter\mem@wrec\expandafter{\hest}{#1}%
+ }%
+}
+
+\def\@mem@storer#1#2{\global\@namedef{mem@stored@#1}{#2}}
+\newcommand\memStoreValue[2]{%
+ \@bsphack%
+ \immediate\write\@mainaux{%
+ \string\@mem@storer{#1}{#2}}%
+ \@esphack}
+
+\newcommand\memRetrieveStored[1]{%
+ \@ifundefined{mem@stored@#1}{0pt}{\@nameuse{mem@stored@#1}}}%
+
+\newcommand\memRetrieveStoredInto[2]{%
+ \edef#1{\@ifundefined{mem@stored@#2}{}{\@nameuse{mem@stored@#2}}}}
+
+\AtBeginDocument{
+ \AtEndDocument{
+ \typeout{widest chapter: \the\widestchapter}
+ \typeout{widest section: \the\widestsection}
+ \typeout{widest subsection: \the\widestsubsection}
+ \typeout{widest subsubsection: \the\widestsubsubsection}
+ \memStoreValue{wchapter}{\the\widestchapter}
+ \memStoreValue{wsection}{\the\widestsection}
+ \memStoreValue{wsubsection}{\the\widestsubsection}
+ \memStoreValue{wsubsubsection}{\the\widestsubsubsection}
+ \memStoreValue{wfigure}{\the\widestfigure}
+ % \memStoreValue{wpnum}{\the\maxpnumformatted}
+ }
+}
+
+\newcommand\cftsetindenttoedge[2]{%
+ % #1 = name of level
+ % #2 = numwidth
+ % this sets the indent to zero for this level, just a call to
+ % \cftsetindents
+ \cftsetindents{#1}{0pt}{#2}%
+}
+
+\newcommand\cftsetindentsalt[2]{%
+ % #1 = name of entry
+ % #2 = numwidth
+ % we will create the indent with the data from the level above
+ % supported: chapter, section, subsection, subsubsection, paragraph
+ % and subparagraph
+ % indents above chapter is set to zero
+ \nametest{#1}{chapter}
+ \ifsamename
+ \cftsetindenttoedge{#1}{#2}
+ \else
+ \nametest{#1}{section}
+ \ifsamename
+ \mem@cft@alt@indents@setter{#1}{chapter}{#2}
+ \else
+ \nametest{#1}{subsection}
+ \ifsamename
+ \mem@cft@alt@indents@setter{#1}{section}{#2}
+ \else
+ \nametest{#1}{subsubsection}
+ \ifsamename
+ \mem@cft@alt@indents@setter{#1}{subsection}{#2}
+ \else
+ \nametest{#1}{paragraph}
+ \ifsamename
+ \mem@cft@alt@indents@setter{#1}{subsubsection}{#2}
+ \else
+ \nametest{#1}{subparagraph}
+ \ifsamename
+ \mem@cft@alt@indents@setter{#1}{paragraph}{#2}
+ \else
+ \@memerror{'#1' is not (yet) supported}{}
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+}
+
+
+
+
+
+%\newlength\dlf
+
+
+
+
+% \AtBeginDocument{
+% \newcommand\dlf{\ifdim\dimexpr \memRetrieveStored{wchapter}+0pt >
+% \memRetrieveStored{wsection}+0pt\relax%
+% \memRetrieveStored{wchapter}\else\memRetrieveStored{wsection}\fi}
+% \cftsetindentsalt{chapter}{\dlf+0.5em}
+% \cftsetindenttoedge{section}{\dlf+0.5em}
+% \cftsetindentsalt{subsection}{\memRetrieveStored{wsubsection}+0.5em}
+% \cftsetindentsalt{subsubsection}{\memRetrieveStored{wsubsubsection}+0.5em}
+% \cftsetindents{figure}{0pt}{\memRetrieveStored{wfigure}+0.5em}
+% \setpnumwidth{\memRetrieveStored{wpnum}}
+% % \setlength\@tempdima{\memRetrieveStored{wpnum}+0pt}
+% % \addtolength\@tempdima{1em}
+% % \setrmarg{\the\@tempdima}
+% }
+
% 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}
+%\settowidth\secwidest{999.999}
\newlength\subsecwidest
-\settowidth\subsecwidest{99.99}
+%\settowidth\subsecwidest{999.999}
% the name of the ToC file, just such that one can use it on sample
% data by just redefining this macro
@@ -93,14 +239,27 @@
% This macro is used to print the two ToCs
\newcommand\MakeShortToC{
\begingroup
+
+ \DeclareRobustCommand{\LaTeX}{L\kern-.25em%
+ {\sbox\z@ T%
+ \vbox to\ht\z@{\hbox{\check@mathfonts
+ \fontsize\sf@size\z@
+ \math@fontsfalse\selectfont
+ A}%
+ \vss}%
+ }%
+ \kern-.05em%
+ \TeX}
+
+
\renewcommand{\contentsname}{\shortcontentsname}
\setcounter{tocdepth}{0}
% no precis'
\renewcommand\precistoctext[1]{}
% mess with internal command
\renewcommand\changetocdepth[1]{}
- \renewcommand\cftchapterfont{\normalfont\itshape}
- \renewcommand\cftchapterpagefont{\normalfont\itshape}
+ \renewcommand\cftchapterfont{\normalfont\itshape\sffamily}
+ \renewcommand\cftchapterpagefont{\normalfont\itshape\sffamily}
\renewcommand\cftchapterleader{\enspace\textperiodcentered\enspace}
% no part numbers
\renewcommand\partnumberline[1]{}
@@ -114,7 +273,8 @@
\noindent%
% \raisebox{-3pt}[0pt][0pt]{\qquad\qquad\parbox[t]{0.35\textwidth}{\itshape\bfseries ##1}}%
% \raisebox{-4pt}[0pt][0pt]{\qquad\qquad\parbox[t]{0.35\textwidth}{##1}}%
- \raisebox{-4pt}[0pt][0pt]{\parbox[t]{0.35\textwidth}{\raggedleft##1} \qquad\qquad}%
+ \raisebox{-4pt}[0pt][0pt]{\parbox[t]{0.35\textwidth}{%
+ \raggedleft\bfseries\sffamily ##1} \qquad\qquad}%
\vskip-\baselineskip
\par
}
@@ -176,21 +336,60 @@
\@ifundefined{aldinesmall}{%
, \hskip .5em plus 3pt minus 3pt%
}{%
- \hskip .5em plus 3pt minus 3pt\aldinesmall\nolinebreak%
- \hskip .5em plus 3pt minus 3pt\nopagebreak%
+% \hskip .5em plus 3pt minus 3pt\aldinesmall\nolinebreak%
+\hskip .3em plus 2pt minus 2pt\textperiodcentered%\nolinebreak%
+ \hskip .3em plus 2pt minus 2pt\nopagebreak%
}}
+\newcommand\NormalTocPartFont{\Large\bfseries\itshape\sffamily}
+\newcommand\NormalTocPartPrefix{%
+ \@ifundefined{aldinesmall}{}{
+ {\hbox to \cftsectionnumwidth{\aldinesmall}}}}
% This macro is used to print the two ToCs
\newcommand\MakeNormalToC{
\begingroup
+ \DeclareRobustCommand{\LaTeX}{L\kern-.25em%
+ {\sbox\z@ T%
+ \vbox to\ht\z@{\hbox{\check@mathfonts
+ \fontsize\sf@size\z@
+ \math@fontsfalse\selectfont
+ A}%
+ \vss}%
+ }%
+ \kern-.05em%
+ \TeX}
+
+
+
+
+ % 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}{\footnotesize\itshape\sffamily}
+ \renewcommand{\cftsubsubsectionpagefont}{\footnotesize\sffamily}
+ \renewcommand{\cftsubsectionfont}{\sffamily}
+ \renewcommand{\cftsubsectionpagefont}{\sffamily}
+ \let\cftsectionfont\cftsubsectionfont
+ \let\cftsectionpagefont\cftsubsectionpagefont
+ \renewcommand\cftchapterfont{\sffamily\bfseries}
+ \renewcommand\cftchapterpagefont{\sffamily\bfseries}
+
+
+
\newcommand\feline@partToCtext[1]{%
\begingroup%
\fboxsep=2pt%
{\parbox{\linewidth-2\fboxsep-2\fboxrule}%
-% {\itshape\LARGE \strut\hfill {##1} \hfill\strut}}%
- {\scshape\Large \strut\hfill {##1} \hfill\strut}}%
+ {\NormalTocPartFont\strut{\NormalTocPartPrefix ##1}\hfill\strut}}%
+ \par\vskip-0.35\baselineskip%
+ \settowidth\@tempdimc{\Large\itshape ##1}%
+% \strut\hfill\rule{3.5cm}{0.9pt}\hfill\strut%
+ \par\vskip4mm
\endgroup%
}
@@ -199,27 +398,32 @@
\cftpagenumbersoff{part}
\DeclareRobustCommand\precistoctext[1]{%
- {\nopagebreak\leftskip0pt\relax
+ {\nopagebreak\leftskip\cftsectionnumwidth\relax
% \advance\leftskip\cftchapternumwidth\relax
- \rightskip\@tocrmarg plus 4em \relax
- \noindent\parbox{\linewidth-2em-\@tocrmarg}%
- {\precistocfont\raggedright\footnotesize ##1}\par}\vskip5pt}
+%% \rightskip\@tocrmarg plus 0em \relax
+%% \noindent\parbox[t]{\linewidth-\cftsectionnumwidth-1em}%
+%% {\precistocfont\raggedright\footnotesize ##1}\par}\vskip5pt}
+ \noindent\parbox[t]{\linewidth-\cftsectionnumwidth-\@pnumwidth}%
+ {\precistocfont\RaggedRight%
+ \footnotesize\sffamily ##1}\par}\vskip5pt}
+
+
% reconfiguring the way parts will appear
\renewcommand*{\l@part}[2]{%
\ifnum \c@tocdepth >-2\relax
\cftpartbreak%
- \vskip\cftbeforepartskip
+ \vskip\cftbeforepartskip%
\begingroup
- {
+ {%
\leftskip 0pt%\cftpartindent\relax
\rightskip 0pt%\@tocrmarg
\parfillskip -0pt%\rightskip
- \parindent 0pt\relax\@afterindenttrue
- \interlinepenalty\@M
- \leavevmode
- \feline@partToCtext{##1}
- \par
+ \parindent 0pt\relax\@afterindenttrue%
+ \interlinepenalty\@M%
+ \leavevmode%
+ \feline@partToCtext{##1}%
+ \par%
}\nopagebreak
\global\@nobreaktrue
\everypar{\global\@nobreakfalse\everypar{}}%
@@ -227,7 +431,7 @@
\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}
+ \renewcommand\cftpartbreak{\par%\addpenalty{-\@highpenalty}
\if@nobreak\else
\vskip\z@\@plus\bottomsectionskip
\penalty\z@
@@ -242,25 +446,35 @@
\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}
+% \cftsetindents{section} {0em} {\secwidest+0.5em}
+ % \cftsetindents{subsection} {\secwidest+0.5em} {\subsecwidest+0.5em}
+ % \cftsetindents{subsubsection}{\secwidest+\subsecwidest+1em}{0em}
+
+
+ \newcommand\dlf{\ifdim\dimexpr \memRetrieveStored{wchapter}+0pt >
+ \memRetrieveStored{wsection}+0pt\relax%
+ \memRetrieveStored{wchapter}\else\memRetrieveStored{wsection}\fi}
+ \cftsetindentsalt{chapter}{\dlf+0.5em}
+ \cftsetindenttoedge{section}{\dlf+0.5em}
+ \cftsetindentsalt{subsection}{\memRetrieveStored{wsubsection}+0.5em}
+ \cftsetindents{subsubsection}{\memRetrieveStored{wsection}+0.5em}{0em}%
+% \cftsetindentsalt{subsubsection}{\memRetrieveStored{wsection}+0.5em}
+ \cftsetindents{figure}{0pt}{\memRetrieveStored{wfigure}}
+ \cftsetindents{table}{0pt}{\memRetrieveStored{wtable}}
+
+
+
+
% % 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}
+% \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}
+
+% \renewcommand{\cftsubsubsectionpagefont}{\footnotesize\itshape\scshape}
% reconfigure the way subsubsectins are displayed
\renewcommand{\l@subsubsection}[2]{%
\ifnum \c@tocdepth > 2\relax%
@@ -270,8 +484,9 @@
% \def\numberline##1{\textit{##1}~}% % numbers
\def\numberline####1{}% % no numbers
\leftskip=\cftsubsubsectionindent%
- \settowidth\@tempdima{\textbf{999999}}%
- \rightskip=\@tempdima plus 4em
+% \settowidth\@tempdima{\textbf{99}}%
+ \settowidth\@tempdima{\@pnumwidth}%
+ \rightskip=\@tempdima plus 1em
% \parfillskip=\fill%
\parfillskip=2em plus 1fil
\nopagebreak% added 20060713
@@ -289,8 +504,11 @@
}
% getting chapternames and appendix names into the ToC
- \renewcommand\cftchaptername{\chaptername~~}
- \renewcommand\cftappendixname{\appendixname~~}
+% \renewcommand\cftchaptername{\chaptername~~}
+% \renewcommand\cftappendixname{\appendixname~~}
+
+ \setlength\cftchapternumwidth{\cftsectionnumwidth}
+
% \renewcommand{\contentsname}{Indholdsfortegnelse}
\setcounter{tocdepth}{3} % subsections
@@ -302,20 +520,31 @@
% handle some added hooks
\cftinsertcode{A}{
- \renewcommand\cftchapterfont{\normalfont}
- \renewcommand\cftchapterpagefont{\normalfont}
+ \renewcommand\cftchapterfont{\normalfont\sffamily}
+ \renewcommand\cftchapterpagefont{\normalfont\sffamily}
\setlength\cftbeforechapterskip{0pt}
+ \renewcommand{\cftchapterdotsep} {\cftdotsep}
}
\cftinsertcode{B}{
- \renewcommand\cftchapterfont{\bfseries}
- \renewcommand\cftchapterpagefont{\bfseries}
+ \renewcommand\cftchapterfont{\bfseries\sffamily}
+ \renewcommand\cftchapterpagefont{\bfseries\sffamily}
\addtolength\cftbeforechapterskip{1.25em plus 0.7em minus 1em}
+ \renewcommand{\cftchapterdotsep} {\cftnodots}
}
\cftinsertcode{C}{\setlength\cftbeforechapterskip{0pt}}
+ % \renewcommand\cftchapterleader{}
+% \renewcommand\cftchapterafterpnum{\cftparfillskip}
+
+% \let\cftsectionleader\cftchapterleader
+% \let\cftsubsectionleader\cftchapterleader
+% \let\cftsectionafterpnum\cftchapterafterpnum
+% \let\cftsubsectionafterpnum\cftchapterafterpnum
+
+
% set the title of the short ToC
\@nameuse{@tocmaketitle}
% add the short ToC to the ToC
@@ -324,7 +553,7 @@
% reag in the ToC
\makeatletter
% \input\feline@tocfile
-\feline@includetocfile
+ \feline@includetocfile
\endgroup
\cleartorecto
}
@@ -367,18 +596,21 @@
% \input\feline@tocfile
\feline@includetocfile
- \typeout{widest section: \the\secwidest}
- \typeout{widest subsection: \the\subsecwidest}
+% \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}%
+% \cftsetindents{subsubsection}{\secwidest+\subsecwidest+1em}{0em}%
+% \cftsetindents{subsubsection}{\memRetrieveStored{wsection}+0.5em}{0em}%
+% \cftsetindents{subsubsection}{\secwidest+0.5em}{0em}%
}
\def\cftSubsectionIndentsPullBack{%
- \cftsetindents{subsubsection}{\secwidest+0.5em}{0em}%
+ %\cftsetindents{subsubsection}{\secwidest+0.5em}{0em}%
+% \cftsetindents{subsubsection}{\memRetrieveStored{wsection}+0.5em}{0em}%
}
\newcommand\ToCSubsectionIndentsPullBack{%
@@ -395,3 +627,9 @@
\let\RedofelineEmulSubSubSec\ToCSubsectionIndentsBackToNormal
\let\felineEmulSubSubSec\ToCSubsectionIndentsPullBack
+% figures
+
+\renewcommand\cftfigurefont{\sffamily}
+\renewcommand\cftfigurepagefont{\sffamily}
+\renewcommand\cfttablefont{\sffamily}
+\renewcommand\cfttablepagefont{\sffamily}