Der Abstand im tableofcontents in der beamer-Klasse zwischen den Einträgen der sections ist ein anderer wie derjenige zwischen den subsections.

Open in Online-Editor
\documentclass[12pt]{beamer}
\usepackage[utf8]{inputenc}
\usetheme{AnnArbor}
\begin{document}
\begin{frame}
\tableofcontents[hideallsubsections]
\end{frame}
\section{A}
\begin{frame}
\tableofcontents[hideothersubsections,sectionstyle=hide]
\end{frame}
\subsection{A1}
\begin{frame}
\end{frame}
\subsection{A2}
\begin{frame}
\end{frame}
\subsection{A3}
\begin{frame}
\end{frame}
\subsection{A4}
\begin{frame}
\end{frame}
\section{B}
\begin{frame}
\end{frame}
\section{C}
\begin{frame}
\end{frame}
\section{D}
\begin{frame}
\end{frame}
\end{document}

Wie kann ich den Abstand verändern? Gibt es eine Möglichkeit, etwas wie \setlength{\itemsep}{...} global für die verschieden Inhaltsverzeichnisse festzulegen, z.B. in der Art

Open in Online-Editor
\setbeamertemplate{toc section itemsep}{1.5\baselineskip}
\setbeamertemplate{toc subsection itemsep}{\baselineskip}
\setbeamertemplate{toc subsubsection itemsep}{0.5\baselineskip}

d.h. dass man die Abstände individuell anpassen kann und "beliebig" vergrößern bzw. verkleinern kann?

Falls es so eine Möglichkeit nicht gibt, geht es mir in meinem Fall konkret um die Abstände zwischen den subsections, die ich gerne vergrößert hätte.

gefragt 26 Feb '16, 15:48

tom75's gravatar image

tom75
2.2k277984
Akzeptiert-Rate: 57%

bearbeitet 29 Feb '16, 14:57

saputello's gravatar image

saputello
11.1k174365

In welche Richtung? Soll der Abstand zwischen den Sections kleiner oder der Abstand zwischen den Subsections größer werden?

