Оглавление с указанием размеров каждой из частей

Оглавление с указанием размеров каждой из частей

В продолжение моегопредыдущий вопросПо теме создания оглавления для каждого подраздела я хотел бы поднять следующую задачу.

Создавайте локальные и глобальные оглавления таким образом, чтобы строка, показывающая организационные единицы документа: раздел, подраздел, подподраздел, отображала общее количество абзацев в нем.

Спасибо и просьба об исправлении ошибки

Большое спасибоjfbuза его подробный и умный ответ. Загадочный вызов имени в его ответе занял много часов моего времени, но мне удалось разбить фреймы на подпункты (для этого есть веская причина, поскольку документ может содержать абзацы, которые не являются фреймами). Однако мне не удалось создать полные оглавления, как я хотел.

Я сузил проблему его использования до случая, когда некоторые оглавления пусты.

Вот MWE, смоделированный по образцу jfbujfbuработа.

\documentclass{article}
\usepackage{beamerarticle}
\usepackage{etoc}

\usepackage{etoc}

% Override action when frame title is encountered:
\setbeamertemplate{frametitle}{\relax
  % Similar to \hrule but above the base line
  \def\Hrulefill{\leavevmode\leaders\hrule height 0.8ex depth -0.6ex\hfill\kern0pt}
  \def\frameTitle{\relax
    \itshape
    \small
    \bfseries
    \protect\(\cdot\protect\)\insertframenumber.~\insertframetitle
    \space
    \footnotesize \mdseries
    \insertframesubtitle
  }%
  \typeout{after defs}\relax
  \Hrulefill
  \typeout{after hrule}\relax
  \fbox{\begin{minipage}{0.7\linewidth}\frameTitle\end{minipage}}%\relax
  \typeout{after title}\relax
  \addcontentsline{toc}{subparagraph}{\frameTitle}\relax
   \Hrulefill
  \typeout{after hrulefill}\relax
  \par\noindent
  \typeout{after par no indent}\relax
}
\newcounter{parinsection}
    \newcounter{parinsubsection}
    \newcounter{parinsubsubsection}


    \makeatletter % cf etoc manual "another compatibility mode"
      \let\orig@lsection\l@section
      \let\orig@lsubsection\l@subsection
      \let\orig@lsubsubsection\l@subsubsection
    %
    \etocsetstyle{section}
     {}
     {\typeout{prefix in section}}
     {\typeout{item is section}\orig@lsection {\numberline{\etocnumber}\etocname{} 
               (\Yossi frames)}{\etocpage}}
     {}

    \etocsetstyle{subsection}
    {\typeout{begin of SUBSECTION}}
     {\typeout{prefix in subsection}}
     {\typeout{item in susection}\orig@lsubsection {\numberline{\etocnumber}\etocname{} 
     \typeout{before frames count}(\Yossi frames)}{\etocpage}}
               {\typeout{end of SUBSECTION}}

    \etocsetstyle{subsubsection}
    {\typeout{Begin SUBSUBSECTION}}
    {\typeout{prefix sub sub section}}
     {\relax
       \typeout{item in sub sub section}\relax
       \orig@lsubsubsection 
       {\etocname{} (\Yossi frames)}{\etocpage}
     }
     {\typeout{End SUBSUBSECTION}}

    \etocsetstyle {subparagraph}
    {\typeout{BEGIN SUBPARAGRAPH}}
     {}
     {\stepcounter{parinsection}%
      \stepcounter{parinsubsection}%
      \stepcounter{parinsubsubsection}}
      {\typeout{END SUBPARAGRAPH}\xdef\yossic{\yossic{\arabic{parinsubsubsection}}}}

    \newcommand\yossia {}
    \newcommand\yossib {}
    \newcommand\yossic {}
    \newcommand\Yossi {\expandafter\Yossi@ \yossia\@nil}
    \def\Yossi@ #1#2\@nil {\gdef\yossia{#2}#1 }

    \makeatother

    \newcommand{\CountFramesFor}[1]{%
        \begingroup % first pass
            \etocsetstyle {section}
                          {}
                          {}%
                          {\setcounter{parinsection}{0}}
                          {}%
            \etocsetstyle {subsection}
                     {\xdef\yossib{}}
                          {}
                          {\setcounter{parinsubsection}{0}}
                     {\xdef\yossia{\yossia{\arabic{parinsection}}\yossib}}%
            \etocsetstyle {subsubsection}
                     {\xdef\yossic{}}
                          {}
                          {\setcounter{parinsubsubsection}{0}}
                     {\xdef\yossib{\yossib{\arabic{parinsubsection}}\yossic}}%
            \gdef\yossia{}\gdef\yossib{}\gdef\yossic{}%
            \etocsettocstyle {}{}%
            \etocsetnexttocdepth {subparagraph}%
            #1%
        \endgroup
    }%

    \newcommand{\GlobalTOC}{%
      \typeout{before counting}\relax
         \CountFramesFor\tableofcontents
         \typeout{after counting}\relax
        \etocsetnexttocdepth{subsubsection}%
        \typeout{after set next toc depth}\relax
        \tableofcontents
        \typeout{after toc}\relax
    }

    \newcommand{\SectionTOC}{% 
         \CountFramesFor\localtableofcontents
         \let\yossia\yossib
    \begingroup
        \etocsetstyle{subsubsection}{}{}{\setbox0\hbox{\Yossi}}{}%
        \etocsetnexttocdepth{subsubsection}%
        \etocsettocstyle {\noindent Contents:\par}{}%
        \localtableofcontents
    \endgroup
    }

    \newcommand{\SubSectionTOC}{% 
         \CountFramesFor\localtableofcontents
         \let\yossia\yossic
        \etocsetnexttocdepth{subsubsection}%
        \etocsettocstyle {\noindent Contents:\par}{}%
        \localtableofcontents
    }

    \newcommand{\listOfFramesInSubSubSection}{%
      \begingroup
           \etocsetlevel {subparagraph}{2}%
           \etocsetlevel {subsubsection}{1}%
           \etocsetlevel {subsection}{6}%
           \etocsetlevel {section}{6}%
           \etocsetlevel {paragraph}{6}%
           \etocsettocstyle {\noindent\emph{Frames:}}{}%
           \etocsetnexttocdepth {subparagraph}%
           \etocdefaultlines
                \etocsetstyle{subsection}
                     {\begingroup}
                     {\footnotesize}
                     {\etocname~\space}%
                     {\endgroup}
           \localtableofcontents
      \endgroup
    }


            \newcommand{\listOfFramesInSubSection}{%
              \begingroup
                   \etocsetlevel {subparagraph}{3}%
                   \etocsetlevel {subsubsection}{2}%
                   \etocsetlevel {subsection}{1}%
                   \etocsetlevel {subsection}{6}%
                   \etocsetlevel {section}{6}%
                   \etocsetlevel {paragraph}{6}%
                   \etocsettocstyle {\noindent\emph{Frames:}\par}{}%
                   \etocsetnexttocdepth {subparagraph}%
                   \etocdefaultlines
           \localtableofcontents
              \endgroup
            }



