Como seguimiento de miPregunta anteriorSobre el tema de generar un TOC para cada subsección, me gustaría plantear el siguiente desafío.
Produzca TOC locales y globales, de modo que una línea que muestre las unidades organizativas del documento: sección, subsección, subsubsección muestre el número total de párrafos que contiene.
Gracias y solicitud de corrección de errores.
Muchas gracias ajfbupor su detallada e inteligente respuesta. El desafío del nombre críptico en su respuesta me tomó muchas horas de tiempo, pero logré degradar los marcos a subpárrafos (hay una buena razón para hacerlo, ya que el documento puede contener párrafos que no son marcos). Sin embargo, no pude producir los TOC completos como los quería.
Reduje el problema al usarlo al caso en que algunos de los TOC están vacíos.
Aquí hay un MWE modelado a partir de jfbu.jfbutrabajar.
\documentclass{article}
\usepackage{beamerarticle}
\usepackage{etoc}
\usepaquete{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}
Respuesta1
ACTUALIZAR
Como se ha aclarado que las subsecciones pueden no tener marcos, que las subsecciones pueden no tener subsecciones, que las secciones pueden no tener subsecciones, proporciono un código revisado (ver en la parte inferior) que es capaz de manejar estas cosas. Sin embargo, tenga en cuenta que no queremos una subsección en una sección sin una subsección intermedia.
He aquí una adaptación delrespuesta a la pregunta vinculada, agrega el conteo de párrafos. Esto se hace a laetoc, es decir, utilizar una tabla de contenidos invisible para realizar el trabajo.
Actualización según el comentario, que describía con mayor precisión lo que se pretendía. Se supone que siempre hay una subsección entre una sección y una subsección, o una subsección entre una subsección y un párrafo. Aquí, los entornos de marco crean párrafos y no hay otros párrafos.
La respuesta inicial se deja al final. El ejemplo de código para la actualización proporciona cuatro páginas; aquí solo se muestran las dos primeras.
\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}
Respuesta inicial:
\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}
Código actualizado para manejar fotogramas faltantes
\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}