W przypadku Latexa i tworzenia prezentacji przy użyciu pakietu Beamer tworzenie spisu treści jest proste, i składa się z dwóch kroków:

  1. Dodać do prezentacji informacji o podziale jej na sekcje, podsekcje i pod podsekcje (czyli rozdziały i pod rozdziały). Można to zrobić przy pomocy poleceń:
    \section{Tytuł sekcji}

    \subsection{Tytuł podsekcji}

    \subsubsection{Tytuł pod podsekcji
    }

    Jeżeli użyjemy któregoś polecenia w takiej formie: \section*{Tytuł sekcji}, to wybrana sekcja nie będzie uwzględniania w spisie treści.

  2. Wygenerować wpis przy użyciu polecenia \tableofcontents. Pozwoli to na wstawienie spisu treści w miejscu wystąpienia tego polecenia.

I tak jak z punktem pierwszym problemów raczej być nie powinno, to mamy spory wpływ na generowanie spisu treści. I poniżej kilka przykładów, jak może wyglądać spis treści, generowany zarówno na początku dokumentu, jak również przed większymi fragmentami prezentacji.

Podstawowy spis treści, generuje na slajdzie wszystkie sekcji, podsekcje i pod podsekcje:

\begin{frame}{Spis treści 1}
    \tableofcontents
\end{frame
}

W przypadku niewielkich prezentacji, taki spis treści może być w porządku. Jednak jeżeli prezentacja jest długa, jest podzielona na wiele części, to nie będzie to zbyt przejrzyste.

Można wobec tego wygenerować spis treści zawierający tylko główne punkty:

\begin{frame}{Spis treści 2}
    \tableofcontents[pausesections,hideallsubsections]
\end{frame
}

Powyższy wpis wyświetli tylko główne sekcje dokumentu (parametr hideallsubsections) oraz pozwoli na wyświetlenie spisu treści stopniowo, po jednym punkcie (parametr pausesections). Dzięki temu można spokojnie omówić, co będzie przedmiotem wykładu w każdej części prezentacji.

Przydatne także może być generowanie spisu treści przed rozpoczęciem danej sekcji, dzięki czemu można przedstawić dokładny plan prezentacji.

\begin{frame}{Spis treści 3}
    \tableofcontents[currentsection, hideothersubsections,sections={<1-3>}]
\end{frame
}

Pojawiły się się 3 nowe parametry:

  • currentsection – powoduje, że wszystkie sekcje poza aktualną będą wyświetlono jako przyciemnione, czyli aktualna sekcja zostanie wyróżniona
  • hideothersubsections – podsekcje z innych sekcji niż aktualna zostaną ukryte, czyli zostaną tylko główne sekcje
  • sections – pozwala określić, które sekcje mają zostać wyświetlone, w tym przypadku, czyli tutaj od 1 do 3, a aktualna sekcja ma numer 2

Pojawia się jednak pewien problem, gdy nie chcemy wyświetlić pod podsekcji. Nie ma w takim przypadku możliwości wyłączenia ich wyświetlenie (przy pozostawieniu wyświetlania tylko podsekcji). Sposobem na to jest użycie dodatkowej komendy \setcounter, która pozwala na zdefiniowanie poziomu zagłębienia spisu treści:

\begin{frame}{Spis treści 4}
        \setcounter{tocdepth}{2}
        \tableofcontents[sectionstyle=show/hide,subsectionstyle=show/show/hide]
\end{frame
}

Oprócz nowej komendy pojawiły się dwie dodatkowe opcje:

  • sectionstyle – pozwala na określenie, czy i jak mają być wyświetlane sekcje, pierwszy parametr dotyczy aktualnej sekcji (ma zostać pokazana), drugi mówi o pozostałych sekcjach (mają zostać schowane)
  • subsectionstyle – ten parametr natomiast pozwala określić co ma się dziać z podsekcjami: pokaż aktualną podsekcję, pokaż podsekcje aktualnej sekcji, ukryj inne podsekcje

Zamiast hide można także użyć przełącznika shaded.

Jak widać, te dwie ostatnie opcje tak naprawdę pozwalają zdefiniować co ma się dziać ze spisem treści, pozostałe przełączniki tylko w odpowiedni sposób je konfigurują.

Źródła