6

I have a long presentation which basically is a collection of exercises. Each excercise has its own subsection, shown in the sidebar, like this:

\documentclass{beamer}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usetheme[hideothersubsections,left,width=1.4cm]{Goettingen}

\begin{document}
 \begin{frame}
  \frametitle{Start page}
 \end{frame}
 \begin{frame} 
  \section{section 1}
  \subsection{1}
  \subsection{2}
  \subsection{3}
  \subsection{4}
  \subsection{5}
  \subsection{6}
  \subsection{7}
 \end{frame}
\end{document} 

eventually I got this:enter image description here After a certain number the sidebar is filled and some numbers end outside of the frame.

What I would like is a two (or more) columns sidebar navigation, so that I can add more exercises.

Looks like a similar problem was solved here, but I'm not skilled enough to adapt that solution to a vertical sidebar.

Any help is much appreciated.

Followup#1

Now i've got to this point: enter image description here
What I can't still do is:

1) exclude sections from the multicol environment, i.e. the section 2 should be in the first row, not the second

2) the first subsection of the second column should be horizontally aligned with the first subsection of the first column, i.e. 1.5 should be aligned to 1.1.

This is the code, I just added a multicol environment at the end of the \insertverticalnavigation definition:

\documentclass{beamer}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{multicol}

\usetheme[hideothersubsections,left,width=1.4cm]{Goettingen}


