【问题标题】:Add div around all text in knitr在knitr中的所有文本周围添加div
【发布时间】:2014-01-08 00:46:39
【问题描述】:

我正在尝试将以下 div 和 class 添加到 knitr 中的整个 Rmd 文件中:

<div class="container">
</div>

我已经使用 css 创建了 container 类,如下所示:

.container {
    box-shadow: 10px 10px 5px #888888;
    width: 70%;
    margin: 15em auto 5em;
    margin-bottom:-9em;
    margin-top:5em;
    background: #FFF;
}
.container p {
    padding-left: 14%;
    padding-right: 10%;
    text-indent : 1.25cm;
}
body {
   background: #efefef;
}

我通常会使用 style.css 来添加它,但对于 MWE,我们会将它放在最后的 MW Rmd 文件的主文档正文中。我用container 类的div 包装了整个文档,并得到了这个输出HERE。注意标题# Hello World 没有作为标题处理? div 标签中的任何内容都不会被处理为 html。我可以通过在没有div 容器的情况下运行 knitr 来解决此问题,然后稍后添加它,如下所示:(The HTMLThe Rmd)。

如何将div标签直接添加到Rmd文件中?

<div class="container">

# Hello World
```{r setup, include=FALSE}
opts_chunk$set(cache=FALSE)
library(knitr); library(knitcitations); 
```

<style>
.container {
box-shadow: 10px 10px 5px #888888;
    width: 70%;
    margin: 15em auto 5em;
    margin-bottom:-9em;
    margin-top:5em;
    background: #FFF;
}
.container p {
    padding-left: 14%;
    padding-right: 10%;
    text-indent : 1.25cm;
}
body {
   background: #efefef;
}
</style>

</div>

【问题讨论】:

  • 有趣的是,去掉结尾的 &lt;/div&gt; 给出了我所追求的。
  • 大多数 Markdown 处理器会忽略 &lt;div&gt; 标记之间的内容,因为它会混淆解析 Markdown 和 HTML 的混合。
  • 他们会解析跨度标签之间的降价,因此黑客将使用跨度标签并添加一个将它们转换为 div 的文档挂钩。
  • @Ramnath,这听起来很有希望,但我已经阅读了有关钩子的文档,但不太了解如何制作钩子来做到这一点。你是在建议一个块还是输出钩子?
  • @Ramnath 我尝试了您的建议,如果我正确,它似乎仍然不起作用。看来我设置它的方式是在错误的时间执行 gsub。

标签: r knitr


【解决方案1】:

使用自定义模板将 Rmd 包装在 &lt;div class="container"&gt;&lt;/div&gt;

<!DOCTYPE html>
<html>
    <head>
        <title>#!title#</title>
    </head>
    <div class="container">
        #!html_output#
    </div>
</html>

然后在编织的时候调用模板

knit2html('document.Rmd', template='template.html', title='Page title')

这样您还可以在模板中添加自定义style.css

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    • 2019-11-25
    • 1970-01-01
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多