diff --git a/.Rhistory b/.Rhistory
index 4ee4f65..7f3b4c2 100644
--- a/.Rhistory
+++ b/.Rhistory
@@ -1,6 +1,3 @@
-library(sf)
-canada <- read_sf("data/Canada.geojson")
-ggplot() +
 ggspatial::layer_spatial(canada, fill = "grey") +
 coord_sf() +
 theme_fivethirtyeight() +
@@ -510,3 +507,6 @@
 library(posterdown)
 library(posterdown)
 library(posterdown)
+getwd
+getwd()
+install.packages("pdftools")
diff --git a/.Rproj.user/441ADA46/pcs/source-pane.pper b/.Rproj.user/441ADA46/pcs/source-pane.pper
index 70829f6..1743e40 100644
--- a/.Rproj.user/441ADA46/pcs/source-pane.pper
+++ b/.Rproj.user/441ADA46/pcs/source-pane.pper
@@ -1,3 +1,3 @@
 {
-    "activeTab" : 1
+    "activeTab" : 0
 }
\ No newline at end of file
diff --git a/.Rproj.user/441ADA46/pcs/windowlayoutstate.pper b/.Rproj.user/441ADA46/pcs/windowlayoutstate.pper
index e9b88cf..4373672 100644
--- a/.Rproj.user/441ADA46/pcs/windowlayoutstate.pper
+++ b/.Rproj.user/441ADA46/pcs/windowlayoutstate.pper
@@ -2,7 +2,7 @@
     "left" : {
         "panelheight" : 789,
         "splitterpos" : 329,
-        "topwindowstate" : "NORMAL",
+        "topwindowstate" : "EXCLUSIVE",
         "windowheight" : 828
     },
     "right" : {
diff --git a/.Rproj.user/441ADA46/pcs/workbench-pane.pper b/.Rproj.user/441ADA46/pcs/workbench-pane.pper
index b15bf23..d5d6c04 100644
--- a/.Rproj.user/441ADA46/pcs/workbench-pane.pper
+++ b/.Rproj.user/441ADA46/pcs/workbench-pane.pper
@@ -2,5 +2,7 @@
     "TabSet1" : 3,
     "TabSet2" : 0,
     "TabZoom" : {
+        "MaximizedTab" : "Source",
+        "WidgetSize" : 502
     }
 }
