
在我的投影機簡報中,我希望有infolines
外主題的腳線和tree
外主題的標題行,但它在第一行顯示副標題而不是標題。所以我把它infolines
作為外主題並\setbeamertemplate[headline]
進行了複製beamerouterthemetree.sty
。它可以工作並編譯,但我不喜歡這給我以下錯誤:
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.
這是我的(剝離/純化)代碼:
\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}
答案1
你需要分配一個盒子,所以這樣做
\newsavebox{\tempbox}
如果你想使用Beamer的臨時盒子暫存器,請執行以下操作
\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
請注意,我使用修復了程式碼
\sbox\beamer@tempbox{\insertsectionhead}%
這是正確的命令,因為它是“顏色感知”的,但\setbox\beamer@tempbox=\hbox{\insertsectionhead}
不是。
因此,無論您選擇哪種方法,請使用\sbox
.