%%
%% This is file `interfaces-hypbmsec.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% interfaces.dtx  (with options: `hypbmsec')
%% 
%% This is a generated file.
%% 
%% interfaces : 2011/01/19 v2.9 - 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-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: interfaces with keys for other packages (FC)
%% Copyright (C) 2010 by Florent Chervet <florent.chervet@free.fr>
%% 
\let\CTANLinks=y
\let\interfacesquick=n
\ProvidesPackage{interfaces-hypbmsec}
   [2011/01/19 v2.9 lastsection,title,anchor, etc. (FC)]
\RequirePackage{interfaces-base}
\RequirePackage{gettitlestring}
\itf@Check@Package{hypbmsec}
\def\itf@hbs@do#1{%
   \xdef\itf@hbs@currentname{\expandafter\itf@strip@at\string#1}%
   \let\hbs@tocstring\relax % <for starred sections>
   \let\hbs@bmstring\relax  % <for starred sections>
   \@ifstar
      {\itf@hbs@ssect#1}%
      {\let\hbs@seccmd=#1\hbs@checkarg}%
}% \itf@hbs@do
\let\hbs@do\itf@hbs@do
\itf@patch\pretocmd\hbs@process{%
   \itf@hbs@process{#1}%
   }%
   {\@PackageInfoNoLine{interfaces-hypbmsec}
      {\string\hbs@process\space successfully patched}}
   {\@PackageWarningNoLine{interfaces-hypbmsec}
      {Command \string\hbs@process\space could not be patched
      \MessageBreak loading of `interfaces-hypbmsec` aborted
      \MessageBreak \string\lastsection\space will not work}%
      \endinput}%
\long\def\itf@hbs@ssect#1#2{% starred section
   \itf@Not@titlesec#1
      {\expandafter\itf@hbs@last@starred\expandafter{\itf@hbs@currentname}{#2}}
      {\let\itf@hbs@last\itf@hbs@last@starred@ttl}% <expanded at \ttl@finmarks>
   #1*{#2}%
}% \itf@hbs@ssect
\long\def\itf@hbs@process#1{% not starred
   \itf@Not@titlesec \hbs@seccmd
      {%
      \ifdefined\hyper@anchor
         \expandafter\itf@hbs@last@nostar@nottl@Hy\expandafter{\itf@hbs@currentname}{#1}%
      \else
         \expandafter\itf@hbs@last@nostar@nottl\expandafter{\itf@hbs@currentname}{#1}%
      \fi
      }%
      {\let\itf@hbs@last \itf@hbs@last@nostar@ttl}% <expanded at \ttl@finmarks>
}% \itf@hbs@process
\long\def\itf@hbs@last@starred#1#2{% <expanded immediately>
   \GetTitleString{#2}\let\itf@hbs@currenttitle\GetTitleStringResult
   \begingroup
      \let\@elt \itf@resetlastsections
      \globaldefs \@ne
      \expandafter\let\csname last#1title\endcsname\itf@hbs@currenttitle
      \expandafter\let\csname last#1toc\endcsname\@empty
      \expandafter\let\csname last#1bookmark\endcsname\@empty
      \expandafter\let\csname last#1anchor\endcsname\relax
      \let\lastsectionname \itf@hbs@currentname
      \csname cl@#1\endcsname
   \endgroup
}% \itf@hbs@last@starred
\def\itf@hbs@last@starred@ttl{% <expanded at \ttl@finmarks>
   \global\let\itf@hbs@last \@empty
   \expandafter\itf@hbs@last@starred
      \expandafter\itf@hbs@currentname \expandafter{\ttl@savetitle}%
}% \itf@hbs@last@starred@ttl
\long\def\itf@hbs@last@nostar#1#2{%
   \GetTitleString{#2}\let\itf@hbs@currenttitle\GetTitleStringResult
   \begingroup
      \let\@elt \itf@resetlastsections
      \globaldefs \@ne
      \expandafter\let\csname last#1title\endcsname\itf@hbs@currenttitle
      \expandafter\let\csname last#1toc\expandafter\endcsname
         \csname \ifx\hbs@tocstring\relax
               itf@hbs@currenttitle\else hbs@tocstring\fi \endcsname
      \expandafter\let\csname last#1bookmark\expandafter\endcsname
         \csname \ifx\hbs@bmstring\relax
                           last#1toc\else hbs@bmstring\fi \endcsname
      \expandafter\let\csname last#1anchor\endcsname\HyperLocalCurrentHref
      \let\lastsectionname \itf@hbs@currentname
      \csname cl@#1\endcsname
   \endgroup
}% \itf@hbs@last@starred
\def\itf@hbs@last@nostar@ttl{% <expanded at \ttl@finmarks>
   \global\let\itf@hbs@last \@empty
   \expandafter\itf@hbs@last@nostar
         \expandafter\itf@hbs@currentname \expandafter{\ttl@savetitle}%
}% \itf@hbs@last@nostar@ttl
\long\def\itf@hbs@last@nostar@nottl#1#2{% <expanded at \cl@section>
   \expandafter\let\expandafter\itf@hbs@cl@ORI\csname cl@#1\endcsname
   \expandafter\def\csname cl@#1\endcsname{%
      \expandafter\let\csname cl@#1\endcsname\itf@hbs@cl@ORI
      \itf@hbs@cl@ORI
      \itf@hbs@last@nostar {#1}{#2}}%
}% \itf@hbs@last@nostar@nottl
\long\def\itf@hbs@last@nostar@nottl@Hy#1#2{% <expanded at \hyper@anchorend>
   \begingroup
   \toks@\expandafter{%
      \expandafter\def\expandafter\hyper@anchorend
                     \expandafter{\hyper@anchorend}%
      \itf@hbs@last@nostar{#1}{#2}}%
   \edef\x{\endgroup
      \def\noexpand\hyper@anchorend{\the\toks@}%
   }\x
}% \itf@hbs@last@nostar@nottl@Hy
\def\itf@Not@titlesec#1{\@firstoftwo}
\AfterPackage*{titlesec}{%
\def\itf@Not@titlesec#1{\begingroup
   \@onelevel@sanitize#1%
   \edef\@tempa{\noexpand\in@
      {\noexpand\@nil \string\ttl@}
      {\noexpand\@nil #1}%
   }\@tempa
   \expandafter\endgroup
   \ifin@ \expandafter\@secondoftwo
   \else  \expandafter\@firstoftwo
   \fi
}% \itf@Not@titlesec
}% AfterPackage titlesec
\AfterPackage*{titlesec}{%
\expandafter\def\expandafter\ttl@finmarks\expandafter{%
   \expandafter\itf@hbs@last \ttl@finmarks}%
\let\itf@hbs@last \@empty
}% AfterPackage
\def\itf@resetlastsections#1{%
   \expandafter\let\csname last#1title\endcsname\relax
   \expandafter\let\csname last#1toc\endcsname\relax
   \expandafter\let\csname last#1bookmark\endcsname\relax
   \expandafter\let\csname last#1anchor\endcsname\relax
   \csname cl@#1\endcsname
}% \itf@resetlastsections
\let\lastsectionname\relax
\@for\itf@tp:=part,section,subsection,subsubsection,paragraph,subparagraph%
  \do{\expandafter\let\csname last\itf@tp title\endcsname\relax
      \expandafter\let\csname last\itf@tp toc\endcsname\relax
      \expandafter\let\csname last\itf@tp bookmark\endcsname\relax
      \expandafter\let\csname last\itf@tp anchor\endcsname\relax
   }%
\AtBeginDocument{\ifundef\chapter{}
   {\let\lastchaptertitle\relax
    \let\lastchaptertoc\relax
    \let\lastchapterbookmark\relax
    \let\lastchapteranchor\relax}%
}%
\endinput
%%
%% End of file `interfaces-hypbmsec.sty'.
