\documentclass[aspectratio=169]{beamer}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[sfdefault,scaled=0.9]{FiraSans} % modern geometric sans-serif
% \usepackage{eulervm} % Euler math font (Zapf) — upright,
%\usepackage{lmodern}
\usepackage{amsmath,amssymb,amsthm}
\usepackage{booktabs}
\usepackage{graphicx}
\usepackage[backend=biber, style=numeric, citestyle=numeric]{biblatex}
\addbibresource{refs.bib}
\AtBeginDocument{%
\setbeamerfont{footnote}{size=\tiny}%
\setbeamercolor{footnote}{fg=UniPiMuted}%
\setbeamercolor{footnote mark}{fg=UniPiMuted}%
}
% If the .sty files are in a subdirectory called theme/, uncomment these lines:
\makeatletter
\def\input@path{{../theme/}}
\makeatother
\usetheme{unipi}
% Suppress Beamer's spurious Overfull \hbox warnings on internal frames.
\hfuzz=2pt
\vfuzz=2pt
% -----------------------------------------------------------------------------
% Progress bar — disabled by default.
% A thin gold bar advances above the footer at each frame.
% Replace \progressbarfalse with \progressbartrue to enable it.
% -----------------------------------------------------------------------------
\progressbarfalse
% \progressbartrue
% -----------------------------------------------------------------------------
% Section overview — enabled by default.
% The theme automatically inserts an outline slide at each \section.
% To suppress it, uncomment the line below.
% -----------------------------------------------------------------------------
\showsectionoverview{true}
% \showsectionoverview{false}
% -----------------------------------------------------------------------------
% Metadata — all fields are optional; omitting one silently hides it.
% -----------------------------------------------------------------------------
\title{UniPi Beamer Theme}
\subtitle{A practical user guide}
\author{Angelo Nardone}
%\date{April 2, 2026}
\course{Theme documentation}
\affiliation{Department of Computer Science -- University of Pisa}
% Footer information
\footerpresentationtitle{UniPi Theme Guide}
\footercourse{Documentation}
\closinginfo{angelo.nardone@di.unipi.it}
% Logo on the title page.
% \titlelogo{assets/cherubino.eps} — default bundled logo
% \titlelogo{assets/other-logo.pdf} — custom override
% \titlelogo{} — suppress the logo entirely
\titlelogo{assets/cherubino.pdf}
\begin{document}
\maketitle
% =============================================================================
\section{Introduction}
% =============================================================================
\begin{frame}
\frametitle{Purpose of this file}
\framesubtitletext{A guide, not only a demo}
This document is a \keypoint{practical guide} to the UniPi Beamer theme.
It explains each feature with short academic examples, so you can copy
the parts you need and discard the rest.
\bigskip
\begin{twocols}
\begin{itemize}
\item Inline commands and utilities
\item Block environments
\item Theorem-style shorthands
\end{itemize}
\colbreak
\begin{itemize}
\item Two-column layouts and figures
\item Code listings and pseudocode
\item Special slides and preamble options
\end{itemize}
\end{twocols}
\bigskip
\begin{noteblock}{How to use this file}
Each section focuses on one feature.
The source file is the best reference for syntax and usage.
\end{noteblock}
\end{frame}
\begin{frame}
\frametitle{File structure}
\framesubtitletext{What the theme consists of}
The theme is made of two files — place them in the same directory as your
\texttt{.tex} file, or anywhere on your TEXMF tree:
\begin{center}
\begin{tabular}{ll}
\toprule
File & Role \\
\midrule
\texttt{beamerthemeunipi.sty} & layout, fonts, environments, commands \\
\texttt{beamercolorthemeunipi.sty} & colours only — edit to create variants \\
\bottomrule
\end{tabular}
\end{center}
\begin{twocols}
\begin{highlightblock}{To load the theme}
\code{\char`\\usetheme\{unipi\}}
\smallskip
The colour file is loaded automatically.
\end{highlightblock}
\colbreak
\begin{noteblock}{Subdirectory usage}
If the files are in \texttt{theme/}, add before \texttt{\char`\\usetheme}:
\smallskip
\code{\char`\\makeatletter}\\
\code{\char`\\def\char`\\input@path\{\{theme/\}\}}\\
\code{\char`\\makeatother}
\end{noteblock}
\end{twocols}
\end{frame}
% =============================================================================
\section{Inline Commands}
% =============================================================================
\sectiondivider[Small commands for everyday text]{Inline Commands}
\begin{frame}
\frametitle{The four inline commands}
\framesubtitletext{When and how to use each one}
\begin{itemize}
\item \texttt{\char`\\keypoint\{...\}} — \keypoint{bold dark-blue emphasis}.
Use it to stress a key concept or term.
\item \texttt{\char`\\highlight\{...\}} — \highlight{gold background}.
Use it to draw attention to a value or result.
\item \texttt{\char`\\code\{...\}} — \code{monospaced blue}.
Use it for \code{identifiers}, \code{variables}, short snippets.
\item \texttt{\char`\\sourcenote\{...\}} — centred muted attribution.
Use it below figures and tables.
\end{itemize}
\begin{noteblock}{Quick rule}
You can use \texttt{\char`\\keypoint} for concepts,
\texttt{\char`\\highlight} for values or conclusions,
\texttt{\char`\\code} for identifiers.
None of these should replace a block when a heading is needed.
\end{noteblock}
\end{frame}
\begin{frame}
\frametitle{Inline commands in context}
\framesubtitletext{Example}
In algorithm analysis, \keypoint{Merge Sort} runs in
\highlight{$O(n\log n)$} time and requires \highlight{$O(n)$} extra space.
It can be implemented through a function such as \code{merge\_sort(A, lo, hi)}.
\medskip
\begin{center}
\begin{tabular}{lcc}
\toprule
Algorithm & Worst-case time & Extra space \\
\midrule
Merge Sort & $O(n\log n)$ & $O(n)$ \\
Heap Sort & $O(n\log n)$ & $O(1)$ \\
Quick Sort & $O(n\log n)$ average & $O(\log n)$ \\
\bottomrule
\end{tabular}
\end{center}
\sourcenote{Adapted from Cormen et al., \emph{Introduction to Algorithms}, MIT Press, 2022.}
\end{frame}
% =============================================================================
\section{Blocks}
% =============================================================================
\sectiondivider[Blocks for structured academic content]{Blocks}
\begin{frame}
\frametitle{Why use blocks}
\framesubtitletext{Visual structure communicates meaning}
Each block environment has a distinct colour and an intended use.
Choosing the right one helps the audience follow the slide faster.
\medskip
\begin{twocols}[0.52]
{\small
\begin{tabular}{ll}
\toprule
Environment & Intended use \\
\midrule
\texttt{definitionblock} & formal definitions \\
\texttt{highlightblock} & key takeaways \\
\texttt{goldblock} & theorems, main results \\
\texttt{resultblock} & proofs, derived results \\
\texttt{noteblock} & remarks, asides \\
\texttt{warningblock} & caveats, edge cases \\
\texttt{exampleblockunipi}& worked examples \\
\bottomrule
\end{tabular}}
\colbreak
\begin{noteblock}{Note on naming}
\texttt{exampleblockunipi} uses a UniPi-prefixed name because
Beamer already defines \texttt{exampleblock} internally, and
\code{\char`\\newenvironment} cannot redefine it.
\end{noteblock}
\end{twocols}
\end{frame}
\begin{frame}
\frametitle{Definition, note, and warning}
\framesubtitletext{The three most common blocks}
\begin{definitionblock}{Definition — comparison sort}
A \keypoint{comparison sort} is a sorting algorithm that determines the
order of the input \emph{only} through pairwise comparisons.
\end{definitionblock}
\begin{noteblock}{Remark}
Merge Sort, Heap Sort, and Quick Sort are comparison sorts.
Counting Sort and Radix Sort are not.
\end{noteblock}
\begin{warningblock}{Warning}
If the assumptions on the input change (e.g.\ integer keys in a small
range), a non-comparison sort may be far more efficient.
\end{warningblock}
\end{frame}
\begin{frame}
\frametitle{Highlight, result, and example}
\framesubtitletext{For key statements and their consequences}
\begin{highlightblock}{Main idea}
In the comparison model, sorting has a worst-case lower bound of
\keypoint{$\Omega(n\log n)$} comparisons.
\end{highlightblock}
\begin{resultblock}{Consequence}
Since Merge Sort runs in $O(n\log n)$, it is \keypoint{asymptotically
optimal} among comparison sorts.
\end{resultblock}
\begin{exampleblockunipi}{Example}
On input $\langle 5,3,8,1,4\rangle$, Merge Sort returns
$\langle 1,3,4,5,8\rangle$ after $\Theta(n\log n)$ comparisons.
\end{exampleblockunipi}
\end{frame}
\begin{frame}
\frametitle{Theorem-style shorthands}
\framesubtitletext{theoremblock, lemmablock, corollaryblock}
For mathematical content the theme provides shorthand environments that
automatically prepend a label (``Theorem'', ``Lemma'', etc.)\ to the title:
\begin{theoremblock}{Lower bound for comparison sorting}
Every deterministic comparison sort performs $\Omega(n\log n)$
comparisons in the worst case.
\end{theoremblock}
\begin{lemmablock}{Stirling estimate}
$\log_2(n!) = \Theta(n\log n)$.
\end{lemmablock}
\begin{corollaryblock}{Optimality of Merge Sort}
Merge Sort is asymptotically optimal among comparison sorts.
\end{corollaryblock}
\end{frame}
\begin{frame}
\frametitle{How to present a proof on a slide}
\framesubtitletext{Recommended pattern: theorem + proof sketch + open problem}
\begin{goldblock}{Theorem — Lower bound}
Every deterministic comparison sort performs $\Omega(n\log n)$
comparisons in the worst case.
\end{goldblock}
\begin{resultblock}{Proof sketch}
Any comparison sort defines a binary decision tree with at least $n!$
leaves. Since a tree of height $h$ has at most $2^h$ leaves,
$h \geq \log_2(n!) = \Omega(n\log n)$. \hfill\qed
\end{resultblock}
\begin{openproblemblock}{Practical integer sorting}
Can algorithms with guarantees like $O(n\sqrt{\log\log n})$ become
competitive on real hardware?
\end{openproblemblock}
\end{frame}
% =============================================================================
\section{Columns and Layout}
% =============================================================================
\sectiondivider[How to organise content on a slide]{Columns and Layout}
\begin{frame}
\frametitle{The \texttt{twocols} environment}
\framesubtitletext{Syntax and optional width argument}
\texttt{twocols} wraps Beamer's \texttt{columns} environment with a simpler
interface. The optional argument sets the \keypoint{left column width} as a
fraction of the text width (default: \highlight{0.48}).
\medskip
\begin{center}
\code{\char`\\begin\{twocols\}} \quad (equal split, default 0.48) \\[2pt]
\code{\char`\\begin\{twocols\}[0.60]} \quad (wider left column) \\[2pt]
\code{\char`\\colbreak} \quad (separates the two columns) \\[2pt]
\code{\char`\\end\{twocols\}}
\end{center}
\begin{noteblock}{Right column width}
The right column is computed automatically as
$1 - \text{left} - 0.04$, where $0.04$ is a small gutter.
You never need to specify it manually.
\end{noteblock}
\end{frame}
\begin{frame}
\frametitle{Equal split — \texttt{twocols} without argument}
\framesubtitletext{Both columns have the same visual weight}
\begin{twocols}
\begin{definitionblock}{Merge Sort}
Divide the array in half, sort each half recursively, then merge.
Time: $O(n\log n)$. Space: $O(n)$.
\end{definitionblock}
\begin{noteblock}{Properties}
\begin{itemize}
\item Stable sort
\item Optimal comparison sort
\item $O(n)$ auxiliary space
\end{itemize}
\end{noteblock}
\colbreak
\begin{definitionblock}{Heap Sort}
Build a max-heap in $O(n)$, then extract the max $n$ times.
Time: $O(n\log n)$. Space: $O(1)$.
\end{definitionblock}
\begin{noteblock}{Properties}
\begin{itemize}
\item Unstable sort
\item In-place ($O(1)$ space)
\item Poor cache locality
\end{itemize}
\end{noteblock}
\end{twocols}
\end{frame}
\begin{frame}
\frametitle{Asymmetric split — \texttt{twocols[0.60]}}
\framesubtitletext{Wider left column for the main content}
\begin{twocols}[0.60]
\begin{goldblock}{When to use a wider left column}
Choose an asymmetric split when the left side contains the main
argument, a theorem, or a figure, and the right side contains
supplementary remarks or short bullet points.
\end{goldblock}
\begin{noteblock}{Tip}
Values between $0.55$ and $0.65$ work well.
Avoid going below $0.35$ for either column.
\end{noteblock}
\colbreak
\begin{itemize}
\item Merge Sort \\ $a{=}2,b{=}2 \Rightarrow O(n\log n)$
\item Binary search \\ $a{=}1,b{=}2 \Rightarrow O(\log n)$
\item Strassen \\ $a{=}7,b{=}2 \Rightarrow O(n^{2.81})$
\end{itemize}
\end{twocols}
\end{frame}
\begin{frame}
\frametitle{Figures and captions}
\framesubtitletext{Images and \texttt{\char`\\sourcenote}}
Use standard \code{\char`\\includegraphics} from the \texttt{graphicx} package.
Place \code{\char`\\sourcenote\{...\}} immediately below for attribution.
\begin{twocols}[0.52]
\begin{center}
% Replace with: \includegraphics[width=\linewidth]{assets/your-figure}
\fbox{\parbox[c][3.8cm][c]{0.92\linewidth}{\centering
\small\color{gray} Insert your figure here\\[4pt]
\texttt{\char`\\includegraphics[width=\char`\\linewidth]\{...\}}
}}
\end{center}
\sourcenote{Replace this line with the actual source of your figure.}
\colbreak
\begin{itemize}
\item Prefer \highlight{vector graphics} (PDF, EPS) for diagrams.
\item Avoid small text inside images: it becomes unreadable.
\item Use \code{\char`\\linewidth} as the width to fill the column.
\item Always add a \code{\char`\\sourcenote} when attribution is needed.
\end{itemize}
\end{twocols}
\end{frame}
\begin{frame}
\frametitle{Nested lists — three marker levels}
\framesubtitletext{Each nesting level has a distinct, branded marker}
The theme defines a different marker for each of the three \texttt{itemize}
levels: a \keypoint{filled blue circle}, a \keypoint{mid-blue dash}, and an
\keypoint{open muted circle}.
\begin{twocols}
\begin{itemize}
\item Comparison sorts
\begin{itemize}
\item Merge Sort
\begin{itemize}
\item stable
\item $O(n)$ space
\end{itemize}
\item Heap Sort
\begin{itemize}
\item in-place
\end{itemize}
\end{itemize}
\item Non-comparison sorts
\begin{itemize}
\item Counting Sort
\item Radix Sort
\end{itemize}
\end{itemize}
\colbreak
\begin{enumerate}
\item Divide the input in half
\item Sort each half recursively
\item Merge the two sorted halves
\end{enumerate}
\begin{noteblock}{Enumerate}
Numbered lists use Beamer's default style in the institutional blue.
\end{noteblock}
\end{twocols}
\end{frame}
% =============================================================================
\section{Code and Pseudocode}
% =============================================================================
\sectiondivider[Real code vs algorithmic logic]{Code and Pseudocode}
\begin{frame}
\frametitle{Two tools for two purposes}
\framesubtitletext{Choose based on what you want to communicate}
\begin{twocols}
\begin{highlightblock}{\texttt{lstlisting} + \texttt{\char`\\unipicodeset}}
Use for \keypoint{real source code} in a specific language.
Requires \texttt{[fragile]} on the frame, or use
\texttt{unipicodeframe} which handles it automatically.
\end{highlightblock}
\begin{noteblock}{Supported languages}
Any language known to \texttt{listings}: Python, C, C++, Java,
Bash, SQL, \ldots\ Use \texttt{\{\}} for plain monospaced.
\end{noteblock}
\colbreak
\begin{highlightblock}{\texttt{pseudoblock}}
Use for \keypoint{algorithmic logic} independent of any language.
No \texttt{[fragile]} needed. Supports full \LaTeX\ math:
$\leftarrow$, $\lfloor\cdot\rfloor$, $\Theta$, \ldots
\end{highlightblock}
\begin{noteblock}{ASCII only in \texttt{lstlisting}}
The \texttt{listings} package processes verbatim text before
\texttt{inputenc}: non-ASCII characters cause a compile error.
\end{noteblock}
\end{twocols}
\end{frame}
\begin{frame}[fragile]
\frametitle{\texttt{lstlisting} inside a regular frame}
\framesubtitletext{Add \texttt{[fragile]}, call \texttt{\char`\\unipicodeset}, then write the listing}
\unipicodeset{python}
\begin{lstlisting}
def binary_search(A, x):
lo, hi = 0, len(A) - 1
while lo <= hi:
mid = (lo + hi) // 2
if A[mid] == x: return mid
elif A[mid] < x: lo = mid + 1
else: hi = mid - 1
return -1
\end{lstlisting}
\begin{noteblock}{Language selection}
\code{\char`\\unipicodeset\{python\}} activates Python highlighting.
Use \code{\char`\\unipicodeset\{\}} (empty braces) for plain monospaced
output with no syntax colouring.
\end{noteblock}
\end{frame}
% Note: \end{unipicodeframe} and \end{lstlisting} must NOT appear as text
% inside a lstlisting body — the Beamer/listings parser treats them as real
% end-markers even inside a comment. Show the syntax outside the listing.
\begin{unipicodeframe}[\texttt{[fragile,t]} is handled automatically]{%
\texttt{unipicodeframe} — dedicated code slide}{c}
\begin{lstlisting}
int binary_search(int *A, int n, int x) {
int lo = 0, hi = n - 1;
while (lo <= hi) {
int mid = lo + (hi - lo) / 2;
if (A[mid] == x) return mid;
if (A[mid] < x) lo = mid + 1;
else hi = mid - 1;
}
return -1;
}
\end{lstlisting}
\end{unipicodeframe}
\begin{frame}
\frametitle{\texttt{unipicodeframe} syntax}
\framesubtitletext{How to structure a dedicated code slide}
The \texttt{unipicodeframe} environment wraps a full Beamer frame and
sets \texttt{[fragile,t]} automatically. Its three arguments are:
\medskip
\begin{center}
\begin{tabular}{lll}
\toprule
Argument & Position & Example \\
\midrule
Optional subtitle & \texttt{[...]} & \texttt{[Iterative version]} \\
Frame title & \texttt{\{...\}} & \texttt{\{Binary Search\}} \\
Language & \texttt{\{...\}} & \texttt{\{c\}} or \texttt{\{\}} \\
\bottomrule
\end{tabular}
\end{center}
\begin{warningblock}{Warning}
Never write \texttt{\char`\\end\{unipicodeframe\}} or
\texttt{\char`\\end\{lstlisting\}} as literal text inside a
\texttt{lstlisting} body: the parser treats them as real end-markers
and the document will not compile.
\end{warningblock}
\end{frame}
\begin{frame}
\frametitle{\texttt{pseudoblock} — algorithmic logic}
\framesubtitletext{No fragile needed, full \LaTeX\ math available}
\begin{pseudoblock}{Binary Search}
\textbf{Input:} sorted array $A[0..n{-}1]$, target $x$ \\
$lo \leftarrow 0$;\enspace $hi \leftarrow n-1$ \\[1mm]
\textbf{while} $lo \leq hi$ \textbf{do} \\
\quad $mid \leftarrow \lfloor(lo+hi)/2\rfloor$ \\
\quad \textbf{if} $A[mid] = x$: \textbf{return} $mid$ \\
\quad \textbf{if} $A[mid] < x$: $lo \leftarrow mid+1$ \\
\quad \textbf{else}:\enspace $hi \leftarrow mid-1$ \\[1mm]
\textbf{return} $-1$
\end{pseudoblock}
\begin{noteblock}{Pseudoblock syntax}
Use \texttt{\char`\\textbf\{...\}} for keywords and \texttt{\$...\$}
for mathematical notation. End each line explicitly with
\texttt{\char`\\\char`\\ }. No \texttt{[fragile]} is required.
\end{noteblock}
\end{frame}
% =============================================================================
\section{Special Slides}
% =============================================================================
\sectiondivider[Preamble options and structural commands]{Special Slides}
\begin{frame}
\frametitle{Progress bar and section overview}
\framesubtitletext{Two toggles to set in the preamble}
\begin{twocols}
\begin{highlightblock}{Progress bar}
\code{\char`\\progressbarfalse} \enspace (default)\\
\code{\char`\\progressbartrue}
\smallskip
A thin gold bar above the footer advances frame by frame.
Automatically hidden on appendix and special slides.
\end{highlightblock}
\colbreak
\begin{highlightblock}{Section overview}
\code{\char`\\showsectionoverview\{true\}} \enspace (default)\\
\code{\char`\\showsectionoverview\{false\}}
\smallskip
An outline slide is inserted automatically at each \texttt{\char`\\section}.
Call \code{\char`\\sectionoverviewframe} to insert one manually.
\end{highlightblock}
\end{twocols}
\end{frame}
\begin{frame}
\frametitle{Logo and metadata fields}
\framesubtitletext{All fields are optional and composable}
\begin{twocols}
\begin{highlightblock}{Logo}
\code{\char`\\titlelogo\{path\}} \enspace (override)\\
\code{\char`\\titlelogo\{\}} \enspace\enspace (suppress)
\smallskip
The default is \texttt{assets/cherubino}.
Call it before \texttt{\char`\\maketitle}.
\end{highlightblock}
\colbreak
\begin{highlightblock}{Metadata fields}
\code{\char`\\course\{...\}}\\
\code{\char`\\affiliation\{...\}}\\
\code{\char`\\closinginfo\{...\}}
\smallskip
Each field can be omitted independently;
empty fields are silently hidden.
\end{highlightblock}
\end{twocols}
\medskip
\begin{noteblock}{Footer text}
\code{\char`\\footercourse\{...\}} \enspace and \enspace
\code{\char`\\footerpresentationtitle\{...\}}
control the two labels shown in the footer.
They default to \code{\char`\\course} and \code{\char`\\title}
respectively; set them only to show a \keypoint{shorter or different}
text in the footer than on the title page.
\end{noteblock}
\end{frame}
\begin{frame}
\frametitle{Special slide commands}
\framesubtitletext{Structural slides — all plain and unnumbered}
\begin{center}
\begin{tabular}{ll}
\toprule
Command & What it produces \\
\midrule
\texttt{\char`\\maketitle}
& title page (no footer, no counter) \\
\texttt{\char`\\sectiondivider[subtitle]\{Title\}}
& full-bleed blue/gold section break \\
\texttt{\char`\\referenceframe\{...\}}
& bibliography slide(s), \texttt{allowframebreaks} \\
\texttt{\char`\\thankframe[msg]}
& closing slide (default: ``Thank you...'') \\
\texttt{\char`\\appendixframe}
& appendix boundary (use before \texttt{\char`\\appendix}) \\
\bottomrule
\end{tabular}
\end{center}
\begin{noteblock}{Frame numbering}
All special slides carry \texttt{[noframenumbering,plain]}.
Appendix slides are additionally excluded from the main total
via \texttt{appendixnumberbeamer}.
\end{noteblock}
\end{frame}
% =============================================================================
\section{Bibliography Example}
% =============================================================================
\sectiondivider[Three ways to credit your sources]{Citations and References}
\begin{frame}
\frametitle{Three citation mechanisms}
\framesubtitletext{Each serves a different purpose}
The theme and \texttt{biblatex} together give you three distinct ways to
cite, ordered here from lightest to heaviest:
\begin{center}
\begin{tabular}{lll}
\toprule
Mechanism & Where it appears & Best for \\
\midrule
\texttt{\char`\\slidecite} & pinned above the footer & a single quiet source line \\
\texttt{\char`\\footfullcite} & slide footnote & citing mid-sentence \\
\texttt{\char`\\printbibliography} & dedicated slide & full reference list \\
\bottomrule
\end{tabular}
\end{center}
\begin{noteblock}{Which to choose}
Use \code{\char`\\slidecite} for an unobtrusive attribution,
\code{\char`\\footfullcite} when the citation belongs to a specific claim,
and a final \code{\char`\\referenceframe} for the complete bibliography.
\end{noteblock}
\end{frame}
\begin{frame}
\frametitle{\texttt{\char`\\slidecite} — theme-native citation}
\framesubtitletext{A tiny italic line pinned just above the footer}
\code{\char`\\slidecite} is defined by the theme itself (no \texttt{biblatex}
needed). It places a thin rule and a tiny italic line at a fixed distance
from the page bottom, via a TikZ overlay — so it stays put regardless of
\code{\char`\\vfill} or \code{\char`\\vspace} in the frame body.
\begin{highlightblock}{Main result}
In the comparison model, sorting requires
\keypoint{$\Omega(n\log n)$} comparisons in the worst case.
\end{highlightblock}
\begin{noteblock}{Usage}
\code{\char`\\slidecite\{Author (Year). Title. \char`\\textit\{Venue\}.\}}
\\
It is a free-text macro: you type the reference yourself, so it works
even without a \texttt{.bib} file.
\end{noteblock}
\slidecite{Cormen, Leiserson, Rivest \& Stein (2022). \textit{Introduction to Algorithms}, 4th ed. MIT Press.}
\end{frame}
\begin{frame}
\frametitle{\texttt{\char`\\footfullcite} — footnote citation}
\framesubtitletext{A full citation attached to a specific claim}
With \texttt{biblatex} loaded, \code{\char`\\footfullcite\{key\}} attaches a
full citation to the current point in the text.\footfullcite{knuth}
This is ideal when a single sentence rests on a single source, and you do
not want to interrupt the reading flow.
\medskip
Multiple claims can each carry their own source: Merge Sort's optimality
is a classic textbook result,\footfullcite{cormen} and the theme itself
builds on Beamer.\footfullcite{tantau}
\begin{warningblock}{\texttt{\char`\\footcite} vs \texttt{\char`\\footfullcite}}
With \code{style=numeric}, \code{\char`\\footcite} puts only the label
\keypoint{[n]} in the footnote; \code{\char`\\footfullcite} prints the
\keypoint{full citation} regardless of style. Several full citations on
one slide can crowd the footer --- keep them few.
\end{warningblock}
\end{frame}
\begin{frame}
\frametitle{Final bibliography from \texttt{refs.bib}}
\framesubtitletext{The recommended, maintainable approach}
For the reference list, keep your sources in a \code{refs.bib} file and let
\texttt{biblatex} format them. The theme's \code{\char`\\referenceframe}
accepts any content, so you simply hand it \code{\char`\\printbibliography}:
\medskip
\begin{center}
\code{\char`\\referenceframe\{\char`\\printbibliography\}}
\end{center}
\vspace{-1.5em}
\medskip
\begin{twocols}
\begin{definitionblock}{Preamble}
\code{\char`\\usepackage[backend=biber,}\\
\code{\ \ style=numeric]\{biblatex\}}\\
\code{\char`\\addbibresource\{refs.bib\}}
\end{definitionblock}
\colbreak
\begin{noteblock}{Compilation}
Run \code{pdflatex} $\rightarrow$ \code{biber}
$\rightarrow$ \code{pdflatex} $\rightarrow$ \code{pdflatex}.
Overleaf does this automatically.
\end{noteblock}
\end{twocols}
\begin{noteblock}{Cite as usual}
Inside slides, \code{\char`\\cite\{cormen\}}, \code{\char`\\textcite\{knuth\}},
or \code{\char`\\footfullcite\{tantau\}} all feed the same final list.
\end{noteblock}
\end{frame}
\referenceframe{\printbibliography}
\thankframe[Thank you for your attention \\ \textit{Q \& A}]
% =============================================================================
\appendixframe
\appendix
% =============================================================================
\begin{frame}
\frametitle{Appendix — Master Theorem example}
\framesubtitletext{Supplementary material, not counted in the main total}
\begin{theoremblock}{Master Theorem (simplified)}
Let $T(n) = aT(n/b) + f(n)$, $c^* = \log_b a$.
Then $T(n) = \Theta(n^{c^*}\log n)$ when $f(n) = \Theta(n^{c^*})$.
\end{theoremblock}
\begin{resultblock}{Application to Merge Sort}
With $a=2$, $b=2$, $f(n)=n$: $c^* = \log_2 2 = 1$, $f(n) = \Theta(n^1)$,
so we are in case 2 and $T(n) = \Theta(n\log n)$.
\end{resultblock}
\begin{noteblock}{About the appendix}
Slides after \texttt{\char`\\appendix} are excluded from the frame counter.
Use \texttt{\char`\\appendixframe} immediately before \texttt{\char`\\appendix}
to insert the boundary slide shown above.
\end{noteblock}
\end{frame}
\end{document}
PDF Preview
Create an account to compile and preview