Rmarkdown的TOC图像标志

For*_*rge 4 html r knitr r-markdown

我知道我可以使用带有in_header/before_body选项的knitr在HTML报告的顶部插入徽标或图像

output:
  html_document:
    includes:
      before_body: header.Rhtml
Run Code Online (Sandbox Code Playgroud)

我的猜测是:如何在浮动TOC上渲染徽标?

output:
  html_document:
    toc: true
    toc_float: true
    collapsed: false
    ??????
Run Code Online (Sandbox Code Playgroud)

Mar*_*zer 10

你在这里有几个选择,我将概述其中两个

1.使用CSS伪元素 before

以下代码段将在第一个TOC元素上方和TOC框中添加stackoverflow徽标:

<style>
#TOC {
  background: url("https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-logo.png?v=9c558ec15d8a");
  background-size: contain;
  padding-top: 80px !important;
  background-repeat: no-repeat;
}
</style>
Run Code Online (Sandbox Code Playgroud)

在这里,您必须padding-top根据您的徽标调整定义.结果看起来或多或少像这样:

在此输入图像描述

2.在TOC列中添加新的DOM元素

另一种方法是首先使用jQuery来添加一个包含图像的新DOM元素:

<script>
  $(document).ready(function() {
    $('#TOC').parent().prepend('<div id=\"nav_logo\"><img src=\"https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-logo.png?v=9c558ec15d8a\"></div>');
  });
</script>
Run Code Online (Sandbox Code Playgroud)

这里,当文档加载完毕后,我们选择带有id的元素TOC,然后向上移动到其父元素(列div),然后divnav_logo包含图像的id 前面添加一个新元素.听起来比实际更复杂.现在我们只需要再次使用一些CSS编辑这个新div的样式:

<style>
#nav_logo {
  width: 100%;
  margin-top: 20px;
}
</style>
Run Code Online (Sandbox Code Playgroud)

这里生成的文档如下所示:

在此输入图像描述

有关CSS的详细信息,我会向您推荐大型搜索引擎,而这些搜索引擎很可能会将您推荐给https://www.w3schools.com.

如果我必须选择,我会进行第二次尝试.伪元素在浏览器中并不总是可靠的.它看起来也更好:)