\begin{document}

\etocsettocdepth {subparagraph}
\GlobalTOC
\section{My First Section}\SectionTOC
    \begin{frame}{My First Frame} has a bit of contents \end{frame}
    \subsection{Subsection [A] in My First Section}
\SubSectionTOC
      \listOfFramesInSubSection
       \begin{frame}{My 2nd Frame} has another bit of contents  \end{frame}
    \subsection{Sububsection [I] in subsection [A] in My First Section}      
 \listOfFramesInSubSubSection
            \begin{frame}{My THIRD Frame} has one bit and another bit of contents   in it      \end{frame}


\end{document}

решение1

ОБНОВЛЯТЬ

Поскольку было выяснено, что подподразделы могут не иметь рамок, что подразделы могут не иметь подподразделов, что разделы могут не иметь подразделов, я предоставляю пересмотренный код (см. внизу), который способен обрабатывать эти вещи. Обратите внимание, что нам не нужен подподраздел в разделе без промежуточного подраздела.



Вот адаптацияответ на связанный вопрос, он добавляет подсчет абзацев. Это делается а-ляэток, т.е. использование невидимого оглавления для выполнения этой работы.

Обновление согласно комментарию, которое более точно описывает то, что имелось в виду. Предполагается, что всегда есть подраздел между разделом и подразделом или подподраздел между подразделом и абзацем. Здесь окружение фрейма создает абзацы, и нет других абзацев.

