Files to create slides and handouts from the same Markdown files using
Pandoc and a custom Beamer template. Lots of ideas borrowed from Karl
Browman's post. The Makefile will turn any *.md
in the directory
into PDF slides (*.md.slides.pdf
) and PDF slides with notes for
speaking or a handout (*.md.handout.pdf
). The file default.beamer
belongs in ~/.pandoc/templates
. Use the metadata in the YAML header of
the Markdown file to control various options. To get the handout to look
right, use the \note{}
macro after each slide in the Markdown file.
-
-
Save hyiltiz/5009aaed774ea27b452a to your computer and use it in GitHub Desktop.
PDF slides and handouts using Pandoc and Beamer
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
% Generated by my modifications to the default Pandoc beamer template. | |
% Karl Browman has a tutorial about how to make Beamer sane: | |
% http://kbroman.wordpress.com/2013/10/07/better-looking-latexbeamer-slides/ | |
% 12pt by default; handout if the handout template variable is defined | |
\documentclass[$if(fontsize)$$fontsize$,$else$12pt,$endif$$if(handout)$handout,$endif$$if(beamer)$ignorenonframetext,$endif$$for(classoption)$$classoption$$sep$,$endfor$]{$documentclass$} | |
% theme, colortheme, and fonttheme with sensible defaults | |
$if(theme)$ | |
\usetheme{$theme$} | |
$else$ | |
\usetheme{default} | |
$endif$ | |
$if(colortheme)$ | |
\usecolortheme{$colortheme$} | |
$else$ | |
\usecolortheme{dove} | |
$endif$ | |
$if(fonttheme)$ | |
\usefonttheme{$fonttheme$} | |
$endif$ | |
% if it is a handout show the notes text; otherwise don't | |
$if(handout)$ | |
\setbeameroption{show notes} | |
\setbeamertemplate{note page}[plain] | |
$else$ | |
\setbeameroption{hide notes} | |
\setbeamertemplate{note page}[plain] | |
$endif$ | |
% Don't show things we don't want to see | |
\beamertemplatenavigationsymbolsempty | |
\hypersetup{pdfpagemode=UseNone} % don't show bookmarks on initial view | |
% Slide number in lower right | |
\definecolor{gray}{RGB}{155,155,155} | |
\setbeamertemplate{footline}{% | |
\raisebox{5pt}{\makebox[\paperwidth]{\hfill\makebox[20pt]{\color{gray} | |
\scriptsize\insertframenumber}}}\hspace*{5pt}} | |
% Space between paragraphs on notes page | |
\addtobeamertemplate{note page}{\setlength{\parskip}{12pt}} | |
% Color and shape of bullets | |
% \setbeamercolor{item}{fg=gray} | |
% \setbeamercolor{subitem}{fg=gray} | |
% \setbeamercolor{itemize/enumerate subbody}{fg=gray} | |
\setbeamertemplate{itemize item}{{\textendash}} | |
\setbeamertemplate{itemize subitem}{{\textendash}} | |
\setbeamerfont{itemize/enumerate subbody}{size=\footnotesize} | |
\setbeamerfont{itemize/enumerate subitem}{size=\footnotesize} | |
\usepackage{amssymb,amsmath} | |
\usepackage{ifxetex,ifluatex} | |
\usepackage{fixltx2e} % provides \textsubscript | |
\ifxetex | |
\usepackage{fontspec,xltxtra,xunicode} | |
\defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase} | |
\else | |
\ifluatex | |
\usepackage{fontspec} | |
\defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase} | |
\else | |
\usepackage[utf8]{inputenc} | |
\fi | |
\fi | |
$if(natbib)$ | |
\usepackage{natbib} | |
\bibliographystyle{plainnat} | |
$endif$ | |
$if(biblatex)$ | |
\usepackage{biblatex} | |
$if(biblio-files)$ | |
\bibliography{$biblio-files$} | |
$endif$ | |
$endif$ | |
$if(listings)$ | |
\usepackage{listings} | |
$endif$ | |
$if(lhs)$ | |
\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{} | |
$endif$ | |
$if(highlighting-macros)$ | |
$highlighting-macros$ | |
$endif$ | |
$if(verbatim-in-note)$ | |
\usepackage{fancyvrb} | |
$endif$ | |
$if(tables)$ | |
\usepackage{longtable} | |
% These lines are needed to make table captions work with longtable: | |
\makeatletter | |
\def\fnum@table{\tablename~\thetable} | |
\makeatother | |
$endif$ | |
$if(url)$ | |
\usepackage{url} | |
$endif$ | |
$if(graphics)$ | |
\usepackage{graphicx} | |
% Redefine \includegraphics so that, unless explicit options are | |
% given, the image width will not exceed the width of the page. | |
% Images get their normal width if they fit onto the page, but | |
% are scaled down if they would overflow the margins. | |
\makeatletter | |
\def\ScaleIfNeeded{% | |
\ifdim\Gin@nat@width>\linewidth | |
\linewidth | |
\else | |
\Gin@nat@width | |
\fi | |
} | |
\makeatother | |
\let\Oldincludegraphics\includegraphics | |
\renewcommand{\includegraphics}[2][]{\Oldincludegraphics[width=\ScaleIfNeeded]{#2}} | |
$endif$ | |
% Comment these out if you don't want a slide with just the | |
% part/section/subsection/subsubsection title: | |
\AtBeginPart{ | |
\let\insertpartnumber\relax | |
\let\partname\relax | |
\frame{\partpage} | |
} | |
\AtBeginSection{ | |
\let\insertsectionnumber\relax | |
\let\sectionname\relax | |
\frame{\sectionpage} | |
} | |
\AtBeginSubsection{ | |
\let\insertsubsectionnumber\relax | |
\let\subsectionname\relax | |
\frame{\subsectionpage} | |
} | |
$if(strikeout)$ | |
\usepackage[normalem]{ulem} | |
% avoid problems with \sout in headers with hyperref: | |
\pdfstringdefDisableCommands{\renewcommand{\sout}{}} | |
$endif$ | |
\setlength{\parindent}{0pt} | |
\setlength{\parskip}{6pt plus 2pt minus 1pt} | |
\setlength{\emergencystretch}{3em} % prevent overfull lines | |
$if(numbersections)$ | |
$else$ | |
\setcounter{secnumdepth}{0} | |
$endif$ | |
$if(verbatim-in-note)$ | |
\VerbatimFootnotes % allows verbatim text in footnotes | |
$endif$ | |
$if(lang)$ | |
\usepackage[$lang$]{babel} | |
$endif$ | |
$for(header-includes)$ | |
$header-includes$ | |
$endfor$ | |
$if(title)$ | |
\title{$title$} | |
$endif$ | |
$if(subtitle)$ | |
\subtitle{$subtitle$} | |
$endif$ | |
$if(author)$ | |
\author{$for(author)$$author$$sep$ \and $endfor$} | |
$endif$ | |
$if(date)$ | |
\date{$date$} | |
$endif$ | |
$if(institute)$ | |
\institute{$institute$} | |
$endif$ | |
\begin{document} | |
$if(title)$ | |
{ | |
\setbeamertemplate{footline}{} % no page number here | |
\frame{ | |
\titlepage | |
% Include a note for the title slide here, because we cannot do so in the | |
% Pandoc markdown file. If you want the title note to contain actual text, | |
% use the titlepage-note field in the YAML header. Otherwise, we use a | |
% non-breaking space so that it is not empty. | |
\note{$if(titlepage-note)$$titlepage-note$$else$~$endif$} | |
} | |
} | |
$endif$ | |
$for(include-before)$ | |
$include-before$ | |
$endfor$ | |
$if(toc)$ | |
\begin{frame} | |
\tableofcontents[hideallsubsections] | |
\end{frame} | |
$endif$ | |
$body$ | |
$if(natbib)$ | |
$if(biblio-files)$ | |
$if(biblio-title)$ | |
$if(book-class)$ | |
\renewcommand\bibname{$biblio-title$} | |
$else$ | |
\renewcommand\refname{$biblio-title$} | |
$endif$ | |
$endif$ | |
\bibliography{$biblio-files$} | |
$endif$ | |
$endif$ | |
$if(biblatex)$ | |
\printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$ | |
$endif$ | |
$for(include-after)$ | |
$include-after$ | |
$endfor$ | |
\end{document} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SLIDES := $(patsubst %.md,%.md.slides.pdf,$(wildcard *.md)) | |
HANDOUTS := $(patsubst %.md,%.md.handout.pdf,$(wildcard *.md)) | |
all : $(SLIDES) $(HANDOUTS) | |
%.md.slides.pdf : %.md | |
pandoc $^ -t beamer --slide-level 2 -o $@ | |
%.md.handout.pdf : %.md | |
pandoc $^ -t beamer --slide-level 2 -V handout -o $@ | |
pdfnup $@ --nup 1x2 --no-landscape --keepinfo \ | |
--paper letterpaper --frame true --scale 0.9 \ | |
--suffix "nup" | |
mv $*.md.handout-nup.pdf $@ | |
clobber : | |
rm -f $(SLIDES) | |
rm -f $(HANDOUTS) |
author | subtitle | title | titlepage-note | institute | fontsize | |
---|---|---|---|---|---|---|
|
Doing DH Institute |
Spatial History |
This is a the note that goes on the title page. This talk is to be
given at Doing DH.
|
George Mason University |
17pt |
Regular text size
\tiny Jonathan Sarna, American Judaism (New Haven: Yale University Press, 2014)
\note{ NOTES: This is a note page and you ought to be able to tell. }
Surely this is true.^[Jane Doe, Says It Here (New York: Oxford University Press, 2050).]
\note{I am sure about this point.}
Regular text on a slide:
- One
- Two
- Three
\note{ More notes:
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. }
puts "Hello world."
def my_awesome_variable
puts "My awesome variable"
end
\note{ This might be easier in R or Ruby. }
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment