【问题标题】:Rotated xtable colnames with Tufte_handout in RMarkdown在 RMarkdown 中使用 Tufte_handout 旋转 xtable 列名
【发布时间】:2014-09-02 17:25:21
【问题描述】:

我需要在 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下创建了目录inst

  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. 在新文档中,将“输出:rmarkdown::tufte_handout”行更改为“输出:enhanced_tufte::tufte_handout”

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

  11. Edited package name to "enhancedtufte in tufte_handout.R"# 获取 tufte handlout 模板 模板

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

  13. 构建和重新加载

  14. Knit 适用于侧向桌子(删除上面示例中的 #)

【问题讨论】:

    标签: r knitr r-markdown xtable


    【解决方案1】:

    \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

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

    【讨论】:

    • 谢谢,按照说明操作(但新的包名是enhancedtufte而不是enhanced_tufte),并且可以在创建新的RMarkdown文档时选择编辑过的模板,但是当按下编织按钮时出现错误:'tufte_handout'不是导出的对象来自“命名空间:enhancedtufte”
    • 在您的包的NAMESPACE 文件中,添加以下行:export(tufte_handout)
    • 好的,刚刚完成并得到了这个:namespaceExport(ns,exports) 中的错误:未定义的导出:tufte_handout 错误:加载失败执行暂停
    • 啊,对……你的包需要tufte_handout函数。在包的R/ 文件夹中,您可以添加tufte_handout.R 的R Markdown 副本:github.com/rstudio/rmarkdown/blob/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多