From 6f32ef3911bf9b03351b128254a6e1bada296287 Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Thu, 10 Jun 2021 16:10:33 +0200 Subject: [PATCH] first commit --- .gitignore | 20 ++ formation-api/README | 5 + formation-api/architecture.png | Bin 0 -> 45528 bytes formation-api/beamercolorthemefocus.sty | 73 +++++++ formation-api/beamerfontthemefocus.sty | 50 +++++ formation-api/beamerinnerthemefocus.sty | 150 +++++++++++++ formation-api/beamerouterthemefocus.sty | 272 ++++++++++++++++++++++++ formation-api/beamerthemefocus.sty | 62 ++++++ formation-api/eo.pdf | Bin 0 -> 5977 bytes formation-api/presentation.tex | 203 ++++++++++++++++++ 10 files changed, 835 insertions(+) create mode 100644 .gitignore create mode 100644 formation-api/README create mode 100644 formation-api/architecture.png create mode 100644 formation-api/beamercolorthemefocus.sty create mode 100644 formation-api/beamerfontthemefocus.sty create mode 100644 formation-api/beamerinnerthemefocus.sty create mode 100644 formation-api/beamerouterthemefocus.sty create mode 100644 formation-api/beamerthemefocus.sty create mode 100644 formation-api/eo.pdf create mode 100644 formation-api/presentation.tex diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..700b1f2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,20 @@ +# LaTeX generated files. +*.aux +*.bbl +*.blg +*.dvi +*.gz +*.lof +*.log +*.lot +*.nav +*.out +*.snm +*.tdo +*.toc +*.xml +*.fls +*.vrb +*.fdb_latexmk +_minted* +presentation.pdf diff --git a/formation-api/README b/formation-api/README new file mode 100644 index 0000000..8263f8b --- /dev/null +++ b/formation-api/README @@ -0,0 +1,5 @@ +Pour compiler il faut les packages minted et mdframed, présents sous debian dans texlive-latex-extra, à installer via apt. + +Ensuite, il faut passer --shell-escape à son compilateur LaTeX, par exemple lualatex --shell-escape formation.tex. + +Les fichier *.sty sont issus du thème focus : https://github.com/elauksap/focus-beamertheme. diff --git a/formation-api/architecture.png b/formation-api/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..1fc91cb2dd4b522fa56c9635bec9b4a0309ea91d GIT binary patch literal 45528 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 z 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 Mba8VQIt6n63v~8L^Z)<= literal 0 HcmV?d00001 diff --git a/formation-api/beamercolorthemefocus.sty b/formation-api/beamercolorthemefocus.sty new file mode 100644 index 0000000..80dd314 --- /dev/null +++ b/formation-api/beamercolorthemefocus.sty @@ -0,0 +1,73 @@ +% Copyright (C) 2018-2020 Pasquale Claudio Africa and the LaTeX community. +% A full list of contributors can be found at +% +% https://github.com/elauksap/focus-beamertheme +% +% This file is part of beamerthemefocus. +% +% beamerthemefocus is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% beamerthemefocus is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with beamerthemefocus. If not, see . + +\mode + + +% DEFINE COLORS. --------------------------------------------------------------- +\definecolor{main}{RGB}{64, 64, 64} +\definecolor{background}{RGB}{239, 239, 239} + +\definecolor{alert}{RGB}{180, 0, 0} +\definecolor{example}{RGB}{0, 110, 0} + + +% SET COLORS. ------------------------------------------------------------------ +\setbeamercolor{normal text}{fg=main, bg=background} +\setbeamercolor{alerted text}{fg=alert} +\setbeamercolor{example text}{fg=example} + +\setbeamercolor{titlelike}{fg=background, bg=main} +\setbeamercolor{frametitle}{parent={titlelike}} + +\setbeamercolor{footline}{fg=background, bg=main} + +\setbeamercolor{block title}{bg=main!80!background, fg=background} +\setbeamercolor{block body}{bg=main!10!background, fg=main} + +\setbeamercolor{block title alerted}{bg=alert, fg=background} +\setbeamercolor{block body alerted}{bg=alert!10!background, fg=main} + +\setbeamercolor{block title example}{bg=example, fg=background} +\setbeamercolor{block body example}{bg=example!10!background, fg=main} + +\setbeamercolor{itemize item}{fg=main} +\setbeamercolor{itemize subitem}{fg=main} + +\setbeamercolor{enumerate item}{fg=main!70!black} +\setbeamercolor{enumerate subitem}{fg=main!70!black} + +\setbeamercolor{description item}{fg=main!70!black} +\setbeamercolor{description subitem}{fg=main!70!black} + +\setbeamercolor{caption name}{fg=main} + +\setbeamercolor{section in toc}{fg=main} +\setbeamercolor{subsection in toc}{fg=main} +\setbeamercolor{section number projected}{bg=main} +\setbeamercolor{subsection number projected}{bg=main} + +\setbeamercolor{bibliography item}{fg=main} +\setbeamercolor{bibliography entry author}{fg=main!70!black} +\setbeamercolor{bibliography entry title}{fg=main} +\setbeamercolor{bibliography entry location}{fg=main} +\setbeamercolor{bibliography entry note}{fg=main} + +\mode diff --git a/formation-api/beamerfontthemefocus.sty b/formation-api/beamerfontthemefocus.sty new file mode 100644 index 0000000..380af92 --- /dev/null +++ b/formation-api/beamerfontthemefocus.sty @@ -0,0 +1,50 @@ +% Copyright (C) 2018-2020 Pasquale Claudio Africa and the LaTeX community. +% A full list of contributors can be found at +% +% https://github.com/elauksap/focus-beamertheme +% +% This file is part of beamerthemefocus. +% +% beamerthemefocus is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% beamerthemefocus is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with beamerthemefocus. If not, see . + +\mode + + +% SET FONTS. ------------------------------------------------------------------- +\setbeamerfont{title}{size=\huge, shape=\scshape\bfseries} +\setbeamerfont{subtitle}{size=\Large, shape=\scshape, parent=structure} +\setbeamerfont{author}{size=\Large, shape=\scshape} + +\setbeamerfont{institute}{size=\large, shape=\scshape} +\setbeamerfont{date}{size=\large, shape=\scshape} + +\setbeamerfont{sectiontitle}{size=\huge, series=\scshape\bfseries} +\setbeamerfont{subsectiontitle}{size=\Large, series=\scshape\bfseries} +\setbeamerfont{frametitle}{size=\Large, shape=\scshape} + +\setbeamerfont{footline}{size=\scriptsize} + +\setbeamerfont{focusframe}{size=\huge, shape=\scshape} + +\setbeamerfont{description item}{shape=\bfseries} + +\setbeamerfont{caption name}{shape=\bfseries} + +\setbeamerfont{bibliography item}{size=\small, shape=\scshape} +\setbeamerfont{bibliography entry author}{size=\small, shape=\scshape} +\setbeamerfont{bibliography entry title}{size=\small, series=\scshape\bfseries} +\setbeamerfont{bibliography entry location}{size=\small, shape=\scshape\normalfont} +\setbeamerfont{bibliography entry note}{size=\small, shape=\scshape\normalfont} + +\mode diff --git a/formation-api/beamerinnerthemefocus.sty b/formation-api/beamerinnerthemefocus.sty new file mode 100644 index 0000000..637c95c --- /dev/null +++ b/formation-api/beamerinnerthemefocus.sty @@ -0,0 +1,150 @@ +% Copyright (C) 2018-2020 Pasquale Claudio Africa and the LaTeX community. +% A full list of contributors can be found at +% +% https://github.com/elauksap/focus-beamertheme +% +% This file is part of beamerthemefocus. +% +% beamerthemefocus is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% beamerthemefocus is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with beamerthemefocus. If not, see . + +\mode + +\RequirePackage{tikz} + + +% CUSTOMIZE STRUCTURE ELEMENTS. ------------------------------------------------ +\setbeamertemplate{blocks}[default] + +\setbeamertemplate{section in toc}[square] +\setbeamertemplate{subsection in toc}[square] + +\setbeamertemplate{itemize items}[square] +\setbeamertemplate{itemize subitem}[triangle] + + +% STRUCTURE FRAME TEMPLATE DEFINITIONS. ---------------------------------------- +% Title page. +\defbeamertemplate*{title page}{focus}{% + {% + \usebeamercolor{frametitle}\colorlet{focus@@temp}{bg}% + \begin{tikzpicture}[overlay, remember picture] + \fill[color=focus@@temp] (current page.north west) rectangle ([shift = {(0, -0.45\paperheight)}] current page.north east); + \end{tikzpicture} + } + + \vspace{-1.65\baselineskip} + \begin{minipage}[b][0.35\paperheight]{\textwidth} + \vspace{\baselineskip} + \usebeamerfont{title} + \usebeamercolor[fg]{frametitle} + \inserttitle + \end{minipage} + + \begin{minipage}[t][0.1\paperheight]{\textwidth} + \usebeamerfont{subtitle} + \usebeamercolor[fg]{frametitle} + \insertsubtitle + \end{minipage} + + % Set the title graphic in a zero-height box, so that + % the position of other elements is not affected. + {\vfuzz=9999pt\vbox to 0pt { + \raggedleft + \inserttitlegraphic + }} + + \begin{minipage}[t]{\textwidth} + \usebeamerfont{author} + \insertauthor + \end{minipage} + + \vspace*{\baselineskip} + \begin{minipage}[t]{\textwidth} + \usebeamerfont{institute} + \insertinstitute + \end{minipage} + + \vspace*{\baselineskip} + \begin{minipage}[t]{\textwidth} + \usebeamerfont{date} + \insertdate + \end{minipage} + + \vspace*{0pt plus 100fill} + + \addtocounter{framenumber}{-1} + \addtocounter{realframenumber}{-1} +} + +% Section page. +\defbeamertemplate*{section page}{focus}{% + {% + \usebeamercolor{frametitle}\colorlet{focus@@temp}{bg}% + \begin{tikzpicture}[overlay, remember picture] + \fill[color=focus@@temp] (current page.north west) rectangle ([shift = {(0, -0.45\paperheight)}] current page.north east); + \end{tikzpicture}% + } + + \vspace{-2.5\baselineskip} + \begin{minipage}[b][0.45\paperheight]{\textwidth} + \usebeamerfont{sectiontitle} + \usebeamercolor[fg]{frametitle} + \let\hyperlink\@secondoftwo\insertsection + \end{minipage} + + \vspace{\baselineskip} + \begin{minipage}[t][0.5\paperheight]{\textwidth} + \usebeamerfont{subsectiontitle} + \usebeamercolor[bg]{frametitle} + \insertsubsection + \end{minipage} +} + +\AtBeginSection[]{% + \begin{frame}[plain, noframenumbering]{} + \sectionpage + \end{frame}% +} + +% Subsection page. +\defbeamertemplate*{subsection page}{focus}{% + {% + \usebeamercolor{frametitle}\colorlet{focus@@temp}{bg}% + \begin{tikzpicture}[overlay, remember picture] + \fill[color=focus@@temp] (current page.north west) rectangle ([shift = {(0, -0.45\paperheight)}] current page.north east); + \end{tikzpicture}% + } + + \vspace{-2.5\baselineskip} + \begin{minipage}[b][0.45\paperheight]{\textwidth} + \usebeamerfont{sectiontitle} + \usebeamercolor[fg]{frametitle} + \let\hyperlink\@secondoftwo\insertsection + \end{minipage} + + \vspace{\baselineskip} + \begin{minipage}[t][0.5\paperheight]{\textwidth} + \usebeamerfont{subsectiontitle} + \usebeamercolor[bg]{frametitle} + \insertsubsection + \end{minipage} +} + +\AtBeginSubsection[]{% + \begin{frame}[plain, noframenumbering]{} + \subsectionpage + \end{frame}% +} + +\mode diff --git a/formation-api/beamerouterthemefocus.sty b/formation-api/beamerouterthemefocus.sty new file mode 100644 index 0000000..437ec26 --- /dev/null +++ b/formation-api/beamerouterthemefocus.sty @@ -0,0 +1,272 @@ +% Copyright (C) 2018-2020 Pasquale Claudio Africa and the LaTeX community. +% A full list of contributors can be found at +% +% https://github.com/elauksap/focus-beamertheme +% +% This file is part of beamerthemefocus. +% +% beamerthemefocus is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% beamerthemefocus is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with beamerthemefocus. If not, see . + +\mode + +\RequirePackage{appendixnumberbeamer} % Don't number appendix frames. +% Fix hyperref warning caused by \appendix +% (https://tex.stackexchange.com/questions/192686/hyperref-warning-caused-by-beamer-appendix). +\newcommand*{\bkmtranslateto}{\languagename} +\newcommand*{\bkmtranslate}[1]{% + \ifcsname tr@@@\bkmtranslateto @#1\endcsname + \csname tr@@@\bkmtranslateto @#1\endcsname + \else + #1% + \fi +} +\pdfstringdefDisableCommands{\let\translate\bkmtranslate} +\RequirePackage{bookmark} + +\RequirePackage{etoolbox} % \BeforeBeginEnvironment. +\RequirePackage{tikz} + +\newcounter{realframenumber} + +% FRAMETITLE TEMPLATES. -------------------------------------------------------- +\defbeamertemplate*{frametitle}{focus}{% + % If not title page. + \ifnum\value{realframenumber}>0% + \vspace{-1pt}% + \begin{beamercolorbox}[wd=\paperwidth,leftskip=0.55cm,rightskip=0.55cm,sep=0.2cm]{frametitle}% + \strut\insertframetitle\strut% + \end{beamercolorbox}% + \fi% +} + +% Plain header. +\defbeamertemplate{frametitle}{plain}{% + % If not title page. + \ifnum\value{realframenumber}>0% + \vspace{-1pt}% + \begin{beamercolorbox}[wd=\paperwidth,leftskip=0.55cm,rightskip=0.55cm,sep=0.2cm,ignorebg]{frametitle}% + \strut% + \end{beamercolorbox}% + \fi% +} + + +% FOOTLINE TEMPLATES. ---------------------------------------------------------- +% Lenghts for the progress bar footline. +\newlength{\focus@pbar@height}% Progress bar height. +\newlength{\focus@pbar@leftoffset} +\newlength{\focus@pbar@rightoffset} + +\defbeamertemplate*{footline}{progressbar}{% + % If not appendix. + \ifnum\mainend<0% From package appendixnumberbeamer. + % + \settowidth{\focus@pbar@leftoffset}{1}% + \addtolength{\focus@pbar@leftoffset}{1.5em}% + % + \settowidth{\focus@pbar@rightoffset}{\inserttotalframenumber}% + \addtolength{\focus@pbar@rightoffset}{1.5em}% + % + % If not title page. + \ifnum\value{realframenumber}>0% + \ifnum\value{framenumber}<\inserttotalframenumber% + \begin{tikzpicture}[inner xsep=0.5em, inner ysep=0.5ex]\usebeamerfont{footline} + \pgfmathsetmacro{\focus@pbar@progress}% + {(\paperwidth-\focus@pbar@leftoffset-\focus@pbar@rightoffset)*(\insertframenumber/\inserttotalframenumber)} + + \clip (0,0) rectangle ++(\paperwidth,\the\focus@pbar@height); + \fill[footline.bg] (0,0) rectangle ++(\the\focus@pbar@leftoffset,\the\focus@pbar@height); + + \fill[footline.bg] (\the\focus@pbar@leftoffset,0) rectangle ++(\focus@pbar@progress pt,\the\focus@pbar@height) + ++(0,{-0.5*\the\focus@pbar@height}) node[anchor=east, text=footline.fg] {\strut\insertframenumber}; + + \fill[footline.bg] (\paperwidth,0) rectangle ++(-\the\focus@pbar@rightoffset,\the\focus@pbar@height) + ++(0,{-0.5*\the\focus@pbar@height}) node[anchor=west, text=footline.fg] {\strut\inserttotalframenumber}; + \end{tikzpicture}% + \else% + \begin{tikzpicture}[inner xsep=0.5em, inner ysep=0.5ex] + \clip (0,0) rectangle ++(\paperwidth,\the\focus@pbar@height); + \fill[footline.bg] (0,0) rectangle ++(\paperwidth,\the\focus@pbar@height); + + \node[anchor=east, footline.fg] at ({\paperwidth-\the\focus@pbar@rightoffset},{0.5*\focus@pbar@height}) {\strut\insertframenumber}; + \node[footline.fg] at ({\paperwidth-\the\focus@pbar@rightoffset},{0.5*\focus@pbar@height}) {\strut/}; + \node[anchor=west, footline.fg] at ({\paperwidth-\the\focus@pbar@rightoffset},{0.5*\focus@pbar@height}) {\strut\inserttotalframenumber}; + \end{tikzpicture}% + \fi% + \fi% + \fi% +} + +% Full bar footline. +\def\footlineinfo#1{\def\focus@footlineinfo{#1}} +\footlineinfo{} % Empty by default. +\defbeamertemplate{footline}{fullbar}{% + % If not appendix. + \ifnum\mainend<0% From package appendixnumberbeamer. + % + \settowidth{\focus@pbar@leftoffset}{1}% + \addtolength{\focus@pbar@leftoffset}{1.5em}% + % + \settowidth{\focus@pbar@rightoffset}{\inserttotalframenumber}% + \addtolength{\focus@pbar@rightoffset}{1.5em}% + % + % If not title page. + \ifnum\value{realframenumber}>0% + \begin{tikzpicture}[inner xsep=0.5em, inner ysep=0.5ex] + \clip (0,0) rectangle ++(\paperwidth,\the\focus@pbar@height); + \fill[footline.bg] (0,0) rectangle ++(\paperwidth,\the\focus@pbar@height); + + \ifx\focus@footlineinfo\empty + \else + \node[anchor=west, footline.fg] at ({\the\focus@pbar@leftoffset},{0.5*\focus@pbar@height}) {\focus@footlineinfo}; + \fi + + \node[anchor=east, footline.fg] at ({\paperwidth-\the\focus@pbar@rightoffset},{0.5*\focus@pbar@height}) {\strut\insertframenumber}; + \node[footline.fg] at ({\paperwidth-\the\focus@pbar@rightoffset},{0.5*\focus@pbar@height}) {\strut/}; + \node[anchor=west, footline.fg] at ({\paperwidth-\the\focus@pbar@rightoffset},{0.5*\focus@pbar@height}) {\strut\inserttotalframenumber}; + \end{tikzpicture}% + \fi% + \fi% +} + +% Empty footline. +\defbeamertemplate{footline}{none}{} + +\DeclareOptionBeamer{numbering}{\def\beamer@focus@numbering{#1}} +\ExecuteOptionsBeamer{numbering=progressbar} +\ProcessOptionsBeamer + +\def\beamer@focus@numberingprogressbar{progressbar} +\def\beamer@focus@numberingfullbar{fullbar} +\def\beamer@focus@numberingnone{none} + + +% BACKGROUND CANVAS TEMPLATES. ------------------------------------------------- +\defbeamertemplate*{background canvas}{focus}{% + \begin{tikzpicture} + \clip (0,0) rectangle ++(\paperwidth,\paperheight); + \fill[normal text.bg] (0,0) rectangle ++(\paperwidth,\paperheight); + \end{tikzpicture}% +} + +\defbeamertemplate{background canvas}{focusframe}{% + \begin{tikzpicture} + \clip (0,0) rectangle ++(\paperwidth,\paperheight); + \fill[frametitle.bg] (0,0) rectangle ++(\paperwidth,\paperheight); + \end{tikzpicture}% +} + + +% HOOKS FOR CREATING FRAMES. --------------------------------------------------- +\BeforeBeginEnvironment{frame}{% + \stepcounter{realframenumber} + \setbeamertemplate{background canvas}[focus]% + \setbeamertemplate{frametitle}[focus]% + % + % Reset footline height and determine it for the current slide. + \setlength{\focus@pbar@height}{0cm}% + \focus@calculatefootheight% + % + % If not appendix. + \ifnum\mainend<0 % From package appendixnumberbeamer. + \settoheight{\focus@pbar@height}{\usebeamerfont{footline}1234567890/}% + \addtolength{\focus@pbar@height}{6pt}% + % + \ifx\beamer@focus@numbering\beamer@focus@numberingprogressbar% + \setbeamertemplate{footline}[progressbar]% + \else% + \ifx\beamer@focus@numbering\beamer@focus@numberingfullbar% + \setbeamertemplate{footline}[fullbar]% + \fi% + \fi% + % + \focus@calculatefootheight% + \fi% +} + +% Enable noframenumbering option. +\define@key{beamerframe}{noframenumbering}[true]{% + \setbeamertemplate{footline}[none]% + \setlength{\focus@pbar@height}{0cm}% + \focus@calculatefootheight% + % + \addtocounter{framenumber}{-1}% +} + + +% Enable plain option. +\define@key{beamerframe}{plain}[true]{% + \setbeamertemplate{background canvas}[focus]% + \setbeamertemplate{frametitle}[plain]% + % + \setbeamertemplate{footline}[none]% +} + + +% Full vertical centering +% (from https://tex.stackexchange.com/questions/247826/beamer-full-vertical-centering). +\define@key{beamerframe}{c}[true]{% + \beamer@frametopskip=0pt plus 1fill\relax% + \beamer@framebottomskip=0pt plus 1fill\relax% + \beamer@frametopskipautobreak=0pt plus 0.4\paperheight\relax% + \beamer@framebottomskipautobreak=0pt plus 0.6\paperheight\relax% + \def\beamer@initfirstlineunskip{}% +} + + +% Enable focus option. +\providebool{focus@standout} +\define@key{beamerframe}{focus}[true]{% + \booltrue{focus@standout}% + \begingroup% + \setkeys{beamerframe}{noframenumbering}% + \setbeamertemplate{background canvas}[focusframe]% + \setbeamertemplate{frametitle}[plain]% + % + \setkeys{beamerframe}{c}% + \centering% + \usebeamerfont{focusframe}% + \usebeamercolor[fg]{frametitle}% +} + +\apptocmd{\beamer@reseteecodes} +{% + \ifbool{focus@standout}% + {% + \endgroup% + \boolfalse{focus@standout}% + }{}% +}{}{} + + +% Recalculate the footline's size and refresh other parameters. +% Partially copied from the definition of \beamer@calculateheadfoot. +\def\focus@calculatefootheight{% + \footheight=\focus@pbar@height% + \advance\footheight by 4pt% + \sidebarheight=\paperheight% + \advance\sidebarheight by-\headheight% + \advance\sidebarheight by\headdp% + \advance\sidebarheight by-\footheight% + \advance\sidebarheight by 4pt% + \footskip=\footheight% + \textheight=\paperheight% + \advance\textheight by-\footheight% + \advance\textheight by-\headheight% + \@colht\textheight% + \@colroom\textheight% + \vsize\textheight% +} + +\mode diff --git a/formation-api/beamerthemefocus.sty b/formation-api/beamerthemefocus.sty new file mode 100644 index 0000000..2e6b57d --- /dev/null +++ b/formation-api/beamerthemefocus.sty @@ -0,0 +1,62 @@ +% Copyright (C) 2018-2020 Pasquale Claudio Africa and the LaTeX community. +% A full list of contributors can be found at +% +% https://github.com/elauksap/focus-beamertheme +% +% This file is part of beamerthemefocus. +% +% beamerthemefocus is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% beamerthemefocus is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with beamerthemefocus. If not, see . + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{beamerthemefocus}[2020/11/18 v2.8.1 Focus Beamer theme] + +\mode + + +% THEME OPTIONS. --------------------------------------------------------------- +\DeclareOptionBeamer{numbering}{% + \PassOptionsToPackage{numbering=#1}{beamerouterthemefocus} +} + +\newif\if@focus@loadfirafonts +\@focus@loadfirafontstrue + +\DeclareOptionBeamer{nofirafonts}{\@focus@loadfirafontsfalse} +\ProcessOptionsBeamer + + +% LOAD EXTERNAL PACKAGES. ------------------------------------------------------ +\if@focus@loadfirafonts + \RequirePackage[T1]{fontenc} + + \PassOptionsToPackage{type1}{FiraSans} + \PassOptionsToPackage{type1}{FiraMono} + + \RequirePackage{FiraSans} + \RequirePackage{FiraMono} +\fi + +\usecolortheme{focus} +\usefonttheme{focus} +\useinnertheme{focus} +\useoutertheme{focus} + +\setbeamertemplate{navigation symbols}{} + + +% SET MARGINS. ----------------------------------------------------------------- +\setbeamersize{text margin left=0.75cm, text margin right=0.75cm} +\setlength{\leftmargini}{0.75cm} + +\mode diff --git a/formation-api/eo.pdf b/formation-api/eo.pdf new file mode 100644 index 0000000000000000000000000000000000000000..73ac2387a24c55313a0a93d261910eb74d893384 GIT binary patch literal 5977 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 Sp9&#D{15;O%M*14!2bXmoYh