diff --git a/DESCRIPTION b/DESCRIPTION index 62cf73b..6e6379d 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,8 +1,8 @@ Package: binb Type: Package Title: 'binb' is not 'Beamer' -Version: 0.0.1 -Date: 2018-09-19 +Version: 0.0.1.1 +Date: 2018-09-22 Author: Dirk Eddelbuettel and Ista Zahn Maintainer: Dirk Eddelbuettel Description: A collection of 'LaTeX' styles using 'Beamer' customization for diff --git a/NAMESPACE b/NAMESPACE index 8bd337f..49f3e8a 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,3 +1,3 @@ -export("metropolis", "iqss") +export("metropolis", "iqss", "presento") import("knitr") import("rmarkdown") diff --git a/R/binb.R b/R/binb.R index 6346949..29ee857 100644 --- a/R/binb.R +++ b/R/binb.R @@ -118,7 +118,8 @@ iqss <- function(toc = FALSE, for (f in c("beamercolorthemeiqss.sty", "beamerfontthemeiqss.sty", "beamerthemeiqss.sty", "header.png", "figs/")) if (!file.exists(f)) - file.copy(system.file("rmarkdown", "templates", "iqss", "skeleton", f, package="binb"), + file.copy(system.file("rmarkdown", "templates", "iqss", "skeleton", + f, package="binb"), ".", recursive=TRUE) template <- system.file("rmarkdown", "templates", "iqss", @@ -148,6 +149,58 @@ iqss <- function(toc = FALSE, } +##' @rdname metropolis +presento <- function(toc = FALSE, + slide_level = 2, + incremental = FALSE, + fig_width = 10, + fig_height = 7, + fig_crop = TRUE, + fig_caption = TRUE, + dev = 'pdf', + df_print = "default", + fonttheme = "default", + highlight = "haddock", + keep_tex = FALSE, + latex_engine = "xelatex", + citation_package = c("none", "natbib", "biblatex"), + includes = NULL, + md_extensions = NULL, + pandoc_args = NULL) { + + for (f in c("presento.sty", "images/")) + if (!file.exists(f)) + file.copy(system.file("rmarkdown", "templates", + "presento", "skeleton", f, package="binb"), + ".", recursive=TRUE) + + template <- system.file("rmarkdown", "templates", "presento", + "resources", "template.tex", + package="binb") + + rmarkdown::beamer_presentation(template = template, + toc = toc, + slide_level = slide_level, + incremental = incremental, + fig_width = fig_width, + fig_height = fig_height, + fig_crop = fig_crop, + fig_caption = fig_caption, + dev = dev, + df_print = df_print, + theme = "iqss", + fonttheme = fonttheme, + highlight = highlight, + keep_tex = keep_tex, + latex_engine = latex_engine, + citation_package = citation_package, + includes = includes, + md_extensions = md_extensions, + pandoc_args = pandoc_args) + +} + + # Call rmarkdown::pdf_documet and mark the return value as inheriting pdf_document inherit_pdf_document <- function(...) { fmt <- rmarkdown::pdf_document(...) diff --git a/inst/rmarkdown/templates/presento/resources/template.tex b/inst/rmarkdown/templates/presento/resources/template.tex new file mode 100644 index 0000000..fbcee36 --- /dev/null +++ b/inst/rmarkdown/templates/presento/resources/template.tex @@ -0,0 +1,335 @@ +\PassOptionsToPackage{unicode=true}{hyperref} % options for packages loaded elsewhere +\PassOptionsToPackage{hyphens}{url} +\documentclass[$if(fontsize)$$fontsize$,$endif$$if(lang)$$babel-lang$,$endif$$if(papersize)$$papersize$paper,$endif$$for(classoption)$$classoption$$sep$,$endfor$]{$documentclass$} +$if(beamerarticle)$ +\usepackage{beamerarticle} % needs to be loaded first +$endif$ +$if(fontfamily)$ +\usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$} +$else$ +\usepackage{lmodern} +$endif$ +$if(linestretch)$ +\usepackage{setspace} +\setstretch{$linestretch$} +$endif$ +\usepackage{amssymb,amsmath} +\usepackage{ifxetex,ifluatex} +\usepackage{fixltx2e} % provides \textsubscript +\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex + \usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc} + \usepackage[utf8]{inputenc} +$if(euro)$ + \usepackage{eurosym} +$endif$ +\else % if luatex or xelatex + \ifxetex + \usepackage{mathspec} + \else + \usepackage{fontspec} + \fi + \defaultfontfeatures{Ligatures=TeX,Scale=MatchLowercase} +$for(fontfamilies)$ + \newfontfamily{$fontfamilies.name$}[$fontfamilies.options$]{$fontfamilies.font$} +$endfor$ +$if(euro)$ + \newcommand{\euro}{€} +$endif$ +$if(mainfont)$ + \setmainfont[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$]{$mainfont$} +$endif$ +$if(sansfont)$ + \setsansfont[$for(sansfontoptions)$$sansfontoptions$$sep$,$endfor$]{$sansfont$} +$endif$ +$if(monofont)$ + \setmonofont[Mapping=tex-ansi$if(monofontoptions)$,$for(monofontoptions)$$monofontoptions$$sep$,$endfor$$endif$]{$monofont$} +$endif$ +$if(mathfont)$ + \setmathfont(Digits,Latin,Greek)[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$} +$endif$ +$if(CJKmainfont)$ + \usepackage{xeCJK} + \setCJKmainfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$} +$endif$ +\fi +% use upquote if available, for straight quotes in verbatim environments +\IfFileExists{upquote.sty}{\usepackage{upquote}}{} +% use microtype if available +\IfFileExists{microtype.sty}{% +\usepackage[$for(microtypeoptions)$$microtypeoptions$$sep$,$endfor$]{microtype} +\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts +}{} +%\PassOptionsToPackage{hyphens}{url} % url is loaded by hyperref +$if(verbatim-in-note)$ +\usepackage{fancyvrb} +$endif$ +\usepackage[unicode=true]{hyperref} +$if(colorlinks)$ +\PassOptionsToPackage{usenames,dvipsnames}{color} % color is loaded by hyperref +$endif$ +\hypersetup{ +$if(title-meta)$ + pdftitle={$title-meta$}, +$endif$ +$if(author-meta)$ + pdfauthor={$author-meta$}, +$endif$ +$if(keywords)$ + pdfkeywords={$for(keywords)$$keywords$$sep$, $endfor$}, +$endif$ +$if(colorlinks)$ + colorlinks=true, + linkcolor=$if(linkcolor)$$linkcolor$$else$Maroon$endif$, + citecolor=$if(citecolor)$$citecolor$$else$Blue$endif$, + urlcolor=$if(urlcolor)$$urlcolor$$else$Blue$endif$, +$else$ + pdfborder={0 0 0}, +$endif$ + breaklinks=true} +\urlstyle{same} % don't use monospace font for urls +$if(verbatim-in-note)$ +\VerbatimFootnotes % allows verbatim text in footnotes +$endif$ +$if(geometry)$ +\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry} +$endif$ +$if(lang)$ +\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex + \usepackage[shorthands=off,$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=$babel-lang$]{babel} +$if(babel-newcommands)$ + $babel-newcommands$ +$endif$ +\else + \usepackage{polyglossia} + \setmainlanguage[$polyglossia-lang.options$]{$polyglossia-lang.name$} +$for(polyglossia-otherlangs)$ + \setotherlanguage[$polyglossia-otherlangs.options$]{$polyglossia-otherlangs.name$} +$endfor$ +\fi +$endif$ +$if(natbib)$ +\usepackage{natbib} +\bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$} +$endif$ +$if(biblatex)$ +\usepackage[$if(biblio-style)$style=$biblio-style$,$endif$$for(biblatexoptions)$$biblatexoptions$$sep$,$endfor$]{biblatex} +$for(bibliography)$ +\addbibresource{$bibliography$} +$endfor$ +$endif$ +$if(listings)$ +\usepackage{listings} +$endif$ +$if(lhs)$ +\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{} +$endif$ +$if(highlighting-macros)$ +$highlighting-macros$ +$endif$ +$if(tables)$ +\usepackage{longtable,booktabs} +% Fix footnotes in tables (requires footnote package) +\IfFileExists{footnote.sty}{\usepackage{footnote}\makesavenoteenv{long table}}{} +$endif$ +$if(graphics)$ +\usepackage{graphicx,grffile} +\makeatletter +\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi} +\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi} +\makeatother +% Scale images if necessary, so that they will not overflow the page +% margins by default, and it is still possible to overwrite the defaults +% using explicit options in \includegraphics[width, height, ...]{} +\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio} +$endif$ +$if(links-as-notes)$ +% Make links footnotes instead of hotlinks: +\renewcommand{\href}[2]{#2\footnote{\url{#1}}} +$endif$ +$if(strikeout)$ +\usepackage[normalem]{ulem} +% avoid problems with \sout in headers with hyperref: +\pdfstringdefDisableCommands{\renewcommand{\sout}{}} +$endif$ +$if(indent)$ +$else$ +\IfFileExists{parskip.sty}{% +\usepackage{parskip} +}{% else +\setlength{\parindent}{0pt} +\setlength{\parskip}{6pt plus 2pt minus 1pt} +} +$endif$ +\setlength{\emergencystretch}{3em} % prevent overfull lines +\providecommand{\tightlist}{% + \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} +$if(numbersections)$ +\setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$5$endif$} +$else$ +\setcounter{secnumdepth}{0} +$endif$ +$if(subparagraph)$ +$else$ +% Redefines (sub)paragraphs to behave more like sections +\ifx\paragraph\undefined\else +\let\oldparagraph\paragraph +\renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}} +\fi +\ifx\subparagraph\undefined\else +\let\oldsubparagraph\subparagraph +\renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}} +\fi +$endif$ +$if(dir)$ +\ifxetex + % load bidi as late as possible as it modifies e.g. graphicx + $if(latex-dir-rtl)$ + \usepackage[RTLdocument]{bidi} + $else$ + \usepackage{bidi} + $endif$ +\fi +\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex + \TeXXeTstate=1 + \newcommand{\RL}[1]{\beginR #1\endR} + \newcommand{\LR}[1]{\beginL #1\endL} + \newenvironment{RTL}{\beginR}{\endR} + \newenvironment{LTR}{\beginL}{\endL} +\fi +$endif$ + +% set default figure placement to htbp +\makeatletter +\def\fps@figure{htbp} +\makeatother + +$for(header-includes)$ +$header-includes$ +$endfor$ + +\usepackage{presento} + +$if(title)$ +\title{$title$$if(thanks)$\thanks{$thanks$}$endif$} +$endif$ +$if(subtitle)$ +\providecommand{\subtitle}[1]{} +\subtitle{$subtitle$} +$endif$ +$if(author)$ +\author{$for(author)$$author$$sep$ \and $endfor$} +$endif$ +$if(institute)$ +\providecommand{\institute}[1]{} +\institute{$for(institute)$$institute$$sep$ \and $endfor$} +$endif$ +\date{$date$} + +%% presento start +% presento-config +% Sets the background color to be light gray and the default text color to be heavy dark gray. +% Recommended for presenting with high quality projectors, since the high contrast of black-white is not advisable +\setbeamercolor{background canvas}{bg=colorlgray} +\setbeamercolor{normal text}{fg=colorhgray} + +% personal data +%\newcommand{\myTitle}{\color{colorblue}\hugetext{PRESENTO\\}{\montserratfont\largetext{clean, simple and extensible}}} +%\newcommand{\myName}{\largetext{\color{orange}{Ratul Saha}}\\\setnote{www.ratulsaha.com}} +%\newcommand{\myDetails}{\setnote{\today}} + +% personal data +$if(title)$ +\newcommand{\myTitle}{\color{colorblue}\hugetext{$title$} + $if(subtitle)$ {\montserratfont\largetext{$subtitle$}} $endif$ +} +$endif$ +$if(author)$ +\newcommand{\myName}{\largetext{\color{orange}{$for(author)$$author$$sep$ \and $endfor$} + $if(address)$ \\\setnote{$address$} $endif$ +}} +$endif$ +\newcommand{\myDetails}{\setnote{\today}} + +%sty file +%\usepackage{config/presento} +%\usepackage{presento} + +% custom command and packages +%\input{config/custom-command} +% custom packages +\usepackage{textpos} +\setlength{\TPHorizModule}{1cm} +\setlength{\TPVertModule}{1cm} + +\newcommand\crule[1][black]{\textcolor{#1}{\rule{2cm}{2cm}}} + + + +%% presento end + +\begin{document} +%% DEdd Commented-out for presento +%$if(title)$ +%\maketitle +%$endif$ + +% DEdd added for presento +\begin{frame}[plain] + \vfill + \myTitle + \vfill + \myName + \vfill + \myDetails + \vfill +\end{frame} + +$if(abstract)$ +\begin{abstract} +$abstract$ +\end{abstract} +$endif$ + +$for(include-before)$ +$include-before$ + +$endfor$ +$if(toc)$ +{ +$if(colorlinks)$ +\hypersetup{linkcolor=$if(toccolor)$$toccolor$$else$black$endif$} +$endif$ +\setcounter{tocdepth}{$toc-depth$} +\tableofcontents +} +$endif$ +$if(lot)$ +\listoftables +$endif$ +$if(lof)$ +\listoffigures +$endif$ +$body$ + +$if(natbib)$ +$if(bibliography)$ +$if(biblio-title)$ +$if(book-class)$ +\renewcommand\bibname{$biblio-title$} +$else$ +\renewcommand\refname{$biblio-title$} +$endif$ +$endif$ +\bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$} + +$endif$ +$endif$ +$if(biblatex)$ +\printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$ + +$endif$ +$for(include-after)$ +$include-after$ + +$endfor$ +\end{document} diff --git a/inst/rmarkdown/templates/presento/skeleton/images/skeleton.jpg b/inst/rmarkdown/templates/presento/skeleton/images/skeleton.jpg new file mode 100644 index 0000000..bcf0764 Binary files /dev/null and b/inst/rmarkdown/templates/presento/skeleton/images/skeleton.jpg differ diff --git a/inst/rmarkdown/templates/presento/skeleton/presento.sty b/inst/rmarkdown/templates/presento/skeleton/presento.sty new file mode 100644 index 0000000..26f31ef --- /dev/null +++ b/inst/rmarkdown/templates/presento/skeleton/presento.sty @@ -0,0 +1,118 @@ +\ProvidesPackage{config/presento} +\mode + +% removing navigation symbols +\setbeamertemplate{navigation symbols}{} + +% packages +\usepackage{xcolor} +\usepackage{fontspec} +\usepackage{setspace} +\usepackage{tikz} +\usepackage{enumitem} + +% colors +\definecolor{colororange}{HTML}{E65100} % orange +\definecolor{colordgray}{HTML}{795548} % dark gray for note +\definecolor{colorhgray}{HTML}{212121} % heavy dark gray for normal text +\definecolor{colorgreen}{HTML}{009688} % green +\definecolor{colorlgray}{HTML}{FAFAFA} % background light gray +\definecolor{colorblue}{HTML}{0277BB} % blue + +% font sizes +\newcommand{\fontsizeone}{2.292em} +\newcommand{\fontsizetwo}{1.217em} +\newcommand{\fontsizethree}{0.875em} +% line spaces +\newcommand{\linespaceone}{2} + +% font families +% DEdd: removed path, set Lato to 'Lato-Light', set Montserrat to Bold +\newfontfamily{\montserratfont}[BoldFont=Montserrat-Bold]{Montserrat-Bold} +\newfontfamily{\notosansfont}[BoldFont=NotoSans-Bold,ItalicFont=NotoSans-Italic,BoldItalicFont=NotoSans-BoldItalic,SmallCapsFont=AlegreyaSansSC-Regular]{NotoSans-Regular} +\newfontfamily{\latolightfont}{Lato-Light} +\newfontfamily{\inconsolatafont}{Inconsolata} + +% beamer template changes +\setbeamertemplate{frametitle}{ + \vspace{0.40em} + \noindent + \hspace{-1.22em} + \tikz[overlay,remember picture,baseline=0.3em]{\fill[fill=colorblue] (-0.3,0.05) rectangle (0,0.9); }\latolightfont\color{colorblue}~~\insertframetitle% +} + +\setmainfont[Ligatures=TeX,BoldFont=NotoSans-Bold,ItalicFont=NotoSans-Italic,BoldItalicFont=NotoSans-BoldItalic,SmallCapsFont=AlegreyaSansSC-Regular]{NotoSans-Regular} +\setsansfont[Ligatures=TeX,BoldFont=NotoSans-Bold,ItalicFont=NotoSans-Italic,BoldItalicFont=NotoSans-BoldItalic,SmallCapsFont=AlegreyaSansSC-Regular]{NotoSans-Regular} +\setmonofont[Ligatures=TeX,SmallCapsFont=AlegreyaSansSC-Regular]{Inconsolata} + +% frame counter +\newcounter{totalfr} +\setbeamertemplate{footline}{ + \ifnum\inserttotalframenumber=1 + \setcounter{totalfr}{2} + \else + \setcounter{totalfr}{\inserttotalframenumber} + \fi + \hfill{ + \tikz{ + \filldraw[fill=colorblue!40, draw=colorblue!50] (0,0) -- (0.2,0) arc (0:{\value{framenumber}*(360/(\value{totalfr}-1))}:0.2) -- (0,0); + \node at (0,0) {\normalsize \color{colororange}\tiny{\insertframenumber}}; + } + } + \hspace{2em} + \vspace*{1em} +} + +% custom commands +\newcommand{\hugetext}[1]{ + { + \begin{spacing}{\linespaceone} + \fontsize{\fontsizeone}{\fontsizeone}{\montserratfont #1} + \end{spacing} + } +} + +\newcommand{\largetext}[1]{ + {\fontsize{\fontsizetwo}{\fontsizeone}\selectfont{#1}} +} + +\newcommand{\setnote}[1]{ + {\fontsize{\fontsizethree}{\fontsizeone}\selectfont\color{colordgray}{#1}} +} + +\newcommand{\rtarrow}{$\color{colorblue}{\rightarrow}$} + +\newcommand{\itemR}{ + \item[\rtarrow] +} + +\newcommand{\framecard}[2][colorgreen]{ + {\setbeamercolor{background canvas}{bg=#1} + \begin{frame}[plain] + \vfill + \begin{center} + {#2} + \end{center} + \vfill + \end{frame} + } +} +\newcommand{\framepic}[3][1]{ + { + \usebackgroundtemplate{% + \tikz[overlay,remember picture] \node[opacity=#1, at=(current page.center)] { + \includegraphics[width=\paperwidth]{#2}}; + } + \begin{frame} + #3 + \end{frame} + } +} + +\newenvironment{baseitemize} + {\itemize[leftmargin=*]} + {\enditemize} + +\newenvironment{fullpageitemize} + {\itemize[nolistsep,itemsep=\fill,leftmargin=*]} + {\vfill\enditemize} diff --git a/inst/rmarkdown/templates/presento/skeleton/skeleton.Rmd b/inst/rmarkdown/templates/presento/skeleton/skeleton.Rmd new file mode 100644 index 0000000..3bfcc65 --- /dev/null +++ b/inst/rmarkdown/templates/presento/skeleton/skeleton.Rmd @@ -0,0 +1,45 @@ +--- +author: Ratul Saha +address: www.ratulsaha.com +title: Presento +subtitle: clean, simple and extensible +date: \today +fontsize: 17pt +output: binb::presento +--- + +## Presento + +- \begin{center}\largetext{The design is \underline{clean}}\end{center} +- \item \begin{center}\largetext{The rules are \underline{simple}}\end{center} +- \item \begin{center}\largetext{The code is \underline{extensible}}\end{center} + + +## Open Source Fonts + +- \montserratfont This is Montserrat +- \notosansfont This is Noto Sans +- \latolightfont This is Lato (light) +- \inconsolatafont This is inconsolata +- \textsc{This is Alegreya Sans small caps} + + +## Color Palette + +\begin{center} + \crule[colordgray] \crule[colorhgray] \crule[colorblue] \crule[colorgreen] \crule[colororange] +\end{center} + +____ + +\setbeamercolor{background canvas}{bg=\colorgreen} +\centering{\hugetext{BIG BOLD TEXT} \bigskip \tiny but background color does not work} + + +---- + +\tikz[overlay,remember picture] \node[opacity=0.8, at=(current page.center)]{% + \includegraphics[width=\paperwidth]{images/skeleton}}; +\begin{textblock}{7}(7,2.5) + {\color{colorblue}\hugetext{\textbf{RUN!}}} +\end{textblock} diff --git a/inst/rmarkdown/templates/presento/template.yaml b/inst/rmarkdown/templates/presento/template.yaml new file mode 100644 index 0000000..174707f --- /dev/null +++ b/inst/rmarkdown/templates/presento/template.yaml @@ -0,0 +1,3 @@ +name: Binb is not Beamer - Presento (pdf) +description: A custom R Markdown Beamer presentation theme. +create_dir: true diff --git a/man/metropolis.Rd b/man/metropolis.Rd index ea4a193..7a8e9fb 100644 --- a/man/metropolis.Rd +++ b/man/metropolis.Rd @@ -3,6 +3,7 @@ \name{metropolis} \alias{metropolis} \alias{iqss} +\alias{presento} \title{Binb is not Beamer - PDF Presentation Themes} \usage{ metropolis(toc = FALSE, slide_level = 2, incremental = FALSE, @@ -20,6 +21,14 @@ iqss(toc = FALSE, slide_level = 3, incremental = FALSE, latex_engine = "xelatex", citation_package = c("none", "natbib", "biblatex"), includes = NULL, md_extensions = NULL, pandoc_args = NULL) + +presento(toc = FALSE, slide_level = 2, incremental = FALSE, + fig_width = 10, fig_height = 7, fig_crop = TRUE, + fig_caption = TRUE, dev = "pdf", df_print = "default", + fonttheme = "default", highlight = "haddock", keep_tex = FALSE, + latex_engine = "xelatex", citation_package = c("none", "natbib", + "biblatex"), includes = NULL, md_extensions = NULL, + pandoc_args = NULL) } \arguments{ \item{toc}{A logical variable defaulting to \code{FALSE}.}