rmarkdown中的内部链接不起作用

rda*_*tor 23 pdf-generation r r-markdown

我使用rmarkdown来呈现pdf文档.现在我想在文本中添加内部链接.

rmarkdown的帮助页面中,它表示内部链接定义为:

See the [Introduction](#introduction).
Run Code Online (Sandbox Code Playgroud)

当我使用例如下一个代码时,应该有两个内部链接:link1和link2.两者都没有联系.有什么明显的东西我做错了吗?提前谢谢了!

   ---
title: "Test"
author: "test test"
output:
  pdf_document:
    latex_engine: xelatex
    number_sections: yes
    toc: yes
    toc_depth: 3
  html_document:
    css: tables.css
    number_sections: yes
    theme: cerulean
    toc: yes
    toc_depth: 3
subtitle: test test test
mainfont: Calibri Light
fontsize: 12pt
header-includes:
- \usepackage[dutch]{babel}
- \usepackage{fancyhdr}
- \pagestyle{fancy}
- \fancyfoot[LE,RO]{this is a fancy foot}
- \usepackage{dcolumn}
- \usepackage{here}
- \usepackage{longtable}
- \usepackage{caption}
- \captionsetup{skip=2pt,labelsep=space,justification=justified,singlelinecheck=off}
---

# start

```{r results="asis",tidy=FALSE,eval=TRUE,echo=FALSE,message=FALSE, error=FALSE, warning=FALSE, comment = NA}
cat("click here: [link1](#test 1)")
```

click here: [link2](#test 1)

\pagebreak

#test 3

\pagebreak

#test 2

\pagebreak

#test 1
Run Code Online (Sandbox Code Playgroud)

A5C*_*2T1 31

您没有正确设置锚点.

请尝试以下方法:

# 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}
Run Code Online (Sandbox Code Playgroud)

  • 虽然在rmarkdown教程中没有提到任何锚点,但这很奇怪.相反它说:"要链接到同一文档的另一部分,请使用自动生成的标识符" (4认同)

小智 12

Rmarkdown PDF输出中的内部链接有一些棘手的规则,在备忘单等方面没有详细记录.

规则:

  • 只有一个#用于锚点,即使您使用的是多个标题#.

    示例:链接时###header变为#header.

  • #和锚文本之间没有空格.

    示例:#header,不是# header.

  • 多字锚点应用短划线分隔.

    示例:#this is a header需要成为#this-is-a-header链接.

  • 锚链接必须是小写的,即使您链接的标题具有大小写.

    示例:#Section变为#section链接.


dnl*_*rky 6

@rPirate 有一个很好的清单,但它缺少一个让我困惑的案例。我有一个像这样的节标题### 1.1.1 My Section Title需要#my-section-title在链接中。

\n\n

经过一番搜索,我在Pandoc 手册中找到了官方的转换规则列表:

\n\n
\n

用于从标题文本派生标识符的默认算法是:

\n\n
    \n
  • 删除所有格式、链接等。
  • \n
  • 删除所有脚注。
  • \n
  • 删除所有非字母数字字符,下划线、连字符和句点除外。
  • \n
  • 将所有空格和换行符替换为连字符。
  • \n
  • 将所有字母字符转换为小写。
  • \n
  • 删除第一个字母之前的所有内容(标识符不得以数字或标点符号开头)。
  • \n
  • 如果此后没有留下任何内容,请使用标识符部分。
  • \n
\n\n

因此,例如,

\n\n
Header                      | Identifier\n--------------------------------------------------------\nHeader identifiers in HTML  | header-identifiers-in-html\nMa\xc3\xaetre d\'h\xc3\xb4tel              | ma\xc3\xaetre-dh\xc3\xb4tel\n*Dogs*?--in *my* house?     | dogs--in-my-house\n[HTML], [S5], or [RTF]?     | html-s5-or-rtf\n3. Applications             | applications\n33                          | section\n
Run Code Online (Sandbox Code Playgroud)\n
\n


小智 5

以下是在 RMarkdown PDF 文档中进行内部链接/引用的简单方法:

A) 创建节标题:

## Homework Assignments{#hwks}
Run Code Online (Sandbox Code Playgroud)

B) 创建节标题后。我可以在我的文本中这样引用它:

If you are having a hard time with your [homework](#hwks), we have some tutors who can help you. 
Run Code Online (Sandbox Code Playgroud)

这将创建一个返回标题为“家庭作业”的部分标题的链接。

请注意我设置链接的方式中的一些事情:

  1. “作业”==>我用来称呼标题的单词(或短语)位于括号中

  2. [homework] 后面紧跟着我在上面创建的标识符“#hwks”,但该标识符现在位于括号中,如下所示:(#hwks)

这总是对我有用!

(这是我在这里的第一篇文章;我希望它有意义。:))