Beamer Unipi

Personal Beamer theme inspired by the University of Pisa visual identity. Unofficial, MIT-licensed, freely adaptable for other institutions.

Category

university

License

Free to use (MIT)

File

example/main.tex

main.texRead-only preview
\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}
Preview
Beamer Unipi preview
Beamer Unipi LaTeX Template | Bibby | Bibby AI