diff options
author | Karl Berry <karl@freefriends.org> | 2010-03-06 01:07:33 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-03-06 01:07:33 +0000 |
commit | f276a23ea2fc902e50521314bd7378a95c9e4de9 (patch) | |
tree | 9f038067b71488e8e592c76a3e74951011666199 /Master/texmf-dist/tex/latex/dlfltxb/dlfltxbtocconfig.sty | |
parent | 48e45d82921aca1f3b8fe0bfc9ff3abbb4bb81b4 (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.sty | 358 |
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} |