diff --git a/.Rproj.user/441ADA46/sources/per/t/17EB0B2C b/.Rproj.user/441ADA46/sources/per/t/17EB0B2C
new file mode 100644
index 0000000..78297c3
--- /dev/null
+++ b/.Rproj.user/441ADA46/sources/per/t/17EB0B2C
@@ -0,0 +1,22 @@
+{
+    "collab_server" : "",
+    "contents" : "",
+    "created" : 1546655069603.000,
+    "dirty" : false,
+    "encoding" : "UTF-8",
+    "folds" : "",
+    "hash" : "1250255014",
+    "id" : "17EB0B2C",
+    "lastKnownWriteTime" : 1546662558,
+    "last_content_update" : 1546662558199,
+    "path" : "~/Documents/GitHub/posterdown/inst/rmarkdown/templates/posterdown_memoir/resources/template.tex",
+    "project_path" : "inst/rmarkdown/templates/posterdown_memoir/resources/template.tex",
+    "properties" : {
+        "cursorPosition" : "177,11",
+        "scrollLine" : "161"
+    },
+    "relative_order" : 1,
+    "source_on_save" : false,
+    "source_window" : "",
+    "type" : "tex"
+}
\ No newline at end of file
diff --git a/.Rproj.user/441ADA46/sources/per/t/17EB0B2C-contents b/.Rproj.user/441ADA46/sources/per/t/17EB0B2C-contents
new file mode 100644
index 0000000..635b13c
--- /dev/null
+++ b/.Rproj.user/441ADA46/sources/per/t/17EB0B2C-contents
@@ -0,0 +1,185 @@
+%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{tabu}
+\usepackage{threeparttable}
+\usepackage{threeparttablex}
+\usepackage[normalem]{ulem}
+\usepackage{makecell}
+
+\usepackage{hyperref}
+\hypersetup{
+    colorlinks=true,
+    linkcolor=blue,
+    citecolor=red,
+    filecolor=magenta,
+    urlcolor=cyan,
+}
+
+% Maybe Define a department param in the YAML??????
+\def\department#1{\gdef \@department{#1}}
+
+$if(department)$
+\department{$department$}
+$endif$
+
+
+
+
+%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{red}}
+\setsubsubsecheadstyle{\small\color{red}\textbf}% Set \section style
+\setsecheadstyle{\small\color{red}}
+\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=Red,
+  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{palatino}
+\renewcommand*\familydefault{\sfdefault}
+
+%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{White}
+\vspace{0.5in}
+  \Huge{$title$} \\[0.3in]
+  \color{cyan} \Large{$author$} \\[0.2in]
+  \color{white} \large{$department$} \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/per/t/8D52C53E b/.Rproj.user/441ADA46/sources/per/t/8D52C53E
new file mode 100644
index 0000000..43291b3
--- /dev/null
+++ b/.Rproj.user/441ADA46/sources/per/t/8D52C53E
@@ -0,0 +1,22 @@
+{
+    "collab_server" : "",
+    "contents" : "",
+    "created" : 1546655126360.000,
+    "dirty" : false,
+    "encoding" : "UTF-8",
+    "folds" : "25|21|27|0|\n37|137|53|0|\n",
+    "hash" : "2863314759",
+    "id" : "8D52C53E",
+    "lastKnownWriteTime" : 1546662714,
+    "last_content_update" : 1546662714805,
+    "path" : "~/Documents/GitHub/posterdown/inst/rmarkdown/templates/posterdown_memoir/skeleton/skeleton.Rmd",
+    "project_path" : "inst/rmarkdown/templates/posterdown_memoir/skeleton/skeleton.Rmd",
+    "properties" : {
+        "cursorPosition" : "22,37",
+        "scrollLine" : "9"
+    },
+    "relative_order" : 2,
+    "source_on_save" : false,
+    "source_window" : "",
+    "type" : "r_markdown"
+}
\ No newline at end of file
diff --git a/.Rproj.user/441ADA46/sources/per/t/8D52C53E-contents b/.Rproj.user/441ADA46/sources/per/t/8D52C53E-contents
new file mode 100644
index 0000000..8477a82
--- /dev/null
+++ b/.Rproj.user/441ADA46/sources/per/t/8D52C53E-contents
@@ -0,0 +1,146 @@
+---
+#-YAML FRONTMATTER-#
+
+#ESSENTIALS
+title: 'Using \color{Red} `posterdown` \color{White} to generate reproducible conference posters via RMarkdown > Knitr > Markdown > Pandoc > Latex > PDF workflow as well as long titles...'
+author: "Brent Thorne^1^ Will Jones^2^"
+department: "^1^Department of Earth Science, Brock University; ^2^Deparment of Another Institution, Institution University"
+
+#COLOURS
+font_size: "30pt" # choose from the folowing options)
+title_bgcol: "000000" #Hex colour for background of poster title section (default is blue)
+poster_bgcol: "000000" #colour of the poster main background
+header_textcol: "red" #colour of the poster header titles
+
+
+#FORMATTING
+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_memoir
+---
+
+```{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')
+```
+
+# 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 such as `posterwidth: 45in`.
+- 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.
+
+\small
diff --git a/.Rproj.user/441ADA46/sources/prop/4B35A6C8 b/.Rproj.user/441ADA46/sources/prop/4B35A6C8
index 60df37c..b818b7b 100644
--- a/.Rproj.user/441ADA46/sources/prop/4B35A6C8
+++ b/.Rproj.user/441ADA46/sources/prop/4B35A6C8
@@ -1,4 +1,4 @@
 {
-    "cursorPosition" : "10,0",
-    "scrollLine" : "0"
+    "cursorPosition" : "22,37",
+    "scrollLine" : "9"
 }
\ No newline at end of file
diff --git a/.Rproj.user/441ADA46/sources/prop/93AF88EC b/.Rproj.user/441ADA46/sources/prop/93AF88EC
index cf534b0..57ecc62 100644
--- a/.Rproj.user/441ADA46/sources/prop/93AF88EC
+++ b/.Rproj.user/441ADA46/sources/prop/93AF88EC
@@ -1,4 +1,4 @@
 {
-    "cursorPosition" : "92,19",
-    "scrollLine" : "0"
+    "cursorPosition" : "177,11",
+    "scrollLine" : "161"
 }
\ No newline at end of file