Первоначальный ответ оставлен внизу. Пример кода для обновления дает четыре страницы, здесь показаны только первые две.

toc с подсчетами toc с подсчетами страница 2

\documentclass{article}
\usepackage{beamerarticle}
\usepackage{etoc}

% Override action when frame title is encountered: (Code by Yossi Gil)
\setbeamertemplate{frametitle}{%
   \paragraph{\insertframenumber.~\insertframetitle}\\
   \noindent\emph{\insertframesubtitle}\par
} 

\newcounter{parinsection}
\newcounter{parinsubsection}
\newcounter{parinsubsubsection}


\makeatletter % cf etoc manual "another compatibility mode"
  \let\orig@lsection\l@section
  \let\orig@lsubsection\l@subsection
  \let\orig@lsubsubsection\l@subsubsection
%
\etocsetstyle{section}
 {}
 {}
 {\orig@lsection {\numberline{\etocnumber}\etocname{} 
           (\Yossi frames)}{\etocpage}}
 {}

\etocsetstyle{subsection}
 {}
 {}
 {\orig@lsubsection {\numberline{\etocnumber}\etocname{} 
           (\Yossi frames)}{\etocpage}}
 {}

\etocsetstyle{subsubsection}
 {}
 {}
 {\orig@lsubsubsection {\numberline{\etocnumber}\etocname{} 
           (\Yossi frames)}{\etocpage}}
 {}

\etocsetstyle {paragraph}
 {}
 {}
 {\stepcounter{parinsection}%
  \stepcounter{parinsubsection}%
  \stepcounter{parinsubsubsection}}
 {\xdef\yossic{\yossic{\arabic{parinsubsubsection}}}}

\newcommand\yossia {}
\newcommand\yossib {}
\newcommand\yossic {}
\newcommand\Yossi {\expandafter\Yossi@ \yossia\@nil}
\def\Yossi@ #1#2\@nil {\gdef\yossia{#2}#1 }

\makeatother

\newcommand{\CountFramesFor}[1]{%
    \begingroup % first pass
        \etocsetstyle {section}
                      {}
                      {}%
                      {\setcounter{parinsection}{0}}
                      {}%
        \etocsetstyle {subsection}
                 {\xdef\yossib{}}
                      {}
                      {\setcounter{parinsubsection}{0}}
                 {\xdef\yossia{\yossia{\arabic{parinsection}}\yossib}}%
        \etocsetstyle {subsubsection}
                 {\xdef\yossic{}}
                      {}
                      {\setcounter{parinsubsubsection}{0}}
                 {\xdef\yossib{\yossib{\arabic{parinsubsection}}\yossic}}%
        \gdef\yossia{}\gdef\yossib{}\gdef\yossic{}%
        \etocsettocstyle {}{}%
        \etocsetnexttocdepth {paragraph}%
        #1%
    \endgroup
}%

\newcommand{\GlobalToc}{%
     \CountFramesFor\tableofcontents
% to suppress subsubsections:
%\begingroup
%    \etocsetstyle{subsubsection}{}{}{\setbox0\hbox{\Yossi}}{}%
% to also suppress subsections 
%    \etocsetstyle{subsection}{}{}{\setbox0\hbox{\Yossi}}{}%
    \etocsetnexttocdepth{subsubsection}%
    \tableofcontents
%\endgroup
}

