% (The MIT License)
%
% Copyright (c) 2022 Yegor Bugayenko
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the 'Software'), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
%
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.

\documentclass{article}
\usepackage[increment]{crumbs}
\usepackage[static]{clicks}
\usepackage[template,scheme=dark]{ppt-slides}
\usepackage[nonumbers]{ffcode}
\usepackage{titling}
\usepackage{textcomp}
\title{\LaTeX{} Package for Slide Decks \`a la PowerPoint\texttrademark}
\author{Yegor Bugayenko}
\date{0.1.2 2022/09/12}
\pptLeft{\thetitle}
\pptRight{\href{https://github.com/yegor256}{@yegor256}}

\begin{document}

\plush{
  \pptMiddle{
    \pptTitle{ppt-slides}{\thetitle}\par
    {\scshape Made by \href{https://www.yegor256.com}{\theauthor}}\par
    \thedate
  }
}

\clearpage
This package helps you make slide decks in \LaTeX:
\begin{ffcode*}{fontsize=\small}
\documentclass{article}
\usepackage{clicks}
\usepackage[template,scheme=dark]{ppt-slides}
\begin{document}
\plick{\pptBanner{Making Slides Is Easy}}
\plick{Just use this package...}
\plush{together with 'clicks' package.}
\end{document}
\end{ffcode*}
They will look similar to what PowerPoint\texttrademark{} can make,
but with the precision of \LaTeX. We recommend to use this package
together with \href{https://github.com/yegor256/clicks}{clicks}.

\clearpage
\pptToc[Table of Contents]

\clearpage
\plush{\pptChapter[Layout]{Scaffolding and Layout}}

\clearpage
\pptSection{Template}
You start with a template for your slide deck:
\begin{ffcode*}{fontsize=\scriptsize}
\documentclass{article}
\usepackage{clicks}
\usepackage[template=9x6]{ppt-slides}
\begin{document}
...
\end{document}
\end{ffcode*}
There is only one template, which is used by default: \ff{9x6}. If you don't
specify the name, it will be used. If you don't use \ff{template} option at all,
the default \ff{article} will be rendered, which is not what you want.

\clearpage
\pptSection[Scheme]{Color Schemes}
You can choose a color scheme for your slides, using \ff{scheme} option
of the package:
\begin{ffcode*}{fontsize=\scriptsize}
\documentclass{article}
\usepackage{clicks}
\usepackage[template,scheme=light]{ppt-slides}
\begin{document}
...
\end{document}
\end{ffcode*}
There are a few out-of-the-box schemes available: \ff{light}, \ff{dark},
\ff{light-mono}, and \ff{dark-mono}. You can design your own, using
\ff{ppt-light.text} file as an example:
{\scriptsize\begin{ffcode}
\usepackage[template,scheme=/usr/local/my-colors.tex]{ppt-slides}
\end{ffcode}
}

\clearpage
\pptSection{Chapters}
First, split your story into Chapters:
\begin{ffcode*}{fontsize=\scriptsize}
\documentclass{article}
\usepackage{clicks}
\usepackage[template,scheme=light]{ppt-slides}
\begin{document}
\pptToc
\plush{\pptChapter{About Me}}
...
\plush{\pptChapter[Idea]{My Idea Is Novel}}
...
\plush{\pptChapter[FAQ]{Discussion \& Questions}}
...
\end{document}
\end{ffcode*}
\ff{\char`\\pptToc} will render the table of contents in an interactive ``clickable'' format.
Thanks to the use of \href{https://github.com/yegor256/crumbs}{crumbs}, there will
be a navigation at the top left corner.

\clearpage
\pptSection{Sections}
Put Sections inside Chapters:
\begin{ffcode*}{fontsize=\scriptsize}
\begin{document}
\pptToc
\plush{\pptChapter{About Me}}
\plush{\pptSection[Student]{I'm a Student}}
...
\plush{\pptSection[Athlete]{Also, I'm an Athlete}}
...
\plush{\pptChapter[Idea]{My Idea Is Novel}}
\plush{\pptSection{Novelty}}
\plush{\pptSection{Impact}}
\end{document}
\end{ffcode*}
\ff{\char`\\pptChapter} and \ff{\char`\\pptSection} used together will render
nice two-level nagivation menu at the top left corner.

\clearpage
\pptSection[Signatures]{Signatures at the Bottom of Each Page}
You can place the title of the presentation and your name at the bottom
of each slide, on the left and on the right respectively:
\begin{ffcode*}{fontsize=\scriptsize}
\documentclass{article}
\usepackage{clicks}
\usepackage[template,scheme=light]{ppt-slides}
\pptLeft{How Did I Spend Last Summer}
\pptRight{Yegor Bugayenko}
\begin{document}
...
\end{document}
\end{ffcode*}
If you don't use \ff{\char`\\pptLeft} or \ff{\char`\\pptRight}, nothing will
be printed at the bottom.

\clearpage
\pptSection[Wide]{Wide Slides}
Sometimes you need your slide content to take all visible horizontal space:
\begin{ffcode*}{fontsize=\scriptsize}
\begin{document}
\begin{pptWideOne}
This paragraph is too long for some reasons,
that's why must take all visible horizontal space.
\end{pptWideOne}
\end{document}
\end{ffcode*}
\begin{pptWideOne}
This paragraph is too long for some reasons, that's why must take all visible horizontal space.
\end{pptWideOne}
You can also use \ff{\char`\\begin\char`\{pptWide\char`\}\char`\{X\char`\}},
where \ff{X} is the number of columns to render.

\clearpage
\plush{\pptChapter[Elements]{Content Elements}}

\clearpage
\pptSection{Images}
You can add an image to the slide (the first argument is the width
of the image in relation to \ff{\char`\\textwidth},
while the second one is the path of it):
\begin{ffcode*}{fontsize=\scriptsize}
\begin{document}
\plush{\pptPic{0.2}{socrates.jpg}}
\end{document}
\end{ffcode*}
\pptPic{0.2}{socrates.jpg}

\clearpage
\pptSection[Snippets]{Code Snippets}
You can add a piece of code to the slide (we recommend using \href{https://github.com/yegor256/ffcode}{ffcode}):
{\scriptsize
\begin{verbatim}
\begin{document}
\clearpage
\pptHeader{This is How You Print to Console:}
\begin{ffcode}
System.out.println("Hello, world!");
\end{ffcode}
\end{document}
\end{verbatim}
}
Don't use \ff{\char`\\plick} or \ff{\char`\\plush}, they won't work with code snippets.

\ff{\char`\\pptHeader} prints a header similar to what \ff{\char`\\pptSection} prints, but
doesn't start a new section.

\clearpage
\pptSection{Quotes}
\pptQuote{socrates.jpg}{The only true wisdom is in knowing you know nothing}{Socrates}
\begin{ffcode*}{fontsize=\scriptsize}
\begin{document}
\plush{\pptQuote{socrates.jpg}
  {The only true wisdom is in knowing you know nothing}{Socrates}}
\end{document}
\end{ffcode*}

\clearpage
\pptSection{Thoughts}
\plush{\pptThought{Socrates said that the only true wisdom is in knowing you know nothing. Was he a wise man?... By the way, I'm using \ff{\char`\\pptThought} in this slide.}}

\clearpage
\pptSection[QR]{QR Codes}
Sometimes it's convenient to show a QR code to your audience instead of
a URL, since it's easier to use --- they can scan it:
\begin{ffcode*}{fontsize=\scriptsize}
\begin{document}
\plick{Check my blog post by this link:}
\plush{\pptQR{https://www.yegor256.com}}
\end{document}
\end{ffcode*}
The code will look like this, thanks to \href{https://ctan.org/pkg/qrcode}{qrcode} package that
we use behind the scene:\par
\pptQR[1in]{https://www.yegor256.com}

\clearpage
\plush{
  \crumbection{Sources}
  \pptMiddle{
	  More details about this package you can find\\
	  in \href{https://github.com/yegor256/ppt-slides}{yegor256/ppt-slides} GitHub repository.
  }
}

\end{document}