¿Cómo agregar un TOC personalizado ("Desglose de secciones" automatizado) después de cada comando \capítulo?

¿Cómo agregar un TOC personalizado ("Desglose de secciones" automatizado) después de cada comando \capítulo?

Digamos que tenemos un documento dividido en capítulos y queremos al inicio de cada capítulo agregar entre dos líneas horizontales un "Desglose de Secciones" que muestre todos los sectionsy subsectionsdel Capítulo con nuestro texto preferido antes de todas o algunas de las secciones. .

Por ejemplo... Para el próximo documento/MWE

\documentclass{book}
\usepackage{amsmath}
\usepackage{capt-of}
\usepackage{pgffor}
\usepackage{hyperref}
\makeatletter
\hypersetup{colorlinks=true, linkcolor=black, citecolor=black, filecolor=black, urlcolor=black,pdftitle = {\@title}}
\makeatother

\newcounter{mychapter}

\renewcommand\thepart{\Alph{part}}
\renewcommand\thechapter{\thepart.\arabic{mychapter}}
\renewcommand\thesection{\thechapter.\arabic{section}}
\renewcommand\thesubsection{\thesection.\arabic{subsection}}


\usepackage{tocloft}
\renewcommand\cftchapfont{\large\bfseries}
\setlength{\cftchapindent}{2.3em}
\setlength{\cftchapnumwidth}{2.6em}
\renewcommand\cftsecfont{\normalsize}
\setlength{\cftsecindent}{4.9em}
\setlength{\cftsecnumwidth}{2.9em}
\setlength{\cftsubsecnumwidth}{4em}
\setlength{\cftsubsecindent}{7em}

\let\oldpart\part
\def\part#1{\oldpart{#1}\setcounter{mychapter}{0}}
\let\oldchapter\chapter
\def\chapter#1{\stepcounter{mychapter}\oldchapter{#1}}



\title{Some Math Staff}
\author{Leledakis, K.}

\begin{document}
\maketitle
\tableofcontents
\listoffigures

\part{First Part}

\chapter{Some Mathematical Functions}
\section{The function $\mathbf{f(x)=c}$}\label{Sec:UFxC}
\subsection{Understanding the function}
This function is independent from the variable $x$ and thus\ldots
\subsection{Plotting the function}
By understanding the content of Subsection~\ref{Sec:UFxC}\ldots

\noindent\begin{minipage}[inner sep=0,outer sep=0]{\textwidth}
  \centering
  \captionof{figure}{Plot of $f(x)=c$}
\end{minipage}
\subsection{Examples}
\ldots

\section{The function $\protect\mathbf{f(x)=c\cdot x}$}\label{Sec:UFxCx}
\subsection{Understanding the function}
This function depends on the variable $x$ and thus\ldots
\subsection{Plotting the function}
By understanding the content of Subsection~\ref{Sec:UFxCx}\ldots

\noindent\begin{minipage}[inner sep=0,outer sep=0]{\textwidth}
  \centering
  \captionof{figure}{Plot of $f(x)=c\cdot x$}
\end{minipage}
\subsection{Examples}
\ldots

\section{The function $\protect\mathbf{f(x)=c\cdot x+d}$}\label{Sec:UFxCxD}
\subsection{Understanding the function}
This function depends on the variable $x$ and thus\ldots
\subsection{Plotting the function}
By understanding the content of Subsection~\ref{Sec:UFxCxD}\ldots

\noindent\begin{minipage}[inner sep=0,outer sep=0]{\textwidth}
  \centering
  \captionof{figure}{Plot of $f(x)=c\cdot x+d$}
\end{minipage}
\subsection{Examples}
\ldots

\chapter{More Functions}
\section{The function $\protect\mathbf{f(x)=x^2}$}\label{Sec:UFxS}
\subsection{Understanding the function}
This function depends on the variable $x$ and thus\ldots
\subsection{Plotting the function}
By understanding the content of Subsection~\ref{Sec:UFxS}\ldots

\noindent\begin{minipage}[inner sep=0,outer sep=0]{\textwidth}
  \centering
  \captionof{figure}{Plot of $f(x)=x^2$}
\end{minipage}
\subsection{Examples}
\ldots

