diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-13 00:09:20 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-13 00:09:20 +0000 |
commit | dfa401eaa72183dde77ddd8e40d6893483a5260f (patch) | |
tree | 0d3b48ac2e8a4bbf29be5cd2c8ca41c1c33633d5 /Master/texmf-dist/tex/latex/titlesec | |
parent | 27a4bc056250bdb3a69f7214928dec0001cb4bf6 (diff) |
titlesec
git-svn-id: svn://tug.org/texlive/trunk@1393 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/titlesec')
-rw-r--r-- | Master/texmf-dist/tex/latex/titlesec/block.tss | 37 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/titlesec/drop.tss | 55 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/titlesec/frame.tss | 61 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/titlesec/leftmargin.tss | 54 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/titlesec/margin.tss | 54 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/titlesec/rightmargin.tss | 51 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/titlesec/titlesec.sty | 1453 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/titlesec/titletoc.sty | 629 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/titlesec/ttlkeys.def | 114 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/titlesec/ttlps.def | 504 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/titlesec/wrap.tss | 75 |
11 files changed, 3087 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/titlesec/block.tss b/Master/texmf-dist/tex/latex/titlesec/block.tss new file mode 100644 index 00000000000..93055c573b7 --- /dev/null +++ b/Master/texmf-dist/tex/latex/titlesec/block.tss @@ -0,0 +1,37 @@ +% +--------------------------------------------------+ +% | Typeset titlesec.tex to get the documentation. | +% +--------------------------------------------------+ +% +% Copyright (c) 1998-2005 by Javier Bezos. +% All Rights Reserved. +% +% This file is part of the titlesec distribution release 2.6 +% ----------------------------------------------------------- +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or any later version. + +\ProvidesFile{block.tss}[2005/01/22] + +\gdef\ttlh@block#1#2#3#4#5#6#7#8{% + \gdef\ttl@makeline##1{\ttl@calc\hspace{#6}##1\ttl@calc\hspace{#7}}% + \setlength\leftskip{#6}% + \setlength\rightskip{#7}% + \interlinepenalty\@M + \ttl@changecentercr + \ttl@beginlongest + #1% \ifhmode\ttl@hmode@error\fi + \ttl@glcmds + \parindent\z@ + \leavevmode + \ifttl@label + {#2}% + \setlength\@tempskipa{#3}% + \ifdim\@tempskipa=\z@\else\ttl@calc\hspace{#3}\fi + \fi + #4{#8}% + \kern\z@\strut\@@par + \nobreak\ttl@midlongest#5\@@par + \ttl@endlongest} diff --git a/Master/texmf-dist/tex/latex/titlesec/drop.tss b/Master/texmf-dist/tex/latex/titlesec/drop.tss new file mode 100644 index 00000000000..823ef3e15f9 --- /dev/null +++ b/Master/texmf-dist/tex/latex/titlesec/drop.tss @@ -0,0 +1,55 @@ +% +--------------------------------------------------+ +% | Typeset titlesec.tex to get the documentation. | +% +--------------------------------------------------+ +% +% Copyright (c) 1998-2005 by Javier Bezos. +% All Rights Reserved. +% +% This file is part of the titlesec distribution release 2.6 +% ----------------------------------------------------------- +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or any later version. + +\ProvidesFile{drop.tss}[2005/01/22] + +\gdef\ttlh@drop#1#2#3#4#5#6#7#8{% + \global\@noskipsectrue + \gdef\ttl@makeline##1{##1}% + \ttl@changecentercr + #1\ifhmode\ttl@hmode@error\fi + \parindent\z@ + \global\setbox\ttl@box\vtop{\setlength\hsize{#6}% + \color@begingroup + \ifttl@label{#2}\ttl@calc\hspace{#3}\fi + #4{#8}\kern\z@\strut + \@@par + \color@endgroup}% + \advance\@tempskipa1.5\baselineskip + \advance\@tempskipa\ht\ttl@box + \advance\@tempskipa\dp\ttl@box + \advance\@tempskipa-\pagegoal + \advance\@tempskipa\pagestretch + \@tempskipb\pagegoal + \pagegoal-\@tempskipa + \ifdim\bottomtitlespace<\z@\else + \def\@textbottom{\vskip\z@\@plus.0001fil}% + \fi + \penalty9999 + \pagegoal\@tempskipb + \@tempdima\ht\ttl@box \advance\@tempdima\dp\ttl@box + \@tempdimb\@tempdima + \divide\@tempdima\baselineskip \count@\@tempdima + \advance\count@ + \ifdim\@tempdimb<\the\count@.5\baselineskip\@ne\else\tw@\fi + \dp\ttl@box=\z@ + \if@nobreak\advance\count@\@ne\fi + \xdef\@svsechd##1##2{% + \noexpand\llap{\box\ttl@box##2}% + \setbox\z@\hbox{\noexpand\ttl@calc\noexpand\hspace{#6}\relax##2}% + \global\hangindent\wd\z@ + \global\hangafter-\the\count@\relax}} + +\endinput diff --git a/Master/texmf-dist/tex/latex/titlesec/frame.tss b/Master/texmf-dist/tex/latex/titlesec/frame.tss new file mode 100644 index 00000000000..3ef381d89b0 --- /dev/null +++ b/Master/texmf-dist/tex/latex/titlesec/frame.tss @@ -0,0 +1,61 @@ +% +--------------------------------------------------+ +% | Typeset titlesec.tex to get the documentation. | +% +--------------------------------------------------+ +% +% Copyright (c) 1998-2005 by Javier Bezos. +% All Rights Reserved. +% +% This file is part of the titlesec distribution release 2.6 +% ----------------------------------------------------------- +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or any later version. + +\ProvidesFile{frame.tss}[2005/01/22] + +\gdef\ttlh@frame#1#2#3#4#5#6#7#8{% + \def\ttl@filleft##1{\hfill}% + \def\ttl@filright##1{\hfill}% + \gdef\ttl@makeline##1{% + \ttl@calc\hspace{#6}##1\ttl@calc\hspace{#7}}% + \interlinepenalty\@M + \ttl@changecentercr + #1\ifhmode\ttl@hmode@error\fi + \parindent\z@ + \leavevmode + \@tempdima\fboxrule + \addtolength\@tempdima{#3}% + \setlength\leftskip{#6}% + \setlength\rightskip{#7}% + \lower\@tempdima\hbox{% + \everypar{}% + \setbox\z@\hbox{#2}% + \addtolength\hsize{-#6}% + \addtolength\hsize{-#7}% + \@tempdima\dp\z@ % 2002/3/22 + \advance\@tempdima.5\ht\z@ + \vbox{% + \hbox to \hsize{% + \leaders\hrule\@height\fboxrule\ttl@filleft{#3}% + \ifttl@label\lower.5\ht\z@\box\z@\fi + \leaders\hrule\@height\fboxrule\ttl@filright{#3}}% + \vskip-\lineskip + \ifttl@label\vskip-\@tempdima\fi + \hbox{% + \vrule\@width\fboxrule + \kern-\fboxrule + \vbox{% + \ttl@calc\vspace{#3}% + \leavevmode + \addtolength\leftskip {#3}\addtolength\leftskip{-#6}% + \addtolength\rightskip{#3}\addtolength\rightskip{-#7}% + \strut#4{#8}\kern\z@\strut\@@par + \ttl@calc\vspace{#3}}% + \kern-\fboxrule + \vrule\@width\fboxrule}% + \hrule\@height\fboxrule}}% + \@@par\nobreak#5\@@par} + +\endinput diff --git a/Master/texmf-dist/tex/latex/titlesec/leftmargin.tss b/Master/texmf-dist/tex/latex/titlesec/leftmargin.tss new file mode 100644 index 00000000000..7e10ecfc55d --- /dev/null +++ b/Master/texmf-dist/tex/latex/titlesec/leftmargin.tss @@ -0,0 +1,54 @@ +% +--------------------------------------------------+ +% | Typeset titlesec.tex to get the documentation. | +% +--------------------------------------------------+ +% +% Copyright (c) 1998-2005 by Javier Bezos. +% All Rights Reserved. +% +% This file is part of the titlesec distribution release 2.6 +% ----------------------------------------------------------- +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or any later version. + +\ProvidesFile{leftmargin.tss}[2005/01/22] + +\gdef\ttlh@leftmargin#1#2#3#4#5#6#7#8{% + \global\@noskipsectrue + \addtolength\@tempskipb{#6}% + \xdef\ttl@makeline##1{\hskip-\the\@tempskipb\relax##1}% + \leftskip\z@skip + \rightskip\z@skip + \ttl@changecentercr + #1\ifhmode\ttl@hmode@error\fi + \parindent\z@ + \global\setbox\ttl@box\vtop{% + \setlength\hsize{#6}% + \linewidth\hsize + \everypar{}% + \color@begingroup + \ifttl@label{\strut#2\strut}\ttl@calc\hspace{#3}\fi + \strut#4{#8}\kern\z@\strut\@@par + \color@endgroup}% + \advance\@tempskipa\ht\ttl@box + \advance\@tempskipa\dp\ttl@box + \advance\@tempskipa-\pagegoal + \advance\@tempskipa\pagestretch + \@tempskipb\pagegoal + \pagegoal-\@tempskipa + \ifdim\bottomtitlespace<\z@\else + \def\@textbottom{\vskip\z@\@plus.0001fil}% + \fi + \penalty9999 + \pagegoal\@tempskipb + \dp\ttl@box=\z@ + \gdef\@svsechd##1##2{% + \llap{\box\ttl@box##2}% + \if@afterindent\hskip\parindent\fi}} + +\endinput + + + diff --git a/Master/texmf-dist/tex/latex/titlesec/margin.tss b/Master/texmf-dist/tex/latex/titlesec/margin.tss new file mode 100644 index 00000000000..3773340c8d3 --- /dev/null +++ b/Master/texmf-dist/tex/latex/titlesec/margin.tss @@ -0,0 +1,54 @@ +% +--------------------------------------------------+ +% | Typeset titlesec.tex to get the documentation. | +% +--------------------------------------------------+ +% +% Copyright (c) 1998-2005 by Javier Bezos. +% All Rights Reserved. +% +% This file is part of the titlesec distribution release 2.6 +% ----------------------------------------------------------- +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or any later version. + +\ProvidesFile{margin.tss}[2005/01/22] + +\gdef\ttlh@margin#1#2#3#4#5#6#7#8{% + \global\@noskipsectrue + \addtolength\@tempskipb{#6}% + \xdef\ttl@makeline##1{\hskip-\the\@tempskipb\relax##1}% + \leftskip\z@skip + \rightskip\z@skip + \ttl@changecentercr + #1\ifhmode\ttl@hmode@error\fi + \parindent\z@ + \global\setbox\ttl@box\vtop{% + \setlength\hsize{#6}% + \linewidth\hsize + \everypar{}% + \color@begingroup + \ifttl@label{\strut#2\strut}\ttl@calc\hspace{#3}\fi + \strut#4{#8}\kern\z@\strut\@@par + \color@endgroup}% + \advance\@tempskipa\ht\ttl@box + \advance\@tempskipa\dp\ttl@box + \advance\@tempskipa-\pagegoal + \advance\@tempskipa\pagestretch + \@tempskipb\pagegoal + \pagegoal-\@tempskipa + \ifdim\bottomtitlespace<\z@\else + \def\@textbottom{\vskip\z@\@plus.0001fil}% + \fi + \penalty9999 + \pagegoal\@tempskipb + \dp\ttl@box=\z@ + \gdef\@svsechd##1##2{% + \llap{\box\ttl@box##2}% + \if@afterindent\hskip\parindent\fi}} + +\endinput + + + diff --git a/Master/texmf-dist/tex/latex/titlesec/rightmargin.tss b/Master/texmf-dist/tex/latex/titlesec/rightmargin.tss new file mode 100644 index 00000000000..199015a4243 --- /dev/null +++ b/Master/texmf-dist/tex/latex/titlesec/rightmargin.tss @@ -0,0 +1,51 @@ +% +--------------------------------------------------+ +% | Typeset titlesec.tex to get the documentation. | +% +--------------------------------------------------+ +% +% Copyright (c) 1998-2005 by Javier Bezos. +% All Rights Reserved. +% +% This file is part of the titlesec distribution release 2.6 +% ----------------------------------------------------------- +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or any later version. + +\ProvidesFile{rightmargin.tss}[2005/01/22] + +\gdef\ttlh@rightmargin#1#2#3#4#5#6#7#8{% + \global\@noskipsectrue + \addtolength\@tempskipb{#6}% + \xdef\ttl@makeline##1{##1\hskip-\the\@tempskipb}% + \leftskip\z@skip + \rightskip\z@skip + \ttl@changecentercr + #1\ifhmode\ttl@hmode@error\fi + \parindent\z@ + \global\setbox\ttl@box\vtop{% + \setlength\hsize{#6}% + \linewidth\hsize + \everypar{}% + \color@begingroup + \ifttl@label{\strut#2\strut}\ttl@calc\hspace{#3}\fi + \strut#4{#8}\kern\z@\strut\@@par + \color@endgroup}% + \advance\@tempskipa\ht\ttl@box + \advance\@tempskipa\dp\ttl@box + \advance\@tempskipa-\pagegoal + \advance\@tempskipa\pagestretch + \@tempskipb\pagegoal + \pagegoal-\@tempskipa + \ifdim\bottomtitlespace<\z@\else + \def\@textbottom{\vskip\z@\@plus.0001fil}% + \fi + \penalty9999 + \pagegoal\@tempskipb + \dp\ttl@box=\z@ + \gdef\@svsechd##1##2{% + \rlap{\hskip\textwidth##2\box\ttl@box}% + \if@afterindent\hskip\parindent\fi}} + +\endinput diff --git a/Master/texmf-dist/tex/latex/titlesec/titlesec.sty b/Master/texmf-dist/tex/latex/titlesec/titlesec.sty new file mode 100644 index 00000000000..b43d0f32fcb --- /dev/null +++ b/Master/texmf-dist/tex/latex/titlesec/titlesec.sty @@ -0,0 +1,1453 @@ +% +--------------------------------------------------+ +% | Typeset titlesec.tex to get the documentation. | +% +--------------------------------------------------+ +% +% Copyright (c) 1998-2005 by Javier Bezos. +% All Rights Reserved. +% +% This file is part of the titlesec distribution release 2.6 +% ----------------------------------------------------------- +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or any later version. + +% History of v1.0 +% ~~~~~~~~~~~~~~~ +% 1998/02/25: Added nops option +% 1998/02/28: Added \@mkboth stuff in \setmarks +% 1998/03/01: Changed test in \ttl@secnum +% 1998/03/03: Corrected some \fil... commands +% 1998/03/03: Replaced the faulty \@hangfrom by new commands +% 1998/03/03: Some \def replaced by \newcommand +% 1998/03/04: .dtx/.ins scheme finally rejected. Useless +% for users, obtrusive for `readers' and proned +% to errors +% 1998/03/04: Tidied up documentation +% 1998/03/06: \wordsep renamed and documented +% 1998/03/06: Added dummy asignation in \ttl@chap. +% 1998/03/06: Removed \ttl@xsect and merged into \tl@sect +% 1998/03/06: Added \ProvidesPackage + +% History of v1.1 +% ~~~~~~~~~~~~~~~~ +% 1998/03/25: \chapter corrected, as well as the size options +% 1998/03/26: Added compact option +% 1998/03/26: Added flushleft, flushright and center options +% 1998/04/08: Changed all instances of \noindent by \parindent\z@ +% 1998/04/14: Added \filinner, \filouter +% 1998/04/14: Added drop shape +% 1998/05/01: Added rightmargin shape (and margin renamed to +% leftmargin) +% 1998/05/03: Added \setheadindent +% +% History of v1.2 (unreleased) +% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +% +% 1998/06/01: Compatibility with AMS classes +% 1998/06/08: On-demand loading of shapes +% 1998/06/11: Frame shape. Some \fil... command +% modified to work in the label of this +% chapter shape. +% 1998/07/03: Bottomtitle option (at last...) +% 1998/07/14: ...margin styles bug fixed using a method +% similar to bottomtitle. +% 1998/07/29: \titleline + +% +% History of v2.0 +% ~~~~~~~~~~~~~~~~ +% +% 1998/08/05 to +% 1998/08/29: Fully reimplemented +% +% History of v2.1 +% ~~~~~~~~~~~~~~~~ +% 1999/01/05: We define in this file the three basic shapes. +% Additional ones remain defined in external files. +% Unified the shapes for sections and chapters. +% 1999/01/05: \ttl@shape merged into \ttl@format@iii. +% 1999/01/05: \titlerule +% 1999/01/07: \ttl@defkeys splitted from \ttl@keys +% 1999/01/10: Added the \part stuff, including a definition of \@openright +% 1999/01/11: Removed unnecessary \ttl@numsecfalse in \ttl@sect@i. +% 1999/01/14: Optimized \titlerule +% 1999/01/27: Changed \titleline to correct the spacing at the +% top page and to fix a bug which changed the mode +% to horizontal, thus introducing unwanted space +% (\makebox -> \@makebox). +% 1999/02/02: \ttl@secnum renamed to \ttl@write and introduced the +% \ttl@savewrite mechanism to sincronize the toc/marks +% with the title in case there is a \newpage in <after>. +% 1999/02/03: wrap shape +% 1999/02/03: Added a \kern\z@ for not to avoid hyphenation +% of the last word. Not strictly necessary, but +% it is more LaTeX-like. +% 1999/02/05: \partmark defined (and in \setmarks, too). +% 1999/02/08: \ttl@row@i simplified. +% 1999/02/08: \ttl@savefn mechanism. +% 1999/02/10: Removed extra \leavevmode in display +% 1999/02/13: Now \titleline doesn't add the width. It's set. +% 1999/02/17: The part mark is catched, even if unused. +% 1999/02/17: old/newparttoc added. +% 1999/02/18: Changed many TeX assignments to the LaTeX +% counterpart. +% 1999/02/19: Introduced \ttl@startargs. +% +% History of v2.1.1 +% ~~~~~~~~~~~~~~~~~ +% 1999/08/04: Moved misplaced lines in \ttl@makeboth +% +% History of v2.2 (unreleased) +% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +% 1999/11/03: We load titleps if pagestyles are required, but +% some old definitions are restored. +% 1999/11/06: Improved outermarks test in \ttl@sect@i. Formerly +% the section number could be printed if a page ended +% with an unnumebered section followed by a numbered one. +% 1999/11/06: \ttl@startargs now adds (and passes) automatically the +% section name. Involved macros modified accordingly. +% 1999/11/06: Replaced explicit part names by the parameter in +% \ttl@part@i. The same for chapter. +% 1999/11/21: \ttl@try's are not given explicitly, but built by +% \ttl@setkeys. Intruduced the \ttl@key@... and +% \ttl@extra@... commands. +% 1999/11/23: Minor problems with keys fixed. +% 1999/12/10: Added the nobottomtitles* option and \ttl@addstretch. +% 2000/01/07: First steps towards the calcwidth feature (basic code). +% 2000/01/08: (Continued.) \titleline* for rules of width \titlewidth. +% Option calcwidth implemented. +% 2000/01/12: Finished with changes in wrap.tss (no longer +% "experimental" :-) ) +% +% History of v2.3 +% ~~~~~~~~~~~~~~~ +% 2000/01/19: All keys are grouped in a single file tttkeys. Removed +% page.tsk and deleted the corresponding code in the sty. +% 2000/01/19: Classes begun. +% 2000/01/19: The level numbers are stored in \ttll@ macros, and not +% passed as arguments. +% 2000/01/21: Introduced the new mark scheme. It's mostly compatible +% with the old one, but a compatibility mode seems +% imposible (it was introduced in a preliminary test +% but eventually removed). +% 2000/01/23: loadonly package option. +% 2000/02/01: Classes finished. Many things had to be rewritten. +% 2000/02/02: Made partially compatible with hyperref (dvips). +% 2000/02/08: \ttl@savewrite moved from shapes to classes. But +% explicit page breaks expand it, too, to avoid wrong +% toc entries. +% 2000/02/18: A new box named \ttl@box stores the title in runin +% leftmargin etc shapes, to increase reliability. +% +% (2.3.1 -- 2.3.3: No changes on this file) +% +% History of v2.3.4 +% ~~~~~~~~~~~~~~~~~ +% 2000/05/12: nonindentfirst redefine \titlespacing instead of +% \@afterindent... so that they don't interfere with +% the first entry in tocs. +% 2000/05/17: The marks in \ttl@select are protected to prevent +% endless loop if the title is expanded, say, by +% \MakeUppercase. +% +% History of v2.3.5 +% ~~~~~~~~~~~~~~~~~ +% 2000/05/21: Restores missing test for secnumdepth in \ttl@mkchap, +% and instead of setting \ttl@toclevel in ttlps now is +% done in \secdef. Except inside the macros, \ttl@toclevel +% is false, so that an explicit \...mark works. +% 2000/06/04: \partmark defined with \providecommand +% 2000/06/14: A patch mechanism added, for small bug fixes. +% +% History of v2.4 +% ~~~~~~~~~~~~~~~~ +% 2001/01/18: Minor changes in code. Essentialy an incremental +% update. +% 2001/01/22: \titleformat has a new "easy" starred variant. +% +% History of v2.5 +% ~~~~~~~~~~~~~~~ +% 2002/01/02 New macros for \ttl@assign. Now * length allow +% non integer values. +% 2002/03/22 Added \ttl@calc and \ttl@calcneg to make titlesec +% calc-savvy. +% - Merged bug fixes of .new into this file. +% - Bugs in frame fixed -- gap in lines, misplaced +% label, wrong margins (sometimes), +% - \leftskip, \rightskip and \linewidth (re)set in +% margin shapes. +% - Removed obsolete flush... options. +% - indentafter and noindentafter, new names for +% indentfirst and nonindentfirst. +% - A new level (\titleclass) without its "location" +% now raises a meaningful error. +% - Bug in top-level \titleclass fixed. +% 2002/03/23 Tests for undefined and unformatted sectioning levels, +% and horizontal material in <format>. +% - Missing \if@openright inside \if@twoside in +% page class added. +% - Removed extra (but inoffensive) \expandafter +% in \ttl@class@iii. +% 2002/03/27 Added \titlewidthfirst and ...last +% - «Not definable» gives a more meaningful message in +% the context of the package. +% +% History of v.2.6 +% ~~~~~~~~~~~~~~~~ +% 2004/08/30 Corrected typo in margin \hsiz -> \hsize. +% 2004/10/17 Added a couple of missing \noexpand's in drop. +% 2004/12/01 Removed the error about the mode in block because this +% style is general purpose. +% 2005/01/16 Missing braces around #2 in the last else part of +% \ttl@headinline added +% - Replaced explicit \makeatother's by a saved value as +% the macros can be used in a class/package file. +% 2005/01/18 newlinetospace mechanism +% 2005/01/18 // does not break pages; option pageatnewline to +% restore the LaTeX behaviour. +% 2005/01/19 \...break in top shape. +% - Renumbered several scratch registers to follow the +% TeXbook (p. 346), with \ttl@box in a few cases. In +% wrap \titlewidthfirst and \titlewidthlast made global. +% - Float heads and foots have now a further argument for +% additional stuff (eg, to remove rules). Option is now +% psfloats while floatps enters in compatibility mode. +% - \ttl@savetitle in all classes. Option toctitles. +% 2005/01/21 Changed pageatnewline to make it compatible with +% titletoc, with \ttl@changecentercr. +% 2005/01/22 \...tolist in top class. +% +% Notes +% ~~~~~ +% +% The following tags are used: +% ttl@ : the generic tag used through the style +% ttlh@ : a shape definition +% ttlf@ : a macro containing the title format +% ttls@ : id. the title space +% ttlp@ : page key related macros +% ttll@ : level number +% +% The ttlf@ and ttls@ contains data in the form {..}{..}. +% Perhaps in future releases they should be converted +% to a prop-like list, similar to that proposed by the +% latex team. +% +% Admittedly, the current implementation seems too +% complicated, but that's necessary in order to provide +% certain compatibility with the sections as defined by the +% used class. Other packages opt for providing the sections +% as defined by standard classes ignoring the class; for +% instance sectsty which does a simple task in a simple and +% nice way. However, that was not my goal. +% +% Release +% ~~~~~~~ + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{titlesec}[2005/01/22 v2.6 Sectioning titles] + +% Initialization +% ~~~~~~~~~~~~~~ + +\newif\ifttl@ps +\ttl@psfalse + +% The \ttl@label switch is used when printing the label in titles. +% A numberless variant makes it to true. +% There is a \ttl@toclabel as well, which is true iff the +% title is numbered; used in toc entries (except default part +% and chapter) and marks (only in titlesec pagestyles). + +\newif\ifttl@label +\newif\ifttl@toclabel + +\newbox\ttl@box + +% A provision for the report style: + +\@ifundefined{if@mainmatter} + {\let\if@mainmatter\iftrue}{} + +\@ifundefined{if@openright} + {\let\if@openright\iftrue}{} + +% and the ams styles as well + +\@ifundefined{@chapapp} + {\let\@chapapp\chaptername}{} + +\def\ttl@trylist{\ttl@try{}} + +\def\ttl@getkeys#1#2{% + \if\expandafter @\@gobble#1@\@empty + \edef\ttl@b{\expandafter\@gobble\string#1}% + \let\ttl@a\ttl@b + \else + \makeatletter + \edef\ttl@d{% + \noexpand\input{ttlkeys.def}% + \catcode`\noexpand\@=\the\catcode`\@}% + \ttl@d + \ttl@getkeys{#1}{#2}% + \fi} + +% A more meaningful error for \@notdefinable + +\expandafter\AtEndOfPackage\expandafter{\expandafter + \gdef\expandafter\@notdefinable\expandafter{\@notdefinable}} + +\def\@notdefinable{% + \PackageError{titlesec}% + {Incompatible package}% + {Titlesec cannot continue defining its own macros + because\MessageBreak + \@backslashchar\reserved@a\space is already used by other package, + the class\MessageBreak + or the document.}} + +% +-----------------+ +% | C L A S S E S | +% +-----------------+ + +\def\ttl@useclass#1#2{% + \@ifstar + {\ttl@labelfalse#1{#2}[]}% + {\ttl@labeltrue\@dblarg{#1{#2}}}} + +\def\ttl@straightclass{\ttl@useclass\ttl@straight@i} +\def\ttl@partclass{\ttl@useclass\ttl@part@i} +\def\ttl@topclass{\ttl@useclass\ttl@top@i} +\def\ttl@pageclass{\ttl@useclass\ttl@page@i} + +\newcommand\titleclass[1]{% + \edef\ttl@a{\expandafter\@gobble\string#1}% + \@ifnextchar[{\@tempswatrue\ttl@class@i{#1}}% + {\@tempswafalse\ttl@class@ii{#1}}} + +\def\ttl@class@i#1[#2]{% + \@namedef{ttll@\ttl@a}{#2}% + \expandafter\providecommand\csname\ttl@a title\endcsname{}%%%% + \@ifundefined{ttl@toplevel}{}% + {\expandafter\let\csname ttlss@\ttl@a\expandafter\endcsname + \csname ttlss@\ttl@toplevel\endcsname}% + \edef\ttl@toplevel{\ttl@a}% + \ttl@class@ii{#1}} + +\def\ttl@class@ii#1#2{% + \@ifundefined{ttl@#2class}% + {\PackageError{titlesec}{Unknown sectioning class}% + {Valid names are top, page and stright}}% + {\expandafter\let\csname ttl@compat\ttl@a\endcsname\relax + \@ifundefined{\ttl@a mark}% + {\@namedef{\ttl@a mark}{\@gobble}}% + {}% + \edef#1{% + \expandafter\noexpand\csname ttl@#2class\endcsname{\ttl@a}}}% + \if@tempswa + \expandafter\@gobble + \else + \expandafter\@firstofone + \fi + {\@ifnextchar[% + {\ttl@class@iii}% + {\@ifundefined{ttll@\ttl@a}% + {\PackageError{titlesec}{Unknown sectioning level}% + {\string\titleclass\space with no optional arguments\MessageBreak + only changes the class of an *existing* level}}}}} + +\def\ttl@class@iii[#1]{% + \edef\ttl@b{\expandafter\@gobble\string#1}% + \expandafter\let\csname ttlss@\ttl@a\expandafter\endcsname + \csname ttlss@\ttl@b\endcsname + \expandafter\edef\csname ttlss@\ttl@b\endcsname{\ttl@a}% + \let\ttl@a\ttl@toplevel + \count@\csname ttll@\ttl@toplevel\endcsname + \ttl@class@iv}% \expandafter + +\def\ttl@class@iv{% + \@ifundefined{ttlss@\ttl@a}{}% + {\advance\count@\@ne + \edef\ttl@a{\csname ttlss@\ttl@a\endcsname}% + \expandafter\edef\csname ttll@\ttl@a\endcsname{\the\count@}% + \ttl@class@iv}} + +% Typesetting Classes: General tools +% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +% The following command handles the *n spacing +% Some tricks are necessary to multiply a +% skip by a non integer number + +\newskip\beforetitleunit +\beforetitleunit=1ex\@plus.3ex\@minus.06ex +\newskip\aftertitleunit +\aftertitleunit=1ex\@plus.1ex + +\newdimen\ttl@plus +\newdimen\ttl@minus + +\def\ttl@assign#1{% + \@ifstar + {\ttl@assign@i{#1}}% + {\ttl@assign@d{#1}}} + +\def\ttl@assign@i#1#2\relax#3{% + \ttl@plus\z@ + \ttl@minus\z@ + \afterassignment\ttl@assign@ii + \dimen@\the#3, % <- space + #1 = #2\dimen@ + plus #2\ttl@plus + minus #2\ttl@minus} + +\def\ttl@assign@ii#1 {% <- space + \if#1,\else\afterassignment\ttl@assign@ii\fi + \csname ttl@\string#1\endcsname} + +\def\ttl@assign@d#1#2\relax#3{\setlength#1{#2}} + +% To be used with \v/vspace to make them calc-savvy + +\def\ttl@calc#1#2{% + {\setlength\@tempskipa{#2}% + #1\@tempskipa}} + +\def\ttl@calcneg#1#2{% + {\setlength\@tempskipa{#2}% + #1{-\@tempskipa}}} + +% Gets from ttls@ and passes the spacing parameters: + +\def\ttl@startargs#1#2{% Get the first arguments, with the spacing + \@ifundefined{ttlp@#2}% + {\let\ttl@key@page\@empty}% + {\ttlp@fetch{#2}}% + \begingroup + \def\ttl@b{ttls@#2}% + \edef\ttl@key@numberless{\ifttl@label//\else/*\fi}% + \def\ttl@a##1{\csname ttl@key@##1\endcsname}% Used as elt in try + \ttl@trylist + \xdef\ttl@b{\ttl@c}% + \endgroup + \ifx\ttl@b\@empty + \PackageError{titlesec}{Format/spacing not found}% + {I was unable to find the format corresponding to #2.\MessageBreak + Maybe you haven't set it with \string\titleformat\space and + \string\titlespacing} + \fi + \expandafter#1\ttl@b{#2}} + +% Used in ttl@select + +\def\ttl@savefn#1[#2]#3{% + \ifcase#1% + \footnotemark[#2]% + \gdef\ttl@fn{\footnotetext[#2]{#3}}% + \else + \footnotemark + \gdef\ttl@fn{\footnotetext{#3}}% + \fi} + +\def\ttl@nest@error{% + \PackageError{titlesec}{Nested titles}{Titles must not be nested}} + +\def\ttl@hmode@error{% + \PackageError{titlesec}{Entered in horizontal mode} + {The <format> argument cannot contain horizontal material\MessageBreak + such as text, \string\noindent, \string\makebox, etc.}} + +% \ttl@select not only selects the right version to be +% used. It also take steps to ensure that a mark +% is not lost inside a box by saving it into \ttl@mk, +% which in turn is used by the sect and chap commands. + +\def\ttl@gmk#1{\gdef\ttl@mk{#1}} + +\def\ttl@select#1#2#3#4{% + \ttl@Hy@saveanchor + \global\let\ttl@mk\@empty % global because of rigidchapters + \global\let\ttl@fn\@empty + \begingroup + \everypar{\setbox\z@\lastbox\strut}% or \hskip-\parindent? + \let\ttl@straight@i\ttl@nest@error + \let\ttl@top@i \ttl@nest@error + \let\ttl@part@i \ttl@nest@error + \let\ttl@page@i \ttl@nest@error + \let\ttl@newpage\newpage + \def\newpage{\ttl@savewrite\ttl@newpage}% + \def\markboth##1##2{\protect\ttl@gmk{\protect\markboth{##1}{##2}}}% + \def\markright##1{\protect\ttl@gmk{\protect\markright{##1}}}% + \def\@mkboth##1##2{\protect\ttl@gmk{\protect\@mkboth{##1}{##2}}}% + \def\footnote{\@ifnextchar[% + {\ttl@savefn\z@}{\ttl@savefn\@ne[]}}% + \edef\ttl@key@numberless{\ifttl@label//\else/*\fi}% + \def\ttl@b{ttlf@#1}% + \def\ttl@a##1{\csname ttl@key@##1\endcsname}% Used as elt in try + \ttl@trylist + \ttl@c{#2}{#3}{#4}% ttl@c is returned by ttl@try with ttlf@... + \endgroup} + +\let\ttl@savewrite\@empty + +\def\ttl@finmarks{% + \ttl@savewrite + \ttl@mk % Contains a possible mark, returned by \ttl@select + \ttl@fn} % And a footnote + +\def\ttl@try#1{% + \edef\ttl@c{#1}% #1 is a list in the form \ttl@a{key}\ttl@a{key} + \@ifundefined{\ttl@b\ttl@c}{}{% + \edef\ttl@c{\expandafter\noexpand\csname\ttl@b\ttl@c\endcsname}% + \def\ttl@a##1{\csname ttl@extra@##1\endcsname}% + #1% + \let\ttl@try\@gobble}} % locally modified to `break' testings + +% \ttl@write writes marks and toc. tocdepth is taken +% care of when the toc is typesetted and not here. +% Used always through ttl@savewrite + +\def\ttl@write#1#2{% + \ttl@blinemarks + \csname#1mark\endcsname{#2}% + \def\ttl@a{\protect\numberline{\@nameuse{the#1}}}% + \@nameuse{ttl@toc#1}% eg, \ttl@tocpart modifies \ttl@a + \ttl@addcontentsline{#1}{#2}% Depends on toctitles + \ttl@elinemarks + \global\ttl@toclabelfalse} + +% Must be preceded by a default \ttl@savewrite, which is used +% in starred variants--\@empty in top and straight classes. +% In straight class, it is preceded by the setting of +% prev marks to provide a "fixed" top mark. Otherwise, +% the default prev mark (= curr mark) is used (restored +% after ttl@labelling in straight). This is the command +% to be hacked if you want to change the behaviour of +% starred variants. + +\def\ttl@labelling#1#2{% + \let\ttl@Hy@saveanchor\@empty + \ifttl@label % First: if star + \def\ttl@savewrite{\ttl@write{#1}{#2}}% + \@nameuse{ttl@#1label}% eg, sets if mainmatter in chapter. + \ifttl@label % Second, eg, if not main matter + \ifnum\@nameuse{ttll@#1}>\c@secnumdepth\relax + \ttl@labelfalse % Third: if too deep + \else + \ttl@Hy@refstepcounter{#1}% + \fi + \fi + \fi + \let\ifttl@toclabel\ifttl@label + \ifx\ttl@savewrite\@empty\else % If marks + \ifttl@ps + \ttl@blinemarks + \csname#1mark\endcsname{#2}% + \ttl@elinemarks + \fi + \ifttl@label\else\ttl@Hy@steplink{#1}\fi + \fi} + +% Executed by ttl@labelling if the name of section is chapter: + +\def\ttl@chapterlabel{% + \if@mainmatter\else\ttl@labelfalse\fi + \typeout{\chaptertitlename\space\thechapter.}} + +% Straight class +% ~~~~~~~~~~~~~ +% Default for nobottomtitles. Changed by nobottomtitles* + +\def\ttl@addstretch{\advance\@tempskipa-\pagestretch} + +% 1:name 2:level 3:indent 4:before 5:after 6:afind [7]:cap 8:title +% The second argument of ttl@sect is the level, which +% is empty if the star version is used. In this case +% neither the toc nor the marks are written. + +\def\ttl@straight@i#1[#2]#3{% + \def\@currentlabelname{#2}% for nameref + \gdef\ttl@savemark{\csname#1mark\endcsname{#3}}% + \let\ttl@savewrite\@empty + \def\ttl@savetitle{#3}% + \gdef\thetitle{\csname the#1\endcsname}% + \if@noskipsec \leavevmode \fi + \par + \ifttl@ps + \protected@xdef\ttl@prevmarks{\ttl@marks}% + \fi + \ttl@labelling{#1}{#2}% + \ifttl@ps + \gdef\ttl@prevmarks{\ttl@marks}% + \fi + \ttl@startargs\ttl@straight@ii{#1}{#3}} + +% 1:left 2:right 3:before 4:after 5:afterindent 6:name 7:title + +\def\ttl@straight@ii#1#2#3#4#5#6#7{% + \ttl@assign\@tempskipa#3\relax\beforetitleunit + \if@nobreak + \ttl@titlespace{\@tempskipa}% + \else + \@ifundefined{#6break}% + {\addpenalty{\@secpenalty}}% + {\csname#6break\endcsname}% + \addvspace{\@tempskipa}% + \ifdim\bottomtitlespace<\z@ + \else + \begingroup + \@tempskipb\pagegoal + \@tempskipa\pagegoal + \ttl@addstretch % \relax if nobottomtitle* + \advance\@tempskipa-\bottomtitlespace\relax % not a register + \pagegoal\@tempskipa + \def\@textbottom{\vskip\z@\@plus.0001fil}% + \penalty9999 + \pagegoal\@tempskipb + \endgroup + \fi + \fi + \@afterindenttrue + \ifcase#5 \@afterindentfalse\fi + \ttl@assign\@tempskipb#4\relax\aftertitleunit + \ttl@select{#6}{#1}{#2}{#7}% + \ttl@finmarks + \@ifundefined{ttlp@#6}{}{\ttlp@write{#6}}% + \if@noskipsec + \global\@nobreakfalse + \everypar{% + \if@noskipsec + \global\@noskipsecfalse + \clubpenalty\@M + \hskip-\parindent + \begingroup + \@svsechd\unskip{\hspace{\@tempskipb}}% + \endgroup + \else + \clubpenalty\@clubpenalty\everypar{}% + \fi}% + \else + \par\nobreak + \vspace{\@tempskipb}% + \@afterheading + \fi + \ignorespaces} + +% Part class +% ~~~~~~~~~~ + +\providecommand\partmark[1]{\markboth{}{}} + +\def\ttl@part@i#1[#2]#3{% + \gdef\ttl@savemark{\csname#1mark\endcsname{#3}}% + \def\ttl@savewrite{\ttl@write{#1}{#3}}% A default value. Not #2! + \def\ttl@savetitle{#3}% + \ttl@labelling{#1}{#2}% + \ttl@startargs\ttl@part@ii{#1}{#3}} + +\def\ttl@part@ii#1#2#3#4#5#6#7{% + \ttl@assign\@tempskipa#3\relax\beforetitleunit + \vspace*{\@tempskipa}% + \global\@afterindenttrue + \ifcase#5 \global\@afterindentfalse \fi + \ttl@assign\@tempskipb#4\relax\aftertitleunit + \ttl@select{#6}{#1}{#2}{#7}% + \ttl@finmarks + \@ifundefined{ttlp@#6}{}{\ttlp@write{#6}}% + \par\nobreak + \vspace{\@tempskipb}% + \@afterheading} + +% Page class +% ~~~~~~~~~~ + +\def\ttl@page@i#1[#2]#3{% + \gdef\ttl@savemark{\csname#1mark\endcsname{#3}}% + \def\ttl@savewrite{\ttl@write{#1}{#3}}% A default value. Not #2! + \def\ttl@savetitle{#3}% + \ttl@labelling{#1}{#2}% + \ttl@startargs\ttl@page@ii{#1}{#3}} + +\def\ttl@page@ii#1#2#3#4#5#6#7{% + \ttl@assign\@tempskipa#3\relax\beforetitleunit + \if@openright + \cleardoublepage + \else + \clearpage + \fi + \thispagestyle{plain}% + \if@twocolumn + \onecolumn + \@tempswatrue + \else + \@tempswafalse + \fi + \vspace*{\@tempskipa}% + \@afterindenttrue + \ifcase#5 \@afterindentfalse\fi + \ttl@assign\@tempskipb#4\relax\aftertitleunit + \ttl@select{#6}{#1}{#2}{#7}% + \ttl@finmarks + \@ifundefined{ttlp@#6}{}{\ttlp@write{#6}}% + \vspace{\@tempskipb}% + \newpage + \if@twoside + \if@openright + \null + \thispagestyle{empty}% + \newpage + \fi + \fi + \if@tempswa + \twocolumn + \fi + \ignorespaces} + +% Top class and some makechapterhead stuff +% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +% +% \ttl@mkchap is the new make(s)chapterhead. + +\def\ttl@mkchap#1#2#3#4#5#6#7{% + \gdef\ttl@savemark{\csname#6mark\endcsname{#7}}% + \let\ttl@savewrite\@empty + \let\ttl@Hy@saveanchor\@empty + \let\ifttl@toclabel\ifttl@label + \ttl@mkchap@i{#1}{#2}{#3}{#4}{#5}{#6}{#7}} + +% But \ttl@mkchap@i is used by both makechapterhead and +% the top class. + +\def\ttl@mkchap@i#1#2#3#4#5#6#7{% + \ttl@assign\@tempskipa#3\relax\beforetitleunit + \vspace*{\@tempskipa}% + \global\@afterindenttrue + \ifcase#5 \global\@afterindentfalse\fi + \ttl@assign\@tempskipb#4\relax\aftertitleunit + \ttl@topmode{\@tempskipb}{% + \ttl@select{#6}{#1}{#2}{#7}}% + \ttl@finmarks % Outside the box! + \@ifundefined{ttlp@#6}{}{\ttlp@write{#6}}} + +\def\ttl@top@i#1[#2]#3{% + \gdef\ttl@savemark{\csname#1mark\endcsname{#3}}% + \let\ttl@savewrite\@empty + \def\ttl@savetitle{#3}% + \ttl@labelling{#1}{#2}% + \ttl@startargs\ttl@top@ii{#1}{#3}} + +\def\ttl@top@ii#1#2#3#4#5#6#7{% + \@ifundefined{#6break}% + {\if@openright + \cleardoublepage + \else + \clearpage + \fi}% + {\csname#6break\endcsname}% + \thispagestyle{plain}% + \global\@topnum\z@ + \@ifundefined{#6tolists}% + {\addtocontents{lof}{\protect\ttl@tocsep}% + \addtocontents{lot}{\protect\ttl@tocsep}} + {\@nameuse{#6tolists}}% + \if@twocolumn + \@topnewpage[\ttl@mkchap@i{#1}{#2}{#3}{#4}{#5}{#6}{#7}]% + \else + \ttl@mkchap@i{#1}{#2}{#3}{#4}{#5}{#6}{#7}% + \@afterheading + \fi + \ignorespaces} + + +% \def\ttl@noskipsectrue{% +% \if@noskipsec +% \PackageError{titlesec}{Invalid shape for top class}% +% {The selected shape only makes sense when merged into\MessageBreak +% a paragraph. That is impossible in the top class}% +% \else + +\newcommand\chaptertitlename{\@chapapp} +\def\ttl@tocsep{\addvspace{10\p@}} + +% +-----------------+ +% | S H A P E S | +% +-----------------+ +% +% % Reformatting Titles: Interface +% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +% The surrounding space is stored in a macro +% named \ttls@<section> whose content is +% {left}{right}{before}{after}{afterindent}. +% But if there is the page key, the name is +% \ttls@<section>/<page> + +\newcommand\titlespacing{% + \@ifstar{\ttl@spacing@i{\z@}}{\ttl@spacing@i{\@ne}}} + +\def\ttl@spacing@i#1#2#3#4#5{% + \ttl@getkeys{#2}{titlesec}% + \@ifnextchar[{% + \ttl@spacing@ii{#1}{#3}{#4}{#5}% + }{% + \ttl@spacing@ii{#1}{#3}{#4}{#5}[\z@]}} + +\def\ttl@spacing@ii#1#2#3#4[#5]{% + \expandafter\def\csname ttls@\ttl@a\endcsname + {{#2}{#5}{#3}{#4}{#1}}} + +% The section name is built in \ttl@a. +% The format is stored in a macro named \ttlf@<section>, +% or \ttlf@<section>/<page> if there is the page spec, +% or \ttlf@.../* if numberless is true +% whose content is +% \ttl@<shape>{format}{label}{sep}{before}{after} + +\newcommand\titleformat{% + \@ifstar{\ttl@format@s}% + {\ttl@format@i}} + +\def\ttl@format@s#1#2{% + \edef\ttl@a{\expandafter\@gobble\string #1}% + \@ifundefined{ttlf@\ttl@a}% + {\PackageError{titlesec}{Not allowed in `easy' settings} + {The sectiong command you are trying to redefine\MessageBreak + is not handled by the starred variant (eg, \string\part)}}{} + \expandafter\expandafter\expandafter + \ttl@format@si\csname ttlf@\ttl@a \endcsname + {#2}} + +\def\ttl@format@si#1#2#3#4#5#6#7{% + \@namedef{ttlf@\ttl@a}{#1{#7}{#3}{#4}{#5}{#6}}} + +\def\ttl@format@i#1{% + \@ifnextchar[{\ttl@format@ii{#1}}{\ttl@format@ii{#1}[hang]}} + +\def\ttl@format@ii#1[#2]#3#4#5#6{% + \ttl@getkeys{#1}{titlesec}% + \@ifnextchar[{% + \ttl@format@iii{#2}{#3}{#4}{#5}{#6}% + }{% + \ttl@format@iii{#2}{#3}{#4}{#5}{#6}[]}} + +% First, we get the shape -- if not defined it loads +% the corresponding file. + + +\def\ttl@format@iii#1#2#3#4#5[#6]{% + \@ifundefined{ttlh@#1}{% + \begingroup + \makeatletter + \InputIfFileExists{#1.tss}{}{% + \PackageError{titlesec}{Unknown shape}% + {Shapes are defined in files with extension tss\MessageBreak + Either you have misspelled the shape\MessageBreak + or there is no a #1.tss file}}% + \endgroup}{}% + \expandafter\def\csname ttlf@\ttl@a\expandafter\endcsname + \expandafter{\csname ttlh@#1\endcsname{#2}{#3}{#4}{#5}{#6}}% + \csname ttl@compat\ttl@a\endcsname} + +% Styles +% ~~~~~~ + +% 1:global 2:label 3:sep 4:style 5:after 6:left 7:right 8:title +% \ttl@<shape> and \ttlh@<shape> take the following eight +% arguments: +% {format}{label}{sep}{before}{after}{left}{right}{title} +% where before and after refer to the format. + +\def\ttlh@display#1#2#3#4#5#6#7#8{% + \gdef\ttl@makeline##1{\ttl@calc\hspace{#6}##1\ttl@calc\hspace{#7}}% + \setlength\leftskip{#6}% + \setlength\rightskip{#7}% + \interlinepenalty\@M + \ttl@changecentercr + \ttl@beginlongest + #1\ifhmode\ttl@hmode@error\fi + \ttl@glcmds + \parindent\z@ + \ifttl@label + {#2\strut\@@par}\nobreak\ttl@calc\vspace{#3}% + \fi + #4{#8}% + \kern\z@\strut\@@par + \nobreak\ttl@midlongest#5\@@par + \ttl@endlongest} + +\def\ttlh@hang#1#2#3#4#5#6#7#8{% + \gdef\ttl@makeline##1{\ttl@calc\hspace{#6}##1\ttl@calc\hspace{#7}}% + \setlength\leftskip{#6}% + \setlength\rightskip{#7}% + \interlinepenalty\@M + \ttl@changecentercr + \ttl@beginlongest + #1{\ifhmode\ttl@hmode@error\fi + \ttl@glcmds + \parindent\z@ + \leavevmode + \begingroup + \ifttl@label + \sbox\z@{#2\strut\ttl@calc\hspace{#3}}% + \advance\leftskip\wd\z@ + \llap{\box\z@}% + \fi + #4{#8}% + \kern\z@\strut\@@par + \endgroup + \nobreak\ttl@midlongest#5\@@par}% + \ttl@endlongest} + +\def\ttlh@runin#1#2#3#4#5#6#7#8{% + \global\@noskipsectrue + \gdef\ttl@makeline##1{##1}% + \ttl@changecentercr + #1{\ifhmode\ttl@hmode@error\fi + \global\sbox\ttl@box{% + \ttl@calc\hspace{#6}% + \ifttl@label{\strut#2}\ttl@calc\hspace{#3}\fi + #4{#8}#5\unskip}}% + \gdef\@svsechd{\unhbox\ttl@box}} + +% +-----------------+ +% | T O O L S | +% +-----------------+ +% +% calcwidth +% ~~~~~~~~~ +% Implemented after code from soul (but much modified...) + +\newdimen\titlewidth +\newdimen\titlewidthlast +\newdimen\titlewidthfirst + +\let\ttl@glcmds\relax +\let\ttl@beginlongest\@empty +\let\ttl@midlongest\@empty +\let\ttl@endlongest\@empty + +\def\ttl@xbeginlongest#1\ttl@endlongest{% + \titlewidth\z@ + \titlewidthlast\z@ + \setbox\ttl@box\vbox{% + \def\ttl@glcmds{% + \def\\{\@ifstar{\@ifnextchar[{\ttl@bs}{\newline}}% + {\@ifnextchar[{\ttl@bs}{\newline}}}% + \def\ttl@bs[####1]{\newline}% + \let\@centercr\\% + \def\ttl@midlongest####1\@@par{}% Very dirty... + \advance\rightskip 1\leftskip plus 1fil + \leftskip=\z@}% + #1}% + \ttl@boxprocess + #1} + +\def\ttl@boxprocess{% + \setbox\ttl@box=\vbox{% + \unvcopy\ttl@box + \unskip\unpenalty + \global\setbox\@ne=\lastbox}% + \ifvoid\@ne + \else + \setbox\tw@=\hbox{\hskip-\leftskip\unhbox\@ne\hskip-\rightskip}% + \titlewidthfirst\wd\tw@ + \ifdim\titlewidth<\titlewidthfirst + \titlewidth\titlewidthfirst + \fi + \ifdim\titlewidthlast=\z@ + \titlewidthlast\titlewidthfirst + \fi + \expandafter\ttl@boxprocess + \fi} + +% Rules +% ~~~~~ + +\providecommand\titleline{% + \@ifstar{\ttl@line@i{\hb@xt@\titlewidth}}% + {\ttl@line@i{}}} + +\def\ttl@line@i#1{% + \@ifnextchar[{\ttl@line{#1}}{\ttl@line{#1}[s]}} + +\def\ttl@line#1[#2]#3{% + \vskip\topskip + \hrule \@height \z@ + \nobreak + \vskip-\topskip + \begingroup + \parindent\z@ + \everypar{}% + \leftskip\z@ + \rightskip\z@ % #1 is either \hb@xt@\titlewidth or empty: + \@makebox[\hsize][#2]{\ttl@makeline{#1{#3}}}% + \par + \endgroup + \hrule height \z@ + \nobreak} + +\providecommand\titlerule{\@ifstar{\ttl@row}{\ttl@rule}} + +\let\ttl@leaders\xleaders % For titletoc compatibility + +\def\ttl@row{\@ifnextchar[{\ttl@row@i}{\ttl@row@i[\wd\z@]}} +\def\ttl@row@i[#1]#2{% + \ifvmode\expandafter\titleline\fi + {\sbox\z@{#2}% + \ttl@calcneg\hspace{#1}% + \hskip\wd\z@ + \ttl@leaders\hb@xt@#1{\hss\box\z@}% + \hfill\kern\z@}} + +\def\ttl@rule{\@ifnextchar[{\ttl@rule@i}{\ttl@rule@i[.4\p@]}} +\def\ttl@rule@i[#1]{% + \ifvmode\expandafter\titleline\fi + {\leaders\hrule height #1\hfill\kern\z@}} + +% Par shapes and space +% ~~~~~~~~~~~~~~~~~~~~ + +\providecommand\filright{% + \gdef\ttl@filleft##1{\hskip##1}% + \gdef\ttl@filright##1{\hfill}% + \let\\\@centercr + \advance\rightskip\z@ \@plus 1fil\relax} +\providecommand\filleft{% + \gdef\ttl@filleft##1{\hfill}% + \gdef\ttl@filright##1{\hskip##1}% + \let\\\@centercr + \advance\leftskip\z@ \@plus 1fil + \parfillskip\z@} +\providecommand\filcenter{\filleft\filright + \gdef\ttl@filleft##1{\hfill}} +\providecommand\fillast{% + \gdef\ttl@filleft##1{\hfill}% + \gdef\ttl@filright##1{\hfill}% + \let\\\@centercr + \filleft\advance\rightskip\z@ \@plus -1fil + \parfillskip\z@ \@plus 2fil\relax} +\newcommand\filinner{% + \if@twoside + \ifodd\count\z@\filleft\else\filright\fi + \else + \filleft + \fi} +\newcommand\filouter{% + \if@twoside + \ifodd\count\z@\filright\else\filleft\fi + \else + \filright + \fi} + +\newcommand\wordsep{\fontdimen\tw@\font \@plus + \fontdimen\thr@@\font \@minus \fontdimen4\font} + +% +-----------------+ +% | O P T I O N S | +% +-----------------+ + + +\DeclareOption{pagestyles}{\let\sectiontitle\@empty} +\DeclareOption{floatps}{% + \ifx\sectiontitle\@empty + \let\ttl@replace\space + \else + \PackageWarning{titlesec}{Ignoring `floatps' without + `pagestyles'. This option is now deprecated.}% + \fi} +\DeclareOption{psfloats}{% + \ifx\sectiontitle\@empty + \let\ttl@replace\@empty + \else + \PackageWarning{titlesec}{Ignoring `psfloats' without + `pagestyles'}% + \fi} + +\DeclareOption{loadonly}{\let\ttl@extract\@empty} + +\DeclareOption{outermarks}{% + \def\ttl@titlemarks{\outertitlemarks}} +\DeclareOption{topmarks}{ + \def\ttl@titlemarks{\toptitlemarks}} +\DeclareOption{botmarks}{% + \def\ttl@titlemarks{\bottitlemarks}} +\DeclareOption{innermarks}{% + \def\ttl@titlemarks{\innertitlemarks}} + +\DeclareOption{footmarks}{} % Backward compat + +\DeclareOption{clearempty}{% + \def\cleardoublepage{% + \clearpage{\ps@empty\if@twoside\ifodd\c@page\else + \hbox{}\newpage\if@twocolumn\hbox{}\newpage\fi\fi\fi}}} + +\DeclareOption{rigidchapters}{% + \def\ttl@topmode#1#2{\vbox to #1{#2\vfil}}% + \def\ttl@chapafter{.26\textheight}} +\DeclareOption{rubberchapters}{% + \def\ttl@topmode#1#2{{#2}\ttl@calc\vspace{#1}}% + \def\ttl@chapafter{40\p@}} + +\DeclareOption{bottomtitles}{% + \def\bottomtitlespace{-1\p@}} +\DeclareOption{nobottomtitles}{% + \def\bottomtitlespace{.2\textheight}} +\DeclareOption{nobottomtitles*}{% + \let\ttl@addstretch\relax + \def\bottomtitlespace{.2\textheight}} + +\DeclareOption{calcwidth}{% + \let\ttl@beginlongest\ttl@xbeginlongest} + +\DeclareOption{aftersep}{% + \let\ttl@titlespace\@gobble} +\DeclareOption{largestsep}{% + \let\ttl@titlespace\addvspace} + +\DeclareOption{oldparttoc}{% + \def\ttl@tocpart{\def\ttl@a{\thepart\hspace{1em}}}} +\DeclareOption{newparttoc}{% + \let\ttl@tocpart\relax} + +\DeclareOption{rm}{% + \protected@xdef\ttl@fonts{\ttl@fonts\protect\rmfamily}} +\DeclareOption{sf}{% + \protected@xdef\ttl@fonts{\ttl@fonts\protect\sffamily}} +\DeclareOption{tt}{% + \protected@xdef\ttl@fonts{\ttl@fonts\protect\ttfamily}} +\DeclareOption{md}{% + \protected@xdef\ttl@fonts{\ttl@fonts\protect\mdseries}} +\DeclareOption{bf}{% + \protected@xdef\ttl@fonts{\ttl@fonts\protect\bfseries}} +\DeclareOption{up}{% + \protected@xdef\ttl@fonts{\ttl@fonts\protect\upshape}} +\DeclareOption{it}{% + \protected@xdef\ttl@fonts{\ttl@fonts\protect\itshape}} +\DeclareOption{sl}{% + \protected@xdef\ttl@fonts{\ttl@fonts\protect\slshape}} +\DeclareOption{sc}{% + \protected@xdef\ttl@fonts{\ttl@fonts\protect\scshape}} + +\DeclareOption{big}{% + \gdef\ttl@sizes#1{\ifcase#1\relax\Huge\or\Large\or\large + \or\normalsize\or\or\or\huge\fi}} +\DeclareOption{medium}{% + \gdef\ttl@sizes#1{\ifcase#1\relax\huge\or\Large\or\large + \or\normalsize\or\or\or\LARGE\fi}} +\DeclareOption{small}{% + \gdef\ttl@sizes#1{\ifcase#1\relax\LARGE\or\large + \or\normalsize\or\normalsize\or\or\or\Large\fi}} +\DeclareOption{tiny}{% + \gdef\ttl@sizes#1{\ifcase#1\relax\large\or\normalsize\or + \normalsize\or\normalsize\or\or\or\normalsize\fi}} + +\DeclareOption{raggedleft}{% + \gdef\ttl@fil{\filleft}} +\DeclareOption{center}{% + \gdef\ttl@fil{\filcenter}} +\DeclareOption{raggedright}{% + \gdef\ttl@fil{\filright}} + +\DeclareOption{compact}{% + \gdef\ttl@space{1}% + \gdef\ttl@chapafter{30\p@}} + +% Deprecated. To be remmoved in a major upgrade (3.0) +\DeclareOption{indentfirst}{% + \gdef\@afterindentfalse{\let\if@afterindent\iftrue}% + \@afterindenttrue + \def\titlespacing{% + \@ifstar{\ttl@spacing@i{\@ne}}{\ttl@spacing@i{\@ne}}}} +\DeclareOption{nonindentfirst}{% + \def\titlespacing{% + \@ifstar{\ttl@spacing@i{\z@}}{\ttl@spacing@i{\z@}}}} + +% New names +\DeclareOption{indentafter}{% + \gdef\@afterindentfalse{\let\if@afterindent\iftrue}% + \@afterindenttrue + \def\titlespacing{% + \@ifstar{\ttl@spacing@i{\@ne}}{\ttl@spacing@i{\@ne}}}} +\DeclareOption{noindentafter}{% + \def\titlespacing{% + \@ifstar{\ttl@spacing@i{\z@}}{\ttl@spacing@i{\z@}}}} + +% newlinetospace +\let\ttl@blinemarks\relax +\let\ttl@elinemarks\relax + +\DeclareRobustCommand\ttl@linetosp{% + \@ifstar{\ttl@linetosp@i}{\ttl@linetosp@i}}% + +\def\ttl@linetosp@i{% + \ifdim\lastskip>\z@\else\space\fi + \ignorespaces} + +\DeclareOption{newlinetospace}{% + \def\ttl@blinemarks{% + \let\ttl@e\\% + \def\\{\ttl@linetosp}}% + \def\ttl@elinemarks{\let\\\ttl@e}}% + +% toctitles +\def\ttl@addcontentsline#1#2{% + \addcontentsline{toc}{#1}{\ifttl@toclabel\ttl@a\fi#2}} + +\DeclareOption{toctitles}{% + \def\ttl@addcontentsline#1#2{% + \addcontentsline{toc}{#1}{\ifttl@toclabel\ttl@a\fi\ttl@savetitle}}} + +% pageatnewline + +\def\ttl@changecentercr{% + \let\ttl@centercr\@centercr + \def\@centercr{\@ifstar{\ttl@centercr*}{\ttl@centercr*}}} + +\DeclareOption{pageatnewline}{\let\ttl@changecentercr\relax} + +\def\ttl@fonts{} + +\ExecuteOptions{rubberchapters,bottomtitles,aftersep,oldparttoc,% + innermarks} + +\ProcessOptions + +% +-----------------+ +% | H Y P E R R E F | +% +-----------------+ +% +% These two commands are provided by hyperref. But if they +% are not defined at \begin{document} hyperref has not been +% loaded or it is an old version. + +\AtBeginDocument{% + \ifx\ttl@Hy@steplink\@undefined + \let\ttl@Hy@steplink\@gobble + \let\ttl@Hy@refstepcounter\refstepcounter + \fi} + +% +-----------------+ +% | PAGE STYLES | +% +-----------------+ + +% Old pagestyles +% ~~~~~~~~~~~~~~ + +\providecommand\newpagestyle{% + \let\ttl@compatps\@empty % marks the ``old interface'' + \makeatletter + \edef\ttl@d{% + \noexpand\input{ttlps.def}% + \catcode`\noexpand\@=\the\catcode`\@}% + \ttl@d + \newpagestyle} + +\providecommand\renewpagestyle{% + \let\ttl@compatps\@empty % marks the ``old interface'' + \makeatletter + \edef\ttl@d{% + \noexpand\input{ttlps.def}% + \catcode`\noexpand\@=\the\catcode`\@}% + \ttl@d + \renewpagestyle} + +\providecommand\widenhead{% + \let\ttl@compatps\@empty % marks the ``old interface'' + \makeatletter + \edef\ttl@d{% + \noexpand\input{ttlps.def}% + \catcode`\noexpand\@=\the\catcode`\@}% + \ttl@d + \widenhead} + +% New pagestyles +% ~~~~~~~~~~~~~~ + +\@ifundefined{sectiontitle}{}{\input{ttlps.def}} + +% +-----------------+ +% | C O M P A T | +% +-----------------+ +% Easy setup, i.e., that of package options, is +% taken care of, if necessary. + +\renewcommand\secdef[2]{% + \@ifstar + {\ttl@labelfalse + #2} + {\ttl@labeltrue + \ifx#1\@chapter + \if@mainmatter\else\ttl@labelfalse\fi + \ifnum\ttll@chapter>\c@secnumdepth\ttl@labelfalse\fi + \else\ifx#1\@part + \ifnum\ttll@part>\c@secnumdepth\ttl@labelfalse\fi + \fi\fi + \let\ifttl@toclabel\ifttl@label + \@dblarg{#1}}} + +\@ifundefined{ttl@extract}{}{% Load patches here if we exit + \InputIfFileExists{titlesec.new}{}{}% + \endinput} + +\newcommand\titlelabel[1]{% + \def\@seccntformat##1{#1}} + +\expandafter\ifx\csname chapter\endcsname\relax + + \def\ttl@compatpart{\titleclass{\part}{part}\relax} + +\else + + \def\ttl@compatchapter{% + \def\@makechapterhead{% + \ttl@labeltrue + \if@mainmatter\else\ttl@labelfalse\fi + \ifnum\ttll@chapter>\c@secnumdepth\ttl@labelfalse\fi + \ttl@startargs\ttl@mkchap{chapter}}% + \def\@makeschapterhead{% + \ttl@labelfalse + \if@mainmatter\else\ttl@labelfalse\fi + \ifnum\ttll@chapter>\c@secnumdepth\ttl@labelfalse\fi + \ttl@startargs\ttl@mkchap{chapter}}} + + \def\ttl@compatpart{\titleclass{\part}{page}\relax} + +\fi + +\def\ttl@@extract#1\@startsection#2#3#4#5#6#7#8{% + \@tempskipa=#5 + \@tempskipb=#6 + \ifdim\@tempskipa<\z@ + \toks@{\titlespacing*#8{#4}}% + \@tempskipa-\@tempskipa + \else + \toks@{\titlespacing#8{#4}}% + \fi + \@ifundefined{ttl@space}{}{% + \ttl@assign\@tempskipa*\ttl@space\relax\beforetitleunit}% + \ifdim\@tempskipb<\z@ + \if@tempswa + \titleformat#8[runin]% + {\ttl@fonts\ttl@sizes{#3}}{\@seccntformat{#2}}{\z@}{}% + \else + \titleformat#8[runin]{#7}{\@seccntformat{#2}}{\z@}{}% + \fi + \@tempskipb-\@tempskipb + \else + \if@tempswa + \titleformat#8% + {\ttl@fil\ttl@fonts\ttl@sizes{#3}}{\@seccntformat{#2}}{\z@}{}% + \else + \titleformat#8{#7}{\@seccntformat{#2}}{\z@}{}% + \fi + \@ifundefined{ttl@space}{}{% + \ttl@assign\@tempskipb*\ttl@space\relax\aftertitleunit}% + \fi + \edef\ttl@a{\the\toks@{\the\@tempskipa}{\the\@tempskipb}} + \ttl@a} + +\def\ttl@extract#1{% + \expandafter\in@\expandafter\@startsection\expandafter{#1}% + \ifin@ + \expandafter\ttl@@extract#1#1% + \else + \PackageWarningNoLine{titlesec}% + {Non standard sectioning command detected\MessageBreak + Using default spacing and no format} + \titlespacing*#1{\z@}{*3}{*2}% + \fi} + +\@tempswafalse + +\ifx\ttl@fonts\@empty + \def\ttl@fonts{\bfseries} +\else + \@tempswatrue +\fi + +\expandafter\ifx\csname ttl@sizes\endcsname\relax + \gdef\ttl@sizes#1{\ifcase#1\relax\Huge\or\Large\or\large + \or\normalsize\or\or\or\huge\fi} +\else + \@tempswatrue +\fi + +\expandafter\ifx\csname ttl@fil\endcsname\relax + \let\ttl@fil\@empty +\else + \@tempswatrue +\fi + +\if@tempswa + + \expandafter\ifx\csname chapter\endcsname\relax\else + \titleformat\chapter[display]% + {\@ifundefined{ttl@fil}{\raggedright}{\ttl@fil}\ttl@fonts\ttl@sizes6} + {\@chapapp\space\thechapter}{.8\baselineskip}{\ttl@sizes\z@} + \fi + +\fi + +\ttl@extract\section +\ttl@extract\subsection +\ttl@extract\subsubsection +\ttl@extract\paragraph +\ttl@extract\subparagraph + +\let\ttl@extract\@undefined +\let\ttl@@extract\@undefined + +\def\ttl@toplevel{part} + +\expandafter\ifx\csname chapter\endcsname\relax + + \@namedef{ttll@part}{0} + \titleclass{\section}{straight}[\part] + + \titlespacing*{\part} + {\z@} + {4ex} + {3ex} + +\else + + \let\ttl@save@mkchap\@makechapterhead + \let\ttl@save@mkschap\@makeschapterhead + + \def\@makechapterhead#1{% + \gdef\ttl@savemark{\chaptermark{#1}}\ttl@save@mkchap{#1}} + + \def\@makeschapterhead#1{% + \gdef\ttl@savemark{\chaptermark{#1}}\ttl@save@mkschap{#1}} + + \@namedef{ttll@part}{-1} + \@namedef{ttlss@part}{chapter} + \@namedef{ttll@chapter}{0} + \titleclass{\section}{straight}[\chapter] + +% The following is unoperant, unless when \chapter / \part +% format is redefined + + \titlespacing*{\part} + {\z@} + {\z@\@plus1fil} + {\z@\@plus1fil} + + \titlespacing*\chapter + {\z@}% + {50\p@}% + {\ttl@chapafter}% + +\fi + +\titleclass{\subsection} {straight}[\section] +\titleclass{\subsubsection}{straight}[\subsection] +\titleclass{\paragraph} {straight}[\subsubsection] +\titleclass{\subparagraph} {straight}[\paragraph] + +% Load patches if necessary + +\InputIfFileExists{titlesec.new}{}{} + +\endinput diff --git a/Master/texmf-dist/tex/latex/titlesec/titletoc.sty b/Master/texmf-dist/tex/latex/titlesec/titletoc.sty new file mode 100644 index 00000000000..8f01805fc50 --- /dev/null +++ b/Master/texmf-dist/tex/latex/titlesec/titletoc.sty @@ -0,0 +1,629 @@ +% +---------------------------------------------+ +% | Documentation is in the titlesec.tex file. | +% +---------------------------------------------+ +% +% Copyright (c) 1998-2005 by Javier Bezos. +% All Rights Reserved. +% +% This file is part of the titlesec distribution release 2.6 +% ----------------------------------------------------------- +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or any later version. + +% History of v1.1 +% ~~~~~~~~~~~~~~~ +% 99/04/22: A bug fix. Some missing global assignments in \ttl@tocentry +% were missing, and page numbers messed up with +% \titlecontents* +% +% History of v1.2 +% ~~~~~~~~~~~~~~~~ +% 99/10/20: Added \contentsafter. \ttl@tocentry modified to accept +% the new command for grouping in a paragraph entries of +% different levels. +% 99/10/27: Instead of defining the level numbers explicitly, that's +% done with \ttl@setlevels and \ttl@levels. +% 99/10/27: Added the basic code for multiple indexes. +% 99/10/29: Added the toctop test to the \ttl@savel@... commands. +% 99/12/28: Simplified \ttl@savel@... with \ttl@lselect. +% 00/01/12: \contentsafter rejected. An aditional optional parameter +% is used instead. (Too) many thing had to be rewritten. +% 00/01/27: Removed \ttl@setlevels. Any change of levels are +% best done with titlesec. +% 00/02/14: Moved misplaced \vskip in ttl@tocentry. +% 00/02/16: A few changes in the "block" separators. +% 00/02/16: Fixed bug in \ttl@margin. For the right margin the +% correction was used instead of the margin. +% +% History of v1.2.1 +% ~~~~~~~~~~~~~~~~~ +% 00/04/25: Dirty trick to make sure that \ttl@finish is the very +% last thing in lists of floats (lof, lot, etc.). +% 00/05/14: Missing \global before \ttl@labelfalse added. +% +% History of 1.2.2 +% ~~~~~~~~~~~~~~~~ +% 00/06/05: The optional argument no longer mandatory, but +% still reporting an error if the length is missing. +% Minor internal changes, and a patch mechanism added. +% +% History of 1.3 +% ~~~~~~~~~~~~~~ +% 01/01/12: Minor changes and some missing \globals added for +% partial tocs to work inside a group. +% 01/01/21: Added \dottedcontents. +% +% History of 1.4 +% ~~~~~~~~~~~~~~ +% 02/03/27: titletoc.new merged into this file +% 02/03/27: \ttl@finish written by the last \newpage. +% 02/03/27: \ttl@lsection broke paragraphs always. Now +% only if the sublevel is typeset. +% 02/03/27: \ttl@finish -> \contentsfinish +% +% History of 1.5 +% ~~~~~~~~~~~~~~ +% 03/06/14: \contentspush didn't work because of the change of +% (.new) \leftskip was done inside a group before the +% corresponding \par +% 03/06/14: Added an useful error if a partial TOC is not +% (.new) defined. +% 05/01/17: New options rubber/rigidseps, to remove if desired +% the small vertical "plus" between entries. +% 05/01/20: Begin work on partial lists. +% 05/01/21: \ttl@outblock and \ttl@outnoblock just to avoid a +% huge definition and to ease patching. +% 05/01/22: Work on partial lists finished (but to be resumed). + +\ProvidesPackage{titletoc}[2005/01/22 v1.5 TOC entries] + +% The following tags are used: +% ttl@ : the generic one, shared with titlesec +% ttlb@ : starting punctuation for block format +% ttlm@ : and middle +% ttle@ : and ending +% ttll@ : section level +% ttlx@ : file extension +% +% Fistly, comes the +% common stuff with titlesec +% ~~~~~~~~~~~~~~~~~~~~~~~~~~ + +\newif\ifttl@label +\newif\ifttl@fromblock + +\providecommand\titleline{% + \@ifstar{\ttl@line@i{\hb@xt@\titlewidth}}% + {\ttl@line@i{}}} + +\def\ttl@line@i#1{% + \@ifnextchar[{\ttl@line{#1}}{\ttl@line{#1}[s]}} + +\def\ttl@line#1[#2]#3{% + \vskip\topskip + \hrule \@height \z@ + \nobreak + \vskip-\topskip + \begingroup + \parindent\z@ + \everypar{}% + \leftskip\z@ + \rightskip\z@ % #1 is either \hb@xt@\titlewidth or empty: + \@makebox[\hsize][#2]{\ttl@makeline{#1{#3}}}% + \par + \endgroup + \hrule height \z@ + \nobreak} + +% Fillers: + +\providecommand\titlerule{\@ifstar{\ttl@row}{\ttl@rule}} + +\let\ttl@leaders\xleaders + +\def\ttl@row{\@ifnextchar[{\ttl@row@i}{\ttl@row@i[\wd\z@]}} +\def\ttl@row@i[#1]#2{% + \ifvmode\expandafter\titleline\fi + {\sbox\z@{#2}% + \hspace{-#1}% + \hskip\wd\z@ + \ttl@leaders\hb@xt@#1{\hss\box\z@}% + \hfill\kern\z@}} + +\def\ttl@rule{\@ifnextchar[{\ttl@rule@i}{\ttl@rule@i[.4pt]}} +\def\ttl@rule@i[#1]{% + \ifvmode\expandafter\titleline\fi + {\leaders\hrule height #1\hfill\kern\z@}} + +\providecommand\filright{% + \gdef\ttl@filleft##1{\hskip##1}% + \gdef\ttl@filright##1{\hfill}% + \let\\\@centercr + \advance\rightskip\z@ \@plus 1fil\relax} +\providecommand\filleft{% + \gdef\ttl@filleft##1{\hfill}% + \gdef\ttl@filright##1{\hskip##1}% + \let\\\@centercr + \advance\leftskip\z@ \@plus 1fil + \parfillskip\z@} +\providecommand\filcenter{\filleft\filright + \gdef\ttl@filleft##1{\hfill}} +\providecommand\fillast{% + \gdef\ttl@filleft##1{\hfill}% + \gdef\ttl@filright##1{\hfill}% + \let\\\@centercr + \filleft\advance\rightskip\z@ \@plus -1fil + \parfillskip\z@ \@plus 2fil\relax} + +% Now, the specific titletoc part + +% User interface +% ~~~~~~~~~~~~~~ +% Tools: + +\DeclareOption{dotinlabels}{\def\ttl@idot{.}} +\DeclareOption{nodotinlabels}{\let\ttl@idot\@empty} + +\DeclareOption{rigidseps}{% + \def\ttl@contentsstretch{\vskip\z@}} +\DeclareOption{rubberseps}{% + \def\ttl@contentsstretch{\vskip\z@\@plus.1\p@}} + +\DeclareOption{leftlabels}{% + \renewcommand\numberline[1]{\hb@xt@\@tempdima{#1\ttl@idot\hfil}}% + \newcommand\contentslabel[2][\thecontentslabel\ttl@idot]{% +% \let\ttl@a\thecontentslabel %%%%% For the star variant +% \def\thecontentslabel{#2}% %%% To be fully implemented... when? +% \setbox\z@\hbox{#1}% +% \dimen@\wd\z@ +% \let\thecontentslabel\ttl@a +% \hspace*{-\dimen@}\hb@xt@\dimen@{#1\hfil} + \hspace*{-#2}\hb@xt@#2{#1\hfil}}} + +\DeclareOption{rightlabels}{% + \renewcommand\numberline[1]{\hb@xt@\@tempdima{\hss#1\ttl@idot\enspace}}% + \let\contentslabel\relax + \newcommand\contentslabel[2][\thecontentslabel\ttl@idot\enspace]{% + \hspace*{-#2}\hb@xt@#2{\hfil#1}}} + +\newcommand\contentspage[1][\thecontentspage]{% + \hb@xt@\@pnumwidth{\hfil#1}% + \hspace*{-\@pnumwidth}} + +\newcommand\contentspush[1]{% + \sbox\z@{#1}% + \xdef\ttl@b{\advance\leftskip\the\wd\z@}% + \aftergroup\ttl@b + \leavevmode\llap{\box\z@}} + +% General commands. A level register. Explicit numbers +% because they are used in csnames. Ignored if already defined. + +\ifx\ttll@section\@undefined + + \@ifundefined{chapter} + {\def\ttll@part{0}} + {\def\ttll@part{-1}% + \def\ttll@chapter{0}} + \def\ttll@section{1} + \def\ttll@subsection{2} + \def\ttll@subsubsection{3} + \def\ttll@paragraph{4} + \def\ttll@subparagraph{5} + +\fi + +% We make sure that a series of * entries are finished and +% that a \titlecontents in the middle of a document is +% written to the right file. We need ship out floats before; +% that's very tricky. + +\newcommand\contentsuse[2]{% + \expandafter\def\csname ttlx@#1\endcsname{#2}% + \expandafter\def\csname ttll@#1\endcsname{-1000}% + \expandafter\def\expandafter\ttl@finishall\expandafter{% + \ttl@finishall + \@writefile{#2}{\contentsfinish}}} + +\def\ttl@finishall{\@writefile{toc}{\contentsfinish}} + +\AtEndDocument{% + \ttl@startlists + \let\ttl@newpage\newpage + \def\newpage{% + \let\newpage\ttl@newpage + \newpage + \if@filesw + \immediate\write\@mainaux{\string\ttl@finishall}% + \fi}} + +\contentsuse{figure}{lof} +\contentsuse{table}{lot} + +\def\contentsfinish{% + \ifttl@fromblock + \xdef\ttl@b{-10000}% ships out any saved punctuation + \ttl@preend + \@@par + \endgroup + \global\ttl@fromblockfalse + \fi} + +% The two basic commands. First \contentsmargin: + +\newcommand\contentsmargin[1][\z@]{% + \def\ttl@corr{#1}\def\@pnumwidth} + +% The following is the value of \contentsmargin when +% used inside \ttl@tocenty (ie, \titlecontents). + +\newcommand\ttl@margin[2][\z@]{% + \def\ttl@corr{#1}% + \advance\rightskip-\@pnumwidth\relax + \advance\rightskip#2\relax + \def\@pnumwidth{#2}} + +% \titlecontents deals with concepts, not commands; hence no +% escape char + +\newcommand\titlecontents{% + \@ifstar{\ttl@contents{\z@}}% + {\ttl@contents{\@ne}}} + +\def\ttl@contents#1#2{% + \@ifnextchar[{\ttl@contents@i{#1}{#2}}% + {\ttl@contents@i{#1}{#2}[\@nil]}} + +\def\ttl@contents@i#1#2[#3]#4#5#6#7{% + \expandafter\def\csname l@#2\endcsname + {\ttl@tocentry{#1}{#2}{#3}{#4}{{#5}{#6}}{#7}}% + \@ifnextchar[{\ttl@contents@ii{#1}{#2}}% + {\ttl@contents@ii{#1}{#2}[]}} + +\def\ttl@contents@ii#1#2[#3]{% + \ifcase#1\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {\@ifnextchar[{\ttl@contents@iii{#1}{#2}{#3}}% + {\ttl@contents@iii{#1}{#2}{#3}[]}}% + {\ttl@contents@iv{#1}{#2}{#3}[][]}} + +\def\ttl@contents@iii#1#2#3[#4]{% + \@ifnextchar[{\@tempswatrue\ttl@contents@iv{#1}{#2}{#3}[#4]}% + {\@tempswafalse\ttl@contents@iv{#1}{#2}{#3}[#4][]}} + +\def\ttl@contents@iv#1#2#3[#4][#5]{% + \ifcase#1\relax + \if@tempswa + \ttl@contents@v{#2}{#3}{#4}{#5}% + \else + \ttl@contents@v{#2}{}{#3}{#4}% + \fi + \else + \ttl@contents@v{#2}{}{}{#3}% + \fi} + +\def\ttl@contents@v#1#2#3#4{% + \expandafter\def\csname ttlb@#1\endcsname{#2}% + \expandafter\def\csname ttlm@#1\endcsname{#3}% + \expandafter\def\csname ttle@#1\endcsname{#4}} + +\begingroup +\catcode`\-=12\catcode`\>=12 +\gdef\ttl@strip#1->#2\@@#3{\def#3{#2}} +\endgroup + +\AtBeginDocument{% + \def\ttl@change@i#1#2#3#4#5#6#7{% + \expandafter\def\csname l@#2\endcsname + {\ttl@tocentry{#1}{#2}{#3}{#4}{{#5}{#6}}{#7}}}% + \let\ttl@change@v\ttl@contents@v + \def\ttl@contents@i#1#2[#3]#4#5#6#7{% + \def\ttl@a{\ttl@change@i{#1}{#2}{#3}{#4}{#5}{#6}{#7}}% + \@ifnextchar[{\ttl@contents@ii{#1}{#2}}% + {\ttl@contents@ii{#1}{#2}[]}}% + \def\ttl@contents@v#1#2#3#4{% + \def\ttl@b{\ttl@change@v{#1}{#2}{#3}{#4}}% + \expandafter\ttl@strip\meaning\ttl@a\@@\ttl@a + \expandafter\ttl@strip\meaning\ttl@b\@@\ttl@b + \edef\ttl@c{% + \expandafter\ifx\csname ttlx@#2\endcsname\relax + toc% + \else + \csname ttlx@#2\endcsname + \fi}% + \addtocontents{\ttl@c}{\ttl@a\relax}% + \addtocontents{\ttl@c}{\ttl@b\relax}}} + +% Printing the toc entry +% ~~~~~~~~~~~~~~~~~~~~~~ + +\def\ttl@lasttoc{-1000} % An inital dummy assignment + +% 1 ifblock, 2 sect name, 3 left, 4 before, +% 5 {with}{without}, 6 filler/page, 7 title 8 pageno + +\let\ttl@preend\@empty + +\def\ttl@outpunct{% + \ifnum\ttl@c>\ttl@b\relax + \ttl@preend + \fi} + +\def\ttl@outblock#1#2#3{% + \ifcase#1\relax + \ifnum\ttl@b>\ttl@a\relax + \begingroup + \protected@edef\ttl@preend{% + \@nameuse{ttle@#2}% + \endgroup + \protect\@namedef{ttl@c}{\ttl@a}% + \protect\ttl@outpunct}% + #3% + \@nameuse{ttlb@#2}% + \else\ifnum\ttl@b<\ttl@a\relax + \ttl@preend + \@nameuse{ttlm@#2}% + \else + \@nameuse{ttlm@#2}% + \fi\fi + \else + \ttl@preend + \@@par + \endgroup + \@firstoftwo + \fi} + +\def\ttl@outnoblock#1#2#3{% + \begingroup + \ifnum\ttl@b>\ttl@a + \nobreak + \else\ifnum\ttl@b<\ttl@a + \addpenalty{\@secpenalty}% + \else + \addpenalty{\z@}% + \fi\fi + \ttl@contentsstretch + \nobreak + \ifcase#1\relax\else\interlinepenalty\@M\fi + \parindent\z@ + \ifx\@nil#2% + \PackageError{titletoc}{Unimplemented}% + {The optional argument is currently mandatory}% + \else + \setlength\leftskip{#2}% + \fi + \setlength\rightskip{\@pnumwidth}% + \let\contentsmargin\ttl@margin + \def\ttl@makeline##1{##1}% + #3% + \addtolength{\parfillskip}{-\ttl@corr}% + \addtolength{\rightskip}{\ttl@corr}% + \let\ttl@leaders\leaders} + +\def\ttl@tocentry#1#2#3#4#5#6#7#8{% + \xdef\ttl@b{\csname ttll@#2\endcsname}% + \ifnum\ttl@b>\c@tocdepth\else + \ifnum\ttl@b<\ttl@toctop\else + \edef\ttl@a{\ttl@lasttoc}% + \gdef\thecontentspage{#8}% + \global\let\thecontentslabel\@empty + \global\ttl@labelfalse + \sbox\z@{% Unused box. It just catch the numberline + \def\numberline##1{\global\ttl@labeltrue\gdef\thecontentslabel{##1}}% + #7}% \ttl@b = current \ttl@a = previous + \ifttl@fromblock + \ttl@outblock{#1}{#2}{#4}% + \else + \ttl@outnoblock{#1}{#3}{#4}% + \fi + \def\numberline##1{\ignorespaces}% + \ifttl@label + {\leavevmode\strut\@firstoftwo#5{#7}\strut\kern\z@}% + \else + {\leavevmode\strut\@secondoftwo#5{#7}\strut\kern\z@}% + \fi + {#6}% + \ifcase#1\relax + \ifttl@fromblock\else + \protected@edef\ttl@preend{\@nameuse{ttle@#2}}% + \fi + \global\ttl@fromblocktrue + \else + \@@par + \nobreak + \csname ttle@#2\endcsname + \endgroup + \global\ttl@fromblockfalse + \fi + \xdef\ttl@lasttoc{\csname ttll@#2\endcsname}% + \fi + \fi + \ignorespaces} + +\newcommand\dottedcontents{} +\def\dottedcontents#1[#2]#3#4#5{% + \titlecontents{#1}[#2]{#3}% + {\contentslabel{#4}}% + {\hspace*{-#4}}% + {\titlerule*[#5]{.}\contentspage}} + +\ExecuteOptions{leftlabels,nodotinlabels,rubberseps} + +\ProcessOptions + +% Multiple tocs and lists +% ~~~~~~~~~~~~~~~~~~~~~~~~ +% After some attemps to adapt titletoc to minitoc, I've decided +% to implement my own solution, because entries as written by +% minitoc are non standard and unmanageable. The new commands +% provides a good deal of flexibility, too. + +\let\ttl@startlists\@empty +\let\ttl@writefile\@writefile + +\def\ttl@partialtoc{ptc} +\def\ttl@partiallof{plf} +\def\ttl@partiallot{plt} + +\def\ttl@writepartial#1#2{% + \ttl@topartial{toc}{#1}{#2}% + \ttl@topartial{lof}{#1}{#2}% + \ttl@topartial{lot}{#1}{#2}% + \ttl@writefile{#1}{#2}} + +\def\ttl@topartial#1#2#3{% + \def\ttl@a{#1}% + \def\ttl@b{#2}% + \ifx\ttl@a\ttl@b + \ttl@writefile{\csname ttl@partial#2\endcsname}{#3}% + \fi} + +\def\ttl@xstartlist#1{% + \@ifundefined{ttl@startlist#1}{% + \global\@namedef{ttl@startlist#1}{% + \let\@writefile\ttl@writepartial + \if@filesw + \expandafter\newwrite\csname tf@#1\endcsname + \immediate\openout\csname tf@#1\endcsname\jobname.#1\relax + \fi + \@nobreakfalse}% + \expandafter\gdef\expandafter\ttl@startlists\expandafter{% + \ttl@startlists + \@nameuse{ttl@startlist#1}}}{}} + +\newcommand\startcontents[1][default]{\startlist[#1]{toc}} + +\newcommand\startlist[2][default]{% + \expandafter\ttl@xstartlist\csname ttl@partial#2\endcsname + \@ifundefined{ttl@#2@#1}% + {\expandafter\newcount\csname ttl@#2@#1\endcsname}% + {\stoplist[#1]{#2}}% + \global\advance\csname ttl@#2@#1\endcsname\@ne + \resumelist[#1]{#2}} + +\newcommand\stopcontents[1][default]{\stoplist[#1]{toc}} + +\newcommand\stoplist[2][default]{% + \protected@write\@auxout{}{% + \string\ttl@writefile{\csname ttl@partial#2\endcsname}{% + \string\ttl@stoptoc{#1@\the\csname ttl@#2@#1\endcsname}}}} + +\newcommand\resumecontents[1][default]{\resumelist[#1]{toc}} + +\newcommand\resumelist[2][default]{% + \protected@write\@auxout{}{% + \string\ttl@writefile{\csname ttl@partial#2\endcsname}{% + \string\ttl@starttoc{#1@\the\csname ttl@#2@#1\endcsname}}}} + +\def\ttl@starttoc#1{% + \ifx\@writefile\@gobbletwo\else % Is this test necessary? + \def\ttl@a{#1}% + \ifx\ttl@a\ttl@ptoc + \let\contentsline\ttl@contentsline + \fi + \fi + \ignorespaces} + +\def\ttl@stoptoc#1{% + \ifx\@writefile\@gobbletwo\else % Is this test necessary? + \def\ttl@a{#1}% + \ifx\ttl@a\ttl@ptoc + \let\contentsline\ttl@gobblecontents + \fi + \fi + \ignorespaces} + +\newcommand\printcontents[4][default]{% + \ttl@printlist[#1]{toc}{#2}{#3}{#4}} + +\newcommand\printlist[4][default]{% + \ttl@printlist[#1]{#2}{#3}{-1001}{#4}} + +\newcommand\ttl@printlist[5][default]{% + \begingroup + \@ifundefined{ttl@#2@#1}% + {\PackageError{titletoc}{No partial #2 named #1}% + {You must start before a partial toc/list\MessageBreak + with \string/startcontents/\string\startlist.}}{}% + \edef\ttl@ptoc{#1@\the\csname ttl@#2@#1\endcsname}% + \def\ttl@toctop{#4}% + #5% + \let\ttl@xcontentsline\contentsline + \let\contentsline\ttl@gobblecontents + \def\ttl@contentsline##1{% + \@ifundefined{ttll@#3##1}% + {\expandafter\let\csname ttll@#3##1\expandafter\endcsname + \csname ttll@##1\endcsname}{}% + \@ifundefined{l@#3##1}% + {\ttl@xcontentsline{##1}}% + {\ttl@xcontentsline{#3##1}}}% + \makeatletter + \@input{\jobname.\csname ttl@partial#2\endcsname}% + \makeatother + \@nobreakfalse + \endgroup} + +\AtBeginDocument{% + \ifx\ttl@gobblecontents\@undefined + \def\ttl@gobblecontents#1#2#3{\ignorespaces}% + \fi} + +\def\ttl@toctop{-1000} + +% Now the we add \contentsfinish to the current definitions +% and a "selector" for partial tocs + +\def\ttl@lselect#1{% + \ifnum\csname ttll@#1\endcsname>\c@tocdepth\else + \contentsfinish + \fi + \ifnum\csname ttll@#1\endcsname<\ttl@toctop\relax + \expandafter\@gobbletwo + \else + \expandafter\expandafter\csname ttl@savel@#1\endcsname + \fi} + +\let\ttl@savel@part\l@part +\def\l@part{\ttl@lselect{part}} + +\let\ttl@savel@chapter\l@chapter +\def\l@chapter{\ttl@lselect{chapter}} + +\let\ttl@savel@section\l@section +\def\l@section{\ttl@lselect{section}} + +\let\ttl@savel@subsection\l@subsection +\def\l@subsection{\ttl@lselect{subsection}} + +\let\ttl@savel@subsubsection\l@subsubsection +\def\l@subsubsection{\ttl@lselect{subsubsection}} + +\let\ttl@savel@paragraph\l@paragraph +\def\l@paragraph{\ttl@lselect{paragraph}} + +\let\ttl@savel@subparagraph\l@subparagraph +\def\l@subparagraph{\ttl@lselect{subparagraph}} + +\let\ttl@savel@figure\l@figure +\def\l@figure{\ttl@lselect{figure}} + +\let\ttl@savel@table\l@table +\def\l@table{\ttl@lselect{table}} + +\@tempskipa\@pnumwidth +\edef\@pnumwidth{\the\@tempskipa} +\advance\@tempskipa-\@tocrmarg +\edef\ttl@corr{-\the\@tempskipa} + +% Load patches if necessary + +\InputIfFileExists{titletoc.new}{}{} + +\endinput + diff --git a/Master/texmf-dist/tex/latex/titlesec/ttlkeys.def b/Master/texmf-dist/tex/latex/titlesec/ttlkeys.def new file mode 100644 index 00000000000..02d44976628 --- /dev/null +++ b/Master/texmf-dist/tex/latex/titlesec/ttlkeys.def @@ -0,0 +1,114 @@ +% +--------------------------------------------------+ +% | Typeset titlesec.tex to get the documentation. | +% +--------------------------------------------------+ +% +% Copyright (c) 1998-2005 by Javier Bezos. +% All Rights Reserved. +% +% This file is part of the titlesec distribution release 2.6 +% ----------------------------------------------------------- +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or any later version. + +\ProvidesFile{ttlkeys.def}[2005/01/22] + +% This command takes a list in "keyval" format, \ttl@a containing the +% star spec, and returns \ttl@a with the full string name to be defined +% and \ttl@b with the string sectioning name (without tag). But if the +% argument has no keys then simply does the last step. Finally, an +% error is reported if the sectioning command does not exist. All these +% testing must be improved (still). + +\@ifundefined{define@key}{\RequirePackage{keyval}}{}% + +\def\ttl@getkeys#1#2{% + \let\ttl@a\@empty + \if\expandafter @\@gobble#1@\@empty % if there is a single token + \edef\ttl@b{\expandafter\@gobble\string#1}% + \let\ttl@a\ttl@b + \else + \ttl@labelfalse % A temporary flag: true if there is page key + \setkeys{#2}{#1}% + \ifttl@label + \@ifundefined{ttlp@\ttl@b}{% + \expandafter\let\csname ttlp@\ttl@b\endcsname\@empty}{}% + \fi + \edef\ttl@a{\ttl@b\ttl@a}% + \fi} + +\define@key{titlesec}{name}{% + \edef\ttl@b{\expandafter\@gobble\string#1}} + +\define@key{titlesec}{numberless}[true]{% + \csname @tempswa#1\endcsname + \if@tempswa + \edef\ttl@a{\ttl@a/*}% + \fi} + +\define@key{titlesec}{page}{% + \ttl@labeltrue % Used as flag + \edef\ttl@a{/#1\ttl@a}} + +\def\ttl@extra@numberless{\ttl@labeltrue}% The actual meaning + +\let\ttl@key@numberless\@empty +%\let\ttl@key@matter\@empty + +\let\ttlp@append\@gobbletwo + +\def\ttl@setkeys#1{% + \def\ttl@trylist{\ttl@try{}}% + \@for\ttl@b:=#1\do{% + \begingroup + \let\ttl@a\relax + \def\ttl@try##1{% + \noexpand\ttl@try{##1\ttl@a{\ttl@b}}% + \noexpand\ttl@try{##1}}% + \xdef\ttl@trylist{\ttl@trylist}% + \endgroup}} + +\ttl@setkeys{page,numberless} % matter + +%___ +\if@twoside + +\newcounter{ttlp@side} +\newcount\ttlp@side + +\def\ttlp@theside{\ifodd\c@page o\else e\fi} + +\def\ttlp@append#1#2{% + {\let\@elt\relax + \expandafter\xdef\csname ttlp@#1\endcsname{% + \csname ttlp@#1\endcsname\@elt #2}}} + +\def\ttlp@write#1{% + {\let\ttlp@theside\relax + \protected@write\@auxout{}% + {\string\ttlp@append{#1}{\ttlp@theside}}}} + +\def\ttlp@fetch#1{% + \stepcounter{ttlp@side}% + \global\advance\ttlp@side\@ne + \@whilenum\ttlp@side<\c@ttlp@side\do{% + \expandafter\@next\expandafter\@tempa\csname ttlp@#1\endcsname{}{}% + \global\advance\ttlp@side\@ne}% + \expandafter\@next\expandafter\ttl@b\csname ttlp@#1\endcsname{% + \xdef\ttl@key@page{/\if\ttl@b oodd\else even\fi}% + }{% + \xdef\ttl@key@page{/\ifodd\c@page odd\else even\fi}% + \@@warning{Unsynchronized `#1' title on page \thepage}}} + +%___ +\else + +\let\ttlp@write\@gobble +\def\ttlp@fetch#1{\gdef\ttl@key@page{/odd}} + +%___ +\fi + +\endinput diff --git a/Master/texmf-dist/tex/latex/titlesec/ttlps.def b/Master/texmf-dist/tex/latex/titlesec/ttlps.def new file mode 100644 index 00000000000..6246743cf99 --- /dev/null +++ b/Master/texmf-dist/tex/latex/titlesec/ttlps.def @@ -0,0 +1,504 @@ +% +--------------------------------------------------+ +% | Typeset titlesec.tex to get the documentation. | +% +--------------------------------------------------+ +% +% Copyright (c) 1998-2005 by Javier Bezos. +% All Rights Reserved. +% +% This file is part of the titlesec distribution release 2.6 +% ----------------------------------------------------------- +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or any later version. + +% History of v1.0 (actually not 1.0) +% ~~~~~~~~~~~~~~~ +% 99/11/03: Split from titlesec.sty +% 99/11/03: Changed \setmarks, \ttl@sethead, \ttl@setfoot to follow +% the new scheme +% 99/11/03: Removed the redefinition of \markboth. The arguments are +% expanded on the fly by the corresponding \...mark. +% 00/01/06: Added the \newtitlemark device. +% 00/01/19: Rejected the idea of a separate package (for the time +% being). Now it's ttlps.def. +% 00/01/20: Starred versions of \widenhead, \sethead, \setfoot. +% 00/01/23: Added \ifthe..., \iftitle, etc. +% 00/02/05: Modified \ifthe... mechanism +% 00/02/25: Fixed a bug which made enter in an endless loop. +% Now \ttl@marks is just \relax. The new scheme made +% compatible with babel. (2.3.1) +% 00/03/01: Fixed a bug in the previous bug fix. (2.3.2) +% 00/03/08: Removed the code for AMS and babel. A general procedure +% to catch the changes of \markboth is introduced, with +% \ttl@enccode and \ttl@running. (2.3.3) +% 00/05/05: \setmarks may be used outside of \newpagestyle, with +% the help of \ttl@setmarks and \ttl@marksset (2.3.4) +% 00/05/25: Tests for \ttl@toclabel moved to the redefinition of +% \secdef in titlesec. (2.3.5) +% 00/06/07: Added the first attempt for pagestyles with floats. +% With slight changes, it will become the final form +% for that. (2.3.5) +% 00/06/14: The default \ifthe... are now defined with \ttl@setifthe +% so that they are robust from the very beginning. (2.3.5) +% 01/01/21: Replaced some \defs by \newcommand +% +% As before, all marks has two parts but now they don't refer to left or +% right pages at all. There are some issues related to top marks which +% are explained by Knuth in \textit{The \TeX book}, pp. 259f, as well +% as an uncompatibility between them and \LaTeX{} floats. To overcome +% both limitations, in the \textsf{titlesec} page styles, the second +% part in |\cs{firstmark}| is a \emph{fixed} top mark and the first one +% the actual first mark; the right way to get the bot mark is from the +% second part. Marks are stored at each section and used before and +% after the title (straight class); the first part contains the values +% of current title, but the second one contains the previolusly stored +% values in the mark before the title, and the current values in the +% mark after. + +\ProvidesFile{ttlps.def}[2005/01/22] + +% +% Page Styles +% ~~~~~~~~~~~ + +\ifx\ttl@compatps\@undefined\else + \PackageWarningNoLine{titlesec} + {You are using an old interface for page styles\MessageBreak + You could proceed but don't complain if you run\MessageBreak + into errors} +\fi + +\ttl@pstrue + +\let\parttitle\@empty +\let\chaptertitle\@empty +\let\sectiontitle\@empty +\let\subsectiontitle\@empty +\let\subsubsectiontitle\@empty +\let\paragraphtitle\@empty +\let\subparagraphtitle\@empty + +\newcommand\iftitle[1]{% + \expandafter\ifx\csname #1title\endcsname\@empty + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi} + +\newcommand\newtitlemark{% + \@ifstar{\@tempswafalse\ttl@newmk@i}% + {\@tempswatrue\ttl@newmk@i}} + +\def\ttl@newmk@i#1{% + \edef\ttl@a{{\expandafter\@gobble\string#1}}% + \expandafter\ttl@newmk@ii\ttl@a} + +\def\ttl@newmk@ii#1{% + \if@tempswa + \expandafter\def\expandafter\ttl@moremarks\expandafter{% + \ttl@moremarks + \protect\@namedef{#1}{\@nameuse{#1}}}% + \else + \expandafter\def\expandafter\ttl@moremarks\expandafter{% + \ttl@moremarks + \protect\@nameuse{#1}=\the\@nameuse{#1}\relax}% + \fi} + +\def\ttl@prevmarks{\ttl@marks} +\let\ttl@marks\relax + +\let\ttl@moremarks\@empty + +% The following command sets the ifthe... commands to +% be used in heads. When the call is from inside a sectioning +% command, toclabel is either true (in most of cases) or false +% (a chapter in the front matter, for example). Otherwise (an +% explicit \...mark) is false + +\def\ttl@setifthe#1{% + \expandafter\protected@edef\csname ifthe#1\endcsname{% + \ifttl@toclabel + \protect\@firstoftwo + \else + \protect\@secondoftwo + \fi}} + +% At this point \ttl@toclabel is always false + +\ttl@setifthe{part} +\ttl@setifthe{chapter} +\ttl@setifthe{section} +\ttl@setifthe{subsection} +\ttl@setifthe{subsubsection} +\ttl@setifthe{paragraph} +\ttl@setifthe{subparagraph} + +\newtitlemark{\ttl@running} +\let\ttl@enccode\relax +\def\ttl@running{\ttl@enccode} + +\def\ttl@markboth#1{% + \begingroup + \let\protect\@unexpandable@protect + \let\@mkboth\@gobbletwo + \let\ttl@enccode\relax + \let\label\relax + \let\index\relax + \let\glossary\relax + \let\ttl@c\mark + \def\mark##1{\xdef\ttl@running{\expandafter\@gobble##1}}% + \markboth{}{\ttl@enccode}% + \expandafter\let\csname#1mark\endcsname\@gobble + \xdef\ttl@marks{\ttl@marks}% + \gdef\@themark{{\ttl@marks}{\ttl@prevmarks}}% + \ttl@c{\@themark}% + \if@nobreak\ifvmode\nobreak\fi\fi + \endgroup} + +\newcommand\setmarks[2]{\def\ttl@marksset{{#1}{#2}}} + +\def\ttl@setmarks#1#2{% + \expandafter\def\csname#1mark\endcsname##1{% + \expandafter\gdef\csname#1title\endcsname{##1}% + \ttl@setifthe{#1}% + \def\ttl@marks{% + \protect\@namedef{#1title}{##1}% + \protect\@namedef{#2title}{}% + \protect\@namedef{the#1}{\@nameuse{the#1}}% + \protect\@namedef{the#2}{}% + \protect\@namedef{ifthe#1}{\@nameuse{ifthe#1}}% + \protect\@namedef{ifthe#2}{\protect\@secondoftwo}% + \ttl@moremarks}% + \ttl@markboth{#1}}% + \expandafter\def\csname#2mark\endcsname##1{% + \expandafter\gdef\csname#2title\endcsname{##1}% + \ttl@setifthe{#2}% + \def\ttl@marks{% + \protect\@namedef{#1title}{\@nameuse{#1title}}% + \protect\@namedef{#2title}{##1}% + \protect\@namedef{the#1}{\@nameuse{the#1}}% + \protect\@namedef{the#2}{\@nameuse{the#2}}% + \protect\@namedef{ifthe#1}{\@nameuse{ifthe#1}}% + \protect\@namedef{ifthe#2}{\@nameuse{ifthe#2}}% + \ttl@moremarks}% + \ttl@markboth{#1}}}% + +\newcommand\headrule{\setheadrule{.4\p@}} +\newcommand\footrule{\setfootrule{.4\p@}} + +\newcommand\setheadrule[1]{% + \ifdim#1=\z@ + \let\makeheadrule\@empty + \else + \def\makeheadrule{\rule[-.3\baselineskip]{\linewidth}{#1}}% + \fi} +\newcommand\setfootrule[1]{% + \ifdim#1=\z@ + \let\makefootrule\@empty + \else + \def\makefootrule{\rule[.7\baselineskip]{\linewidth}{#1}}% + \fi} + +\renewcommand\newpagestyle[1]{% + \begingroup + \catcode`\^^M=9 + \@ifnextchar[% + {\ttl@pagestyle\newcommand{#1}}% + {\ttl@pagestyle\newcommand{#1}[]}} + +\renewcommand\renewpagestyle[1]{% + \begingroup + \catcode`\^^M=9 + \@ifnextchar[% + {\ttl@pagestyle\renewcommand{#1}}% + {\ttl@pagestyle\renewcommand{#1}[]}} + +\def\ttl@pagestyle#1#2[#3]#4{% + \endgroup + \expandafter#1\csname ps@#2\endcsname{% + \ttl@defaultps + \def\ttl@headfmt{#3}% + #4% + \def\setmarks####1####2{\def\ttl@marksset{{####1}{####2}}}}} + +\def\ttl@userunning#1#2{\csname ttlr@#1#2\endcsname} + +\def\ttl@defaultps{% + \let\makeheadrule\@empty + \let\makefootrule\@empty + \def\@mkboth{\ttl@savemark\@gobbletwo}% + \def\@oddfoot{\ttl@userunning of}% + \def\@evenfoot{\ttl@userunning ef}% + \def\@oddhead{\ttl@userunning oh}% + \def\@evenhead{\ttl@userunning eh}% + \def\ttlr@of{\ttl@makefoot\@empty\@@\ttl@hiol\ttl@hior}% + \def\ttlr@ef{\ttl@makefoot\@empty\@@\ttl@hiel\ttl@hier}% + \def\ttlr@oh{\ttl@makehead\@empty\@@\ttl@hiol\ttl@hior}% + \def\ttlr@eh{\ttl@makehead\@empty\@@\ttl@hiel\ttl@hier}% + \let\ttlr@of@b\relax \let\ttlr@of@p\relax + \let\ttlr@ef@b\relax \let\ttlr@ef@p\relax + \let\ttlr@oh@t\relax \let\ttlr@oh@p\relax + \let\ttlr@eh@t\relax \let\ttlr@eh@p\relax + \let\setmarks\ttl@setmarks + \expandafter\setmarks\ttl@marksset} + +\@ifundefined{chapter}% + {\setmarks{section}{subsection}}% + {\setmarks{chapter}{section}} + +\newcommand\usepage{\protect\thepage} + +\newcommand\toptitlemarks {\expandafter\@secondoftwo\firstmark{}{}{}} +\def\firsttitlemarks{% + \toks@\expandafter\expandafter\expandafter{% + \expandafter\@secondoftwo \firstmark{}{}{}}% + \@temptokena\expandafter\expandafter\expandafter{% + \expandafter\@secondoftwo \botmark{}{}{}}% + \edef\ttl@a{\the\toks@}% + \edef\ttl@b{\the\@temptokena}% + \ifx\ttl@a\ttl@b + \expandafter\@secondoftwo\firstmark{}{}{}% + \else + \expandafter\@firstoftwo \firstmark{}{}{}% + \fi} +\newcommand\bottitlemarks {\expandafter\@secondoftwo\botmark{}{}{}} +\newcommand\nexttoptitlemarks{\expandafter\@firstoftwo \botmark{}{}{}} +\newcommand\outertitlemarks{% + \if@twoside + \ifodd\c@page\relax + \bottitlemarks + \else + \toptitlemarks + \fi + \else + \toptitlemarks + \fi} +\newcommand\innertitlemarks{% + \if@twoside + \ifodd\c@page\relax + \firsttitlemarks + \else + \bottitlemarks + \fi + \else + \bottitlemarks + \fi} + + +\def\ttl@duplthreeargs#1#2#3#4{#1[#2][#3][#4]{#2}{#3}{#4}} +\def\ttl@dupltwoargs#1#2#3{#1[#2][#3]{#2}{#3}} +\def\ttl@duplthreeargsrev#1#2#3#4{#1[#4][#3][#2]{#2}{#3}{#4}} +\def\ttl@dupltwoargsrev#1#2#3{#1[#3][#2]{#2}{#3}} + +\def\ttl@setany#1{% + \@ifstar{\ttl@duplthreeargsrev#1}% + {\@ifnextchar[{#1}{\ttl@duplthreeargs#1}}} + +\newcommand\setfoot{\ttl@setany\ttl@setfoot} +\newcommand\sethead{\ttl@setany\ttl@sethead} + +\def\ttl@setfoot[#1][#2][#3]#4#5#6{% + \def\ttlr@ef{\ttl@makefoot{#1}{#2}{#3}\@@\ttl@hiel\ttl@hier}% + \def\ttlr@of{\ttl@makefoot{#4}{#5}{#6}\@@\ttl@hiol\ttl@hior}} + +\def\ttl@sethead[#1][#2][#3]#4#5#6{% + \def\ttlr@eh{\ttl@makehead{#1}{#2}{#3}\@@\ttl@hiel\ttl@hier}% + \def\ttlr@oh{\ttl@makehead{#4}{#5}{#6}\@@\ttl@hiol\ttl@hior}} + +\def\ttl@headinline#1#2#3{% + \ttl@headfmt + \def\ttl@a{#1#3}\def\ttl@b{#2}% + \ifx\ttl@a\@empty + \hfil{#2}\hfil + \else\ifx\ttl@b\@empty + {#1}\hfil{#3}% + \else + \sbox\z@ {#1}% + \sbox\tw@{#3}% + \copy\z@ + \ifdim\wd\z@<\wd\tw@ + \kern-\wd\z@\kern\wd\tw@ + \fi + \hfil{#2}\hfil + \ifdim\wd\z@>\wd\tw@ + \kern-\wd\tw@\kern\wd\z@ + \fi + \box\tw@ + \fi\fi} + +\def\ttl@makeboth#1#2#3#4{% + \ttl@calcneg\hspace{#3}% + \normalsize + \linewidth\textwidth + \addtolength\linewidth{#3}% + \addtolength\linewidth{#4}% + \ifx#2\@empty\else + \setbox\z@\hb@xt@\linewidth{% + \color@begingroup + #2% + \color@endgroup}% + \wd\z@\z@ + \ht\z@\z@ + \dp\z@\z@ + \box\z@ + \fi + \ttl@titlemarks % Must precede the format. Defines \ttl@running + \def\ttl@enccode{\ttl@headinline#1{}{}{}}%which contains ttl@enccode + \ttl@running + \ttl@calcneg\hspace{#4}}% + +\def\ttl@makehead#1\@@{\ttl@makeboth{#1}\makeheadrule} +\def\ttl@makefoot#1\@@{\ttl@makeboth{#1}\makefootrule} + +\renewcommand\widenhead{% + \@ifstar{\ttl@dupltwoargsrev\ttl@widenhd}% + {\@ifnextchar[{\ttl@widenhd}{\ttl@dupltwoargs\ttl@widenhd}}} + +\def\ttl@widenhd[#1][#2]#3#4{% + \def\ttl@hiel{#1}\def\ttl@hier{#2}% + \def\ttl@hiol{#3}\def\ttl@hior{#4}} + +\let\setheadindent\widenhead + +\def\ttl@hiel{\z@}\def\ttl@hier{\z@} +\def\ttl@hiol{\z@}\def\ttl@hior{\z@} + +% Pagestyles with floats. There macros are defined only with the +% psfloats package option. + +\@ifundefined{ttl@replace}{\endinput}{} + +% User interface + +\newcommand\setfloatfoot{% + \let\ttl@c\@empty % <- current float, empty if general + \ttl@setany\ttl@setftfoot} + +\newcommand\setfloathead{% + \let\ttl@c\@empty % <- current float, empty if general + \ttl@setany\ttl@setfthead} + +\def\ttl@setftfoot[#1][#2][#3]#4#5#6#7{% + \@ifnextchar[{\ttl@setftfoot@i{#1}{#2}{#3}{#4}{#5}{#6}{#7}}% + {\ttl@setftfoot@i{#1}{#2}{#3}{#4}{#5}{#6}{#7}[bp]}} + +\def\ttl@setfthead[#1][#2][#3]#4#5#6#7{% + \@ifnextchar[{\ttl@setfthead@i{#1}{#2}{#3}{#4}{#5}{#6}{#7}}% + {\ttl@setfthead@i{#1}{#2}{#3}{#4}{#5}{#6}{#7}[tp]}} + +\def\ttl@setftfoot@i#1#2#3#4#5#6#7[#8]{% + \@tfor\ttl@b:=#8\do{% + \@namedef{ttlr@ef@\ttl@b\ttl@c}% + {#7\ttl@makefoot{#1}{#2}{#3}\@@\ttl@hiel\ttl@hier}% + \@namedef{ttlr@of@\ttl@b\ttl@c}% + {#7\ttl@makefoot{#4}{#5}{#6}\@@\ttl@hiol\ttl@hior}}} + +\def\ttl@setfthead@i#1#2#3#4#5#6#7[#8]{% + \@tfor\ttl@b:=#8\do{% + \@namedef{ttlr@eh@\ttl@b\ttl@c}% + {#7\ttl@makehead{#1}{#2}{#3}\@@\ttl@hiel\ttl@hier}% + \@namedef{ttlr@oh@\ttl@b\ttl@c}% + {#7\ttl@makehead{#4}{#5}{#6}\@@\ttl@hiol\ttl@hior}}} + +\newcommand\nextfloathead{% + \ttl@nextfree % returns ttl@c with the next float + \ttl@setany\ttl@setfthead} + +\newcommand\nextfloatfoot{% + \ttl@nextfree % returns ttl@c with the next float + \ttl@setany\ttl@setftfoot} + +% Compat mode with floatps + +\ifx\ttl@replace\space + + \let\ttl@setnewfoot\ttl@setftfoot + \let\ttl@setnewhead\ttl@setfthead + + \def\ttl@setftfoot[#1][#2][#3]#4#5#6{% + \ttl@setnewfoot[#1][#2][#3]{#4}{#5}{#6}{}} + \def\ttl@setfthead[#1][#2][#3]#4#5#6{% + \ttl@setnewhead[#1][#2][#3]{#4}{#5}{#6}{}} + +\fi + +% The simple default value of \ttl@userunning is +% replaced by one more elaborated + +\def\ttl@userunning#1#2{% + \if@fcolmade % From a post by D. Arseneau to comp.text.tex + \def\@elt##1{\edef\ttl@pageft{\string##1}}% + \@flsucceed + \let\@elt\relax + \if#2h% + \ttl@replace #1hp\ttl@pageft + \else + \ttl@replace #1fp\ttl@pageft + \ttl@killftps\ttl@pageft + \fi + \else\if#2h% + \ifx\ttl@topft\@empty\else + \ttl@replace #1ht\ttl@topft + \fi + \else + \ifx\ttl@botft\@empty\else + \ttl@replace #1fb\ttl@botft + \fi + \fi\fi + \csname ttlr@#1#2\endcsname} + +% [Don't move above as \ttl@replace is used as a flag.] + +\def\ttl@replace#1#2#3#4{% + \@ifundefined{ttlr@#1#2@#3#4}% + {\@ifundefined{ttlr@#1#2@#3}{}% + {\@namedef{ttlr@#1#2}{\@nameuse{ttlr@#1#2@#3}}}}% + {\csname ttlr@xx@x#4\endcsname\@gobble + {\expandafter\let\csname ttlr@#1#2\expandafter\endcsname + \csname ttlr@#1#2@#3#4\endcsname}}} + +\def\ttl@nextfree{% + \def\@elt##1{% + \edef\ttl@c{\string##1}% + \let\@elt\@gobble}% + \@freelist + \let\@elt\relax + \@ifundefined{ttlr@xx@x\ttl@c}% + {\expandafter\let\csname ttlr@xx@x\ttl@c\endcsname\@secondoftwo + \@tfor\ttl@a:={eh@t}{oh@t}{ef@b}{of@b}{eh@p}{oh@p}{ef@p}{of@p}\do{% + \expandafter\global\expandafter + \let\csname ttlr@\ttl@a\ttl@c\endcsname\relax}}{}} + +\def\ttl@killftps#1{% + \expandafter\global\expandafter + \let\csname ttlr@xx@x#1\endcsname\relax} + +\let\ttl@topft\@empty +\let\ttl@botft\@empty +\let\ttl@pageft\@empty + +\def\ttl@combinefloats{% + \ifx\@toplist\@empty\else + \def\@elt##1{% + \edef\ttl@topft{\string##1}% + \def\@elt####1{\ttl@killftps{\string####1}}}% + \@toplist + \fi + \ifx\@botlist\@empty\else + \def\@elt##1{% + \def\@elt####1{% + \def\@elt####1{\ttl@killftps\ttl@botft}% + \edef\ttl@botft{\string####1}}% + \edef\ttl@botft{\string##1}}% + \@botlist + \fi + \let\@elt\relax + \ttl@combinefloats@x} + +\AtBeginDocument{% + \let\ttl@combinefloats@x\@combinefloats + \let\@combinefloats\ttl@combinefloats} + +\endinput diff --git a/Master/texmf-dist/tex/latex/titlesec/wrap.tss b/Master/texmf-dist/tex/latex/titlesec/wrap.tss new file mode 100644 index 00000000000..a0f7d6c7340 --- /dev/null +++ b/Master/texmf-dist/tex/latex/titlesec/wrap.tss @@ -0,0 +1,75 @@ +% +--------------------------------------------------+ +% | Typeset titlesec.tex to get the documentation. | +% +--------------------------------------------------+ +% +% Copyright (c) 1998-2002 by Javier Bezos. +% All Rights Reserved. +% +% This file is part of the titlesec distribution release 2.5 +% ----------------------------------------------------------- +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or any later version. + +\ProvidesFile{wrap.tss}[2002/03/23] + +\gdef\ttlh@wrap#1#2#3#4#5#6#7#8{% + \global\@noskipsectrue + \gdef\ttl@makeline##1{##1}% + \ttl@changecentercr + \begingroup + #1\ifhmode\ttl@hmode@error\fi + \titlewidth\z@ + \def\\{\@ifstar{\@ifnextchar[{\ttl@bs}{\newline}}% + {\@ifnextchar[{\ttl@bs}{\newline}}}% + \def\ttl@bs[##1]{\newline}% + \let\@centercr\\% + \advance\rightskip 1\leftskip plus 1fil + \leftskip=\z@ + \parindent\z@ + \global\setbox\ttl@box\vtop{\setlength\hsize{#6}% + \color@begingroup + \ifttl@label{#2}\ttl@calc\hspace{#3}\fi + #4{#8}\kern\z@\strut + \@@par + \color@endgroup}% + \ttl@boxprocess + \global\titlewidth\titlewidth + \global\titlewidthfirst\titlewidthfirst + \global\titlewidthlast\titlewidthlast + \endgroup + \edef\ttl@maxdimen{\the\titlewidth}% + #1\ifhmode\ttl@hmode@error\fi + \global\setbox\ttl@box\vtop{\setlength\hsize{\ttl@maxdimen}% + \color@begingroup + \ifttl@label{#2}\ttl@calc\hspace{#3}\fi#4{#8}\kern\z@\strut + \@@par + \color@endgroup}% + \advance\@tempskipa1.5\baselineskip + \advance\@tempskipa\ht\ttl@box + \advance\@tempskipa\dp\ttl@box + \advance\@tempskipa-\pagegoal + \advance\@tempskipa\pagestretch + \@tempskipb\pagegoal + \pagegoal-\@tempskipa + \ifdim\bottomtitlespace<\z@\else + \def\@textbottom{\vskip\z@\@plus.0001fil}% + \fi + \penalty9999 + \pagegoal\@tempskipb + \@tempdima\ht\ttl@box \advance\@tempdima\dp\ttl@box + \@tempdimb\@tempdima + \divide\@tempdima\baselineskip \count@\@tempdima + \advance\count@ + \ifdim\@tempdimb<\the\count@.5\baselineskip\@ne\else\tw@\fi + \dp\ttl@box=\z@ + \if@nobreak\advance\count@\@ne\fi + \xdef\@svsechd##1##2{% + \noexpand\llap{\box\ttl@box##2}% + \setbox\z@\hbox{\hskip\ttl@maxdimen\relax##2}% + \global\hangindent\wd\z@ + \global\hangafter-\the\count@\relax}} + +\endinput |