can I produce a figure caption in r markdown with eval=false? - r

If I have the MWE:
---
title: "Example"
output:
pdf_document:
fig_caption: yes
---
Text text text
```{r fig.cap="Figure 1. Some random numbers",eval=FALSE}
summary(cars)
```
then I do not get a caption. But if I do:
---
title: "Example"
output:
pdf_document:
fig_caption: yes
---
Text text text
```{r fig.cap="Figure 1. Some random numbers"}
summary(cars)
```
i.e. remove eval=FALSE then the caption no longer loads.
why I wish to do this?
I want to put example bits of code into my document. the code won't actually work, hence why I want to supress it. Something like
---
title: "Example"
output:
pdf_document:
fig_caption: yes
---
Text text text
```{r fig.cap="Figure 1. Some random numbers",eval=FALSE}
for (i in 1:length(c){
#do something
}
```
where I am merely demonstrating a for loop, but not actually running the code.

As far as I know, knitr doesn't support captions for code by default. The easiest way to label your code blocks would be to add an explanation below the box in the markdown.
If you must have captions in the r code, you can use chunk hooks. Here's an example for your case:
---
title: "Example"
output:
pdf_document:
fig_caption: yes
---
```{r}
library(knitr)
knit_hooks$set(wrapper = function(before, options, envir) {
if (!before) {
sprintf(options$comment)
}
})
```
```{r comment="Figure 1. Some random numbers",wrapper=TRUE,eval=FALSE}
for (i in 1:length(c){
#do something
}
```
We have defined a hook (wrapper), where if we call wrapper=TRUE in any chunk options, the comment argument is printed below.

Related

Links between child documents in RMarkdown

