
infolines
In meiner Beamer-Präsentation wollte ich die Fußzeile und die Kopfzeile des Outerthemes haben, tree
aber in der ersten Zeile sollte der Untertitel statt des Titels angezeigt werden. Also habe ich infolines
als Outertheme verwendet und \setbeamertemplate[headline]
kopiert beamerouterthemetree.sty
. Es funktioniert und wird kompiliert, aber mir gefällt das nicht, es gibt mir den folgenden Fehler:
ERROR: Undefined control sequence.
--- TeX said ---
\beamer@@tmpl@headline .../foot} \setbox \tempbox
=\hbox {\insertsectionhead...
l.108 \begin{document}
--- HELP ---
TeX encountered an unknown command name. You probably misspelled the
name. If this message occurs when a LaTeX command is being processed,
the command is probably in the wrong place---for example, the error
can be produced by an \item command that's not inside a list-making
environment. The error can also be caused by a missing \documentclass
command.
Hier ist mein (entfernter/gereinigter) Code:
\documentclass{beamer}
\usepackage{ragged2e}
\usepackage{etoolbox}
\usepackage{pgf,tikz}
\usetikzlibrary{arrows,shapes}
\apptocmd{\enumerate}{\justifying}{}{}
\apptocmd{\itemize}{\justifying}{}{}
\addtobeamertemplate{block begin}{}{\justifying}
\usetheme{default}
\usecolortheme{beaver}
\useoutertheme{infolines}
\useinnertheme{default}
\setbeamertemplate{sections/subsections in toc}[square]
\setbeamercolor{titlelike}{bg=darkred,fg=gray!15!white}
\setbeamercolor{frametitle}{fg=darkred}
\setbeamercolor{item}{fg=darkred}
\setbeamercolor{author in head/foot}{bg=darkred,fg=gray!5!white}
\setbeamertemplate{headline}
{%
\begin{beamercolorbox}[wd=\paperwidth,colsep=1.5pt]{upper separation line head}
\end{beamercolorbox}
\begin{beamercolorbox}[wd=\paperwidth,ht=2.5ex,dp=1.125ex,%
leftskip=.3cm,rightskip=.3cm plus1fil]{title in head/foot}
\usebeamerfont{title in head/foot}\insertshortsubtitle
\end{beamercolorbox}
\begin{beamercolorbox}[wd=\paperwidth,ht=2.5ex,dp=1.125ex,%
leftskip=.3cm,rightskip=.3cm plus1fil]{section in head/foot}
\usebeamerfont{section in head/foot}
\setbox\tempbox=\hbox{\insertsectionhead}%
\ifdim\wd\tempbox>1pt%
\hskip2pt\raise1.9pt\hbox{\vrule width0.4pt height1.875ex\vrule width 5pt height0.4pt}%
\hskip1pt%
\fi%
\insertsectionhead
\end{beamercolorbox}
\begin{beamercolorbox}[wd=\paperwidth,ht=2.5ex,dp=1.125ex,%
leftskip=.3cm,rightskip=.3cm plus1fil]{subsection in head/foot}
\usebeamerfont{subsection in head/foot}
\setbox\tempbox=\hbox{\insertsubsectionhead}%
\ifdim\wd\tempbox>1pt%
\hskip9.4pt\raise1.9pt\hbox{\vrule width0.4pt height1.875ex\vrule width 5pt height0.4pt}%
\hskip1pt%
\fi%
\insertsubsectionhead
\end{beamercolorbox}
\begin{beamercolorbox}[wd=\paperwidth,colsep=1.5pt]{lower separation line head}
\end{beamercolorbox}
}
\title{My (short) title}
\subtitle{Yet longer and not shortable subtitle}
\institute[SIN]{Long Long Long Long Long Long Institute Name}
\author[S. Name \and S. Name]{Name \textsc{Long} \and Name \textsc{Long}}
\justifying
\begin{document}
\frame[plain]{\titlepage}
\begin{frame}
\frametitle{Plan}
\tableofcontents[pausesections,subsectionstyle=shaded]
\end{frame}
\end{document}
Antwort1
Sie müssen eine Box zuordnen, also
\newsavebox{\tempbox}
Wenn Sie das temporäre Boxregister von Beamer verwenden möchten,
\makeatletter
\setbeamertemplate{headline}
{%
\begin{beamercolorbox}[wd=\paperwidth,colsep=1.5pt]{upper separation line head}
\end{beamercolorbox}
\begin{beamercolorbox}[wd=\paperwidth,ht=2.5ex,dp=1.125ex,%
leftskip=.3cm,rightskip=.3cm plus1fil]{title in head/foot}
\usebeamerfont{title in head/foot}\insertshortsubtitle
\end{beamercolorbox}
\begin{beamercolorbox}[wd=\paperwidth,ht=2.5ex,dp=1.125ex,%
leftskip=.3cm,rightskip=.3cm plus1fil]{section in head/foot}
\usebeamerfont{section in head/foot}
\sbox\beamer@tempbox{\insertsectionhead}%
\ifdim\wd\beamer@tempbox>1pt
\hskip2pt\raise1.9pt\hbox{\vrule width0.4pt height1.875ex\vrule width 5pt height0.4pt}%
\hskip1pt
\fi
\insertsectionhead
\end{beamercolorbox}
\begin{beamercolorbox}[wd=\paperwidth,ht=2.5ex,dp=1.125ex,%
leftskip=.3cm,rightskip=.3cm plus1fil]{subsection in head/foot}
\usebeamerfont{subsection in head/foot}
\sbox\beamer@tempbox{\insertsubsectionhead}%
\ifdim\wd\beamer@tempbox>1pt
\hskip9.4pt\raise1.9pt\hbox{\vrule width0.4pt height1.875ex\vrule width 5pt height0.4pt}%
\hskip1pt
\fi
\insertsubsectionhead
\end{beamercolorbox}
\begin{beamercolorbox}[wd=\paperwidth,colsep=1.5pt]{lower separation line head}
\end{beamercolorbox}
}
\makeatother
Beachten Sie, dass ich den Code mit
\sbox\beamer@tempbox{\insertsectionhead}%
Dies ist der richtige Befehl, da er „farbbewusst“ ist und \setbox\beamer@tempbox=\hbox{\insertsectionhead}
nicht.
Egal für welche Methode Sie sich entscheiden, verwenden Sie \sbox
.