\newcommand{\SectionToc}{% 
     \CountFramesFor\localtableofcontents
     \let\yossia\yossib
% to suppress subsubsections:
\begingroup
    \etocsetstyle{subsubsection}{}{}{\setbox0\hbox{\Yossi}}{}%
    \etocsetnexttocdepth{subsubsection}%
    \etocsettocstyle {\noindent Contents:\par}{}%
    \localtableofcontents
\endgroup
}

\newcommand{\SubsectionToc}{% 
     \CountFramesFor\localtableofcontents
     \let\yossia\yossic
    \etocsetnexttocdepth{subsubsection}%
    \etocsettocstyle {\noindent Contents:\par}{}%
    \localtableofcontents
}

\newcommand{\Listofframes}{%
  \begingroup
       \etocsetlevel {paragraph}{2}%
       \etocsetlevel {subsubsection}{1}%
       \etocsetlevel {subsection}{6}%
       \etocsetlevel {section}{6}%
       \etocsettocstyle {\noindent List of frames in this subsubsection\par}{}%
       %\etocsetnexttocdepth {paragraph}%
       \etocdefaultlines
       \localtableofcontents
  \endgroup
}


\begin{document}

\etocsettocdepth {paragraph}
\GlobalToc

\section{Some frames}
\SectionToc

\subsection {first subsection}
\SubsectionToc

\subsubsection{first subsubsection}
\Listofframes

\begin{frame}\frametitle{AHK}
  Ah Ah 
\end{frame}

\begin{frame}\frametitle{AHJ}
  Oh Oh
\end{frame}

\begin{frame}\frametitle{AHM}
  Ah Ah 
\end{frame}

\subsubsection{second subsubsection}
\Listofframes

\begin{frame}\frametitle{AHN}
  Oh Oh
\end{frame}

\subsection {second subsection}
\SubsectionToc

\subsubsection {subsubsection}
\Listofframes

\begin{frame}\frametitle{HBZ}
  Ah Ah 
\end{frame}

\subsubsection {subsubsection}
\Listofframes

\begin{frame}\frametitle{HBW}
  Oh Oh
\end{frame}

\begin{frame}\frametitle{HBT}
  Oh Oh
\end{frame}

\begin{frame}\frametitle{HBR}
  Oh Oh
\end{frame}

  \section{More frames}
\SectionToc

\subsection {third subsection}
\SubsectionToc

\subsubsection {subsubsection}
\Listofframes

\begin{frame}\frametitle{BHK}
  Ah Ah 
\end{frame}

\begin{frame}\frametitle{BHJ}
  Oh Oh
\end{frame}

\begin{frame}\frametitle{BBZ}
  Ah Ah 
\end{frame}

\subsubsection {subsubsection}
\Listofframes

\begin{frame}\frametitle{BBW}
  Oh Oh
\end{frame}

\begin{frame}\frametitle{BBU}
  Oh Oh
\end{frame}

\subsection {fourth subsection}
\SubsectionToc

\subsubsection {subsubsection}
\Listofframes

\begin{frame}\frametitle{YHK}
  Ah Ah 
\end{frame}

\subsubsection {subsubsection}
\Listofframes

\begin{frame}\frametitle{YHJ}
  Oh Oh
\end{frame}

\begin{frame}\frametitle{YYZ}
  Ah Ah 
\end{frame}

\begin{frame}\frametitle{YYW}
  Oh Oh
\end{frame}

\end{document}

Первоначальный ответ:

подсчет кадров в локальном toc подсчет кадров, продолжение

\documentclass{article}
\usepackage{beamerarticle}
\usepackage{etoc}
% section=1, subsection=2, subsubsection=3
\etocsettocdepth {all}

%Override action when frame title is encountered: (Code by Yossi Gil)
\setbeamertemplate{frametitle}{%
   \paragraph{\insertframenumber.~\insertframetitle}\\
   \noindent\emph{\insertframesubtitle}\par
} 

