12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337 |
- % +--------------------------------------------------+
- % | Typeset titlesec.tex to get the documentation. |
- % +--------------------------------------------------+
- %
- % Copyright (c) 1998-2011 by Javier Bezos.
- % All Rights Reserved.
- %
- % This file is part of the titlesec distribution release 2.10.0
- % -----------------------------------------------------------
- %
- % It may be distributed and/or modified under the
- % conditions of the LaTeX Project Public License, either version 1.3
- % of this license or (at your option) any later version.
- % The latest version of this license is in
- % http://www.latex-project.org/lppl.txt
- % and version 1.3 or later is part of all distributions of LaTeX
- % version 2003/12/01 or later.
- %
- % This work has the LPPL maintenance status "maintained".
- %
- % The Current Maintainer of this work is Javier Bezos.
- %
- % 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}[2011/12/15 v2.10.0 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}
- % Here \scantokens is used to make sure the unescaped name
- % has `letters' and no `others'. Mainly for hyperref, so there
- % should be no problems.
- \newcommand\titleclass[1]{%
- \edef\ttl@a{\expandafter\@gobble\string#1}%
- \ifx\scantokens\@undefined\else
- \scantokens\expandafter{\expandafter
- \def\expandafter\ttl@a\expandafter{\ttl@a}}%
- \fi
- \@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 straight}}%
- {\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}
- \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.
- \newif\ifttl@explicit
- \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
- \ifttl@explicit
- \def\ttl@passexplicit{\ttl@case{#4}}%
- \ttl@c{#4}{#2}{#3}{}% ttl@c is returned by ttl@try with ttlf@...
- \else
- \let\ttl@passexplicit\ttl@case
- \ttl@c{#2}{#3}{#4}% ttl@c is returned by ttl@try with ttlf@...
- \fi
- \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}
- \newif\ifttl@premark % to be used in ttlps.def
- \ttl@premarkfalse
- \def\ttl@premark#1#2{%
- \protected@xdef\ttl@prevmarks{\ttl@marks}%
- \ttl@blinemarks
- \csname#1mark\endcsname{#2}%
- \ttl@elinemarks
- \gdef\ttl@prevmarks{\ttl@marks}}
- % 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}%
- \@nameuse{ttl@#1out}%
- \fi
- \fi
- \fi
- \let\ifttl@toclabel\ifttl@label
- \ifx\ttl@savewrite\@empty\else % If marks
- \ifttl@ps
- \ifttl@premark
- \global\ttl@premarkfalse
- \else % if no \pretitlemark
- \ttl@premark{#1}{#2}%
- \fi
- \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}
- % Executed by ttl@labelling if chapter has a number. Note
- % you can define messages for other sectioning levels (eg,
- % \ttl@sectionout).
- \def\ttl@chapterout{\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
- \ttl@labelling{#1}{#2}%
- \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
- \@ifundefined{ttl@ps@#6}{}%
- {\PackageWarning{titlesec}{Page style in straight class ignored}}%
- \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}%
- \@ifundefined{ttl@ps@#6}{}%
- {\PackageWarning{titlesec}{Page style in part class ignored}}%
- \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
- \@ifundefined{ttl@ps@#6}%
- {\thispagestyle{plain}}%
- {\thispagestyle{\@nameuse{ttl@ps@#6}}}%
- \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
- \@ifundefined{ttl@ps@#6}%
- {\thispagestyle{empty}}%
- {\thispagestyle{\@nameuse{ttl@ps@#6}}}%
- \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
- \@ifundefined{ttl@ps@#6}{}%
- {\thispagestyle{\@nameuse{ttl@ps@#6}}}%
- \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}%
- \@ifundefined{ttl@ps@#6}%
- {\thispagestyle{plain}}%
- {\thispagestyle{\@nameuse{ttl@ps@#6}}}%
- \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}
- \newtoks\ttl@toksa
- \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}%
- \ttl@toksa{{#3}{#4}{#5}{#6}}% Save arguments
- \@ifnextchar[{%
- \ttl@format@iii{#2}%
- }{%
- \ttl@format@iii{#2}[]}}
- % First, we get the shape -- if not defined it loads
- % the corresponding file.
- \def\ttl@format@iii#1[#2]{%
- \@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}{}%
- \@temptokena{#2}%
- \ifttl@explicit
- \edef\ttl@b{%
- \def\expandafter\noexpand\csname ttlf@\ttl@a\endcsname####1%
- {\expandafter\noexpand\csname ttlh@#1\endcsname
- \the\ttl@toksa{\the\@temptokena}}}%
- \else
- \edef\ttl@b{%
- \def\expandafter\noexpand\csname ttlf@\ttl@a\endcsname
- {\expandafter\noexpand\csname ttlh@#1\endcsname
- \the\ttl@toksa{\the\@temptokena}}}%
- \fi
- \ttl@b
- \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.
- % With the option explicit, #4 contains the title and #8 is
- % empty.
- \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
- \let\iftitlemeasuring\@secondoftwo
- \def\ttl@xbeginlongest#1\ttl@endlongest{%
- \titlewidth\z@
- \titlewidthlast\z@
- \let\iftitlemeasuring\@firstoftwo
- \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}%
- \let\iftitlemeasuring\@secondoftwo
- \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{extramarks}{\let\ttl@fetchmark\@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{explicit}{\ttl@explicittrue}
- \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{uppercase}{%
- \gdef\ttl@case{\MakeUppercase}}
- \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}%
- \nobreak}
- \DeclareOption{toctitles}{%
- \def\ttl@addcontentsline#1#2{%
- \addcontentsline{toc}{#1}{\ifttl@toclabel\ttl@a\fi\ttl@savetitle}%
- \nobreak}}
- % 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 |
- % +-----------------+
- %
- % This is generic:
- \newcommand\assignpagestyle[2]{%
- \@namedef{ttl@ps@\expandafter\@gobble\string#1}{#2}}
- % 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}{}{\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@}\ttl@passexplicit
- \else
- \titleformat#8[runin]%
- {#7}{\@seccntformat{#2}}%
- {\z@}\ttl@passexplicit
- \fi
- \@tempskipb-\@tempskipb
- \else
- \if@tempswa
- \titleformat#8%
- {\ttl@fil\ttl@fonts\ttl@sizes{#3}}{\@seccntformat{#2}}%
- {\z@}\ttl@passexplicit
- \else
- \titleformat#8%
- {#7}{\@seccntformat{#2}}%
- {\z@}\ttl@passexplicit
- \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
- \expandafter\ifx\csname ttl@case\endcsname\relax
- \let\ttl@case\@firstofone
- \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@\ttl@passexplicit}
- \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}%
- \@ifundefined{ttl@ps@chapter}{}%
- {\thispagestyle{\@nameuse{ttl@ps@chapter}}}}
- \def\@makeschapterhead#1{%
- \gdef\ttl@savemark{\chaptermark{#1}}%
- \ttl@save@mkschap{#1}%
- \@ifundefined{ttl@ps@chapter}{}%
- {\thispagestyle{\@nameuse{ttl@ps@chapter}}}}
- \@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]
- \endinput
|