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, 09:48

tom75's gravatar image

tom75
1.9k1445
Akzeptiert: 83%

bearbeitet 29 Feb, 08:57

saputello's gravatar image

saputello
18.4k22352

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

(26 Feb, 16: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, 01: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, 03:49

Henri's gravatar image

Henri
10.0k31730

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

(02 Mär, 15:27) tom75
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×94
×8
×6

Frage gestellt: 26 Feb, 09:48

Frage wurde angeschaut: 1,075 Mal

Zuletzt aktualisiert: 02 Mär, 15:27