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

R标记HTML代码块和输出中缺少水平滚动条,r,knitr,r-markdown,R,Knitr,R Markdown,在生成HTML文档时,如何使编织的.Rmd文档不包装代码?每当我编织文件时,都会得到如下输出: 您可以看到,包含cbind调用的第一行被包装。这是由以下Rmd代码生成的。基本上,我希望看到生成的HTML文件与StackOverflow上的HTML文件类似(即带有水平滚动条) 在评论中的一些人的帮助下,我能够拼凑出一个解决方案。有两个步骤: 在.Rmd YAML标题中包括自定义样式表: css:report\u styles.css 其中包含以下样式: pre,code{空格:pre!重要;溢出

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

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


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

  • 在.Rmd YAML标题中包括自定义样式表:

    css:report\u styles.css

    其中包含以下样式:

    pre,code{空格:pre!重要;溢出-x:scroll!重要}

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

  • 现在,要使块输出最初不换行,我们需要根据设置
    选项(width=a-big-number)


  • 这基本上是@JeffKeller的答案,但是您可以将CSS作为代码片段写入
    .Rmd
    文件中,而不是使用单独的CSS文件并在YAML头文件中摆弄!比如说,

    ```{css, echo=FALSE}
    pre, code {white-space:pre !important; overflow-x:auto}
    ```
    
    我倾向于在大约相同的早期点进行此操作,在这里我进行其他设置,例如

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

    (也许这更像是一个注释,但我不能真正将其格式化。但从另一个答案上的注释来看,我认为有些人可能会发现这很有用。)

    这两个答案的另一个替代方法是使用html在YAML标题后编写css:

    <style>
    pre {
      white-space: pre-wrap;
      background: #F5F5F5;
      max-width: 100%;
      overflow-x: auto;
    }
    
    </style>
    
    
    前{
    空白:预包装;
    背景:#f5;
    最大宽度:100%;
    溢出-x:自动;
    }
    
    @jenesaisquoi,您通过CSS解决我问题的第一部分是完美的——我希望这是HTML输出的默认样式。至于第二个,您建议使用
    DT
    包,但仅适用于
    data.table
    s和
    data.frame
    s。你知道通用的解决方案吗?如果我想避免
    摘要(MyVeryVeryVeryLongVariableNameanditsDataaaaaaaaaaaaaaaaaaaaaaaaaaaaa)输出的文本换行呢?
    ?我想我们很接近了--这让我获得了块输出的水平滚动条,但现在输出文本都一起运行,而且似乎没有保持它在R控制台中的间距和换行符。这可能是个人偏好,但我认为这种行为最好包含为默认值。至少,我认为(1)应该可以通过区块/全局区块选项直接访问(如果还没有,不知何故)。回答得好!但是,设置
    scroll
    选项会向所有代码块添加一个滚动条。我最终使用了
    overflow-x:auto
    因为它只在需要时添加滚动条。您真的可以共享一个指向您的report_styles.css文件的链接吗?
    ```{r setup, include=FALSE}
    knitr::opts_chunk$set(echo = TRUE)
    ```
    
    <style>
    pre {
      white-space: pre-wrap;
      background: #F5F5F5;
      max-width: 100%;
      overflow-x: auto;
    }
    
    </style>