I'd love to have automatically generated links next to anchors in the document, so that someone looking at the HTML output can easily send a link to a particular section.

This is basically as headers work on github markdown README (and other documents). If you hover over them a link icon appears on the left and you can quickly copy that link (with a right click). I'd like to be able to do the hover to show or always show thing too :slight_smile:

Anyone have any idea how to do that?

(Here's a page describing an approach
https://ben.balter.com/2014/03/13/pages-anchor-links/ which links to Anchor-JS library, perhaps relevant?)

1 Like

Bookdown does this. For example, check out this link:

"https://geocompr.robinlovelace.net/spatial-class.html#raster-data"

The links are in the sidebar, not directly in the text, but I think it's most of the way there, so I'm guessing what you want to do is quite possible.

pkgdown does exactly this, but it’s not quite a drop-in approach (I don’t think?). After generating the HTML via rmarkdown, it processes it as XML in order to tweak various things, including adding section header links:

1 Like

Since you're using HTML, you can use the AnchorJS library to do what you need.

Create a file with the following code (I saved it as anchor.html). Also, make sure to read the documentation to see how to use the library.

<script src='https://cdnjs.cloudflare.com/ajax/libs/anchor-js/4.2.0/anchor.js'></script>
<script>
    anchors.add();
</script>

In the yaml header of your R Markdown document, include the above file after your body using includes (documented in the R Markdown book. Make sure the anchor.html is in the same folder as your .Rmd file:

---
title: "Anchored Links"
output: 
  html_document:
    includes:
      after_body: anchor.html
---

So using the example Rmd created by RStudio, this is what your Rmd file should look like:

---
title: "Anchored Links"
output: 
  html_document:
    includes:
      after_body: anchor.html
---

```{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)
```

## 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.

And the output:

4 Likes

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.