\newcounter {mycountofframes}

\newcommand {\listofsubsectionswithframecount}{\begingroup
%%%%% count frames by executing an invisible table of contents
  \setcounter {mycountofframes}{0}%
  \etocsetnexttocdepth {paragraph}%
  \etocsetstyle {subsection}{}{}{}{}%
  \etocsetstyle {paragraph}{}{\stepcounter{mycountofframes}}{}{}%
  \etocsettocstyle {}{}%
  \localtableofcontents % invisible, just to count paragraphs (=frames)
%%%%%
%%%%% now list subsections 
  \etocsettocstyle 
   {\noindent Dear reader, there are in total \arabic{mycountofframes} 
                    frames in this section.\par\medskip }
   {}%
  \etocsetnexttocdepth {subsection}%
  \etocstandardlines % undoes the \etocsetstyle above, 
                     % switches to class default for TOC lines
  \localtableofcontents % Print the table of contents
\endgroup
}

\newcommand {\listofframesinthissubsection}{\begingroup
%%%%% count frames by executing an invisible table of contents
    \setcounter {mycountofframes}{0}%
    \etocsetnexttocdepth {paragraph}%
    \etocsetstyle {paragraph}{}{\stepcounter{mycountofframes}}{}{}%
    \etocnopar % says not to do \par, but doesn't matter here
    \etocsettocstyle {}{}%
    \localtableofcontents % just to count paragraphs (=frames)
%%%%%
%%%%% now list the paragraphs 
    \etocsetlevel {subsection}{1}% artificially pretending subsections are
                                % sections  one up the level
    \etocsetlevel {paragraph}{2}% pretending paragraphs are subsections
    \etocdefaultlines % undoes the \etocsetstyle above, switches to package
                      % default for the TOC lines
    \etocsettocstyle {\noindent The \arabic{mycountofframes} 
                      frames in this subsection:\par\smallskip}{}%
    \etocsetnexttocdepth {paragraph}%
    \localtableofcontents
\endgroup % undo all our mess
}

\begin{document}

\etocsetnexttocdepth {subsection}
\tableofcontents

  \section{Some frames}
\listofsubsectionswithframecount


\subsection {first subsection}
\listofframesinthissubsection

\begin{frame}\frametitle{AHK}
  Ah Ah 
\end{frame}

\begin{frame}\frametitle{AHJ}
  Oh Oh
\end{frame}

\begin{frame}\frametitle{AHM}
  Ah Ah 
\end{frame}

\begin{frame}\frametitle{AHN}
  Oh Oh
\end{frame}

\subsection {second subsection}
\listofframesinthissubsection

\begin{frame}\frametitle{HBZ}
  Ah Ah 
\end{frame}

\begin{frame}\frametitle{HBW}
  Oh Oh
\end{frame}

\begin{frame}\frametitle{HBT}
  Oh Oh
\end{frame}

  \section{More frames}
\listofsubsectionswithframecount

\subsection {third subsection}
\listofframesinthissubsection

\begin{frame}\frametitle{BHK}
  Ah Ah 
\end{frame}

\begin{frame}\frametitle{BHJ}
  Oh Oh
\end{frame}

\subsection {fourth subsection}
\listofframesinthissubsection


\begin{frame}\frametitle{BBZ}
  Ah Ah 
\end{frame}

\begin{frame}\frametitle{BBW}
  Oh Oh
\end{frame}

\begin{frame}\frametitle{BBU}
  Oh Oh
\end{frame}

\end{document}


Обновлен код для обработки отсутствующих кадров.

\documentclass{article}
\usepackage{beamerarticle}
\usepackage{etoc}

% % Override action when frame title is encountered: (Code by Yossi Gil)

\def\Hrulefill
   {\leavevmode\leaders\hrule height 0.8ex depth -0.6ex\hfill\kern0pt }

