[Tex/LaTex] Current section title macro using titlesec

etoolboxmacrossectioningtitlesec

I have a macro that contains the title for the current section, however when using the titlesec package, it no longer works for \section and \subsection. I know titlesec redefines the functions I'm using, but have not been able to figure out a workaround.

MWE:

\documentclass{article}

\usepackage{etoolbox}

\makeatletter
\pretocmd{\@sect}{\gdef\currtitle{#7}}{}{}
\pretocmd{\@ssect}{\gdef\currtitle{#5}}{}{}
\pretocmd{\@part}{\gdef\currtitle{#1}}{}{}
\pretocmd{\@spart}{\gdef\currtitle{#1}}{}{}
\makeatother

\usepackage{titlesec}

\begin{document}
\tableofcontents

\part*{First Starred part}
\currtitle

\part{First Un-starred part}
\currtitle

\section*{First Starred Section}
\currtitle

\section{Second Un-starred Section}
\currtitle

\subsection*{First Starred Subsection}
\currtitle

\subsection{Second Un-starred Subsection}
\currtitle

\end{document}

Best Answer

For \section and lower level titles you can do

\apptocmd{\ttl@straight@i}{\global\let\currtitle\ttl@savetitle}{}{}

However, if you're not going to hide titles in groups, the simple

\makeatletter
\newcommand{\currtitle}{\ttl@savetitle}
\makeatother

should suffice.

For \part your code still works and I believe also the similar one for \chapter.

In order to save only the current first level section title one can modify the code to

\documentclass{article}
\usepackage{titlesec}
\usepackage{etoolbox,pdftexcmds}

\makeatletter
\apptocmd{\ttl@straight@i}{\update@currsectitle{#1}}{}{}
\def\update@currsectitle#1{%
  \ifnum\pdf@strcmp{#1}{section}=0
    \global\let\currsectitle\ttl@savetitle
  \fi
}
\makeatother

\begin{document}

\section{Title of the first section}

\currsectitle

\subsection{A subsection}

\currsectitle

\section{Title of the second section}

\currsectitle

\end{document}