\makeatletter
\def\insertverticalnavigation#1{%
  \vbox{%
    \def\sectionentry##1##2##3##4##5{%
      \ifnum##5=\c@part%
      \def\insertsectionhead{##2}%
      \def\insertsectionheadnumber{##1}%
      \def\insertpartheadnumber{##5}%
      \hbox{{%
        \usebeamerfont{section in sidebar}\usebeamercolor[fg]{section in sidebar}%
          \hyperlink{Navigation##3}{%
          \ifnum\c@section=##1%
            \ifnum\c@subsection=0\relax%
              {\usebeamertemplate{section in sidebar}}%
            \else%
              \ifx\beamer@nav@css\beamer@hidetext%
                {\usebeamertemplate{section in sidebar}}%
              \else%
                {\usebeamertemplate{section in sidebar shaded}}%
              \fi%
            \fi%
          \else
            {\usebeamertemplate{section in sidebar shaded}}%
          \fi}}}%
      \beamer@currentsubsection=0\relax\fi}%
    \def\slideentry##1##2##3##4##5##6{}%
    \def\beamer@subsectionentry##1##2##3##4##5{%
      \ifnum##1=\c@part%
      \def\insertpartheadnumber{##1}%
      \def\insertsectionheadnumber{##2}%
      \def\insertsubsectionheadnumber{##3}%
      \def\insertsubsectionhead{##5}%
       \beamer@tocifnothide{\ifnum\c@section=##2\ifnum\c@subsection=##3\beamer@nav@css\else\beamer@nav@oss\fi\else\beamer@nav@ooss\fi}%
      {\hbox{{%
        \usebeamerfont{subsection in sidebar}\usebeamercolor[fg]{subsection in sidebar}%
          \hyperlink{Navigation##4}{%
          \ifnum\c@section=##2%
            \ifnum\c@subsection=##3%
              \ifnum\c@subsubsection=0\relax%
                {\usebeamertemplate{subsection in sidebar}}%
              \else%
                {\usebeamertemplate{subsection in sidebar shaded}}%
              \fi%
            \else%
              {\usebeamertemplate{subsection in sidebar shaded}}%
            \fi%
          \else%
            {\usebeamertemplate{subsection in sidebar shaded}}%
          \fi}}}%
      }%
      \fi}%
    \def\beamer@subsubsectionentry##1##2##3##4##5##6{%
      \ifnum##1=\c@part%
      \def\insertpartheadnumber{##1}%
      \def\insertsectionheadnumber{##2}%
      \def\insertsubsectionheadnumber{##3}%
      \def\insertsubsubsectionheadnumber{##3}%
      \def\insertsubsubsectionhead{##6}%
      \beamer@tocifnothide{\ifnum\c@section=##2\ifnum\c@subsection=##3\beamer@nav@css\else\beamer@nav@oss\fi\else\beamer@nav@ooss\fi}%
      {\hbox{{%
        \usebeamerfont{subsubsection in sidebar}\usebeamercolor[fg]{subsubsection in sidebar}%
          \hyperlink{Navigation##5}{%
          \ifnum\c@section=##2%
            \ifnum\c@subsection=##3%
              \ifnum\c@subsubsection=##4%
                {\usebeamertemplate{subsubsection in sidebar}}%
              \else
                {\usebeamertemplate{subsubsection in sidebar shaded}}%
              \fi%
            \else%
              {\usebeamertemplate{subsubsection in sidebar shaded}}%
            \fi%
          \else%
            {\usebeamertemplate{subsubsection in sidebar shaded}}%
          \fi}}}%
           }%        
      \fi}%
       \hspace*{0.1em}\parbox[c][1cm][c]{1cm}{              %%%%%%%%%%%%%%%%
       \begin{multicols}{2}                                 % multicol     % 
       \dohead\end{multicols}                               % code         %
       }                                                    %%%%%%%%%%%%%%%%
  }%
}
\makeatother


\begin{document}
  \section{1}
  \subsection{1.1}
 \frame{test} 
  \subsection{1.2}
 \frame{test} 
  \subsection{1.3}
 \frame{test} 
  \subsection{1.4}
 \frame{test} 
  \subsection{1.5}
 \frame{test} 
  \subsection{1.6}
 \frame{test} 
  \subsection{1.7}
 \frame{test} 
  \section{2}
  \subsection{2.1}
 \frame{test} 
  \subsection{2.2}
 \frame{test} 
\end{document}
1

Since customizing \insertverticalnavigation seemed too complicated I tried a different approach and managed to obtain what I wanted. I wasn't able to exclude the sections from the multicol environment, so I decided to separate section and subsection navigation, placing the latter at the end of the former.

Here is the code:

\documentclass{beamer}

\usepackage{multicol}

\usetheme[hideothersubsections,left,width=1.4cm]{Goettingen}


\makeatletter
\def\insertsubsectionnavigation#1{%
  \hbox to #1{%
    \vbox{{%
      \usebeamerfont{subsection in sidebar}\usebeamercolor[fg]{subsection in sidebar}%
      \vskip0.5625ex%
      \beamer@currentsubsection=0%
      \def\sectionentry##1##2##3##4##5{}%
      \def\slideentry##1##2##3##4##5##6{\ifnum##6=\c@part\ifnum##1=\c@section%
        \ifnum##2>\beamer@currentsubsection%
        \beamer@currentsubsection=##2%
        \def\insertsubsectionhead{##5}%
        \def\insertsectionheadnumber{##1}%
        \def\insertsubsectionheadnumber{##2}%
        \def\insertpartheadnumber{##6}%
        \beamer@link(##4){%
              \ifnum\c@subsection=##2%
                {\usebeamertemplate{subsection in head/foot}}%
              \else%
                {\usebeamertemplate{subsection in head/foot shaded}}%
              \fi\hfill}\par
        \fi\fi\fi}%
       \hspace*{0.1em}\parbox[c][1cm][c]{1.4cm}{%
       \begin{multicols}{3}
       \dohead\end{multicols}
       }\space
   }\hfil
}}}

\setbeamertemplate{sidebar left}
{%
  \leavevmode\@tempdimb=2.7ex%
      \multiply\@tempdimb by\beamer@sectionmax%
    \begin{beamercolorbox}[wd=1.4cm,ht=0.5cm,dp=2ex]{title in sidebar}%
      {\par\centering\inserttitle\par}%
    \end{beamercolorbox}\\
    \begin{beamercolorbox}[wd=1.4cm,ht=0.5cm,dp=2ex]{author in sidebar}%
      {\par\centering\insertauthor\par}%
    \end{beamercolorbox}\\
    \begin{beamercolorbox}[wd=1.4cm,ht=\@tempdimb,dp=2ex]{section in sidebar}%
      {\vfill\insertsectionnavigation{1.4cm}}%
    \end{beamercolorbox}\\
    \begin{beamercolorbox}[wd=1.4cm,ht=0.8cm]{subsection in sidebar}%
      {\vfill\insertsubsectionnavigation{1.4cm}}%
    \end{beamercolorbox}%
}
\makeatother

\title{Title}
\author{Author}

\begin{document}
  \section{Section 1}
  \subsection{1}
 \frame{test} 
  \subsection{2}
 \frame{test} 
  \subsection{3}
 \frame{test} 
  \subsection{4}
 \frame{test} 
  \subsection{5}
 \frame{test} 
  \subsection{6}
 \frame{test} 
  \subsection{7}
 \frame{test}
 \subsection{8}
 \frame{test}
  \subsection{9}
 \frame{test} 
  \subsection{10}
 \frame{test} 
  \subsection{11}
 \frame{test} 
  \subsection{12}
 \frame{test} 
  \section{Section 2}
  \subsection{1}
 \frame{test} 
  \subsection{2}
 \frame{test} 
  \subsection{3}
 \frame{test} 
  \subsection{4}
 \frame{test} 
  \subsection{5}
 \frame{test} 
  \subsection{6}
 \frame{test} 
  \subsection{7}
 \frame{test}
 \subsection{8}
 \frame{test}
  \subsection{9}
 \frame{test} 
  \subsection{10}
 \frame{test} 
  \subsection{11}
 \frame{test} 
  \subsection{12}
 \frame{test} 
\end{document}  

Mandatory screenshot:
enter image description here

In short, I redefined \insertsubsectionnavigation to include a three columns layout and then set a new sidebar template with all the content from the default Goettingen template but with the subsection navigation moved at the end of the section navigation. For some reason i had to use head/foot subsection template instead of the sidebar one, because the latter screwed up the multicolumn navigation.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.