\def\frameTitle{%
    \itshape
    \small
    \bfseries
    $\cdot$\insertframenumber.~\insertframetitle
    \space
    \footnotesize \mdseries
    \insertframesubtitle
  }%

\setbeamertemplate{frametitle}{\relax
  % Similar to \hrule but above the base line
  \noindent\Hrulefill
  \addcontentsline{toc}{paragraph}{\frameTitle}%
  \fbox{\begin{minipage}{0.7\linewidth}\frameTitle\end{minipage}}%
  \Hrulefill\par
}

\newcounter{parinsection}
\newcounter{parinsubsection}
\newcounter{parinsubsubsection}

\makeatletter % cf etoc manual "another compatibility mode"
 \let\orig@lsection\l@section
 \let\orig@lsubsection\l@subsection
 \let\orig@lsubsubsection\l@subsubsection
%
\etocsetstyle{section}
 {}
 {}
 {\orig@lsection {\numberline{\etocnumber}\etocname{} 
           (\Yossi)}{\etocpage}}
 {}

\etocsetstyle{subsection}
 {}
 {}
 {\orig@lsubsection {\numberline{\etocnumber}\etocname{} 
           (\Yossi)}{\etocpage}}
 {}

\etocsetstyle{subsubsection}
 {}
 {}
 {\orig@lsubsubsection {\numberline{\etocnumber}\etocname{} 
           (\Yossi)}{\etocpage}}
 {}

\etocsetstyle {paragraph}
 {}
 {}
 {\stepcounter{parinsection}%
  \stepcounter{parinsubsection}%
  \stepcounter{parinsubsubsection}}
 {}

\newcommand\yossia {}
\newcommand\yossib {}
\newcommand\yossic {}
\newcommand\Yossi {\expandafter\Yossi@ \yossia\@nil}
\def\Yossi@ #1#2\@nil {\gdef\yossia{#2}\begingroup\color{blue}%
    \ifcase #1 
      no frame%
    \or
      1 frame%
    \else #1 frames%
    \fi\endgroup}% 


\makeatother

\newcommand{\CountFramesFor}[1]{%
    \begingroup % first pass
        \etocsetstyle {section}
                      {\def\yossia{}\def\yossib{}%
                       \setcounter{parinsection}{0}%
                       \etocskipfirstprefix 
                      }
                      {\edef\yossia{\yossia% earlier sec, sub and subsub 
                                    \arabic{parinsection}% add previous
                                      % section 
                                    \yossib % and all sub and subsub therein
                                    }%
                      }
                      {\setcounter{parinsection}{0}\def\yossib{}}
                      {\edef\yossia{\yossia% earlier sec, sub and subsub 
                                    \arabic{parinsection}% add last
                                      % section 
                                    \yossib % and all sub and subsub therein
                                    }%
                      }%
 %
        \etocsetstyle {subsection}
                      {\def\yossib{}\def\yossic{}%
                       \setcounter{parinsubsection}{0}%
                       \etocskipfirstprefix 
                      }
                      {\edef\yossib{\yossib% previous sub and subsub 
                                    \arabic{parinsubsection}% add previous
                                      % subsection 
                                    \yossic % and all subsub therein
                                    }%
                      }
                      {\setcounter{parinsubsection}{0}\def\yossic{}}
                      {\edef\yossib{\yossib% previous sub and subsub 
                                    \arabic{parinsubsection}% add last
                                      % subsection 
                                    \yossic % and all subsub therein
                                    }%
                      }%
%
       \etocsetstyle {subsubsection}
                      {\def\yossic{}%
                       \setcounter{parinsubsubsection}{0}%
                       \etocskipfirstprefix 
                      }
                      {\edef\yossic{\yossic\arabic{parinsubsubsection}}}%
                      {\setcounter{parinsubsubsection}{0}}
                      {\edef\yossic{\yossic\arabic{parinsubsubsection}}}%
%
        \etocsettocstyle {}{\global\let\yossia\yossia 
                            \global\let\yossib\yossib
                            \global\let\yossic\yossic}%
        \etocsetnexttocdepth {paragraph}%
        #1%
    \endgroup
}%

