diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/interfaces/interfaces-titlesec.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/interfaces/interfaces-titlesec.sty | 375 |
1 files changed, 375 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/interfaces/interfaces-titlesec.sty b/Master/texmf-dist/tex/latex/interfaces/interfaces-titlesec.sty new file mode 100644 index 00000000000..4ac65b17da9 --- /dev/null +++ b/Master/texmf-dist/tex/latex/interfaces/interfaces-titlesec.sty @@ -0,0 +1,375 @@ +%% +%% This is file `interfaces-titlesec.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% interfaces.dtx (with options: `titlesec') +%% +%% This is a generated file. +%% +%% interfaces : 2010/10/20 v1.0 - interfaces : interfaces with keys for other packages (FC) +%% +%% This work 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 +%% +%% This work consists of the main source file interfaces.dtx +%% and the derived files +%% interfaces.sty, interfaces.pdf, interfaces.ins, +%% interfaces-base.sty, +%% interfaces-LaTeX.sty, +%% interfaces-tikz.sty, +%% interfaces-titlesec.sty, +%% interfaces-hyperref.sty, +%% interfaces-bookmark.sty, +%% interfaces-hypbmsec.sty,interfaces-hypbmsec.code.tex, +%% interfaces-fancyhdr.sty, +%% interfaces-marks.sty, +%% interfaces-tocloft.sty, +%% interfaces-makecell.sty, +%% interfaces-enumitem.sty, +%% interfaces-truncate.sty, +%% interfaces-appendix.sty, +%% interfaces-embedfile.sty, +%% interfaces-environ.sty, +%% interfaces-umrand.sty, +%% interfaces-scrlfile.sty, +%% interfaces-pgfkeys.sty, +%% interfaces-etoolbox.sty, +%% interfaces-fancyvrb.sty +%% +%% interfaces: interfaces with keys for other packages (FC) +%% Copyright (C) 2010 by Florent Chervet <florent.chervet@free.fr> +%% +\ProvidesPackage{interfaces-titlesec} + [2010/10/20 v1.0 pgfkeys macros for titlesec (FC)] +\RequirePackage{interfaces-base} +\RequirePackage{auxhook}% for fix for \ttlp@append (odd/even pages, not implemented in interfaces) +\itf@Check@Package{titlesec} +\itf@pgfkeys +%% t i t l e s e c "p a t c h e s" +\robustify\titleclass \robustify\titleformat \robustify\titlespacing +\AddLineBeginMainAux{% + \string\providecommand\string\ttlp@append[2]{}% +} +\BeforeFile*{ttlkeys.def}{% + \catcode32 9\relax % ignore spaces + \count@\endlinechar\endlinechar\m@ne % and line feeds +} +\AfterFile*{ttlkeys.def}{% restore spaces and line feeds + \catcode32 10\relax + \endlinechar\count@ +} +%%----------------------------------------------------------------------------- +%% runinifempty => like hang but no paragraph break (like runin) if title is empty +\def\ttlh@runinifempty{% + \csname ttlh@\ifx\ttl@savetitle\@empty runin\else hang\fi\endcsname +}% \ttlh@runinifempty +\newrobustcmd*\sectionformat[1]{\@ifstar + {\itf@sectionformat{#1}{/*}} + {\itf@sectionformat{#1}{}}% +}% \sectionformat +\def\itf@sectionformat#1#2{\@testopt + {\expandafter\expandafter\expandafter% + \itf@sectionf@rmat\expandafter\@gobble\string#1\@nil{#2}}{}% +}% \sectionformat +\def\itf@sectionf@rmat#1\@nil#2[#3]#4{\itf@pgfkeys + \ifblank{#3} + {\pgfqkeys{/itf/titlesec/#1#2} + {/itf/titlesec/@setup={#1}{#2},#4,/itf/titlesec/@update={#1}{#2}}} + {\pgfqkeys{/itf/titlesec/#1#2} + {/itf/titlesec/@setup={#1}{#2},shape={#3},#4,/itf/titlesec/@update={#1}{#2}}}% +}% \itf@ttl@sectionformat +%% private keys @setup and @update +\pgfqkeys{/itf/titlesec}{% + @setup/.code 2 args=\itf@ttl@setup{#1}{#2},% + @update/.code 2 args=\expandafter\itf@ttl@update + \csname#1\endcsname{/itf/titlesec/#1}{#2}% +} +\newrobustcmd*\itf@ttl@setup[2]{% + \pgfkeysifdefined{/itf/titlesec/#1#2/shape}{} + {\itf@ttl@newsection{#1}{#2}}% + \ifcsundef{ttls@#1#2}{}% no previous spacing settings + {\expandafter\expandafter\expandafter% + \itf@ttl@getspacing\csname ttls@#1#2\endcsname{/itf/titlesec/#1#2}}% + \ifcsundef{ttlf@#1#2}{}% no previous format settings + {\expandafter\expandafter\expandafter% + \itf@ttl@getformat\csname ttlf@#1#2\endcsname{/itf/titlesec/#1#2}}% +}% \itf@ttl@setup +\def\itf@ttl@setkey#1#2{\begingroup + \def\x{\pgfkeysvalueof{#1}}\def\y{#2}% + \expandafter\endgroup\ifx\x\y\else + \pgfkeyssetvalue{#1}{#2}\fi +}% \itf@ttl@setkey +\def\itf@ttl@getspacing#1#2#3#4#5#6{% + \itf@ttl@setkey{#6/left}{#1}% + \itf@ttl@setkey{#6/right}{#2}% + \itf@ttl@setkey{#6/top}{#3}% + \itf@ttl@setkey{#6/bottom}{#4}% + \itf@ttl@setkey{#6/indent first}{#5}% +}% \itf@ttl@getspacing +\def\itf@ttl@getformat#1#2{% + \csname ltx@\ifx\pgfkeysvalueof#1first\else second\fi oftwo\endcsname + {\itf@ttl@get@format{}} + {\itf@ttl@get@format{#1}{#2}}% +}% \itf@ttl@getformat +\def\itf@ttl@get@format#1#2#3#4#5#6#7{% + \if\relax\detokenize{#1}\relax\else + \pgfkeysEsetvalue{#7/shape}{\expandafter\itf@strip@at\string#1}% + \fi + \itf@ttl@setkey{#7/font}{#2}% + \itf@ttl@setkey{#7/label}{#3}% + \itf@ttl@setkey{#7/sep}{#4}% + \itf@ttl@setkey{#7/before}{#5}% + \itf@ttl@setkey{#7/after}{#6}% +}% \itf@ttl@get@format +\newrobustcmd*\itf@ttl@update[3]{% + \ifblank{#3} + {\ttl@getkeys{#1}{titlesec}} + {\ttl@getkeys{name=#1,numberless}{titlesec}}% + \pgfkeysgetvalue{#2#3/shape}\itf@tp + \ifcsundef{ttlh@\itf@tp} + {\begingroup \makeatletter + \InputIfFileExists{\itf@tp.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 \itf@tp.tss file}}% + \endgroup} + {}% + \ifttl@explicit\@temptokena{\csdef{ttlf@\ttl@a}##1}% + \else\@temptokena{\csdef{ttlf@\ttl@a}}% + \fi + \the\@temptokena{% + \pgfkeysvalueof{#2#3/shape@cs}% + {\pgfkeysvalueof{#2#3/font}}% + {\pgfkeysvalueof{#2#3/label}}% + {\pgfkeysvalueof{#2#3/sep}}% + {\pgfkeysvalueof{#2#3/before}}% + {\pgfkeysvalueof{#2#3/after}}}% + \csname ttl@compat\ttl@a\endcsname + \ttl@spacing@ii + {\pgfkeysvalueof{#2#3/indent first}}% + {\pgfkeysvalueof{#2#3/left}}% + {\pgfkeysvalueof{#2#3/top}}% + {\pgfkeysvalueof{#2#3/bottom}}% + [\pgfkeysvalueof{#2#3/right}]% +}% \itf@ttl@update +%%---------------------------------------------------------------------------- +%% t i t l e c l a s s +\newrobustcmd*\itf@ttl@titleclass{\@ifstar + {\itf@ttl@titleclass@i*} + {\itf@ttl@titleclass@i{}}% +}% \itf@ttl@titleclass +\def\itf@ttl@titleclass@i#1#2#3[#4]#5\@nil{\ifblank{#4} + {% + \expandafter\titleclass\csname#2\endcsname{#3}% + } + {% + \expandafter\titleclass\csname#2\endcsname{#3}[{#4}]% #4 = sup-level + \if\relax#1\relax % not starred + \expandafter\expandafter\expandafter% + \itf@ttl@titleclass@ii\expandafter\@gobble\string#4\relax{#2}% subsection\relax{article} => \@addtoreset{article}{subsection} + \fi + }% + \expandafter\providecommand\csname l@#2\endcsname[2]{}% no entry in toc +}% \itf@ttl@titleclass@i +\def\itf@ttl@titleclass@ii#1\relax#2{% + \ifcsundef{c@#2} + {\newcounter{#2}[{#1}]}% creates counter for #1 + {\@addtoreset{#2}{#1}}% + \csxdef{the#2}{% + \expandafter\noexpand\csname the#1\endcsname + .\noexpand\@arabic\expandafter\noexpand\csname c@#2\endcsname + }% \the#2 + \ifcsundef{l@#1}{}{% + \expandafter\providecommand\csname l@#2\endcsname[2]{% + \csname l@#1\endcsname{##1}{##2}% + }% \l@#2 = \l@newsection is (by default) the same as \l@sup-level + }% +}% \itf@ttl@titleclass@ii +%%----------------------------------------------------------------------------- +%% C r e a t i n g n e w s e c t i o n s +\def\itf@ttl@createsection#1{% sectionning command undefined: temporarily defined + \expandafter\titleclass\csname#1\endcsname{straight}[*]% in straight class + \itf@AfterPackage{hypbmsec}{% + \AtBeginDocument{% + \csletcs{hbs@#1}{#1}% + \csxdef{#1}{\noexpand\hbs@do\expandafter\noexpand\csname hbs@#1\endcsname}% + }% + }% + \itf@AfterPackage{interfaces-tocloft}{% + \itf@cft@newsection{#1}{toc}% + }% + \itf@AfterPackage{interfaces-hypbmsec}{% + \cslet{last#1title}\@empty + \cslet{last#1bookmark}\@empty + \cslet{last#1toc}\@empty + }% +}% \itf@ttl@createsection +%%----------------------------------------------------------------------------- +%% D e f i n i n g k e y s f o r e a c h s e c t i o n +\def\itf@ttl@newsection#1#2{% #1=section, #2=/* or empty + \ifcsundef{#1}% sectionning command undefined: temporarily defined in straight class + {\itf@ttl@createsection{#1}} + {}% + \ifblank{#2}{% + \pgfqkeys{/itf/titlesec/#1}{% these keys do not exist for starred/numberless sections + class/.code=\itf@ttl@titleclass{#1}##1[]\@nil,% with \@addtoreset + class/.value required,% if sup-level is given + class*/.code=\itf@ttl@titleclass*{#1}##1[]\@nil,% without \@addtoreset + class*/.value required,% even if sup-level is given + shape/.initial=,% initial shapes set by titlesec.sty for not numbered sections. + the#1/.store in cs=the#1,% + the#1/.default=\pgfkeysvalueof{/itf/titlesec/#1/label},% + }} + {% starred (numberless) unless titlesec, we do not put the default shape to hang, + \pgfkeysifdefined{/itf/titlesec/#1/shape}% but to the shape of the not starred + {\pgfkeysgetvalue{/itf/titlesec/#1/shape}\itf@tp}% sectionning command + {\def\itf@tp{hang}}% + \pgfkeyslet{/itf/titlesec/#1#2/shape}\itf@tp% + }% + \pgfqkeys{/itf/titlesec/#1#2}{% + shape/.value required,% + shape@cs/.initial=\csname ttlh@\pgfkeysvalueof{/itf/titlesec/#1#2/shape}\endcsname,% constant + shape@cs/.is private=interface-titlesec,% constant + font/.store as code,% + format/.alias*=font,% + label/.store as code,% + sep/.estore as glue,% + labelsep/.alias*=sep,% + before/.store as code,% + after/.store as code,% + indent first/.true=\pgfkeyssetvalue{/itf/titlesec/#1#2/indent first}{\@ne},% + indent first/.false=\pgfkeyssetvalue{/itf/titlesec/#1#2/indent first}{\z@},% + identfirst/.alias=indent first,% + indent first=true,% + left/.estore as glue,% + top/.estore as glue,% + bottom/.estore as glue,% + right/.estore as glue,% + break/.code=\ifblank{##1} + {\cslet{#1break}\@empty} + {\protected\csdef{#1break}{##1}},% + break*/.code=\protected\apptocs{#1break}{##1},% + break+/.alias=break*,% + mark/.code=\ifblank{##1} + {\cslet{#1mark}\@gobble} + {\protected\long\csdef{#1mark}####1{##1}},% + mark/.default=,% + }% \pgfkeys + \ifblank{#2}{% no default marks for stared (numberless) \section* + \itf@AfterPackage{interfaces-marks}{% requires interfaces-marks + \pgfkeys{/itf/titlesec/#1/mark/.default=\marksthe{#1}{##1}}% + }% AfterPackage interfaces-mark + \itf@AfterPackage{interfaces-bookmark}{% requires interfaces-bookmark + \pgfqkeys{/itf/titlesec/#1}{% does not exist for starred sections + bookmark/.is multiple choice,% + bookmark/level/.estore in cs=toclevel@#1,% depth of the bookmark + bookmark/level/.default=,% + bookmark/level/.blank=\ifcsvoid{toclevel@#1}{99}{\csuse{toclevel@#1}},% + bookmark/toclevel/.alias=bookmark/level,% + bookmark/bold/.code=\ifblank{##1} + {\pgfkeyslet{/itf/titlesec/#1/bookmark/bold}\@empty} + {\pgfkeyssetvalue{/itf/titlesec/#1/bookmark/bold}{bold=##1,}},% + bookmark/bold/.default=true,% + bookmark/bold*/.code=\ifblank{##1} + {\pgfkeyslet{/itf/titlesec/#1/bookmark/bold*}\@empty} + {\pgfkeyssetvalue{/itf/titlesec/#1/bookmark/bold*}{bold*=##1,}},% + bookmark/bold*/.default=true,% + bookmark/italic/.code=\ifblank{##1} + {\pgfkeyslet{/itf/titlesec/#1/bookmark/italic}\@empty} + {\pgfkeyssetvalue{/itf/titlesec/#1/bookmark/italic}{italic=##1,}},% + bookmark/italic/.default=true,% + bookmark/italic*/.code=\ifblank{##1} + {\pgfkeyslet{/itf/titlesec/#1/bookmark/italic*}\@empty} + {\pgfkeyssetvalue{/itf/titlesec/#1/bookmark/italic}{italic*=##1,}},% + bookmark/italic*/.default=true,% + bookmark/color/.code=\ifblank{##1} + {\pgfkeyslet{/itf/titlesec/#1/bookmark/color}\@empty} + {\pgfkeyssetvalue{/itf/titlesec/#1/bookmark/color}{color=##1,}},% + bookmark/color/.default=,% + bookmark/color*/.code=\ifblank{##1} + {\pgfkeyslet{/itf/titlesec/#1/bookmark/color*}\@empty} + {\pgfkeyssetvalue{/itf/titlesec/#1/bookmark/color*}{color*=##1,}},% + bookmark/color*/.default=,% + bookmark/on/.code=\pgfkeyssetvalue{/itf/titlesec/#1/bookmark/on}{disable=false,},% + bookmark/on/.value forbidden,% + bookmark/off/.code=\pgfkeyssetvalue{/itf/titlesec/#1/bookmark/on}{disable=true,},% + bookmark/off/.value forbidden,% + bookmark/none/.alias=bookmark/off,% + bookmark/style/.code=\ifblank{##1} + {\pgfkeyslet{/itf/titlesec/#1/bookmark/style}\@empty} + {\pgfkeyssetvalue{/itf/titlesec/#1/bookmark/style}{style=##1,}},% + bookmark/style/.default=,% + bookmark/.unknown/.code=\pgfkeysEsetvalue{/itf/titlesec/#1/bookmark/other}{\pgfkeyscurrentname={##1}},% + bookmark/bold/.initial=,% + bookmark/bold*/.initial=,% + bookmark/italic/.initial=,% + bookmark/italic*/.initial=,% + bookmark/color/.initial=,% + bookmark/color*/.initial=,% + bookmark/on/.initial=,% + bookmark/style/.initial=,% + }}% \AfterPackage*{interfaces-bookmark} + }% not starred (numberless) \section + {}% starred/numberless \section*: do not create the keys +}% \itf@ttl@newsection +%% bookmarks styles for sectionning commands: +\@makeother\# +\itf@AfterPackage{interfaces-bookmark}{% + \itf@patch\itf@preapptocmd\addcontentsline % #2=section name in + {\begingroup\itf@ttl@BKM{/itf/titlesec/#2/bookmark}}% \addcontentsline + {\endgroup} + {\PackageInfo{interfaces-titlesec} + {Command \string\addcontentsline\space successfully patched!}} + {\PackageWarning{interfaces-titlesec} + {Patch of \string\addcontentsline\space failed + \MessageBreak bookmark-style specs for sections + \MessageBreak will be unavailable}}% +}% AfterPackage interfaces-bookmark +\catcode`\#=6 +\def\itf@ttl@BKM#1{% + \pgfkeysifdefined{#1/.@cmd} + {% + \edef\itf@tp{% do nothing if the keys are not set (shortcut) + \pgfkeysvalueof{#1/bold}% + \pgfkeysvalueof{#1/bold*}% + \pgfkeysvalueof{#1/italic}% + \pgfkeysvalueof{#1/italic*}% + \pgfkeysvalueof{#1/color}% + \pgfkeysvalueof{#1/color*}% + \pgfkeysvalueof{#1/on}% + \pgfkeysvalueof{#1/style}}% + \ifx\itf@tp\@empty + \else + \global\pgfkeyslet{#1/bold*}\@empty + \global\pgfkeyslet{#1/italic*}\@empty + \global\pgfkeyslet{#1/color*}\@empty + \expandafter\bookmarksetup\expandafter{\itf@tp}% + \pgfkeysifdefined{/itf/bookmark/*}% + {% \bookmarksetup{color*=} overwrites \sectionformat...{bookmark/color*=} + \pgfkeysgetvalue{/itf/bookmark/*}\itf@tp + \expandafter\bookmarksetup\expandafter{\itf@tp}% + } + {}% + \fi} + {}% +}% \itf@ttl@BKM +%%----------------------------------------------------------------------------- +%% b o t t o m t i t l e s +\newrobustcmd*\bottomtitles{\@ifnextchar\bgroup + \itf@setbottomtitlespace + {\afterassignment\itf@set@bottomtitle@space\itf@sk}% +}% \bottomtitles +\def\itf@setbottomtitlespace#1{% + \@defaultunits\itf@sk#1\textheight\relax\@nnil + \itf@set@bottomtitle@space +}% \itf@setbottomtitlespace +\def\itf@set@bottomtitle@space{\edef\bottomtitlespace{\the\itf@sk}} +\endinput +%% +%% End of file `interfaces-titlesec.sty'. |