(26 Feb '16, 22:28) Henri

@Henri: Im konkreten Fall, zwischen den subsections größer. Aber am schönsten wäre es, wenn es flexibel wäre. Ich habe die Frage ergänzt.

(27 Feb '16, 07:48) tom75

Im Prinzip geht es ganz einfach, ist aber hässlich. Die Definitionen der Makros zum Setzen der Einträge des Inhaltsverzeichnis finden sich in beamerbasetoc.sty. Leider gibt es für jeden Typ ein extra Makro. Dieses ergänzt man an der richtigen Stelle um \usebeamertemplate{toc <Typ> itemsep} (wie in der Frage vorgeschlagen). Ich kenne mich mit der internen Struktur der Beamer-Templates zu wenig aus um die Expansion

Open in Online-Editor
 \vskip\usebeamertemplate{toc section itemsep}

zum Laufen zu bringen. Daher muss \vskip in die Definition wandern

Open in Online-Editor
\setbeamertemplate{toc section itemsep}{\vskip1.5\baselineskip}
\setbeamertemplate{toc subsection itemsep}{\vskip1\baselineskip}
\setbeamertemplate{toc subsubsection itemsep}{\vskip0.5\baselineskip}

Dies hat sogar den Vorteil, dass nun auch Makros eingetragen werden können, die auf irgendwas mit \vskip expandieren (z.B. \vfill).

Open in Online-Editor
\documentclass{beamer}
\usetheme{AnnArbor}

\makeatletter

\def\beamer@sectionintoc#1#2#3#4#5{%
  \ifnum\c@tocdepth>0%
  \ifnum#4=\beamer@showpartnumber%
  {
  \beamer@saveanother%
  \gdef\beamer@todo{}%
  \beamer@slideinframe=#1\relax%
  \expandafter\only\beamer@tocsections{\gdef\beamer@todo{%
      \beamer@tempcount=#5\relax%
      \advance\beamer@tempcount by\beamer@sectionadjust%
      \ifnum\beamer@tempcount>0
        \edef\inserttocsectionnumber{\the\beamer@tempcount}%
      \else
        \def\inserttocsectionnumber{}%
      \fi%
      \def\inserttocsection{\hyperlink{Navigation#3}{#2}}%
      \beamer@tocifnothide{\ifnum\c@section=#1\beamer@toc@cs\else\beamer@toc@os\fi}%
      {
        \ifbeamer@pausesections\pause\fi%
        \usebeamertemplate{toc section itemsep}%
        {%
          \hbox{\vbox{%
              \def\beamer@breakhere{\\}%
              \beamer@tocact{\ifnum\c@section=#1\beamer@toc@cs\else\beamer@toc@os\fi}{section in toc}}}%
         \par%
        }%
      }%
    }
  }%
  \beamer@restoreanother%
  }
  \beamer@todo%
  \fi\fi%
}

\long\def\beamer@subsectionintoc#1#2#3#4#5#6{%
  \ifnum\c@tocdepth>1%
  \ifnum#5=\beamer@showpartnumber%
  {%
    \beamer@saveanother%
    \gdef\beamer@todo{}%
    \beamer@slideinframe=#1\relax%
    \expandafter\only\beamer@tocsections{\gdef\beamer@todo{%
      \ifbeamer@pausesubsections\pause\fi%
      \beamer@tempcount=#6%
      \advance\beamer@tempcount by\beamer@sectionadjust%
      \edef\inserttocsectionnumber{\the\beamer@tempcount}%
      \def\inserttocsubsectionnumber{#2}%
      \def\inserttocsubsection{\hyperlink{Navigation#4}{#3}}%
      \beamer@tocifnothide{\ifnum\c@section=#1\beamer@toc@css\else\beamer@toc@oss\fi}%
      {%
        \usebeamertemplate{toc subsection itemsep}%
        \def\beamer@breakhere{\\}%
        \beamer@tocact{\ifnum\c@section=#1\ifnum\c@subsection=#2\beamer@toc@css\else\beamer@toc@oss\fi\else\beamer@toc@ooss\fi}
        {subsection in toc}%
      }%
    }}%
    \beamer@restoreanother%
  }
  \beamer@todo%
  \fi\fi%
}

\long\def\beamer@subsubsectionintoc#1#2#3#4#5#6#7{%
  \ifnum\c@tocdepth>2%
  \ifnum#6=\beamer@showpartnumber%
  {
    \beamer@saveanother%
    \gdef\beamer@todo{}%
    \beamer@slideinframe=#1\relax%
    \expandafter\only\beamer@tocsections{\gdef\beamer@todo{%
      \ifbeamer@pausesubsections\pause\fi%
      \beamer@tempcount=#7%
      \advance\beamer@tempcount by\beamer@sectionadjust%
      \edef\inserttocsectionnumber{\the\beamer@tempcount}%
      \def\inserttocsubsectionnumber{#2}%
      \def\inserttocsubsubsectionnumber{#3}%
      \def\inserttocsubsubsection{\hyperlink{Navigation#5}{#4}}%
      \beamer@tocifnothide{\ifnum\c@section=#1\beamer@toc@csss\else\beamer@toc@osss\fi}%
      {%
        \usebeamertemplate{toc subsubsection itemsep}%
        \def\beamer@breakhere{\\}%
        \beamer@tocact{\ifnum\c@section=#1\ifnum\c@subsection=#2\ifnum\c@subsubsection=#3\beamer@toc@csss\else\beamer@toc@osss\fi\else\beamer@toc@oosss\fi\else\beamer@toc@ooosss\fi}
        {subsubsection in toc}%
      }%
    }}%
    \beamer@restoreanother%
  }
  \beamer@todo%
  \fi\fi%
}

\makeatother

\setbeamertemplate{toc section itemsep}{\vskip1.5\baselineskip}
\setbeamertemplate{toc subsection itemsep}{\vskip1\baselineskip}
\setbeamertemplate{toc subsubsection itemsep}{\vskip0.5\baselineskip}

\begin{document}
\begin{frame}
\tableofcontents
\end{frame}
\begin{frame}
\tableofcontents[hideallsubsections]
\end{frame}
\section{A}
\begin{frame}
\tableofcontents[hideothersubsections,sectionstyle=hide]
\end{frame}
\subsection{A1}
\begin{frame}
\end{frame}
\subsection{A2}
\begin{frame}
\end{frame}
\subsection{A3}
\begin{frame}
\end{frame}
\subsection{A4}
\begin{frame}
\end{frame}
\section{B}
\begin{frame}
\end{frame}
\section{C}
\begin{frame}
\end{frame}
\section{D}
\begin{frame}
\end{frame}
\end{document}

alt text

alt text

alt text

Permanenter link

beantwortet 29 Feb '16, 09:49

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

Herzlichen Dank! Das sollte man direkt in das beamer-Projekt integrieren!

(02 Mär '16, 21:27) tom75
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×141
×18
×12

gestellte Frage: 26 Feb '16, 15:48

Frage wurde gesehen: 10,772 Mal

zuletzt geändert: 02 Mär '16, 21:27