\newcommand{\GlobalToc}{%
     \CountFramesFor\tableofcontents
% to suppress subsubsections:
%\begingroup
%    \etocsetstyle{subsubsection}{}{}{\setbox0\hbox{\Yossi}}{}%
% to also suppress subsections 
%    \etocsetstyle{subsection}{}{}{\setbox0\hbox{\Yossi}}{}%
    \etocsetnexttocdepth{subsubsection}%
    \tableofcontents
%\endgroup
}

\newcommand{\SectionToc}{% 
     \CountFramesFor\localtableofcontents
     \let\yossia\yossib
% this is to suppress listing subsubsections in the Section TOC:
\begingroup
    \etocsetstyle{subsubsection}{}{}{\setbox0\hbox{\Yossi}}{}%
    \etocsetnexttocdepth{subsubsection}%
    \etocsettocstyle {\noindent Contents:\par}{}%
    \localtableofcontents
\endgroup
}

\newcommand{\SubsectionToc}{% 
     \CountFramesFor\localtableofcontents
     \let\yossia\yossic
    \etocsetnexttocdepth{subsubsection}%
    \etocsettocstyle {\noindent Contents:\par}{}%
    \localtableofcontents
}

\newcommand{\Listofframes}{%
  \begingroup
       \etocsetlevel {paragraph}{2}%
       \etocsetlevel {subsubsection}{1}%
       \etocsetlevel {subsection}{6}%
       \etocsetlevel {section}{6}%
       \etocsettocstyle {\noindent List of frames in this subsubsection\par}{}%
       \etocdefaultlines
       \localtableofcontents
  \endgroup
}


\begin{document}

\etocsettocdepth {paragraph}
\GlobalToc

\section{Section A}
\SectionToc

\subsection {subsection}
\SubsectionToc

\subsubsection{subsubsection}
% \Listofframes % don't use \listofframes in a subsubsection 

No frames here.

\subsubsection{subsubsection}
\Listofframes

\begin{frame}\frametitle{AHN}
  Oh Oh
\end{frame}

\begin{frame}\frametitle{BHN}
  Oh Oh
\end{frame}

\subsection {subsection with no subsubsection}

There are no subsubsections here.

\section{Section B}
\SectionToc

\subsection {subsection}
\SubsectionToc

\subsubsection {subsubsection}
\Listofframes

\begin{frame}\frametitle{BHK}
  Ah Ah 
\end{frame}

\begin{frame}\frametitle{BHJ}
  Oh Oh
\end{frame}

\begin{frame}\frametitle{BBZ}
  Ah Ah 
\end{frame}

\subsubsection {subsubsection}
\Listofframes

\begin{frame}\frametitle{BBW}
  Oh Oh
\end{frame}

\begin{frame}\frametitle{BBU}
  Oh Oh
\end{frame}

\subsubsection {subsubsection}

No frames here.

\subsection {subsection with no subsubsection}

Nothing here.

\subsection {subsection}
\SubsectionToc

\subsubsection {subsubsection}
\Listofframes

\begin{frame}\frametitle{YHK}
  Ah Ah 
\end{frame}

\subsubsection {subsubsection}

No frames here.

\subsubsection {subsubsection}
\Listofframes

\begin{frame}\frametitle{YHJ}
  Oh Oh
\end{frame}

\begin{frame}\frametitle{YYZ}
  Ah Ah 
\end{frame}

\begin{frame}\frametitle{YYW}
  Oh Oh
\end{frame}

\subsection {subsection}
\SubsectionToc

\subsubsection {subsubsection }

No frame.

\subsubsection {subsubsection }

No frame.

\end{document}

toc с подсчетом кадров toc с подсчетом кадров toc с подсчетом кадров toc с подсчетом кадров

Связанный контент