correct beamer multicol tableofcontents with page numbers

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: correct beamer multicol tableofcontents with page numbers

von hans1967 » Mo 6. Apr 2015, 22:02

Hallo zusammen,

Die beschriebenen Probleme konnten zu meiner Zufriedenheit gelöst werden...

Die Seitenzahlen in TOC kommen folgendermaßen in Reih' und Glied:
\makeatletter

\long\def\beamer@section[#1]#2{%
  \beamer@savemode%
  \mode<all>%
  \ifbeamer@inlecture
    \refstepcounter{section}%
    \beamer@ifempty{#2}%
    {\long\def\secname{#1}\long\def\lastsection{#1}}%
    {\global\advance\beamer@tocsectionnumber by 1\relax%
      \long\def\secname{#2}%
      \long\def\lastsection{#1}%
      \addtocontents{toc}{\protect\beamer@sectionintoc{\the\c@section}{#2\hfill\the\c@page}{\the\c@page}{\the\c@part}%
        {\the\beamer@tocsectionnumber\rightskip4cm}}}%
    {\let\\=\relax\xdef\sectionlink{{Navigation\the\c@page}{\noexpand\secname}}}%
    \beamer@tempcount=\c@page\advance\beamer@tempcount by -1%
    \beamer@ifempty{#1}{}{%
      \addtocontents{nav}{\protect\headcommand{\protect\sectionentry{\the\c@section}{#1}{\the\c@page}{\secname}{\the\c@part}}}%
      \addtocontents{nav}{\protect\headcommand{\protect\beamer@sectionpages{\the\beamer@sectionstartpage}{\the\beamer@tempcount}}}%
      \addtocontents{nav}{\protect\headcommand{\protect\beamer@subsectionpages{\the\beamer@subsectionstartpage}{\the\beamer@tempcount}}}%
    }%
    \beamer@sectionstartpage=\c@page%
    \beamer@subsectionstartpage=\c@page%
    \def\insertsection{\expandafter\hyperlink\sectionlink}%
    \def\insertsubsection{}%
    \def\insertsubsubsection{}%
    \def\insertsectionhead{\hyperlink{Navigation\the\c@page}{#1}}%
    \def\insertsubsectionhead{}%
    \def\insertsubsubsectionhead{}%
    \def\lastsubsection{}%
    \Hy@writebookmark{\the\c@section}{\secname}{Outline\the\c@part.\the\c@section}{2}{toc}%
    \hyper@anchorstart{Outline\the\c@part.\the\c@section}\hyper@anchorend%
    \beamer@ifempty{#2}{\beamer@atbeginsections}{\beamer@atbeginsection}%
  \fi%
  \beamer@resumemode}%

\def\beamer@subsection[#1]#2{%
  \beamer@savemode%
  \mode<all>%
  \ifbeamer@inlecture%
    \refstepcounter{subsection}%
    \beamer@ifempty{#2}{\long\def\subsecname{#1}\long\def\lastsubsection{#1}}
    {%
      \long\def\subsecname{#2}%
      \long\def\lastsubsection{#1}%
      \addtocontents{toc}{\protect\beamer@subsectionintoc{\the\c@section}{\the\c@subsection}{#2\hfill\the\c@page}{\the\c@page}{\the\c@part}{\the\beamer@tocsectionnumber}\rightskip4cm}%
    }%
    \beamer@tempcount=\c@page\advance\beamer@tempcount by -1%
    \addtocontents{nav}{%
      \protect\headcommand{\protect\beamer@subsectionentry{\the\c@part}{\the\c@section}{\the\c@subsection}{\the\c@page}{\lastsubsection}}%
      \protect\headcommand{\protect\beamer@subsectionpages{\the\beamer@subsectionstartpage}{\the\beamer@tempcount}}%
    }%
    \beamer@subsectionstartpage=\c@page%
    \edef\subsectionlink{{Navigation\the\c@page}{\noexpand\subsecname}}%
    \def\insertsubsection{\expandafter\hyperlink\subsectionlink}%
    \def\insertsubsubsection{}%
    \def\insertsubsectionhead{\hyperlink{Navigation\the\c@page}{#1}}%
    \def\insertsubsubsectionhead{}%
    \Hy@writebookmark{\the\c@subsection}{#2}{Outline\the\c@part.\the\c@section.\the\c@subsection.\the\c@page}{3}{toc}%
    \hyper@anchorstart{Outline\the\c@part.\the\c@section.\the\c@subsection.\the\c@page}\hyper@anchorend%
    \beamer@ifempty{#2}{\beamer@atbeginsubsections}{\beamer@atbeginsubsection}%
  \fi%
  \beamer@resumemode}

\makeatother
In der Box befindet sich lediglich der Code-Ausschnitt, der in meinem Minimalbeispiel zu ersetzen ist.

Ein funktionierender WorkAround für die vertikale Justierung der Zeilen und Zeilenabstände in TOC findet sich hier:
http://tex.stackexchange.com/questions/ ... column-toc

Es ist zwar ein Hack, aber besser als nix. Anfangs kam folgende Fehlermeldung bei Kompilierung des zweiten unter obigem Link gelisteten Lösungs-Minimalbeispiels: "Dimension too large". Irgendeine der folgenden Aktionen brachte schließlich den Erfolg: Kolumnenmodus auskommentieren, Neukompilieren, wieder einkommentieren und/oder die 3cm unter \vskip runterskalieren, ferner mal alle Hilfsdateien außer *.tex einschließlich *.pdf löschen und neukompilieren. Auch die 3cm unter \vskip wurden vom Kompiler hernach anstandslos akzeptiert.

best regards,

hans1967

correct beamer multicol tableofcontents with page numbers

von hans1967 » Mo 6. Apr 2015, 14:15

Hallo zusammen,

Das Vorhaben, in LaTeX Beamer ein Inhaltsverzeichnis über zwei Spalten inklusive Seitenzahlen zu realisieren, scheint in greifbarer Nähe. Leider klappt es noch nicht ganz.

meine Frage bezieht sich u.a auf folgenden Forenthread:
http://tex.stackexchange.com/questions/ ... ge-numbers

Wie mein Minimalbeispiel zeigt, gerät das Ergebnis inkonsistent:
\documentclass[xcolor=dvipsnames]{beamer}

\usepackage{/usr/share/texmf/tex/latex/beamer/themes/color/BeamerColor}
\usepackage[size=a4,scale=0.5]{beamerposter}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[latin1]{inputenc}
\usepackage[german]{babel}
\usepackage{graphicx}
\usepackage{ragged2e}
\usepackage{multicol}
\usepackage{etoolbox}

\usefonttheme{serif}

\useoutertheme{miniframes}

\setbeamerfont{headline}{size=\small,family=\sffamily}
\setbeamerfont{footline}{size=\small,family=\sffamily}
\setbeamerfont{title}{size=\Huge,family=\sffamily,series=\bfseries}
\setbeamerfont{subtitle}{size=\huge,family=\sffamily,series=\bfseries}
\setbeamerfont{author}{size=\huge,family=\sffamily,series=\bfseries}
\setbeamerfont{date}{size=\LARGE,family=\sffamily,series=\bfseries}
\setbeamerfont{institute}{size=\LARGE,family=\sffamily,series=\bfseries}

\setbeamersize{sidebar width left=2.0cm,sidebar width right=2.0cm}



    \defbeamertemplate*{footline}{my footline}
    {%
    \hbox{\begin{beamercolorbox}[wd=27cm,ht=0cm,dp=1cm,leftskip=2.5cm]{title in head/foot}%
        \hyperlink{GO_HERE}{zum Inhaltsverzeichnis}\hfill\insertframenumber
      \end{beamercolorbox}}%
      \vskip0pt%
    }
    \usebeamertemplate{my footline}



\makeatletter

\long\def\beamer@section[#1]#2{%
  \beamer@savemode%
  \mode<all>%
  \ifbeamer@inlecture
    \refstepcounter{section}%
    \beamer@ifempty{#2}%
    {\long\def\secname{#1}\long\def\lastsection{#1}}%
    {\global\advance\beamer@tocsectionnumber by 1\relax%
      \long\def\secname{#2}%
      \long\def\lastsection{#1}%
      \addtocontents{toc}{\protect\beamer@sectionintoc{\the\c@section}{#2\hfill\the\c@page\rightskip4cm}{\the\c@page}{\the\c@part}%
        {\the\beamer@tocsectionnumber}}}%
    {\let\\=\relax\xdef\sectionlink{{Navigation\the\c@page}{\noexpand\secname}}}%
    \beamer@tempcount=\c@page\advance\beamer@tempcount by -1%
    \beamer@ifempty{#1}{}{%
      \addtocontents{nav}{\protect\headcommand{\protect\sectionentry{\the\c@section}{#1}{\the\c@page}{\secname}{\the\c@part}}}%
      \addtocontents{nav}{\protect\headcommand{\protect\beamer@sectionpages{\the\beamer@sectionstartpage}{\the\beamer@tempcount}}}%
      \addtocontents{nav}{\protect\headcommand{\protect\beamer@subsectionpages{\the\beamer@subsectionstartpage}{\the\beamer@tempcount}}}%
    }%
    \beamer@sectionstartpage=\c@page%
    \beamer@subsectionstartpage=\c@page%
    \def\insertsection{\expandafter\hyperlink\sectionlink}%
    \def\insertsubsection{}%
    \def\insertsubsubsection{}%
    \def\insertsectionhead{\hyperlink{Navigation\the\c@page}{#1}}%
    \def\insertsubsectionhead{}%
    \def\insertsubsubsectionhead{}%
    \def\lastsubsection{}%
    \Hy@writebookmark{\the\c@section}{\secname}{Outline\the\c@part.\the\c@section}{2}{toc}%
    \hyper@anchorstart{Outline\the\c@part.\the\c@section}\hyper@anchorend%
    \beamer@ifempty{#2}{\beamer@atbeginsections}{\beamer@atbeginsection}%
  \fi%
  \beamer@resumemode}%

\def\beamer@subsection[#1]#2{%
  \beamer@savemode%
  \mode<all>%
  \ifbeamer@inlecture%
    \refstepcounter{subsection}%
    \beamer@ifempty{#2}{\long\def\subsecname{#1}\long\def\lastsubsection{#1}}
    {%
      \long\def\subsecname{#2}%
      \long\def\lastsubsection{#1}%
      \addtocontents{toc}{\protect\beamer@subsectionintoc{\the\c@section}{\the\c@subsection}{#2\hfill\the\c@page}{\the\c@page}{\the\c@part}{\the\beamer@tocsectionnumber}\rightskip4cm}%
    }%
    \beamer@tempcount=\c@page\advance\beamer@tempcount by -1%
    \addtocontents{nav}{%
      \protect\headcommand{\protect\beamer@subsectionentry{\the\c@part}{\the\c@section}{\the\c@subsection}{\the\c@page}{\lastsubsection}}%
      \protect\headcommand{\protect\beamer@subsectionpages{\the\beamer@subsectionstartpage}{\the\beamer@tempcount}}%
    }%
    \beamer@subsectionstartpage=\c@page%
    \edef\subsectionlink{{Navigation\the\c@page}{\noexpand\subsecname}}%
    \def\insertsubsection{\expandafter\hyperlink\subsectionlink}%
    \def\insertsubsubsection{}%
    \def\insertsubsectionhead{\hyperlink{Navigation\the\c@page}{#1}}%
    \def\insertsubsubsectionhead{}%
    \Hy@writebookmark{\the\c@subsection}{#2}{Outline\the\c@part.\the\c@section.\the\c@subsection.\the\c@page}{3}{toc}%
    \hyper@anchorstart{Outline\the\c@part.\the\c@section.\the\c@subsection.\the\c@page}\hyper@anchorend%
    \beamer@ifempty{#2}{\beamer@atbeginsubsections}{\beamer@atbeginsubsection}%
  \fi%
  \beamer@resumemode}

\makeatother



\setbeamertemplate{navigation symbols}{}


\author{Max Mustermann}
\title{Beamer-Book}
\subtitle{how to abuse Beamer to write a book}
\date{first edition 2015}
\institute{try crazy things corp.}

\begin{document}


\begin{frame}[plain]
    \titlepage
\end{frame}



\begin{frame}[label=GO_HERE]{\contentsname}
\begin{multicols}{2}
\tableofcontents
\end{multicols}
\end{frame}



\section{preface}
\section{chapter1}
\subsection{subchapter1.1}
\subsection{subchatper1.2}
\section{chapter2}
\subsection{subchapter2.1}
\subsection{subchapter2.2}
\section{chapter3}
\subsection{subchapter3.1}
\subsection{subchapter3.2}
\section{chapter4}
\subsection{subchapter4.1}
\subsection{subchapter4.2}
\section{chapter5}
\subsection{subchapter5.1}
\subsection{subchapter5.2}
\addtocontents{toc}{\newpage}
\section{chapter6}
\subsection{subchapter6.1}
\subsection{subchapter6.2}
\section{chapter7}
\subsection{subchapter7.1}
\subsection{subchapter7.2}
\section{chapter8}
\subsection{subchapter8.1}
\subsection{subchapter8.2}
\section{chapter9}
\subsection{subchapter9.1}
\subsection{subchapter9.2}
\section{infos}
\subsection{links}
\subsection{literature}



\begin{frame}
\frametitle{frametitle}
\begin{columns}
\begin{column}{12cm}
example text
\end{column}
\begin{column}{12cm}
example text
\end{column}
\end{columns}
\end{frame}


\end{document}
erstens tanzen die Seitenzahlen der ersten drei TOC-items aus der Reihe
zweitens weichen die Zeilenabstände der ersten und zweiten Kolumne voneinander ab

vielen Dank für eure Aufmerksamkeit,

best regards,

hans1967

Nach oben