knitr - html 文档中的双倍行距

knitr - html 文档中的双倍行距

如果我的 knitr 输出是 pdf,那么我可以按如下方式开始我的文档,使文本双倍行距:

title: My Title
author: "My Name"
date: "Today's Date"
header-includes:
   - \usepackage{setspace}
   - \doublespacing
output: pdf_document

但是,如果我将输出更改为html_document,文本仍为单倍行距。有没有办法让它变成双倍行距?

答案1

我假设你正在使用 RStudio,所以我从这个角度来写。这个问题有两个方面。首先,你需要了解 HTML 文档的行距是如何定义的。然后我们需要讨论如何knitr应用style信息。

HTML 文档中的行距可以通过应用style 属性元素,或全局,与外部层叠样式表.css文件或者内部样式定义。

为了当地的方法,您可以对标签使用以下样式属性<p>,将单个段落设置为双倍行距<p style="line-height: 2em;"> ... </p>(一个段落);或者多个段落(甚至整个文档),您可以使用标签来<div>代替:(<div style="line-height: 2em;"> ... </div>跨越您需要的任何内容)。

全球<p>您可以通过样式表将行高定义应用于所有元素,方法是p {line-height: 2em;}在文件中指定,然后将其加载到 HTML 文档中,并在HTML 文档的块中mystyle.css声明。这被认为是将格式与内容完全分开的最原则性解决方案。但您不再拥有一个独立的文件,而是您的<link rel="stylesheet" type="text/css" href="mystyle.css"><head>...</head>外部样式表需要位于 webroot 目录下的某个位置,以便您的服务器可以访问它并将其与您的文档一起提供。但是,您可以使用内部样式表,通过放置以下方块:

    <style>
        p {line-height: 2em;}
    </style>

在 HTML 文件的标题中,或者将此行添加到已有的样式信息中。这将为您提供一个完全双倍行距的 HTML 文档。

[编辑:此解决方案无效。此修改使其有效:

<style type="text/css">
  body{
  line-height: 2
  }
</style>

此方案的优点是可以兼容目录功能,但是<div style="line-height: 2em;">...</div>会干扰目录。]

到目前为止,HTML 都是这样的。有几种方法可以knitr生成这种双倍行距的 HTML 文件:

  • 你可以告诉knitr包括你自己的外部样式表通过在 .Rmd 文档的 YAML 标头中指定此项。

     output:
       html_document:
         css: mystyle.css
    

(注意缩进!该文件需要位于您的主目录中 - 或者您需要添加路径。)这需要使用两个文件。

  • 您可以添加内部样式信息用于制作 html 文件的 pandoc 模板。只有当您想要自定义更多样式信息时,这才是合理的。请参阅这里了解更多信息。

  • 或者,由于 markdown 允许使用原始 HTML,因此您可以简单地将<div style="line-height: 2em;">...添加</div>为文档的第一行和最后一行.Rmd。这使得双倍行距自成一体,并且还有一个额外的优势,那就是您可以跳过文档中本来应该是单倍行距的部分。这可能是我会做的。

  • 如需更多想法,您可以参考文档这里

相关内容