I am writing my PhD thesis in R Markdown and I would like to add links to one child document (Introduction) allowing the reader to jump to another child document (one of the papers).
This is my main document:
---
output:
pdf_document:
latex_engine: pdflatex
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = F)
```
```{r chapter1, child = 'child1.Rmd'}
```
\newpage
```{r chapter2, child = 'child2.Rmd'}
```
This is how I tried to link my child1 and child2:
This is my second child document. Here I want a link to [`Child document 1`](./child2.Rmd#header1).
But when I click on the "Child document 1", it jumps to the original rmd file.
TLDR: is it possible to add clickable links between different child documents??
R version 4.2.2, Ubuntu 20, rmarkdown 2.18
Hi it works the same way as internal links.
Parent document:
---
output:
pdf_document:
latex_engine: pdflatex
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = F)
```
# Parent Header
implicit internal Link to header [Parent Header]
## Child links:
This implicit links to child 1 [C1 Second header]
Here I give a explicit link to [Go to second child](#child2_header1)
\newpage
# Child 1
```{r chapter1, child = 'child1.Rmd'}
```
\newpage
# Child 2
```{r chapter2, child = 'child2.Rmd'}
```
Child 1:
---
title: "child1"
author: "Valentin Haberl"
date: "`r Sys.Date()`"
output: pdf_document
---
## I am a child document {#child1_header1}
## C1 Second header
Some more Info
Child 2.
---
title: "child2"
author: "Valentin Haberl"
date: "`r Sys.Date()`"
output: pdf_document
---
## I am a second child {#child2_header1}
Text for second child

Mermaid (diagrammeR) graph not displayed in RPres

I am trying to include a graph built with the diagrammeR package in an RPres. That's the graph:
library(DiagrammeR)
mermaid("graph TD
X1(X1)-->Z1(Z2)
X2(X2)-->Z2(Z2)
X1(X1)-->Z2(Z2)
Z1(Z1)-->Y(Y)
Z2(Z2)-->Y(Y)
")
Looking at the output in RStudio's viewer pane is no problem. No I include it in an RPres:
Untitled
========================================================
author:
date:
autosize: true
First Slide
========================================================
```{r,echo=FALSE, results = "asis"}
library(DiagrammeR)
mermaid("graph TD
X1(X1)-->Z1(Z2)
X2(X2)-->Z2(Z2)
X1(X1)-->Z2(Z2)
Z1(Z1)-->Y(Y)
Z2(Z2)-->Y(Y)
")
(note that the "```" to close the code chunk aren't displayed here because of markup...)
Alas, nothing but the abyss of emptiness:
Are you committed to RPres or would you consider alternative slide formats? For example, if you create a new R Markdown document and specify output: ioslides_presentation in the YAML header, the diagram will render properly:
---
title: "Untitled"
author: "Your Name"
date: "5/2/2020"
output: ioslides_presentation
---
Untitled
===========================================================
Here is the content for the second slide in different style
## Title of Mermaid Slide
```{r,echo=FALSE, results = "asis"}
library(DiagrammeR)
mermaid("graph TD
X1(X1)-->Z1(Z2)
X2(X2)-->Z2(Z2)
X1(X1)-->Z2(Z2)
Z1(Z1)-->Y(Y)
Z2(Z2)-->Y(Y)
")
Which produces this:

How can I separate the title page from the table of contents in a RMarkdown Word output?

How can I separate the title page from the table of contents in a RMarkdown Word output? I've seen a lot on here about pdf and html output, but not much about Word. I've tried to use a little bit of LaTex, but it seems that most of that only works with pdf output, and the bit that does work with Word doesn't do what I'm looking for.
---
title: "Sample Title"
subtitle: "Sample Subtitle"
date: "April 8, 2020"
output:
word_document:
toc: yes
---
\newpage
# Header 1
sample text
## Header 2
more sample text
# Another Header 1
loren ipsum
## Another Header 2
foo bar
This just puts a blank page after the table of contents, not before. It feels like there is something simple that I'm missing.
You may consider exploring the officedown package and its block_toc function (together with <!---CHUNK_PAGEBREAK---> inline yaml):
---
title: "Sample Title"
subtitle: "Sample Subtitle"
date: "April 8, 2020"
output:
officedown::rdocx_document
---
<!---CHUNK_PAGEBREAK--->
# Table of Contents
`r officedown::block_toc(level = 5, style = NULL, separator = ";")`
<!---CHUNK_PAGEBREAK--->
# Header 1
sample text
## Header 2
more sample text
# Another Header 1
loren ipsum
## Another Header 2
foo bar
Or even simple, as discussed here:
<!---CHUNK_PAGEBREAK--->
# Table of Contents
<!---BLOCK_TOC--->
<!---CHUNK_PAGEBREAK--->
To place the toc wherever needed without messing with tex files (here with a pdf output),
Turn off automatic toc insertion first in the YAML metadata.
---
title: "myTitle"
date: "`r Sys.Date()`"
output:
pdf_document:
toc: no
number_sections: true
urlcolor: blue
editor_options:
chunk_output_type: console
documentclass: report
---
Then, wherever you want the toc to be in your document, add
```
{=latex}
\setcounter{tocdepth}{4}
\tableofcontents
```
You can then place this toc anywhere using latex macros such as \newpage or \hfill\break for example.
---
title: "myTitle"
date: "`r Sys.Date()`"
output:
pdf_document:
toc: no
number_sections: true
urlcolor: blue
editor_options:
chunk_output_type: console
---
\newpage
```{=latex}
\setcounter{tocdepth}{4}
\tableofcontents
```
\newpage
Note: documentclass: report in the metadata will automatically separate the toc from the title, but won't allow to separate it from the remainder of the document.
Source

xaringan slide separator not separating slides

In this example xaringan presentation, why are both the ## blank page and the leaflet map on the same slide, given I've separated them by the new-slide separator --- ?
---
title: "map test"
output:
xaringan::moon_reader:
css: ["default"]
nature:
highlightLines: true
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
## blank page
content
---
leaflet page
```{r}
library(leaflet)
leaflet() %>%
addTiles()
```
---
Looks like you've got an unintended space after the new slide separator after blank content as "--- ". Remove that space and it'll be recognized as real slide separator:
---
title: "map test"
output:
xaringan::moon_reader:
css: ["default"]
nature:
highlightLines: true
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
## blank page
content
---
leaflet page
```{r}
library(leaflet)
leaflet() %>%
addTiles()
```
---
In my case I'm adding mathjax/latex equations and I had:
$$
\begin{aligned} P(Y= k)=\comb{k-1}{r-1} * p^r q^{k-r}, \qquad k= r,r+1
\end{aligned}\label{pascal}\tag{5}
$$
And I had to remove the breaklines
$$\begin{aligned} P(Y= k)=\comb{k-1}{r-1} * p^r q^{k-r}, \qquad k= r,r+1
\end{aligned}\label{pascal}\tag{5}$$
and then it worked. I've that it renders mathjax better if all the code is in a single line.

How to print htmlwidgets to HTML result inside a function?

---
title: "Untitled"
output: html_document
---
```{r setup, include=FALSE}
library(DT)
xsx = function(){
print(getOption("viewer"))
print(datatable(data.frame(d =1)))
1
}
xsx()
```
Inside xsx() function, DT widgets will not be rendered in HTML result. How can I get widgets print inside a function?

Resources