如何制作多色的目录?

如何制作多色的目录?

我正在尝试更改 Beamer 演示文稿中目录的颜色,例如更改 Beamer 目录中的颜色和项目符号除了我想让每个部分的“项目符号”具有不同的颜色。也许这需要重新实现宏\tableofcontents,我愿意这样做,但有人知道更简单的方法吗?(有包吗?)我目前对华沙主题感兴趣,但对任何主题的意见都将不胜感激。

答案1

您必须重新定义\sectionintoc命令(原始定义位于 中beamerbasetoc.sty),并且根据使用的选项,重新定义其他模板;在下面的示例中,我重新定义了section in toc默认circle选项的模板(原始定义位于 中beamerbaseauxtemplates.sty);模板负责使用特殊装饰(示例中的圆圈),但命令实际上控制信息在目录中的显示方式。可以根据节计数器使用条件选择颜色方案\ifcase。在下面的示例代码中,我使用 标记了用于重新定义的行%NEW

\documentclass{beamer}
\usetheme{Warsaw}

\makeatletter
\newcommand\SectionColor{black}%NEW
\setbeamertemplate{section in toc}
{\leavevmode\leftskip=2ex%
  \llap{%
    \usebeamerfont*{section number projected}%
   \usebeamercolor{section number projected}%
    \begin{pgfpicture}{-1ex}{0ex}{1ex}{2ex}
      \color{\SectionColor}%NEW
      \pgfpathcircle{\pgfpoint{0pt}{.75ex}}{1.3ex}
      \pgfusepath{fill}
      \pgftext[base]{\color{fg}\inserttocsectionnumber}
    \end{pgfpicture}\kern1.25ex%
  }%
  \inserttocsection\par}

\def\sectionintoc{}
\def\beamer@sectionintoc#1#2#3#4#5{%
  \ifnum\c@tocdepth>0%
  \ifnum#4=\beamer@showpartnumber%
  {
  \beamer@saveanother%
  \gdef\beamer@todo{}%
  \beamer@slideinframe=#1\relax%
  \expandafter\only\beamer@tocsections{\gdef\beamer@todo{%
      \beamer@tempcount=#5\relax%
     \renewcommand\SectionColor{%NEW 
          \ifcase\the\beamer@tempcount\or green!30!black\or yellow!60!black\or blue!20!black\or orange!30!black\else magenta!30!black\fi } %NEW
       \advance\beamer@tempcount by\beamer@sectionadjust%
      \edef\inserttocsectionnumber{\the\beamer@tempcount}%
      \def\inserttocsection{\hyperlink{Navigation#3}{#2}}%
      \beamer@tocifnothide{\ifnum\c@section=#1\beamer@toc@cs\else\beamer@toc@os\fi}%
      {
        \ifbeamer@pausesections\pause\fi%
        \ifx\beamer@toc@ooss\beamer@hidetext
          \vskip1.5em
        \else
          \vfill
        \fi
        {%
          \hbox{\vbox{%
              \def\beamer@breakhere{\\}%
              \beamer@tocact{\ifnum\c@section=#1\beamer@toc@cs\else\beamer@toc@os\fi}{section in toc}}}%
         \par%
        }%
      }%
    }
  }%
  \beamer@restoreanother%
  }
  \beamer@todo%
  \fi\fi%
}

\makeatother

\begin{document}

\begin{frame}
\tableofcontents
\end{frame}

\section{One}
\begin{frame}test\end{frame}
\section{Two}
\begin{frame}test\end{frame}
\section{Three}
\begin{frame}test\end{frame}
\section{Four}
\begin{frame}test\end{frame}
\section{Five}
\begin{frame}test\end{frame}

\end{document}

在此处输入图片描述

相关内容