我怎样才能将图标和颜色与部分一起存储并在 beamer 的 \tableofcontents 中使用它?

我怎样才能将图标和颜色与部分一起存储并在 beamer 的 \tableofcontents 中使用它?

我的目标是创建一个更漂亮的议程页面,为此,我想定义一个图标和一种用于格式化目录的部分颜色。也许最终目录实际上是通过 TikZ 格式化的,而不是简单的列表,因此我感兴趣的是如何在 *.toc 文件中存储更多信息而不仅仅是部分名称,并通过 -command 重新使用它,或者\tableofcontents定义我自己的\fancytoc-command。

这里是一个 MWE,它定义了一个\sectionsymbol和一个sectioncolor,以及一个用于与章节标题一起设置它们的命令\myfancysection

\documentclass{beamer}

\usepackage{fontawesome}

\definecolor{sectioncolor}{rgb}{0,0,0}
\newcommand{\sectionsymbol}{\relax}
\newcommand{\sectionstart}{\frame{\textcolor{sectioncolor}{\sectionsymbol\ \secname}}}

\newcommand{\myfancysection}[3]{\colorlet{sectioncolor}{#1}\renewcommand{\sectionsymbol}{#2}\section{#3}}

\begin{document}
\begin{frame}{Agenda}
\tableofcontents
\end{frame}

\myfancysection{red}{\faAmbulance}{My red section}
\sectionstart

\myfancysection{green}{\faAutomobile}{My green section}
\sectionstart


\begin{frame}{Agenda as I wanted to be automatically}
\begin{description}[\faAutomobile]
    \item[\color{red}\faAmbulance] \textcolor{red}{My red section}
    \item[\color{green}\faAutomobile] \textcolor{green}{My green section}
\end{description}
\end{frame}
\end{document}

在此处输入图片描述

最后一帧只是说明了如何使用附加信息来格式化 ToC,正如所提到的,我也可以想象通过 TikZ 构建 ToC,而且我不一定想要一个只存储颜色和符号的解决方案,但也许是一个键值对列表,如果这不是太高级的话。

答案1

经过进一步的研究,我找到了一个巧妙的方法,将环境内容写入文档和目录如何向章节及其目录中的条目添加附加信息?如何为 Beamer 创建精美的目录

基本思路是将一些命令写入文件*.toc,然后在section in toc模板中引用它们。综合起来,我们得到:

\documentclass{beamer}

\usepackage{fontawesome}

\definecolor{sectioncolor}{rgb}{0,0,0}
\newcommand{\sectionsymbol}{\relax}
\newcommand{\sectionstart}{\frame{\textcolor{sectioncolor}{\sectionsymbol\ \secname}}}

\newcommand{\myfancysection}[3]{\addtocontents{toc}{%
\protect\colorlet{sectioncolor}{#1}}\colorlet{sectioncolor}{#1}%
\addtocontents{toc}{\protect\renewcommand{\protect\sectionsymbol}{\protect#2}}\renewcommand{\sectionsymbol}{#2}\section{#3}}

\setbeamertemplate{section in toc}{\textcolor{sectioncolor}{\sectionsymbol\ \inserttocsection}}

\begin{document}
\begin{frame}{Agenda}
\tableofcontents
\end{frame}

\myfancysection{red}{\faAmbulance}{My red section}
\sectionstart

\myfancysection{green}{\faAutomobile}{My green section}
\sectionstart

\end{document}

议程页面如下:

在此处输入图片描述

相关内容