Render multiple outputs from one Rmd - r-markdown

This is allegedly possible, but when I use the code example from the RMarkdown Book, I get only one output, whichever output is listed first.
---
title: Render a table in a tiny environment
output:
pdf_document: default
html_document: default
---
````{r, setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
options(knitr.table.format = function() {
if (knitr::is_latex_output()) 'latex' else 'pandoc'
})
````
I am using the most up-to-date versions of RStudio 2022.07.1 & knitr=1.39

Option 1
you can use rmarkdown::render in knit yaml key and specify ouput_format = "all" to render the documents to all the specified formats in the yaml section.
---
title: Render a table in a tiny environment
output:
pdf_document: default
html_document: default
knit: (function(inputFile, encoding) {
rmarkdown::render(inputFile, encoding = encoding,
output_dir = "output", output_format = "all") })
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
## R Markdown
This is an R Markdown document. Markdown is a simple formatting
syntax for authoring HTML, PDF, and MS Word documents.
For more details on using R Markdown see <http://rmarkdown.rstudio.com>.
After clicking on Knit, you will have both pdf and html file in the output folder.
Option 2
Which is actually the same thing as option 1, but uses a bit different workflow.
In your Rmd file yaml section, you simply specify the output format like this,
---
title: Render a table in a tiny environment
output:
pdf_document: default
html_document: default
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
## R Markdown
This is an R Markdown document. Markdown is a simple formatting
syntax for authoring HTML, PDF, and MS Word documents.
For more details on using R Markdown see <http://rmarkdown.rstudio.com>.
Then in the console or another r-script, run this,
rmarkdown::render('multiple_output.Rmd',output_dir = "output", output_format = 'all')
Again, similarly you will have both pdf and html file in the output folder.

Related

How do I knit to two formats simulateously with Quarto?

Is it possible to create multiple output formats from a Quarto/R Markdown document at once by specifying them in the YAML header?
My guess did not work:
---
title: Stacked Area chart with Annotations
format:
- html
- gfm
---
Try this way (and suppose file name is format_test.qmd)
format_test.qmd
---
title: "Untitled"
format:
html: default
gfm: default
---
## Quarto
Quarto enables you to weave together content and executable code
into a finished document. To learn more about Quarto
see <https://quarto.org>.
## Running Code
When you click the **Render** button a document will
be generated that includes both content and the output
of embedded code. You can embed code like this:
```{r}
1 + 1
```
Then from console run this following code to generate both html and github flavoured markdown (gfm) file at once.
# install.packages("quarto")
quarto::quarto_render("format_test.qmd", output_format = "all")
Or if you prefer using the terminal (or if you are a non R-useR) you can run the following command in the terminal,
quarto render format_test.qmd --to gfm,html
Be careful to specify multiple formats without putting any space in between i.e. type them as gfm,html.
And running the above command in the terminal does not require you to specify format yaml option in your document. So, for
format_test.qmd
---
title: "Untitled"
---
## Quarto
Quarto enables you to weave together content and executable code
into a finished document. To learn more about Quarto
see <https://quarto.org>.
quarto render format_test.qmd --to pdf,html,gfm
will generate three files in HTML, pdf, and markdown format.

How to translate words "Figure" and "Table" in bookdown::html_document2 documents?

In bookdown projects, it is possible to translate automatically generated words, such as "Table" or "Figure" by changing settings in the _bookdown.yml file (see https://bookdown.org/yihui/bookdown/internationalization.html). An how can I achieve the same result (translate the words) in bookdown::html_document2 documents?
The contens of my R Markdown document:
---
output:
bookdown::html_document2
---
```{r fig1, fig.cap=CAPTION}
CAPTION = "My plot. "
plot(women)
```
And the figure caption in the rendered document is:
I'd like to have "Fig." instead of "Figure".
You need to add a file _bookdown.yml in the same directory as your .Rmd. It should look like this:
_bookdown.yml
language:
label:
fig: "Fig. "
.Rmd
---
title: your doc
output: bookdown::html_document2
---
# Chapter 1
A reference to Figure \#ref(fig:women).
```{r women, echo=FALSE, fig.cap="CAPTION"}
plot(women)
```

removing section in rmarkdown doc

I'd like to have the section titles in the header not the body of the page. \fancyhead[C]...puts the section title in the header but how do you suppress the body printing of the section?
---
title: "Untitled"
classoption: landscape
output:
pdf_document:
number_sections: false
dev: pdf
keep_tex: false
toc: yes
header-includes:
- \usepackage{fancyhdr}
- \usepackage{etoolbox}
- \pagestyle{fancy}
- \fancyhead[L]{left}
- \fancyhead[R]{right}
- \fancyhead[C]{ \nouppercase{\leftmark} }
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
## R Markdown
This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see <http://rmarkdown.rstudio.com>.
When you click the **Knit** button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
```{r cars}
summary(cars)
```
\newpage
# Including Plots
You can also embed plots, for example:
```{r pressure, echo=FALSE}
plot(pressure)
```
Note that the `echo = FALSE` parameter was added to the code chunk to prevent printing of the R code that generated the plot.
\newpage
# page 3
You can also embed plots, for example:
```{r pressured, echo=FALSE}
plot(pressure)
```
Note that the `echo = FALSE` parameter was added to the code chunk to prevent printing of the R code that generated the plot.

R Markdown - HTML Output in Powerpoint

I try to get Highouts Output in my Powerpoint presentation, but the suggestion does not work .This feature is still pretty new and I was not able to find something valueable in the docu.
---
title: "Untitled"
output:
beamer_presentation: default
powerpoint_presentation: default
ioslides_presentation: default
always_allow_html: yes
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
library(highcharter)
```
### R Markdown
This is an R Markdown presentation. Markdown is a simple formatting
syntax for authoring HTML, PDF, and MS Word documents. For more
details on using R Markdown see <http://rmarkdown.rstudio.com>.
When you click the **Knit** button a document will be generated that
includes both content as well as the output of any embedded R code
chunks within the document.
### Slide with Bullets
- Bullet 1
- Bullet 2
- Bullet 3
### Slide with R Output
```{r cars, echo = TRUE}
highchart() %>%
hc_add_series(data = mtcars, type = "bar", hcaes(y = cyl))
```
### Slide with Plot
```{r pressure}
plot(pressure)
```
Produces:
Functions that produce HTML output found in document targeting pptx output.
Please change the output type of this document to HTML. Alternatively, you can allow
HTML output in non-HTML formats by adding this option to the YAML front-matter of
your rmarkdown file:
always_allow_html: yes
Note however that the HTML output will not be visible in non-HTML formats.
I added the always_allow_html: yes part to the top, but it still does not work. Can anyone help me?

Self-contained rmarkdown file contains only some embedded images

I'm seeing different behaviour in an R Markdown (Rmd) file depending on how I reference the image I'd like to embed in an HTML document. In the simple example below, the second image is embedded in the document, but the first (using the R chunk) is not.
---
title: "title"
output:
html_document:
mode: selfcontained
theme: null
---
```{r packages, echo=FALSE}
library(htmltools)
```
```{r imgTest, echo=FALSE}
img(src = "http://placehold.it/350x150")
```
<img src="http://placehold.it/350x150">
This is the output in the HTML (for the relevant bit):
<p><img src="http://placehold.it/350x150"/></p>
<p><img src="data:image/png;base64,iVBORw0KG<SNIPPED>"></p>
In summary, using the htmltools function img() within a code chunk does not embed the image but instead it remains a link.
For various reasons, I need the document to be truly self-contained (no links) and to also avoid raw HTML.
Can anyone explain why this is happening and offer a solution? I've tried a variety of chunk options without success so far.