Internal links in rmarkdown don't work

前端 未结 5 943
夕颜
夕颜 2020-12-14 16:13

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:

相关标签:
5条回答
  • 2020-12-14 16:59

    @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
    
    0 讨论(0)
  • 2020-12-14 16:59

    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

    0 讨论(0)
  • 2020-12-14 17:03

    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:

    1. "homework" ==> the word (or phrase) I use to call the header is in brackets

    2. [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. :) )

    0 讨论(0)
  • 2020-12-14 17:12

    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.

    0 讨论(0)
  • 2020-12-14 17:13

    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}
    
    0 讨论(0)
提交回复
热议问题