Beamer 导航栏,各部分之间带有字符

Beamer 导航栏,各部分之间带有字符

我正在尝试为 Beamer 定义一个自定义主题。我希望有一个包含所有部分的水平列表,但它们之间有一个字符。我拥有的是:

\setbeamertemplate{headline}[text line]{\insertsectionnavigationhorizontal{\paperwidth}{}{}}

我希望看到的是这样的:

Section1 | Section2 | Section3 | Section4

那可能吗?

答案1

是的,这是可能的;虽然不简单,但有可能:

(有时间我会添加一些解释)

\documentclass{beamer}
\usepackage{totcount}
\usepackage{tikz}

\regtotcounter{section}
\newcounter{vertrules}

\setbeamercolor{section in head/foot}{fg=green!40!black}
\setbeamercolor*{frametitle}{fg=green!40!black}
\setbeamercolor{myheadline}{fg=green!40!black,bg=green!10}

\setbeamertemplate{headline}
{%
  \begin{beamercolorbox}[wd=\paperwidth]{myheadline}
    \vskip1.5ex%
    \insertsectionnavigationhorizontal{\paperwidth}{\hskip0pt}{\hskip-12pt}\vskip2pt
  \end{beamercolorbox}%
  \setcounter{vertrules}{\totvalue{section}}
  \ifnum\thevertrules<2 \else
  \addtocounter{vertrules}{-1}
  \begin{tikzpicture}[remember picture,overlay]
  \foreach \i in {1,2,...,\thevertrules}
  \draw[ultra thick,green!40!black] (\i*\sectionboxwd+0.5\i,0) -- (\i*\sectionboxwd+0.5\i,1);
  \end{tikzpicture}%
  \fi%
}

\setbeamertemplate{section in head/foot}{%
    \hspace*{-6pt}\setlength\fboxsep{0pt}%
    \parbox[c][4ex][t]{\dimexpr\sectionboxwd-5pt\relax}{%
      \hfill\parbox{\dimexpr\sectionboxwd-12pt\relax}{%
      \raggedright\insertsectionhead%
      }\hfill\mbox{}%
    }\hspace*{6pt}%
}

\newlength\sectionboxwd

\AtBeginDocument{%
  \ifnum\totvalue{section}>0 
    \setlength\sectionboxwd{\dimexpr\paperwidth/\totvalue{section}\relax}
  \else
    \setlength\sectionboxwd{\paperwidth}
  \fi
} 

\begin{document}

\section{Test Section One with a really long title}
\begin{frame}\frametitle{Test frame one}test\end{frame}
\section{Test Section Two}
\begin{frame}\frametitle{Test frame two}test\end{frame}
\section{Test Section Three}
\begin{frame}\frametitle{Test frame three}test\end{frame}
\section{Test Section Four}
\begin{frame}\frametitle{Test frame four}test\end{frame}

\end{document}

一些图像显示了使用垂直规则的结果:

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

答案2

因此我尝试了一下贡佐拉麦地那这就是我想要的——再次感谢!

\setbeamertemplate{section in head/foot shaded}{%  
\color{white}\insertsectionhead\ \ \ \ |  
}  

\setbeamertemplate{section in head/foot}{%  
\insertsectionhead\color{white}\ \ \ \ |  
}  

\setbeamertemplate{headline}{%  
\begin{beamercolorbox}[wd=\paperwidth,ht=2.25ex,dp=1ex]{myheadline}  
\Tiny\hspace*{4mm} {\hspace*{2ex}\color{white}|\hspace*{-2ex}}\insertsectionnavigationhorizontal{0ex}{}{}  
\end{beamercolorbox}%  
}

它会打印所有部分以及它们之间的位置|。白色是因为在我的配色方案中它应该是白色的。

我唯一不知道的是如何更改每个部分的边距/填充。您可以看到我添加的尾随空格。我这样做是为了让每个部分前后的空间相同。

相关内容