diff --git a/.Rproj.user/441ADA46/sources/per/t/74A687A4-contents b/.Rproj.user/441ADA46/sources/per/t/74A687A4-contents
deleted file mode 100644
index 584788c..0000000
--- a/.Rproj.user/441ADA46/sources/per/t/74A687A4-contents
+++ /dev/null
@@ -1,90 +0,0 @@
----
-title: 'Identifying relationships among catchment land cover characteristics, active layer properties and lake hydroecology in Old Crow Flats, Yukon, Canada'
-author: "W. Brent Thorne^[1]; Kevin W. Turner^[2]"
-date: 'December 2018'
-bibliography: MyLibrary
-output: posterdown::posterdown_memoir
----
-
-```{r, include=FALSE}
-knitr::opts_chunk$set(echo = FALSE, results = 'asis', fig.height = 3, fig.width = 3, warning = FALSE, fig.align = 'center', message = FALSE, dev='cairo_pdf')
-```
-
-# Introduction
-
-Lorem ipsum dolor sit amet, [@holden_identifying_2012] 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. 
-
-# Study Site
-
-Here is a map made to show the study site using `ggplot2`, `ggspatial`, and `rgdal`. 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. 
-
-```{r, fig.width=3.5, out.width="80%", fig.cap='This is a map of Canada, projected using the NAD 83 UTM Zone 7 Datum.'}
-library(ggplot2)
-library(ggspatial)
-library(ggthemes)
-library(sf)
-
-canada <- read_sf("data/Canada.geojson")
-
-
-ggplot() +
-  ggspatial::layer_spatial(canada, fill = "grey") +
-  coord_sf() +
-  theme_solarized() +
-  # theme(plot.margin = unit(c(0,0,0,0), "in")) +
-  NULL
-
-```
-
-
-# Objectives
-
-1. Here is my first obective.
-2. Here is my second objective.
-3. Finally, my third objectives.
-
-# Methods
-
-Lacinia quis vel eros donec ac odio tempor. Vel quam elementum pulvinar etiam non quam lacus suspendisse. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Neque ornare aenean euismod elementum. Vel fringilla est ullamcorper eget nulla. Sollicitudin aliquam ultrices sagittis orci a. Maecenas accumsan lacus vel facilisis volutpat est velit. Sed sed risus pretium quam vulputate dignissim. Convallis posuere morbi leo urna molestie. Cursus vitae congue mauris rhoncus. Vitae ultricies leo integer malesuada nunc. Est lorem ipsum dolor sit amet consectetur adipiscing. Enim sit amet venenatis urna cursus eget nunc.
-
-Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Vitae congue eu consequat ac felis donec et. Morbi tincidunt ornare massa eget. Iaculis nunc sed augue lacus viverra vitae congue eu. Donec massa sapien faucibus et molestie. Neque egestas congue quisque egestas diam. Lectus quam id leo in vitae turpis massa. Sodales ut etiam sit amet. Posuere lorem ipsum dolor sit amet consectetur. Ullamcorper dignissim cras tincidunt lobortis feugiat vivamus. Amet commodo nulla facilisi nullam vehicula ipsum. Magna ac placerat vestibulum lectus mauris ultrices eros. Sodales ut eu sem integer vitae justo eget magna. Malesuada bibendum arcu vitae elementum.
-
-# Results
-
-Sagittis purus sit amet volutpat consequat mauris. Lobortis mattis aliquam faucibus purus. Libero enim sed faucibus turpis in eu. Massa placerat duis ultricies lacus sed turpis tincidunt id. Arcu dictum varius duis at consectetur lorem done.
-
-```{r, out.width='60%', fig.width=4, fig.height=3, fig.cap='This is a typical ggplot2 example using the iris dataset provided in R.'}
-library(ggplot2)
-library(ggthemes)
-
-ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width, colour = Species)) +
-  geom_point() +
-  theme_tufte() +
-  labs(x = "Sepal Length", y = "Sepeal Width") +
-  NULL
-
-```
-
-Sagittis purus sit amet volutpat consequat mauris. Lobortis mattis aliquam faucibus purus. Libero enim sed faucibus turpis in eu. Massa placerat duis ultricies lacus sed turpis tincidunt id. Arcu dictum varius duis at consectetur lorem done.
-
-```{r, out.width='80%', fig.align='center', fig.cap='This is a messy graphic right now but I will clean it up in the future.'}
-
-knitr::include_graphics('Figures/figure2.pdf')
-
-```
-
-Pellentesque habitant morbi tristique senectus et netus. Magnis dis parturient montes nascetur ridiculus mus mauris vitae ultricies. Nibh nisl condimentum id venenatis. Lorem ipsum dolor sit amet consectetur adipiscing elit duis. Eget aliquet nibh praesent tristique magna sit amet purus. Orci phasellus egestas tellus rutrum. Mauris cursus mattis molestie a. Amet cursus sit amet dictum sit. Tellus id interdum velit laoreet. Tortor at risus viverra adipiscing. Ullamcorper malesuada proin libero nunc. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus. Eget dolor morbi non arcu risus quis. Pulvinar pellentesque habitant morbi tristique senectus.
-
-```{r, out.width='65%', fig.align='center', fig.height=5, fig.cap='Another figure showing how base R plots might look on this poster!'}
-par(mfrow=c(2,1), mar=c(0.2,0.2,0.2,0.2),mai=c(0.2,0.2,0.2,0.2))
-plot(rnorm(20))
-plot(cars)
-
-```
-
-More text now here Pellentesque habitant morbi tristique senectus et netus. Magnis dis parturient montes nascetur ridiculus mus mauris vitae ultricies. Nibh nisl condimentum id venenatis. Lorem ipsum dolor sit amet consectetur adipiscing elit duis. Eget aliquet nibh praesent tristique magna sit amet purus. Orci phasellus egestas tellus rutrum. Mauris cursus mattis molestie a. Amet cursus sit amet dictum sit. Tellus id interdum velit laoreet. Tortor at risus viverra adipiscing. Ullamcorper malesuada proin libero nunc. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus. Eget dolor morbi non arcu risus quis. Pulvinar pellentesque habitant morbi tristique senectus.
-
-# Next Steps
-
-Pellentesque habitant morbi tristique senectus et netus. Magnis dis parturient montes nascetur ridiculus mus mauris vitae ultricies. Nibh nisl condimentum id venenatis. Lorem ipsum dolor sit amet consectetur adipiscing elit duis. Eget aliquet nibh praesent tristique magna sit amet purus. Orci phasellus egestas tellus rutrum. Mauris cursus mattis molestie a. Amet cursus sit amet dictum sit. Tellus id interdum velit laoreet. Tortor at risus viverra adipiscing. Ullamcorper malesuada proin libero nunc. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus. Eget dolor morbi non arcu risus quis. Pulvinar pellentesque habitant morbi tristique senectus.
-
diff --git a/.Rproj.user/441ADA46/sources/per/t/90EA5F68-contents b/.Rproj.user/441ADA46/sources/per/t/90EA5F68-contents
deleted file mode 100644
index 53d2e06..0000000
--- a/.Rproj.user/441ADA46/sources/per/t/90EA5F68-contents
+++ /dev/null
@@ -1,117 +0,0 @@
-%brent's poster layout :)
-
-\documentclass[article,30pt,extrafontsizes,showtrims]{memoir}
-
-%utf-8 seems to be important
-\usepackage[utf8]{inputenc}
-\usepackage[T1]{fontenc}
-\usepackage{palatino}
-\usepackage{multicol}
-\usepackage{graphicx}
-\usepackage{blindtext,xcolor}
-\usepackage{framed}
-\usepackage{color}
-
-%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.1in}
-\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}}
-
-%-----------------------------------------------------
-
-%define poster size
-\usepackage[paperwidth=45in,paperheight=38in, text={7in,10in},centering]{geometry}
-
-\geometry{
-left=5mm,
-right=5mm,
-top=0mm,
-bottom=5mm,
-headheight=0mm,
-}
-
-\thispagestyle{empty}
-
-\usepackage[style=numeric,backend=biber]{biblatex}
-\renewcommand*{\bibfont}{\tiny}
-
-\bibliography{$bibliography$}
-
-\counterwithout{section}{chapter}
-\makechapterstyle{mydefault}{
-\addtocounter{secnumdepth}{2}
-\setsecheadstyle{\Large\color{red}\textbf}
-\setsubsecheadstyle{\itshape}
-\setsubsubsecheadstyle{\itshape}
-}
-
-\setlength\parindent{10mm}
-\setlength\hangindent{10mm}
-
-\chapterstyle{mydefault}
-
-\defbibheading{bibliography}[\bibname]{%
-\section*{#1}%
-\markboth{#1}{#1}}
-
-
-\AtBeginDocument{%
-  \renewcommand{\bibname}{References}
-}
-
-
-%define column spacing
-\setlength\columnsep{1.2in}
-
-%spacing after section head title
-\setaftersecskip{0.3in}
-\setbeforesecskip{0.5in}
-\setlength\textfloatsep{0.1in}
-\setlength\floatsep{0.1in}
-\setlength\intextsep{0.1in}
-\setlength{\parskip}{0pt}
-
-%for shading the top
-\definecolor{shadecolor}{gray}{0.9}
-
-
-%begin the document
-\begin{document}
-
-
-% group which adds title author and other infor
-% Used instead of \maketitle for better spacing options
-\begin{shaded}
-\begingroup
-  \centering
-  \huge\textbf{$title$}\\[0.3in]
-  \Large $author$\par
-\endgroup
-\vspace{1.2in}
-% end title section -------------------
-  \end{shaded}
-
-% Brgin body of poster
-\begin{multicols*}{3}
-\small{\noindent
-$body$
-\printbibliography
-}
-\end{multicols*}
-
-%end the poster
-\end{document}
diff --git a/.Rproj.user/441ADA46/sources/prop/4B35A6C8 b/.Rproj.user/441ADA46/sources/prop/4B35A6C8
index 8d0e356..fb9c2a6 100644
--- a/.Rproj.user/441ADA46/sources/prop/4B35A6C8
+++ b/.Rproj.user/441ADA46/sources/prop/4B35A6C8
@@ -1,4 +1,4 @@
 {
-    "cursorPosition" : "14,93",
-    "scrollLine" : "0"
+    "cursorPosition" : "82,183",
+    "scrollLine" : "69"
 }
\ No newline at end of file
diff --git a/.Rproj.user/441ADA46/sources/prop/93AF88EC b/.Rproj.user/441ADA46/sources/prop/93AF88EC
index 764e38e..9a0fe6b 100644
--- a/.Rproj.user/441ADA46/sources/prop/93AF88EC
+++ b/.Rproj.user/441ADA46/sources/prop/93AF88EC
@@ -1,4 +1,4 @@
 {
-    "cursorPosition" : "9,21",
-    "scrollLine" : "0"
+    "cursorPosition" : "92,19",
+    "scrollLine" : "81"
 }
\ No newline at end of file
diff --git a/.Rproj.user/441ADA46/sources/prop/C0564A5B b/.Rproj.user/441ADA46/sources/prop/C0564A5B
new file mode 100644
index 0000000..5110760
--- /dev/null
+++ b/.Rproj.user/441ADA46/sources/prop/C0564A5B
@@ -0,0 +1,4 @@
+{
+    "cursorPosition" : "0,37",
+    "scrollLine" : "0"
+}
\ No newline at end of file
diff --git a/.Rproj.user/441ADA46/sources/prop/INDEX b/.Rproj.user/441ADA46/sources/prop/INDEX
index 7f6e119..8ac9b8e 100644
--- a/.Rproj.user/441ADA46/sources/prop/INDEX
+++ b/.Rproj.user/441ADA46/sources/prop/INDEX
@@ -5,5 +5,6 @@
 ~%2FDocuments%2FGitHub%2Fposterdown%2Finst%2Frmarkdown%2Ftemplates%2Fposterdown_generic%2Fskeleton%2Fskeleton.tex="98408570"
 ~%2FDocuments%2FGitHub%2Fposterdown%2Finst%2Frmarkdown%2Ftemplates%2Fposterdown_memoir%2Fresources%2Ftemplate.tex="93AF88EC"
 ~%2FDocuments%2FGitHub%2Fposterdown%2Finst%2Frmarkdown%2Ftemplates%2Fposterdown_memoir%2Fskeleton%2Fskeleton.Rmd="4B35A6C8"
+~%2FDocuments%2FGitHub%2Fposterdown%2Finst%2Frmarkdown%2Ftemplates%2Fposterdown_memoir%2Ftemplate.yaml="C0564A5B"
 ~%2FTemplates%2FUntitled%2FUntitled.Rmd="5A12846A"
 ~%2FUntitled%2FUntitled.Rmd="D3D80052"
diff --git a/.Rproj.user/441ADA46/sources/per/t/74A687A4 b/.Rproj.user/441ADA46/sources/s-3FD45047/665BBD9E
similarity index 61%
rename from .Rproj.user/441ADA46/sources/per/t/74A687A4
rename to .Rproj.user/441ADA46/sources/s-3FD45047/665BBD9E
index 5cf370e..d768ea7 100644
--- a/.Rproj.user/441ADA46/sources/per/t/74A687A4
+++ b/.Rproj.user/441ADA46/sources/s-3FD45047/665BBD9E
@@ -1,21 +1,21 @@
 {
     "collab_server" : "",
     "contents" : "",
-    "created" : 1543935058532.000,
+    "created" : 1544064943311.000,
     "dirty" : false,
     "encoding" : "UTF-8",
     "folds" : "",
-    "hash" : "1960045861",
-    "id" : "74A687A4",
-    "lastKnownWriteTime" : 1543982875,
-    "last_content_update" : 1543982875205,
+    "hash" : "0",
+    "id" : "665BBD9E",
+    "lastKnownWriteTime" : 1544067104,
+    "last_content_update" : 1544067104884,
     "path" : "~/Documents/GitHub/posterdown/inst/rmarkdown/templates/posterdown_memoir/skeleton/skeleton.Rmd",
     "project_path" : "inst/rmarkdown/templates/posterdown_memoir/skeleton/skeleton.Rmd",
     "properties" : {
-        "cursorPosition" : "14,93",
-        "scrollLine" : "0"
+        "cursorPosition" : "82,183",
+        "scrollLine" : "69"
     },
-    "relative_order" : 2,
+    "relative_order" : 1,
     "source_on_save" : false,
     "source_window" : "",
     "type" : "r_markdown"
diff --git a/.Rproj.user/441ADA46/sources/s-3FD45047/665BBD9E-contents b/.Rproj.user/441ADA46/sources/s-3FD45047/665BBD9E-contents
new file mode 100644
index 0000000..07115ef
--- /dev/null
+++ b/.Rproj.user/441ADA46/sources/s-3FD45047/665BBD9E-contents
@@ -0,0 +1,126 @@
+---
+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"
+bibliography: MyLibrary
+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 frim `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 `posterndown` 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
+
+```{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 = T) %>% 
+  kable_styling(latex_options = "striped")
+
+```
+
+\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/s-3FD45047/9A4DA466-contents b/.Rproj.user/441ADA46/sources/s-3FD45047/9A4DA466-contents
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.Rproj.user/441ADA46/sources/s-3FD45047/9A4DA466-contents
diff --git a/.Rproj.user/441ADA46/sources/per/t/90EA5F68 b/.Rproj.user/441ADA46/sources/s-3FD45047/A4A64D72
similarity index 61%
rename from .Rproj.user/441ADA46/sources/per/t/90EA5F68
rename to .Rproj.user/441ADA46/sources/s-3FD45047/A4A64D72
index 8516a2d..7533c5a 100644
--- a/.Rproj.user/441ADA46/sources/per/t/90EA5F68
+++ b/.Rproj.user/441ADA46/sources/s-3FD45047/A4A64D72
@@ -1,21 +1,21 @@
 {
     "collab_server" : "",
     "contents" : "",
-    "created" : 1543870199613.000,
+    "created" : 1544064961786.000,
     "dirty" : false,
     "encoding" : "UTF-8",
     "folds" : "",
-    "hash" : "3484790883",
-    "id" : "90EA5F68",
-    "lastKnownWriteTime" : 1543989000,
-    "last_content_update" : 1543989000434,
+    "hash" : "3236405057",
+    "id" : "A4A64D72",
+    "lastKnownWriteTime" : 1544065891,
+    "last_content_update" : 1544065891885,
     "path" : "~/Documents/GitHub/posterdown/inst/rmarkdown/templates/posterdown_memoir/resources/template.tex",
     "project_path" : "inst/rmarkdown/templates/posterdown_memoir/resources/template.tex",
     "properties" : {
-        "cursorPosition" : "9,21",
-        "scrollLine" : "0"
+        "cursorPosition" : "92,19",
+        "scrollLine" : "81"
     },
-    "relative_order" : 1,
+    "relative_order" : 2,
     "source_on_save" : false,
     "source_window" : "",
     "type" : "tex"
diff --git a/.Rproj.user/441ADA46/sources/s-3FD45047/A4A64D72-contents b/.Rproj.user/441ADA46/sources/s-3FD45047/A4A64D72-contents
new file mode 100644
index 0000000..dc5986b
--- /dev/null
+++ b/.Rproj.user/441ADA46/sources/s-3FD45047/A4A64D72-contents
@@ -0,0 +1,147 @@
+%brent's poster layout :)
+
+\documentclass[article,30pt,extrafontsizes]{memoir}
+
+%utf-8 seems to be important
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{palatino}
+\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}
+
+
+%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}
+
+\usepackage[style=numeric,backend=biber]{biblatex}
+\renewcommand*{\bibfont}{\tiny}
+
+\bibliography{$bibliography$}
+\author{$author$}
+\title{$title$}
+\counterwithout{section}{chapter}
+\makechapterstyle{mydefault}{
+\addtocounter{secnumdepth}{2}
+\setsecheadstyle{\Large\color{red}\textbf}
+\setsubsecheadstyle{\itshape}
+\setsubsubsecheadstyle{\itshape}
+}
+
+\chapterstyle{mydefault}
+
+\defbibheading{bibliography}[\bibname]{%
+\section*{#1}%
+\markboth{#1}{#1}}
+
+
+\AtBeginDocument{%
+  \renewcommand{\bibname}{References}
+}
+
+
+%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{38in}{45in}
+\settrimmedsize{\stockheight}{\stockwidth}{*}
+\settypeblocksize{38in}{45in}{*}
+\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}{00004d}
+
+% see https://stackoverflow.com/a/47122900
+$if(highlighting-macros)$
+$highlighting-macros$
+$endif$
+
+%begin the document
+\begin{document}
+
+\begin{mdframed}[backgroundcolor=myframecolour,linecolor=Red,topline=false,leftline=false,rightline=false,linewidth=2mm]
+
+% group which adds title author and other infor
+% Used instead of \maketitle for better spacing options
+\begingroup
+  \centering
+  \color{White}
+\vspace{1in}
+  \Huge\textbf{$title$}\\[0.3in]
+  \Large $author$ \par
+\vspace{1.2in}
+% end title section -------------------
+  \endgroup
+\end{mdframed}
+
+% Brgin body of poster
+\color{black}
+\begin{adjmulticols*}{3}{10mm}{10mm}
+\normalsize{
+$body$
+\printbibliography
+}
+\end{adjmulticols*}
+%end the poster
+\end{document}
diff --git a/.Rproj.user/441ADA46/sources/s-3FD45047/C71F822A-contents b/.Rproj.user/441ADA46/sources/s-3FD45047/C71F822A-contents
new file mode 100644
index 0000000..c2ebc68
--- /dev/null
+++ b/.Rproj.user/441ADA46/sources/s-3FD45047/C71F822A-contents
@@ -0,0 +1,4 @@
+name: Posterdown Memoir L38 X W45 PDF
+description: >
+ Template for creating R Markdown based PDF via Latex and Memoir
+create_dir: true
diff --git a/.Rproj.user/441ADA46/sources/s-3FD45047/lock_file b/.Rproj.user/441ADA46/sources/s-3FD45047/lock_file
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.Rproj.user/441ADA46/sources/s-3FD45047/lock_file