\section{The function $\protect\mathbf{f(x)=c\cdot x^2}$}\label{Sec:UFCxS}
\subsection{Understanding the function}
This function depends on the variable $x$ and thus\ldots
\subsection{Plotting the function}
By understanding the content of Subsection~\ref{Sec:UFCxS}\ldots

\noindent\begin{minipage}[inner sep=0,outer sep=0]{\textwidth}
  \centering
  \captionof{figure}{Plot of $f(x)=c\cdot x^2$}
\end{minipage}
\subsection{Examples}
\ldots

\section{The function $\protect\mathbf{f(x)=c\cdot x^2+d}$}\label{Sec:UFCxSD}
\subsection{Understanding the function}
This function is depends on the variable $x$ and thus\ldots
\subsection{Plotting the function}
By understanding the content of Subsection~\ref{Sec:UFCxSD}\ldots

\noindent\begin{minipage}[inner sep=0,outer sep=0]{\textwidth}
  \centering
  \captionof{figure}{Plot of $f(x)=c\cdot x^2+d$}
\end{minipage}
\subsection{Examples}
\ldots
\end{document}

Tiene un TOC como este:

ingrese la descripción de la imagen aquí

Quiero algo como esto:

ingrese la descripción de la imagen aquí

sobre el Capítulo A.1

Pero también algo como esto:

sobre el Capítulo A.2

ingrese la descripción de la imagen aquí

Respuesta1

La solución es etiquetar automáticamente las secciones/subsecciones (solía \defredefinirlas pero podrías usar etoolbox-creo- para agregar esto al comando) y hacer una lista con tu apariencia preferida usando un foreachbucle en ellas (yo usé paquete 'pgffor' para esto). Un problema es que tenemos que detenernos para agregar texto después de alguna sección y esto se soluciona con el argumento opcional de mi \SBDcomando (que termina en -1 para que se incluya la última sección) y también otro problema fue dejar de agregar subsecciones ( y secciones) cuando no hay ninguna etiqueta definida (lo que \@ifundefinedayudó).

\documentclass{book}
\usepackage{amsmath}
\usepackage{capt-of}
\usepackage{pgffor}
\usepackage{hyperref}
\makeatletter
\hypersetup{colorlinks=true, linkcolor=black, citecolor=black, filecolor=black, urlcolor=black,pdftitle = {\@title}}
\makeatother

\newcounter{mychapter}

\renewcommand\thepart{\Alph{part}}
\renewcommand\thechapter{\thepart.\arabic{mychapter}}
\renewcommand\thesection{\thechapter.\arabic{section}}
\renewcommand\thesubsection{\thesection.\arabic{subsection}}


\usepackage{tocloft}
\renewcommand\cftchapfont{\large\bfseries}
\setlength{\cftchapindent}{2.3em}
\setlength{\cftchapnumwidth}{2.6em}
\renewcommand\cftsecfont{\normalsize}
\setlength{\cftsecindent}{4.9em}
\setlength{\cftsecnumwidth}{2.9em}
\setlength{\cftsubsecnumwidth}{4em}
\setlength{\cftsubsecindent}{7em}

\let\oldpart\part
\def\part#1{\oldpart{#1}\setcounter{mychapter}{0}}

\makeatletter
\let\oldsection\section
\let\oldsubsection\subsection
\let\olldchapter\chapter
\def\oldchapter{\stepcounter{mychapter}\olldchapter}
\makeatletter

