Fehler „Undefinierte Steuersequenz“ für ein Symbol zu „\setbox“ beim Zurücksetzen der Beamer-Überschrift

Fehler „Undefinierte Steuersequenz“ für ein Symbol zu „\setbox“ beim Zurücksetzen der Beamer-Überschrift

infolinesIn meiner Beamer-Präsentation wollte ich die Fußzeile und die Kopfzeile des Outerthemes haben, treeaber in der ersten Zeile sollte der Untertitel statt des Titels angezeigt werden. Also habe ich infolinesals 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.

verwandte Informationen