/posterdown

Use RMarkdown to generate PDF Conference Posters via HTML or LaTeX

Primary LanguageTeXMIT LicenseMIT

Build Status

posterdown

poster logo

Support

Please consider supporting posterdown on Patreon to ensure continued support and development for this package, as (grad school + open source developer != 💵) .

You can also support via cyrptocurrencies at:

Bitcoin: 1KZ3zyNsxdR8NjYL9vomb9fmpkXSXvK5VR
Ethereum: 0x71a18c5E3300a33F1139a9eA0abc0D029E3C30F7
Litecoin: LR4usZRgjJGLAg3Tu5PSBjgUaVtdts9Wnw

You can also follow me (Brent Thorne) on twitter for upcoming features which may not be released on github.

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. This is also important for facilitating meeting the people in your field at poster sessions at academic meetings. I have also noticed that while many of my fellow graduate students use R and are getting their feet wet with RMarkdown 😊, we always had to go back to using MS Powerpoint or Keynote or Adobe Illustrator for generating conference posters 😒. 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:

To this:

NEW OPTION:

Please feel free to give me feedback or requests for changes in the 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! 😄

Citation

To cite posterdown in publications, use:

W. Brent Thorne (2019). posterdown: An R Packge. R package version 0.1.2.

A BibTeX entry for LaTeX users is:

  @Manual{posterdown,
    title = {posterdown: An R Package},
    author = {W. Brent Thorne},
    year = {2019},
    url = {https://github.com/brentthorne/posterdown},
    note = {R package version 0.1.2},
  }

Installation

You can install and use posterdown from github using the devtools package as seen below.

NOTE on posterdown_html(): This requires a recent version of Pandoc (>= 2.2.3). If you use RStudio, you are recommended to install the Preview version (>= 1.2.1070), which has bundled Pandoc 2.x, otherwise you need to install Pandoc separately.

devtools::install_github("brentthorne/posterdown")

Instructions if you have never used RMarkdown

For HTML and LaTeX

  1. Install devtools package
install.packages("devtools")
  1. Install posterdown from github repo
devtools::install_github("brentthorne/posterdown")

LaTeX Only

  1. Install tinytexLatex libraries:
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. This package has two templates posterdown_latex and posterdown_html.

HTML

posterdown_betterland uses the #betterposter design to layout your poster in a new and exciting wayy. Stnd out from the crowd and encourage meaningful discussion with your work! More to come on this poster desing and how to use is soon!

posterdown_html utilizes the wonderful work being done by @RLesur and @yihui on pagedown. This method allows for some cool features like the ability to run an html wiget (aka shiny app or a leaflet map) live in the poster (unless you print it obviously). It even allows for integration with one of my favourite R packages gganimate.

Behind the scenes is the template.html file which contains both the html and css code. If you are interested in building your own template I reccommened checking out this great resource from bookdown.

LaTeX

posterdown_latex (formerly posterdown_pdf) uses LaTeX to generate the PDF posters, more specifically it uses the Memoir Latex class. Memoir was chosen for its flexibility in page sizing as well as its 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!

Using posterdown from RStudio

To use posterdown from RStudio:

  1. Install the latest RStudio.

  2. Install the posterdown package:

devtools::install_github("brentthorne/posterdown")
  1. Use the File / New File / R Markdown.. / From Template / Posterdown HTML or Posterdown LaTeX dialog pathway to create a conference poster.

    New R Markdown

NOTE: If you do not see the Posterdown HTML or Posterdown LaTeX templates in this dialogue box, restart the R session or close and re-open RStudio.

Using posterdown outside of RStudio

  1. Install pandoc using the instructions for your platform.

  2. Install the rmarkdown and posterdown packages:

devtools::install_github("brentthorne/posterdown")
  1. Use the rmarkdown::draft() function to create articles:
rmarkdown::draft("MyPoster.Rmd", template = "posterdown_html", package = "posterdown")

Customization

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:

Poster Size & Default Font

Option Compatability Description
poster_height HTML, LaTeX Height of the final poster output. Units can be: "in", "mm", "cm"
poster_width HTML, LaTeX Width of the final poster output. Units can be: "in", "mm", "cm"
font_family HTML, LaTeX Selects the font family to be used on the poster.

HTML: This applies to the entire document, however you can easily change individual fonts, see titletext_fontfamily

LaTeX: 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 for a list of possible options.
font_size LaTeX Represents the point value for \normaltextsize in latex. All other font sizes are adjusted from this baseline. For example, if 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 for a useful resource for a better understanding of the Latex text sizing options. See body_textsize for HTML equivalent.

Title Box Options

Essential Information

Option Compatability Description
title HTML, LaTeX Poster title, acts as you would expect from RMarkdown.

HTML: You can add line breaks in your title with <br>

LaTeX: You can add line breaks in your title with \break.
author HTML, LaTeX List of authors.

HTML: Supports listing authors, will soon add support for linked affiliations.

LaTeX: 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 packages does
affiliation HTML, LaTeX Author affiliations, which just as the author section is currently a hacky version of what I would ultimately like to produce.

Style & Formatting

Option Compatability Description
titlebox_bgcol HTML, LaTeX Colour of the background for the Title Box area of the poster.
titlebox_bordercol HTML, LaTeX Colour of the border for the Title Box area of the poster.
titlebox_shape LaTeX Shape of the corners for the Title box (Options include: south or uphill. For all corners to be sharp use the option "all". For more options please see the tcolorbox manual and search for "sharp corners", HINT there are LOTS of options there 😄 .
titlebox_borderwidth HTML, LaTeX Width of the Top Title Box border.
title_textcol HTML, LaTeX Colour of the titlebox title text (AKA your title).
author_textcol HTML, LaTeX Colour of the author text.
affiliation_textcol HTML, LaTeX Colour of the affiliation text.
title_textsize HTML, LaTeX Title font size.

HTML: You can use specific sizes, see this link for more on text sizes in html/css.

LaTeX: Sizes can be one of: "tiny", "scriptsize", "footnotesize", "small", "normalsize", "large", "Large", "LARGE", "huge" or "Huge", see font_size above for more information.
author_textsize HTML, LaTeX Author list font size
affiliation_textsize HTML, LaTeX Affiliations list font size

Adding Logos

Option Compatability Description
logoleft_name HTML, LaTeX Name of the image file you want to use for the logo to the left.
logoleft_width LaTeX Width of the image you chose (Note: The height will adjust automatically based on the width to avoid distortion 😄)
logoleft_xshift LaTeX Value to move the image along the x-axis based on the anchor being the left bottom corner.
logoleft_yshift LaTeX Value to move the image along the y-axis based on the anchor being the left bottom corner.
logoright_name HTML, LaTeX Name of the image file you want to use for the logo to the right.
logoright_width LaTeX Width of the image you chose (Note: The height will adjust automatically based on the width to avoid distortion 😄)
logoright_xshift LaTeX Value to move the image along the x-axis based on the anchor being the right bottom corner.
logoright_yshift LaTeX Value to move the image along the y-axis based on the anchor being the right bottom corner.

Poster Body Options

Option Compatability Description
body_bgcol HTML, LaTeX Background colour of the poster's main body.
body_textsize HTML, LaTeX Font size of the poster's main paragraphs from the body.

HTML: You can use specific sizes, see this link for more on text sizes in html/css.

LaTeX: Sizes can be one of: "tiny", "scriptsize", "footnotesize", "small", "normalsize", "large", "Large", "LARGE", "huge" or "Huge", see font_size above for more information.
body_textcol HTML, LaTeX Colour of the main body text.
column_numbers HTML, LaTeX Number of columns you wish for the poster to have in the main section of the poster.
column_margins HTML, LaTeX Spcaing between each column as well as the edge of the poster.
columnline_col HTML, LaTeX Colour of the line which divides each column in the poster.
columnline_width HTML, LaTeX Width of line between each column.
columnline_style HTML Choose from: solid, dashed, dotted etc. See more here.

Section Title Styling

Option Compatability Description
sectitle_textcol HTML, LaTeX Colour of the Section Title Text.
sectitle_bgcol HTML, LaTeX Colour of the section title box.
sectitle_bordercol HTML, LaTeX Colour of the border around the section text box.
sectitle_borderwidth HTML, LaTeX Thickness of the section title box border.
sectitle_boxshape HTML, LaTeX Shape of the corners for the section title box.

HTML: Can be a single value such as 4mm which will apply rounding to all corners, up to 4 values which will change the roundness for each corner individually. See this for more help.

LaTeX: Options such as south or uphill. For all corners to be sharp use the option "all". For more options please see the tcolorbox manual and search for "sharp corners", HINT there are LOTS of options there 😄 .

Bibliography Options

Option Compatability Description
bibliography HTML, LaTeX Name of the .bib. file which you are using to source material.

HTML: Use this as you would in a typical RMarkdown document. You can also use a custom csl file. See the Rmarkdown examples here.

LaTeX: As of right now only biblatex is working but I intend to add support for natbib which is my preference.
bibliography_spacing LaTeX Sets the mutiplier for line spacing between bibliography entries, default value is 0.8. Useful if you need to squeeze more space from somewhere.
bibliography_textsize HTML, LaTeX Bibliography font size

Other

Option Compatability Description
cite_col LaTeX Colour of the citation link elements when using biblatex.
url_col LaTeX Colour of URL links specifically.
link_col HTML, LaTeX Colour of in-document links (example would be referencing a Figure or a Table).
footnote_textcol LaTeX Colour of the footnote text.
header-includes LaTeX (Optional) Content to include in the header, provided as a one line command or a YAML list with one command per line. For example, to use a sans-serif font as the default font: header-includes: \renewcommand{\familydefault}{\sfdefault}.
output HTML, LaTeX For generating posterdown_html or posterdown_latex, 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. posterdown_pdf will be kept for legacy use but will not be updated, new projects which would have used it should now use posterdown_latex.

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 available space 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. 😄

To Do List (When Not Writing my Master's Thesis)

  1. posterdown_html()

    • Better citation support
    • Provide colour pallete options for the people who don't want to change every single individual colour in the poster.
  2. posterdown_latex()

    • 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 (KIND OF DONE BUT NEEDS WORK)
    • 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
  3. Other

    • Make a showcase of awesome posters made from posterdown 😄.
    • Make a video series similar to GeomaTECHs for tutorial on this package.