【问题标题】:How to change the position of the table of contents in rmarkdown?如何更改rmarkdown中目录的位置?
【发布时间】:2014-08-30 23:57:04
【问题描述】:

使用 RStudio 和 knitr,我发现我可以在我的 .rmd 文件中添加一个带有以下代码的目录。

----------------
output: 
  html_document:
    toc: yes
-----------------

但是,这会将 TOC 置于 HTML 文档的最开头。有没有办法在页面上将 TOC 移到下方?在介绍性段落之后说?

我尝试使用__TOC____FORCETOC__,但它并没有改变目录位置。

【问题讨论】:

标签: r knitr r-markdown


【解决方案1】:

目录的位置在 R Markdown 默认 HTML 模板中是固定的。如果你想改变它在文档中的位置,你需要修改模板:

  1. 制作 R Markdown HTML 模板的副本以用作起点。你可以通过运行这个 R 命令找到它:system.file("rmd/h/default.html", package="rmarkdown")
  2. $toc 部分移动到您希望目录出现的位置。
  3. 将修改后的模板保存在与您正在呈现的文档相同的文件夹中,例如lowertitle.html
  4. template: lowertitle.html 添加到html_document 设置中。

从模板的角度来看,文档的所有内容都是一个原子单元,因此可能有必要将您希望出现的任何内容放在模板本身的 TOC 之前。

【讨论】:

【解决方案2】:

您可以使用 JQuery 将 TOC 重新定位到文件中的任意位置。只需在您希望 TOC 所在的位置插入一个标题,并使用通过渲染 R Markdown 文件生成的 ID。例如:

<script>
  // Move TOC to the Table of Contents heading (with id "table-of-contents")
  $(function() {
    $( "#TOC" ).insertAfter( $( "#table-of-contents" ) );
  });
</script>

R Markdown 文件中某处名为“目录”的标题将收到 id“目录”。 TOC 的 ID 为“TOC”。上面的 Jquery 位选择该 TOC,并将其插入到“目录”标题之后,无论它位于文档中的任何位置。

【讨论】:

  • 请注意,由于其安全协议,如果文件在 github 上呈现,则不会被拾取
【解决方案3】:

我尝试了建议的答案,虽然它们看起来很简单,但我也无法实现。我在 GitHub 中找到了@gadenbuie 提出的更简单的解决方案: https://gist.github.com/gadenbuie/c83e078bf8c81b035e32c3fc0cf04ee8

您只需复制并粘贴该函数即可在 Rmarkdown 文件中呈现您的 TOC,然后在您希望 TOC 出现的块中调用它。因此,您可以在 Rmarkdown 文件中的任何位置调用您的 TOC。

如果您需要进一步解释,可以查看@gadenbuie 的博客: https://www.garrickadenbuie.com/blog/add-a-generated-table-of-contents-anywhere-in-rmarkdown/

【讨论】:

    【解决方案4】:

    您可以在标题之后和目录之前的标题中添加一些内容,例如一个 yaml 标头,例如:

    然后将任何段落或图形添加到文件 header.md 中。

    例如,我在brshallo/piececor 的自述文件中设置了这个 YAML,这样我就可以在我的目录之前显示我的“生命周期”徽章。

    【讨论】:

      猜你喜欢
      • 2018-11-23
      • 2013-12-11
      • 2019-11-10
      • 1970-01-01
      • 2015-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-29
      相关资源
      最近更新 更多