如何将 Rmd 文件的 HTML 输出左对齐

3

当我将一个Rmd文件转换成html后在浏览器上看到的输出总是居中的。如何将所有内容左对齐,使没有空间浪费?这里的浪费空间指的是TOC左侧未使用的空白。

编辑: 我知道这个线程,但我想保留TOC,我真正想要的是将所有内容移到左侧,以便TOC靠近左对齐。

代码:

---                                                                        
title: "Example SO"                                                        
output:                                                                    
  html_document:                                                           
    toc: true                                                              
    number_sections: true                                                  
    code_folding: "hide"                                                   
    toc_float:                                                             
      collapse: false                                                      
      smooth_scroll: false                                                 
---                                                                        

```{r setup, echo=FALSE}                                                   
knitr::opts_chunk$set(error = TRUE,                                        
                      echo = TRUE,                                         
                      message = FALSE,                                     
                      comment = "",                                        
                      fig.align = "left"                                   
                      )                                                    
```                                                                        

# H1 Stuff                                                                 

```{r, DT}                                                                 
    DT::datatable(mtcars, rownames = FALSE, options = list(pageLength = 2))
```                                                                        

# H2 More stuff                                                            
Bla 

输出结果:

输出结果

我不确定我是否理解了你对浪费空间的定义。但是,你在Rmd文件中有一个浮动的目录,因此左侧会保留一些空间。 - kath
你是否在寻找这个:https://stackoverflow.com/questions/34897498/how-to-align-left-html-document-rendered-by-rmarkdown? - kath
似乎这些都对我不起作用,因为它会覆盖默认主题,我想保留目录但尽可能将其移动到左侧。 - statquant
1个回答

7
由于CSS的规则,具体来说是以下规则,你才能看到“居中”行为:
div.main-container {
    max-width: 1200px;
}

这个东西似乎在编织/生成过程中被某个东西导入,但我不确定是什么。

但是Rmd允许你添加自己的CSS规则。因此,你可以利用CSS的!important来覆盖有问题的规则,使用这个规则:

div.main-container {
  max-width: 100% !important;
}

在与您的Rmd文件相同的目录中创建名为“styles.css”的文件。然后在您的前置元数据(YAML头)中引用CSS文件。
title: "Example SO"                                                        
output:                                                                    
  html_document:                                                           
    toc: true                                                              
    number_sections: true                                                  
    code_folding: "hide"                                                   
    toc_float:                                                             
      collapse: false                                                      
      smooth_scroll: false
    css: styles.css 

你将会得到一个结果,其中内容被移动到了浏览器的最左侧边缘。

enter image description here

这是实现“没有浪费空间”的请求的一种方法,但如果您真的想要左对齐但固定宽度的内容,还有很多其他路线可选。
如果您想“填充目录表和内容块之间的空间”,您可以将此添加到“style.css”。
.tocify {
  max-width: 100% !important;
}
.toc-content {
  padding-left: 10px !important;
}

已经很好了。由于使用您建议的CSS时,目录和文本之间的空格实际上是不同的,您有什么想法可以控制它吗? - statquant
这取决于您想如何处理之间的空间。如果您想将目录扩展到“吸收”该空间,您可以尝试像我所编辑的那样的操作。 - Nate
我希望目录和正文之间的距离保持恒定,但比现在低的错误。 - statquant
“padding-left:” 可能是您想要调整的内容。 - Nate
有时我看到 {css sidenote, echo = FALSE}, div.tocify",有时看到 {css sidenote, echo = FALSE}, .tocify"(没有 'div')。 这两者有什么区别吗? - Adel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接