在RMarkdown中使用Tufte_handout旋转xtable colnames

时间:2014-09-02 17:25:22

标签: r knitr r-markdown xtable

我需要在RMarkdown中的Tufte_handout中旋转列名,我认为“\ usepackage {rotating}”缺失。但无论我如何尝试,我都无法毫无错误地接受它。

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

---
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. 下创建了diretory inst
  4. 在inst

  5. 下创建目录rmarkdown
  6. 在rmarkdown

  7. 下创建目录模板
  8. Ran命令“system.file(”rmarkdown / templates / tufte_handout“,package =”rmarkdown“)”找到原始tufte_handout的位置,并将目录“tufte_handout”(从模板下)复制到模板中 - 上一步创建的目录

  9. 在template.yaml中将“name:Tufte Handout”编辑为“name:Tufte Handout 2”

  10. 点击了RStudio中的“Build&amp; Reload”

  11. 所选文件 - &gt;新文件 - &gt; R Markdown ...,然后从模板 - &gt; Tufte讲义2 {enhancedtufte}

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

  13. 将所有文件从https://github.com/rstudio/rmarkdown/tree/master/R复制到enhancedtufte / R

  14. 编辑包名称为“tufte_handout.R中的enhancedtufte”#get tufte handlout模板 template&lt; - system.file( “rmarkdown /模板/ tufte_handout /资源/塔夫特 - handout.tex” package =“enhancedtufte” )“

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

  16. Build&amp;重载

  17. 针织适用于侧身桌(在上面的示例中删除#)

1 个答案:

答案 0 :(得分:4)

\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标头以使用新模板:output: enhanced_tufte::tufte_handout
  5. sideways headers

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