3

I would like to add some special fonts as part of the title/subtitle in an R markdown document but I'm getting different results depending on the quote types I'm using.

Here's a small R markdown example that shows my problem. I would like to print the twitter logo before the twitter handle as part of the R markdown subtitle.

---
title: "Untitled"
subtitle: '`r fontawesome::fa("twitter", fill = "steelblue")` @twitter handle'
author: "My Name"
date: "7/12/2018"
output: html_document
---

This is it.

If I use single quotes then I almost get the result I want. There is a newline between the logo and the twitter handle as shown below but that is fine - it could be fixed with css since the logo is set inside <svg> ... </svg>.

However, if I use double quotes then things go haywire:

subtitle: "`r fontawesome::fa('twitter', fill = 'steelblue')` @twitter handle"

Now none of the YAML information turns up in the final html document. I'm guessing that it is related to this question on entering the current date as part of the yaml or possibly this post where the YAML inline code doesn't run but I am curious as to why the change of quote types in the YAML has such a profound impact on the rendering since the double quotes clearly work for the other YAML parameters.

I'm using rmarkdown v1.10.

enter image description here

ekstroem
  • 5,957
  • 3
  • 22
  • 48

1 Answers1

1

The fontawesome::fa() function returns a SVG element.
For instance, the string returned by fontawesome::fa("twitter", fill = "steelblue") is:

<svg style="height:0.8em;top:.04em;position:relative;fill:steelblue;" viewBox="0 0 512 512">
  <path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"/>
</svg>

This string contains double quotes: this is the reason why single quoting leads to a proper result and double quoting does not perform well.
It is clear if you inspect the intermediate markdown file using the keep_md option:

---
title: "Untitled"
subtitle: "`r fontawesome::fa('twitter', fill = 'steelblue')` @twitter handle"
author: "My Name"
date: "7/12/2018"
output: 
  html_document:
    keep_md: true
---

These quoting considerations can be done away using YAML literal or folded blocks:

subtitle: |
    `r fontawesome::fa('twitter', fill = 'steelblue')` @twitter handle

or

subtitle: >
    `r fontawesome::fa('twitter', fill = 'steelblue')` @twitter handle
RLesur
  • 5,810
  • 1
  • 18
  • 53