R Markdown HTML代码块和输出中缺少水平滚动条

时间:2016-03-26 02:00:31

标签: r knitr r-markdown

如何在生成HTML文档时使我的针织.Rmd文档不包装代码?每当我编织我的文件时,我得到如下输出:

Not what I want...

您可以看到包含cbind调用的第一行被包装。这是由以下Rmd代码生成的。基本上,我希望看到生成的HTML文件看起来像StackOverflow上的那样(即使用水平滚动条)。

---
title: "Title"
author: "Author"
date: "March 25, 2016"
output: html_document
---

```{r}
myveryveryveryveryverylongvariablenameanditsdataaaaaaaaaaaaaaaaaaaaaaaaaaa <- cbind(iris, iris, iris, iris, iris, iris, iris)
head(myveryveryveryveryverylongvariablenameanditsdataaaaaaaaaaaaaaaaaaaaaaaaaaa )
```

然后另外,如何在第二行的文本输出中执行此操作?我试过options(width=...),但这似乎只是使输出更加混乱。我想它也看起来就像它在StackOverflow上做的那样(没有包装,带有水平滚动条):

  Sepal.Length Sepal.Width Petal.Length Petal.Width Species Sepal.Length Sepal.Width Petal.Length Petal.Width Species Sepal.Length Sepal.Width Petal.Length Petal.Width Species Sepal.Length Sepal.Width Petal.Length Petal.Width
1          5.1         3.5          1.4         0.2  setosa          5.1         3.5          1.4         0.2  setosa          5.1         3.5          1.4         0.2  setosa          5.1         3.5          1.4         0.2
2          4.9         3.0          1.4         0.2  setosa          4.9         3.0          1.4         0.2  setosa          4.9         3.0          1.4         0.2  setosa          4.9         3.0          1.4         0.2
3          4.7         3.2          1.3         0.2  setosa          4.7         3.2          1.3         0.2  setosa          4.7         3.2          1.3         0.2  setosa          4.7         3.2          1.3         0.2
4          4.6         3.1          1.5         0.2  setosa          4.6         3.1          1.5         0.2  setosa          4.6         3.1          1.5         0.2  setosa          4.6         3.1          1.5         0.2
5          5.0         3.6          1.4         0.2  setosa          5.0         3.6          1.4         0.2  setosa          5.0         3.6          1.4         0.2  setosa          5.0         3.6          1.4         0.2
6          5.4         3.9          1.7         0.4  setosa          5.4         3.9          1.7         0.4  setosa          5.4         3.9          1.7         0.4  setosa          5.4         3.9          1.7         0.4

3 个答案:

答案 0 :(得分:5)

在评论中的人们的帮助下,我能够拼凑出一个解决方案。有两个步骤:

  1. 在.Rmd YAML标题中包含自定义样式表:

    css: report_styles.css

    其中包含以下样式:

    pre, code {white-space:pre !important; overflow-x:scroll !important}

    这使得回显的代码块不会换行并且它们具有水平滚动条。它也会使浏览器窗口调整大小时块输出不会再进一步

  2. 现在,要使块输出最初不换行,我们需要按this question设置options(width=a-big-number)

答案 1 :(得分:1)

这基本上是@JeffKeller的答案,但是您可以只将.Rmd文件中的CSS编写为代码段,而不必使用单独的CSS文件并在YAML标头中摆弄!例如,

```{css, echo=FALSE}
pre, code {white-space:pre !important; overflow-x:auto}
```

我倾向于在进行其他设置工作的同一时间点进行此操作

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

(也许这更多是评论,但我不能真正格式化它。尽管从其他答案的评论来看,我认为有些人可能会觉得有用。)

答案 2 :(得分:0)

这两个答案的另一种选择-使用html在YAML标头后写CSS:

<style>
pre {
  white-space: pre-wrap;
  background: #F5F5F5;
  max-width: 100%;
  overflow-x: auto;
}

</style>
相关问题