\ No newline at end of file
diff --git a/.Rproj.user/441ADA46/sources/s-1DCD7B32/25D73910 b/.Rproj.user/441ADA46/sources/per/t/25D73910
similarity index 100%
rename from .Rproj.user/441ADA46/sources/s-1DCD7B32/25D73910
rename to .Rproj.user/441ADA46/sources/per/t/25D73910
diff --git a/.Rproj.user/441ADA46/sources/s-1DCD7B32/25D73910-contents b/.Rproj.user/441ADA46/sources/per/t/25D73910-contents
similarity index 100%
rename from .Rproj.user/441ADA46/sources/s-1DCD7B32/25D73910-contents
rename to .Rproj.user/441ADA46/sources/per/t/25D73910-contents
diff --git a/.Rproj.user/441ADA46/sources/s-1DCD7B32/245EA062-contents b/.Rproj.user/441ADA46/sources/s-1DCD7B32/245EA062-contents
deleted file mode 100644
index 4f27cd8..0000000
--- a/.Rproj.user/441ADA46/sources/s-1DCD7B32/245EA062-contents
+++ /dev/null
@@ -1,158 +0,0 @@
----
-#----ESSENTIALS----#
-title: 'Using `posterdown` to generate reproducible conference posters via RMarkdown > Knitr > Markdown > Pandoc > Latex > PDF workflow'
-author: "Author One^1^ Author Two^2^"
-affiliation: "^1^Department of Poster Layouts, University of Markdown; ^2^Deparment of Another Institution, Institution University"
-
-#----FONT STYLE----#
-font_size: "30pt" #sets '\normalsize' (sizes of the title and sections headings will adjust based on it)
-font_family: "courier" # choose from typical latex fonts (example: "palatino")
-
-#----COLOURS----#
-title_bgcol: "000000"  #Hex colour for background of poster title section (default is blue)
-poster_bgcol: "white" #colour of the poster main background
-title_textcol: "red" #colour of title text
-header_textcol: "red" #colour of the poster header titles
-cite_col: "green" #colour of ciation elements
-url_col: "cyan" #colour of url links
-link_col: "cyan" #colour of other links within the poster
-columnline_col: "blue" #colour 
-
-#----POSTER SIZE & COLUMN NUMBERS----#
-poster_height: "38in" # height in inches of poster
-poster_width: "45in" # width in inches of poster
-column_numbers: 3 # Number of columns that the poster has
-
-#----OTHER----#
-bibliography: MyLibrary # name of the .bib file used for referencing
-output: posterdown::posterdown_pdf
----
-
-```{r, include=FALSE}
-knitr::opts_chunk$set(echo = FALSE, results = 'asis',fig.height = 3.5, fig.width = 4.5, out.width = "100%", warning = FALSE, fig.align = 'center', message = FALSE, dev='cairo_pdf')
-```
-
-<!--
-Bellow you will find typical RMarkdown syntax which should fill in the columns for the poster from top to bottom left to right. The more information you have the more will be filled. Please let me know if you have feedback at brentthorne18@gmail.com or at github.com/brentthorne/posterdown
-
-ENJOY! XD
--->
-
-# Introduction
-
-Welcome to `posterdown` ! This is my attempt to provide a semi-smooth workflow for those who wish to take their `RMarkdown` skills to the conference world. Many creature comforts from `RMarkdown` are available in this package such as `Markdown` section notation, figure captioning, and even citations like this one [@holden_identifying_2012] The rest of this example poster will show how you can insert typical conference poster features into your own document. 
-
-# Study Site
-
-Here is a map made to show the study site using `ggplot2`, `ggspatial`, and `sf`. Lorem ipsum dolor sit amet, [@middleton_geological_nodate] consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Phasellus vestibulum lorem sed risus ultricies tristique nulla. Mauris vitae ultricies leo integer malesuada nunc vel risus commodo. Suspendisse potenti nullam ac tortor vitae. Enim nunc faucibus a pellentesque sit amet porttitor eget.  \vspace{15mm}
-
-```{r, fig.width=4.5, out.width="80%", fig.cap='This is a map of Canada, the ggspatial package is great for GIS folks in R!', cache=TRUE}
-library(ggplot2)
-library(ggspatial)
-library(ggthemes)
-library(sf)
-
-canada <- read_sf("data/Canada.geojson")
-
-
-ggplot() +
-  ggspatial::layer_spatial(canada, fill = "grey") +
-  ggspatial::annotation_north_arrow(location = "br", which_north = "true", style = north_arrow_nautical()) +
-  coord_sf() +
-  theme_solarized() +
-  NULL
-
-```
-
-
-# Objectives
-
-\large
-
-1. Easy to use reproducible poster design. 
-2. Integration with `RMarkdown`.
-3. Easy transition from `posterdown` to `thesisdown` or `rticles`
-
-\small
-
-# Methods
-
-This package uses the same workflow approach as the `RMarkdown` you know and love. Basically it goes from RMarkdown > Knitr > Markdown > Pandoc > Latex > PDF
-
-# Results
-
-Usually you want to have a nice table displaying some important results that you have calcualated. In posterdown this is as easy as using the `kable` table formatting you are probably use to as per typical `RMarkdown` formatting. I suggesting checking out the `kableExtra` package and its in depth documentation on customizing these tables found [here](https://haozhu233.github.io/kableExtra/awesome_table_in_pdf.pdf).
-
-```{r}
-library(kableExtra)
-library(ggplot2)
-
-data("iris")
-
-kable(iris[1:4,],align = "c", caption = "Tables are a breeze with Kable and Kable extra package!", booktabs = TRUE) %>% 
-  kable_styling(latex_options = "striped",full_width = TRUE, font_size = 25)
-
-```
-
-\vspace{1in}
-
-```{r, out.width='75%', fig.width=4, fig.height=3, fig.cap='A typical plot using ggplot using the classic iris dataset.'}
-
-library(ggplot2)
-library(ggthemes)
-
-ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width, colour = Species)) +
-  geom_point() +
-  theme_fivethirtyeight() +
-  labs(x = "Sepal Length", y = "Sepeal Width") +
-  NULL
-
-```
-
-\vspace{1in}
-
-```{r, out.width='85%', fig.width=4.5, fig.height=4, fig.cap='Another typical plot using ggplot, this time with a different theme and r code chunk options for fig.width and fig.height.'}
-
-library(ggplot2)
-library(ggthemes)
-
-ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width, colour = Species)) +
-  geom_point() +
-  theme_hc() +
-  labs(x = "Sepal Length", y = "Sepeal Width") +
-  NULL
-
-```
-
-\vspace{1in}
-
-```{r, out.width='80%', fig.width=4.5, fig.align='center', echo=TRUE, fig.height=5, fig.cap='Another figure showing how base R plots might look on this poster!'}
-
-# Here is some code for people
-# to look at and be in awe of!!!!
-library(ggplot2)
-library(ggthemes)
-
-ggplot(data=iris,
-       aes(x = Sepal.Width,
-           y = Sepal.Length,
-           colour = Species)) +
-  geom_point() +
-  theme_stata() +
-  NULL
-
-```
-
-
-# Next Steps
-
-There is still **A LOT** of work to do on this package which include (but are note limited to): 
-
-- Better softcoding for front end user options in YAML
-- Images in the title section for logo placement which is a common attribut to posters as far as I have come to know.
-- Figure out compatiability with `natbib` which wasn't working during the initial set up.
-- MUCH BETTER PACKAGE DOCUMENTATION. For example, there is nothing in the README...
-- Include References section only if initiated by the user like in RMarkdown.
-
-<!--- Here you can set the size of the citation text -->
-\small
diff --git a/.Rproj.user/441ADA46/sources/s-1DCD7B32/36A4DACA-contents b/.Rproj.user/441ADA46/sources/s-1DCD7B32/36A4DACA-contents
deleted file mode 100644
index 06f5bd7..0000000
--- a/.Rproj.user/441ADA46/sources/s-1DCD7B32/36A4DACA-contents
+++ /dev/null
@@ -1,22 +0,0 @@
-#' Posterdown PDF format (using 'memoir' document class)
-#'
-#' @inheritParams rmarkdown::pdf_document
-#' @param ... Additional arguments to \code{rmarkdown::pdf_document}
-#'
-#' @return R Markdown output format to pass to
-#'   \code{\link[rmarkdown:render]{render}}
-#'
-#' @examples
-#'
-#' \dontrun{
-#' library(rmarkdown)
-#' draft("MyArticle.Rmd", template = "posterdown_generic", package = "posterdown")
-#' }
-#'
-#' @export
-posterdown_pdf <- function(..., keep_tex = TRUE) {
-  inherit_pdf_document(...,
-                       keep_tex = keep_tex,
-                       template = find_resource("posterdown_pdf", "template.tex"),
-                       citation_package = "biblatex")
-}
diff --git a/.Rproj.user/441ADA46/sources/s-1DCD7B32/5AB6DA0E-contents b/.Rproj.user/441ADA46/sources/s-1DCD7B32/5AB6DA0E-contents
deleted file mode 100644
index e69de29..0000000
--- a/.Rproj.user/441ADA46/sources/s-1DCD7B32/5AB6DA0E-contents
+++ /dev/null
diff --git a/.Rproj.user/441ADA46/sources/s-1DCD7B32/DC9C14ED-contents b/.Rproj.user/441ADA46/sources/s-1DCD7B32/DC9C14ED-contents
deleted file mode 100644
index e6c1632..0000000
--- a/.Rproj.user/441ADA46/sources/s-1DCD7B32/DC9C14ED-contents
+++ /dev/null
@@ -1,175 +0,0 @@
-%brent's poster layout :)
-
-\documentclass[article,$font_size$,extrafontsizes]{memoir}
-
-%utf-8 seems to be important
-\usepackage[utf8]{inputenc}
-\usepackage[T1]{fontenc}
-\usepackage{multicol}
-\usepackage{graphicx}
-\usepackage{blindtext}
-\usepackage[svgnames,table]{xcolor}
-\usepackage[framemethod=tikz]{mdframed}
-\usepackage{color}
-\usepackage{geometry}
-\usepackage{adjmulticol}
-
-%For kable extra package :)
-\usepackage{booktabs}
-\usepackage{longtable}
-\usepackage{array}
-\usepackage{multirow}
-\usepackage{wrapfig}
-\usepackage{float}
-\usepackage{colortbl}
-\usepackage{pdflscape}
-\usepackage{pagecolor}
-\usepackage{tabu}
-\usepackage{threeparttable}
-\usepackage{threeparttablex}
-\usepackage[normalem]{ulem}
-\usepackage{makecell}
-
-\usepackage{hyperref}
-\hypersetup{
-    colorlinks=true,
-    linkcolor=$link_col$,
-    citecolor=$cite_col$,
-    filecolor=magenta,
-    urlcolor=$url_col$,
-}
-
-
-%For figure and table placement
-\usepackage{float}
-\floatplacement{figure}{H}
-\floatplacement{table}{H}
-
-%spacing between figure/ table and caption
-\setlength{\abovecaptionskip}{0.4in}
-\setlength{\belowcaptionskip}{0.2in}
-\captionnamefont{\footnotesize\sffamily\bfseries}
-\captiontitlefont{\footnotesize\sffamily}
-
-%define column options
-\setlength{\columnseprule}{1pt}
-\def\columnseprulecolor{\color{$columnline_col$}}
-\setsubsubsecheadstyle{\small\color{$header_textcol$}\textbf}% Set \section style
-\setsecheadstyle{\small\color{$header_textcol$}}
-\setsecnumformat{}
-\def\sectionmark#1{\markboth{#1}{#1}}
-
-%-----------------------------------------------------
-
-\thispagestyle{empty}
-\definecolor{light-gray}{gray}{0.9}
-
-%biblatex options
-\usepackage[sorting=none,backend=biber]{biblatex}
-\renewcommand*{\bibfont}{\tiny}
-\bibliography{$bibliography$}
-\defbibheading{bibliography}[\bibname]{%
-\section*{#1}%
-\markboth{#1}{#1}}
-\AtBeginDocument{%
-  \renewcommand{\bibname}{References}
-}
-
-%bring in the users information
-\author{$author$}
-\title{$title$}
-\counterwithout{section}{chapter}
-\makechapterstyle{mydefault}{
-\addtocounter{secnumdepth}{2}
-\setsecheadstyle{\Large\color{$header_textcol$}\textbf}
-\setsubsecheadstyle{\itshape}
-\setsubsubsecheadstyle{\itshape}
-}
-
-\chapterstyle{mydefault}
-
-%define column spacing
-\setlength\columnsep{1in}
-
-\setlength\parindent{1em}
-\setlength\parskip{1em}
-\setlength\hangparas{0}
-
-%spacing after section head title
-\setaftersecskip{0.3in}
-\setbeforesecskip{1in}
-\setlength\textfloatsep{0.3in}
-\setlength\floatsep{0.3in}
-\setlength\intextsep{0.3in}
-
-\setstocksize{$poster_height$}{$poster_width$}
-\settrimmedsize{\stockheight}{\stockwidth}{*}
-\settypeblocksize{$poster_height$}{$poster_width$}{*}
-\setlrmargins{*}{*}{1}
-\setulmarginsandblock{2.5cm}{*}{*}
-\setmarginnotes{0em}{0cm}{0cm}
-\setlength{\footskip}{0cm}
-\setlength{\footnotesep}{0cm}
-\setlength{\headheight}{0pt}
-\setlength{\headsep}{0pt}
-\setlength{\trimtop}{0pt}
-\setlength{\trimedge}{0pt}
-\setlength{\uppermargin}{0pt}
-\checkandfixthelayout
-
-\definecolor{myframecolour}{HTML}{$title_bgcol$}
-
-\mdfdefinestyle{brentsmdfstyle}{%
-  backgroundcolor=myframecolour,
-  linecolor= $columnline_col$,
-  topline=false,
-  leftline=false,
-  rightline=false,
-  linewidth=2mm,
-  settings={\definecolor{linkcolor}{RGB}{255,255,255}}}
-
-%Footnote to white
-\usepackage{footmisc}
-\def\footnotelayout{\centering\color{white}}
-
-% see https://stackoverflow.com/a/47122900
-$if(highlighting-macros)$
-$highlighting-macros$
-$endif$
-
-\usepackage{$font_family$}
-\renewcommand*\familydefault{\sfdefault}
-\newpagecolor{$poster_bgcol$}
-%begin the document
-\begin{document}
-
-\begin{mdframed}[style=brentsmdfstyle]
-%sets footnote to be white hopefully
-\renewcommand\footnoterule{}
-\renewcommand{\thempfootnote}{\footnotesize\color{red}{\arabic{mpfootnote}}}
-
-% group which adds title author and other infor
-% Used instead of \maketitle for better spacing options
-\begingroup
-  \centering
-  \color{$title_textcol$}
-\vspace{0.5in}
-  \Huge{$title$} \\[0.3in]
-  \color{cyan} \Large{$author$} \\[0.2in]
-  \color{white} \large{$affiliation$} \par
-  \vspace{0.2in}
-
-% end title section -------------------
-  \endgroup
-\end{mdframed}
-
-% Brgin body of poster
-\begin{adjmulticols*}{$column_numbers$}{10mm}{10mm}
-\normalsize{
-\color{black}
-$body$
-\printbibliography
-}
-\end{adjmulticols*}
-%end the poster
-\end{document}
diff --git a/.Rproj.user/441ADA46/sources/s-1DCD7B32/lock_file b/.Rproj.user/441ADA46/sources/s-1DCD7B32/lock_file
deleted file mode 100644
index e69de29..0000000
--- a/.Rproj.user/441ADA46/sources/s-1DCD7B32/lock_file
+++ /dev/null
