I use rmarkdown to render pdf documents. Now I want to add internal links in the texts.
In the helping pages of rmarkdown, it says an internal link is defined as:
@rPirate has a good list, but it was missing a case that was befuddling me. I had a section header like ### 1.1.1 My Section Title
that needs to be #my-section-title
in the link.
After some searching, I found an official list of transformation rules in the Pandoc manual:
The default algorithm used to derive the identifier from the header text is:
- Remove all formatting, links, etc.
- Remove all footnotes.
- Remove all non-alphanumeric characters, except underscores, hyphens, and periods.
- Replace all spaces and newlines with hyphens.
- Convert all alphabetic characters to lowercase.
- Remove everything up to the first letter (identifiers may not begin with a number or punctuation mark).
- If nothing is left after this, use the identifier section.
Thus, for example,
Header | Identifier -------------------------------------------------------- Header identifiers in HTML | header-identifiers-in-html Maître d'hôtel | maître-dhôtel *Dogs*?--in *my* house? | dogs--in-my-house [HTML], [S5], or [RTF]? | html-s5-or-rtf 3. Applications | applications 33 | section
Josh Paulson has an article on Rstudio website that goes into details. Here is his solution
Slide 1
====================================
id: slide1
Slide 2
====================================
[Go to slide 1](#/slide1)
This works me. A Handcart And Mohair's code does not work on RHTML
Here is a simple way of doing internal links/references in an RMarkdown PDF document:
A) Create a section header:
## Homework Assignments{#hwks}
B) After creating the section header. I can refer to it in my text like this:
If you are having a hard time with your [homework](#hwks), we have some tutors who can help you.
This creates a link back to the section header entitled "Homework Assignments".
Notice a couple of things in the way I set up the link:
"homework" ==> the word (or phrase) I use to call the header is in brackets
[homework] is immediately followed by the identifier "#hwks" that I created above, but the identifier is now in parentheses, as in: (#hwks)
This always works for me!
(This was my first post here; I hope it makes sense. :) )
There are some tricky rules for internal links in Rmarkdown PDF output, not well documented on cheat sheets, etc.
Rules:
Only one #
for anchor, even if you are using a header with multiple #
.
Example: ###header
becomes #header
when linking.
No spaces between # and anchor text.
Example: #header
, not # header
.
Multi-word anchors should be separated by dashes.
Example: #this is a header
needs to become #this-is-a-header
in the link.
Anchor links need to be lowercase, even if the header you are linking to has capitalization.
Example: #Section
becomes #section
in the link.
You're not setting the anchors correctly.
Try the following:
# start
```{r results="asis",tidy=FALSE,eval=TRUE}
cat("click here: [link1](#test1)")
```
click here: [link2](#test1)
\pagebreak
# test 3 {#test3}
\pagebreak
#test 2 {#test2}
\pagebreak
#test 1 {#test1}