% (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}