\def\chapter{%
\@ifstar{\@StarredC}{\@nonStarredC}%
}
\def\@StarredC{%
\@ifnextchar[%
{\GenericWarning{}{Warning: A starred chapter can not have parameters. I am going to ignore them!}\@StarredCWith}%
{\@StarredCWithout}%
}      
\def\@StarredCWith[#1]#2{%
\oldchapter*{#2}%
}
\def\@StarredCWithout#1{
\oldchapter*{#1}%
}
\def\@nonStarredC{%
\@ifnextchar[%
{\@nonStarredCWith}%
{\@nonStarredCWithout}%
}
\def\@nonStarredCWith[#1]#2{%
\oldchapter[#1]{#2}\label{Ch:\thechapter}%
}
\def\@nonStarredCWithout#1{%
\oldchapter{#1}\label{Ch:\thechapter}%
}



\def\section{%
\@ifstar{\@Starred}{\@nonStarred}%
}
\def\@Starred{%
\@ifnextchar[%
{\GenericWarning{}{Warning: A starred section can not have parameters. I am going to ignore them!}\@StarredWith}%
{\@StarredWithout}%
}      
\def\@StarredWith[#1]#2{%
\oldsection{#2}\label{\thechapter:\arabic{section}}%
}
\def\@StarredWithout#1{
\oldsection*{#1}\label{\thechapter:\arabic{section}}%
}
\def\@nonStarred{%
\@ifnextchar[%
{\@nonStarredWith}%
{\@nonStarredWithout}%
}
\def\@nonStarredWith[#1]#2{%
\oldsection[#1]{#2}\label{\thechapter:\arabic{section}}%
}
\def\@nonStarredWithout#1{%
\oldsection{#1}\label{\thechapter:\arabic{section}}%
}



\def\subsection{%
\@ifstar{\@StarredS}{\@nonStarredS}%
}
\def\@StarredS{%
\@ifnextchar[%
{\GenericWarning{}{Warning: A starred section can not have parameters. I am going to ignore them!}\@StarredSWith}%
{\@StarredSWithout}%
}      
\def\@StarredSWith[#1]#2{%
\oldsubsection*{#2}%
}
\def\@StarredSWithout#1{%
\oldsubsection*{#1}%
}
\def\@nonStarredS{%
\@ifnextchar[%
{\@nonStarredSWith}%
{\@nonStarredSWithout}%
}
\def\@nonStarredSWith[#1]#2{%
\oldsubsection[#1]{#2}\label{\thesection:\arabic{subsection}}%
}
\def\@nonStarredSWithout#1{%
\oldsubsection{#1}\label{\thesection:\arabic{subsection}}%
}



%SectionBreakDown

\newcounter{secc}
\newcounter{ssecc}
\newcounter{tssecc}
\xdef\OverC{0}

\newcommand{\myalph}[1]{\ifnum\OverC>0\alph{tssecc}\alph{tssecc}\else\ifnum\value{#1}>26\setcounter{tssecc}{\numexpr\value{#1}-26}\alph{tssecc}\alph{tssecc}\xdef\OverC{1}\else\alph{#1}\fi\fi}

\newcommand\SBD[2][1,-1]{%
  \xdef\OverC{0}%
  \def\Continued{1}%
  \def\ToBeContinued{-1}%
  \foreach \opt[count=\ll from 1] in {#1}{%
    \ifnum\ll=1
    \xdef\Continued{\opt}%
    \else
    \xdef\ToBeContinued{\opt}%
    \fi
  }%
  \ifx\ToBeContinued\empty
  \xdef\ToBeContinued{-1}%
  \fi
  \ifx\Continued\empty
  \xdef\Continued{1}%
  \fi

%\section{Section breakdown}

\ifnum\Continued>1
\relax%
\else
\noindent{\huge\bfseries Learning Objectives}%

\noindent\rule{\textwidth}{2pt}\vspace{0.5cm}
\setcounter{secc}{0}%
\setcounter{ssecc}{0}%
\setcounter{tssecc}{0}%
\fi

{\noindent #2}


\ifnum\ToBeContinued<0
\def\ContinueUntil{100}%
\else
\def\ContinueUntil{\ToBeContinued}%
\fi

\foreach \mk in {\Continued,...,\ContinueUntil}{%
  \@ifundefined{r@\thechapter:\mk}{%
    \breakforeach%
  }{%
    \setcounter{secc}{\mk}%
    \ifnum\mk<0
      \breakforeach%
    \else
    \ifnum\mk>\ContinueUntil
    \breakforeach%
    \else
         \noindent{\bfseries{\nameref{\thechapter:\mk}}}\\
         \foreach \ml in {1,...,100}{%
            \@ifundefined{r@\thechapter.\mk:\ml}{%
               \breakforeach%
            }{%
               \setcounter{ssecc}{\ml}%
               \stepcounter{tssecc}%
               \ifnum\mk>0
                     \hspace*{0.5cm}\myalph{tssecc}.\hspace{0.3cm}\parbox[t]{0.9\textwidth}{\setlength{\baselineskip}{4pt}\nameref{\thechapter.\mk:\ml}}\\[1.2ex]
                \fi
            }%
        }%
        \fi
    \fi
  }%
}
%\begin{enumerate}[label={\arabic{enumi}.},itemsep=0pt]
%\foreach \i in {#3,...,#4}
%{\item \nameref{\thechapter:\i}}
%\end{enumerate}

\ifnum\ToBeContinued>0
\relax%
\else
\vspace{-0.5cm}
\par
\noindent\rule{\textwidth}{2pt}
\fi
}
\makeatother


\title{Some Math Staff}
\author{Leledakis, K.}

\begin{document}
\maketitle
\tableofcontents
\listoffigures

\part{First Part}

\chapter{Some Mathematical Functions}
\SBD{In this Section we are going to analyze linear functions:}
\section{The function $\mathbf{f(x)=c}$}\label{Sec:UFxC}
\subsection{Understanding the function}
This function is independent from the variable $x$ and thus\ldots
\subsection{Plotting the function}
By understanding the content of Subsection~\ref{Sec:UFxC}\ldots

\noindent\begin{minipage}[inner sep=0,outer sep=0]{\textwidth}
  \centering
  \captionof{figure}{Plot of $f(x)=c$}
\end{minipage}
\subsection{Examples}
\ldots

\section{The function $\protect\mathbf{f(x)=c\cdot x}$}\label{Sec:UFxCx}
\subsection{Understanding the function}
This function depends on the variable $x$ and thus\ldots
\subsection{Plotting the function}
By understanding the content of Subsection~\ref{Sec:UFxCx}\ldots

\noindent\begin{minipage}[inner sep=0,outer sep=0]{\textwidth}
  \centering
  \captionof{figure}{Plot of $f(x)=c\cdot x$}
\end{minipage}
\subsection{Examples}
\ldots

\section{The function $\protect\mathbf{f(x)=c\cdot x+d}$}\label{Sec:UFxCxD}
\subsection{Understanding the function}
This function depends on the variable $x$ and thus\ldots
\subsection{Plotting the function}
By understanding the content of Subsection~\ref{Sec:UFxCxD}\ldots

\noindent\begin{minipage}[inner sep=0,outer sep=0]{\textwidth}
  \centering
  \captionof{figure}{Plot of $f(x)=c\cdot x+d$}
\end{minipage}
\subsection{Examples}
\ldots

\chapter{More Functions}
\SBD[1,2]{Now we will start with the analysis of the functions:}
\SBD[3,-1]{And will finish with:}
\section{The function $\protect\mathbf{f(x)=x^2}$}\label{Sec:UFxS}
\subsection{Understanding the function}
This function depends on the variable $x$ and thus\ldots
\subsection{Plotting the function}
By understanding the content of Subsection~\ref{Sec:UFxS}\ldots

\noindent\begin{minipage}[inner sep=0,outer sep=0]{\textwidth}
  \centering
  \captionof{figure}{Plot of $f(x)=x^2$}
\end{minipage}
\subsection{Examples}
\ldots

\section{The function $\protect\mathbf{f(x)=c\cdot x^2}$}\label{Sec:UFCxS}
\subsection{Understanding the function}
This function depends on the variable $x$ and thus\ldots
\subsection{Plotting the function}
By understanding the content of Subsection~\ref{Sec:UFCxS}\ldots

\noindent\begin{minipage}[inner sep=0,outer sep=0]{\textwidth}
  \centering
  \captionof{figure}{Plot of $f(x)=c\cdot x^2$}
\end{minipage}
\subsection{Examples}
\ldots

\section{The function $\protect\mathbf{f(x)=c\cdot x^2+d}$}\label{Sec:UFCxSD}
\subsection{Understanding the function}
This function is depends on the variable $x$ and thus\ldots
\subsection{Plotting the function}
By understanding the content of Subsection~\ref{Sec:UFCxSD}\ldots

\noindent\begin{minipage}[inner sep=0,outer sep=0]{\textwidth}
  \centering
  \captionof{figure}{Plot of $f(x)=c\cdot x^2+d$}
\end{minipage}
\subsection{Examples}
\ldots
\end{document}

PD: para un contador más grande (ese \alphcomando no se puede aceptar... usé aa, bb, cc, etc. para continuar la enumeración)

Salida: El resultado de la pregunta.

información relacionada