\NeedsTeXFormat{LaTeX2e}

\ProvidesPackage{projektor}[2023/04/29 Beamer template]

% Options
\newif\ifoption@code
\DeclareOption{code}{\option@codetrue}
\newif\ifoption@fr
\DeclareOption{fr}{\option@frtrue}
\newif\ifoption@dark
\DeclareOption{dark}{\option@darktrue}
\newif\ifoption@sec
\DeclareOption{sec}{\option@sectrue}
\newif\ifoption@subsec
\DeclareOption{subsec}{\option@subsectrue}

\ProcessOptions
\ifoption@code
    % Intégration code
    \RequirePackage{minted}
    \usemintedstyle{emacs}
\fi
\ifoption@fr
    % Langue
    \RequirePackage[french]{babel}
    \RequirePackage{csquotes}
    \MakeOuterQuote{"}
\fi

% Moloch avec barre de progression
\usetheme[
    progressbar=frametitle,
    block=fill,
]{moloch}

% Renomme la table des matières
\AtBeginDocument{
    \renewcommand{\contentsname}{Plan}
}

% Table des matières comme frame de nouvelle partie
\ifoption@sec
    \AtBeginSection[]{
        \begin{frame}[plain, noframenumbering]{\contentsname}
            \tableofcontents[
                currentsection,
                subsectionstyle=shaded,
            ]
        \end{frame}
    }
\fi

% Table des matières comme frame de nouvelle sous-partie
\ifoption@subsec
    \AtBeginSubsection[]{
        \begin{frame}[plain, noframenumbering]{\contentsname}
            \tableofcontents[
                currentsubsection,
                sectionstyle=show/shaded,
                subsectionstyle=show/shaded,
            ]
        \end{frame}
    }
\fi

\ifoption@dark
    % Thème sombre
    \setbeamercolor{normal text}{fg=white,bg=black!90}
    \setbeamercolor{alerted text}{fg=orange!65!white}
    \setbeamercolor{progress bar}{bg=alerted text.fg!20!black!90}
    \setbeamercolor{frametitle}{bg=black!92}
    \setbeamercolor*{palette primary}{use=structure,fg=structure.fg}
\else
    % Augmente l'épaisseur de la barre de progression sur les diapos
    \setlength{\moloch@progressinheadfoot@linewidth}{0.8pt}
\fi

% Point au lieu de carré dans les listes
\setbeamertemplate{itemize items}[circle]

% Numéros de pages
\setbeamertemplate{page number in head/foot}[appendixframenumber]

% Métadonnées
\hypersetup{
    pdfsubject={Présentation},
    pdfkeywords={presentation},
    pdfcreator={LaTeX with Beamer class and projektor template}
}

% Bas de page
\setbeamertemplate{frame footer}{
    \insertsection \hfill\hspace{-4em} \insertshorttitle
}
\setbeamerfont{page number in head/foot}{size=\tiny}
\setbeamercolor{footline}{fg=gray}

% Enumerate au lieu d'itemize
\setbeamertemplate{section in toc}[sections numbered]

% Police
\RequirePackage{microtype}
\RequirePackage{lmodern}

% Inverse titre court/titre long dans le plan
\makeatletter
\patchcmd{\beamer@section}{{#2}{\the\c@page}}{{#1}{\the\c@page}}{}{}
\patchcmd{\beamer@section}{{\the\c@section}{\secname}}{{\the\c@section}{#1}}{}{}
\makeatother

% Liste sur plusieurs colonnes
\RequirePackage{multicol}

% Pas de préfix pour les figures
\RequirePackage[figurename=]{caption}

% Sous-titres
\setbeamerfont{framesubtitle}{series=\mdseries}

% Souligne mieux les mots
\newcommand{\ul}[1]{\underline{\smash{#1}}}

% Avertissement par rapport à l'appendix
\renewcommand\appendixname{Appendix}
