在 RMarkdown 中使用 Tufte_handout 旋转 xtable 列名

标签 r knitr r-markdown xtable

我需要在 RMarkdown 中旋转 Tufte_handout 中的列名称,并且我认为缺少“\usepackage{rotating}”。但无论我如何尝试,都无法准确无误地输入。

这是一个工作示例(RStudio 中模板的简化版本)。绘制了前两个表(没有旋转列名),但是当在最后两个具有旋转列名的表中删除“#”时,它会失败。

---
title: "Tufte Handout with rotated tables"
output: rmarkdown::tufte_handout
---

# Table from RStudio template

```{r, results='asis'}
library(xtable)
options(xtable.comment = FALSE)
options(xtable.booktabs = TRUE)
xtable(head(mtcars[,1:6]), caption = "Ok. Template from RStudio.")
```

# Modified table (working)

```{r, results='asis'}
library(xtable)
options(xtable.comment = FALSE)
options(xtable.booktabs = TRUE)
the.table <- xtable(head(mtcars[,1:6]), caption = "Also ok.")
print((the.table), rotate.colnames=FALSE)
```

# Modified table (not working)

```{r, results='asis'}
library(xtable)
options(xtable.comment = FALSE)
options(xtable.booktabs = TRUE)
options(xtable.rotate.colnames = TRUE)
# Next row will fail
#xtable(head(mtcars[,1:6]), caption = "Not ok.")
```

# Modified table (not working)

```{r, results='asis'}
library(xtable)
options(xtable.comment = FALSE)
options(xtable.booktabs = TRUE)
the.table <- xtable(head(mtcars[,1:6]), caption = "Not ok.")
# Next row will fail.
#print((the.table), rotate.colnames=TRUE)
```

更新:感谢@Jonathan 的耐心支持,我终于成功了。步骤如下:

  1. 在 RStudio 中创建了新项目:enhancedtufte(作为包)

  2. 在enhancedtufte下创建目录实例

  3. 在inst下创建目录rmarkdown

  4. 在rmarkdown下创建目录模板

  5. 运行命令“system.file("rmarkdown/templates/tufte_handout", package="rmarkdown")”来查找原始 tufte_handout 的位置,并将目录“tufte_handout”(从模板下)复制到模板 -上一步创建的目录

  6. 将 template.yaml 中的行从“名称:Tufte Handout”编辑为“名称:Tufte Handout 2”

  7. 在 RStudio 中单击“构建并重新加载”

  8. 选定文件 -> 新文件 -> R Markdown...,然后从模板 -> Tufte Handout 2 {enhancedtufte}

  9. 在新文档中,将“output: rmarkdown::tufte_handout”行更改为“output:enhanced_tufte::tufte_handout”

  10. 已复制 https://github.com/rstudio/rmarkdown/tree/master/R 中的所有文件至增强型tufte/R

  11. 将包名称编辑为“enhancedtufte in tufte_handout.R”#获取tufte handlout模板 模板<-系统.文件( “rmarkdown/模板/tufte_handout/资源/tufte-handout.tex”, 包=“增强型” )”

  12. 在 tufte-handout.tex 中添加了“\usepackage{rotating}”

  13. 构建和重新加载

  14. Knit 可与侧 table 配合使用(删除上例中的 #)

最佳答案

\usepackage 指令需要进入 Pandoc 使用的 TeX 模板。

不幸的是,更改模板并不容易,但这并非不可能。您需要执行以下操作:

  1. 在 RStudio 中创建一个新包(例如,enhanced_tufte)。
  2. 将 rmarkdown 的 Tufte 讲义模板复制到您的包中。您可以使用以下命令找到 Tufte 讲义模板的位置:system.file("rmarkdown/templates/tufte_handout", package="rmarkdown");您需要将此文件夹复制到包的 inst/rmarkdown 文件夹中。
  3. 修改包的 tufte-handout.tex 副本以包含 \usepackage{rotating};构建并加载您的包。
  4. 修改您的 YAML header 以使用新模板:输出:enhanced_tufte::tufte_handout

sideways headers

您也可以直接修改 RMarkdown 的模板以包含 \usepackage{rotating},但当然,这会在您下次安装 rmarkdown 包时恢复。

关于在 RMarkdown 中使用 Tufte_handout 旋转 xtable 列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25628993/

相关文章:

r - 如何在 R 中使用 pdf 和 mfrow

r - 如何比较两个数据框是否具有相同的列名和类?

r - helpExtract 函数在 R 3.1.1 和 knitr 1.6.10 中不起作用

使用 knitr 将 R 脚本转换为 HTML。完成基础知识

R flexdashboard删除标题栏

r - 如何在渲染时将 optparse 参数传递给 R-markdown 文件?

r - 如何使用 R 中的 rjson/RJSONIO 的 toJSON 方法生成有效的 JSON?

r - 如何声明数据框中所有字符列的编码?

r - 尽管使用 UTF-8,但在 block 内编码会导致字符丢失

r - 在 rmarkdown 中打印存储在列表中的任意数量的数据帧作为分页表