diff --git a/.Rproj.user/441ADA46/sources/per/t/2F24B1BB b/.Rproj.user/441ADA46/sources/per/t/2F24B1BB
new file mode 100644
index 0000000..6b4bd79
--- /dev/null
+++ b/.Rproj.user/441ADA46/sources/per/t/2F24B1BB
@@ -0,0 +1,22 @@
+{
+    "collab_server" : "",
+    "contents" : "",
+    "created" : 1547919267165.000,
+    "dirty" : false,
+    "encoding" : "UTF-8",
+    "folds" : "",
+    "hash" : "2227939390",
+    "id" : "2F24B1BB",
+    "lastKnownWriteTime" : 1547934159,
+    "last_content_update" : 1547934159,
+    "path" : "~/Documents/GitHub/posterdown/DESCRIPTION",
+    "project_path" : "DESCRIPTION",
+    "properties" : {
+        "cursorPosition" : "17,20",
+        "scrollLine" : "0"
+    },
+    "relative_order" : 2,
+    "source_on_save" : false,
+    "source_window" : "",
+    "type" : "dcf"
+}
\ No newline at end of file
diff --git a/.Rproj.user/441ADA46/sources/per/t/2F24B1BB-contents b/.Rproj.user/441ADA46/sources/per/t/2F24B1BB-contents
new file mode 100644
index 0000000..5bf0181
--- /dev/null
+++ b/.Rproj.user/441ADA46/sources/per/t/2F24B1BB-contents
@@ -0,0 +1,22 @@
+Package: posterdown
+Title: Generates PDF conference posters using R Markdown.
+Version: 0.1.1
+Author: Brent Thorne
+Description: Posterdown expands on RMarkdown to generate PDF conference posters.
+Authors@R: c(
+    person("Brent", "Thorne",
+           email = "brent.thorne18@gmail.com", 
+           role = c("aut", "cre"), 
+           comment = c(ORCID = "0000-0002-1099-3857")
+    ),
+    person("Peter", "Higgins", role = "ctb")
+  )
+Maintainer: Brent Thorne <brent.thorne18@gmail.com>
+License: MIT + file LICENSE
+Encoding: UTF-8
+LazyData: true
+URL: https://github.com/brentthorne/posterdown
+BugReports: https://github.com/brentthorne/posterdown/issues
+Imports: rmarkdown, knitr, yaml, tinytex, ggplot2, rticles, kableExtra, Cairo
+SystemRequirements: GNU make
+RoxygenNote: 6.1.1
diff --git a/.Rproj.user/441ADA46/sources/per/t/815ADF03 b/.Rproj.user/441ADA46/sources/per/t/815ADF03
new file mode 100644
index 0000000..ba254fc
--- /dev/null
+++ b/.Rproj.user/441ADA46/sources/per/t/815ADF03
@@ -0,0 +1,22 @@
+{
+    "collab_server" : "",
+    "contents" : "",
+    "created" : 1547924094518.000,
+    "dirty" : false,
+    "encoding" : "UTF-8",
+    "folds" : "",
+    "hash" : "83736655",
+    "id" : "815ADF03",
+    "lastKnownWriteTime" : 1547924098,
+    "last_content_update" : 1547924098455,
+    "path" : "~/Documents/GitHub/posterdown/README.md",
+    "project_path" : "README.md",
+    "properties" : {
+        "cursorPosition" : "134,0",
+        "scrollLine" : "0"
+    },
+    "relative_order" : 2,
+    "source_on_save" : false,
+    "source_window" : "",
+    "type" : "markdown"
+}
\ No newline at end of file
diff --git a/.Rproj.user/441ADA46/sources/per/t/815ADF03-contents b/.Rproj.user/441ADA46/sources/per/t/815ADF03-contents
new file mode 100644
index 0000000..dcf2122
--- /dev/null
+++ b/.Rproj.user/441ADA46/sources/per/t/815ADF03-contents
@@ -0,0 +1,134 @@
+# posterdown
+
+<img src="posterdown_hexlogo1.png" alt="poster logo" align="right" width = "25%" height="25%"/>
+
+As a graduate student, I found that it is almost a rite of passage to take early research and analysis and generate a conference poster allowing for critical feedback, as well as meeting the people in your field. I have also noticed that many of my fellow graduate students use R and are also getting their feet wet with RMarkdown :blush:; however, we always had to go back to using MS Powerpoint or Keynote or Adobe Illustrator for generating conference posters :unamused:. Posterdown was created as a proof-of-concept (to myself) that it is possible to make a beautiful poster using open source reproducible code.
+
+From this:
+
+<img src="code_pic.png" width="50%" height="50%">
+
+To this:
+
+<img src="example_poster.png" width="50%" height="50%">
+
+
+Please feel free to give me feedback or requests for changes in the [issues](https://github.com/brentthorne/posterdown/issues) page. I am currently finishing up my Master's degree so I will have limited time to work on updating this package in the next few months but nevertheless I will do what I can! :smile: 
+
+## Installation
+
+You can install and use **posterdown** from github using the `devtools` package as seen below.
+
+```r
+
+devtools::install_github("brentthorne/posterdown")
+
+```
+
+### Instructions if you have never used RMarkdown
+
+1. Install `devtools` package
+
+    ```r
+    install.packages("devtools")
+    ```
+
+2. Install `posterdown` from github repo
+
+    ```r
+    devtools::install_github("brentthorne/posterdown")
+    ```
+
+3. Install `tinytex`Latex libraries:
+
+    ```r
+    tinytex::install_tinytex()
+    ```
+
+    _**NOTE** This will take some time to load the LaTex Packages but is the best option (in my opinion) for keeping your Latex library as small as possible. After the first download of these libraries you will not need to do this again. To confirm that Tinytex is properly installed use: `tinytex:::is_tinytex()` and you should get a value of `TRUE` in the console._
+    
+    _**NOTE** If you have conflicting versions of Latex (i.e. tinytex and MacTex), you could have problems rendering your poster. You may need to uninstall all versions, then start over by installing posterdown and tinytex from scratch._ 
+
+## Overview
+
+The **posterdown** package provides a familiar workflow for those used to working in [RMarkdown](https://rmarkdown.rstudio.com/). This package is currently focused on a single template called **posterdown_pdf** which is by default a 38in (H) x 45in (W) poster template but does allow for custom sizing, section headers, and colour options.
+
+## Using posterdown from RStudio
+
+To use **posterdown** from RStudio:
+
+1. Install the latest [RStudio](http://www.rstudio.com/products/rstudio/download/).
+
+2. Install the **posterdown** package: 
+
+    ```r    
+    devtools::install_github("brentthorne/posterdown")
+    ```
+    
+3. Use the **New R Markdown** dialog to create a conference poster from the templates
+
+    ![New R Markdown](posterdown_picture.png)
+
+    _**NOTE** If you do not see the **posterdown** template in this dialogue box try to restart the R session or close and re-open RStudio._
+
+## Customization
+
+Posterdown uses Latex to generate the PDF poster but more specifically it uses the [Memoir Latex](http://texdoc.net/texmf-dist/doc/latex/memoir/memman.pdf) class. Memoir was chosen for its flexibility in page sizing as well as thorough documentation. I am fairly new to the world of Latex, and found this class to have a reasonable amount of customization available, at least for my skill level. If there are any users who think there may be better options for down the road I am more than willing to listen! 
+
+### YAML Options
+
+YAML header options have been created to provide more freedom in design (i.e. colours, number of columns, and sizing) to fit a wide variety of requirements. Here are the default YAML options found in the `.Rmd` file:
+
+|     Option    | Description |
+|---------------|-------------|
+| `title` | Poster title, acts as you would expect from RMarkdown. You can add line breaks in your title with \\break. |
+| `author` | List of authors which (as of now) only has true support for a single author, however I have provided a hacky way to have many authors until I can find the time to figure out how to implement something like the [rticles](https://github.com/rstudio/rticles/blob/master/inst/rmarkdown/templates/mdpi_article/skeleton/skeleton.Rmd) packages does|
+| `affiliation` | Author affiliations, which just as the `author` section is currently a hacky version of what I would ultimately like to produce. |
+| `font_size` | Represents the value for `\normaltextsize` in latex. All other font sizes are adjusted from this baseline. For example, the title in the skeleton document is given the Latex command `\Huge`, meaning that the title text will be "huge" relative to the `font_size` chosen. See [Here](https://www.overleaf.com/learn/latex/Font_sizes,_families,_and_styles) for a useful resource for a better understanding of the Latex text sizing options.|
+| `font_family` | Selects the font family to be used on the poster. In the future I will try to implement multiple font families for various components of the poster (such as different fonts for the title versus the main body text).  For now, only standard Latex fonts are available, see [here](https://www.overleaf.com/learn/latex/Font_typefaces) for a list of possible options.|
+| `title_bgcol` | The background colour for the title section of the poster (currently using hex values to define this colour) |
+| `poster_bgcol`| Background colour of the poster's main body section. |
+| `title_textcol` | Colour of the main title text. |
+| `header_textcol` | Colour of the Section Header Text. |
+| `cite_col` | Colour of the citation link elements when using `biblatex`. |
+| `url_col` | Colour of URL links specifically |
+| `link_col` | Colour of in-document links (example would be referencing a Figure or a Table) |
+| `columnline_col` | Colour of the line which divides each column in the poster |
+| `poster_height` | Height of the final poster output. Units can be: "in", "mm", "cm" |
+| `poster_width` | Width of the final poster output. Units can be: "in", "mm", "cm" |
+| `column_numbers` | Number of columns you wish for the poster to have in the main section of the poster. |
+| `bibliography` | Name of the `.bib`. file which you are using to source material. As of right now only `biblatex` is working but I intend to add support of `natbib` which is my preference.
+| `output` | For generating `posterdown_pdf`, in the future other poster designs or templates may be made for this package and thus this option in the YAML will be more flexible. For now this is the only option. |
+
+### Markdown Customization
+
+As you add content to your RMarkdown file, you will notice that the output pdf will fill in columns from left to right, and from top to bottom within columns. If you have more content for your poster than space is available on the default poster, it will spill onto a second page. If this occurs, you can try adding more columns and decreasing the font size (both in the YAML header) to make it work. Or, of course, edit the content to make it shorter. :smile:
+
+## Using posterdown outside of RStudio
+
+1. Install [pandoc](http://pandoc.org) using the [instructions for your platform](https://github.com/rstudio/rmarkdown/blob/master/PANDOC.md).
+
+2. Install the **rmarkdown** and **posterdown** packages:
+
+    ```r
+    devtools::install_github("brentthorne/posterdown")
+    ```
+
+3. Use the `rmarkdown::draft()` function to create articles:
+
+    ```r
+    rmarkdown::draft("MyPoster.Rmd", template = "posterdown_pdf", package = "posterdown")
+    ```
+    
+## To Do List (When Not Writing my Master's Thesis)
+
+- [x] ~~Support for changing the size of the poster~~
+- [ ] Support for Natbib
+- [ ] Support for nbib from PubMed
+- [ ] Support for logo placement in the title bar section of poster
+- [ ] Gradient colour options
+- [ ] True YAML multi-author/ multi-affiliation support
+- [ ] Toggle citation section on/off as per user's choice
+- [ ] Make colour options standardized (probably hex colours if possible)
+- [ ] Allow users to choose colour options from a palette??
+- [ ] Fill/style Section headings if user wishes
diff --git a/.Rproj.user/441ADA46/sources/per/t/CE1C4972 b/.Rproj.user/441ADA46/sources/per/t/CE1C4972
new file mode 100644
index 0000000..4254c7c
--- /dev/null
+++ b/.Rproj.user/441ADA46/sources/per/t/CE1C4972
@@ -0,0 +1,22 @@
+{
+    "collab_server" : "",
+    "contents" : "",
+    "created" : 1547934272425.000,
+    "dirty" : false,
+    "encoding" : "UTF-8",
+    "folds" : "",
+    "hash" : "1644768190",
+    "id" : "CE1C4972",
+    "lastKnownWriteTime" : 1547934305,
+    "last_content_update" : 1547934305964,
+    "path" : "~/Documents/GitHub/posterdown/inst/rmarkdown/templates/posterdown_pdf/skeleton/skeleton.Rmd",
+    "project_path" : "inst/rmarkdown/templates/posterdown_pdf/skeleton/skeleton.Rmd",
+    "properties" : {
+        "cursorPosition" : "99,77",
+        "scrollLine" : "96"
+    },
+    "relative_order" : 3,
+    "source_on_save" : false,
+    "source_window" : "",
+    "type" : "r_markdown"
+}
\ No newline at end of file
diff --git a/.Rproj.user/441ADA46/sources/per/t/CE1C4972-contents b/.Rproj.user/441ADA46/sources/per/t/CE1C4972-contents
new file mode 100644
index 0000000..b035b15
--- /dev/null
+++ b/.Rproj.user/441ADA46/sources/per/t/CE1C4972-contents
@@ -0,0 +1,168 @@
+---
+#----ESSENTIALS----#
+title: '\fontfamily{phv}\selectfont 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: "palatino" # choose from typical latex fonts (example: "palatino")
+
+#----COLOURS----#
+
+#Background/ Line Colours
+title_bgcol: "0b4545"  #Hex colour for background of poster title section (default is blue)
+poster_bgcol: "ffffff" #colour of the poster main background
+cite_col: "CC0000" #colour of ciation elements
+url_col: "008080" #colour of url links
+link_col: "008080" #colour of other links within the poster
+columnline_col: "0b4545" #colour 
+header_bgcol: "008080"
+
+#Text Colours
+title_textcol: "ffffff" #colour of title text
+author_textcol: "008080" # Colour of author text
+affiliation_textcol: "FFFFFF" # Colour of affiliation text
+body_textcol: "000000" # Colour of main text in the body of poster
+header_textcol: "CC0000" # Colour of the poster header titles
+footnote_textcol: "FFFFFF" # Colour of footnote text if used
+
+#----POSTER SIZE & COLUMN 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
+column_margins: "10mm" # Margin spacing for columns
+
+#----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.
+
+```{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 = c("striped","HOLD_position"),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 as well as remove the "References" section if you choose not to have one for some reason :) -->
+\small\printbibliography
+
+
