如何使RMarkdown(.Rmd)表格标题位于顶部

时间:2014-09-16 11:34:05

标签: r pandoc r-markdown

通常表格顶部有字幕。

但是,RMarkdown总是将标题放在pdf_document输出的底部:

enter image description here

这很奇怪,因为在html文档中,标题会自动放在顶部:

enter image description here

如何将表格标题放在pdf文档的顶部呢?

可重复的示例(将pdf_document替换为html_document以查看两者) - 我的文件表的内容.Rmd:

---
title: "tables"
author: "Robin Lovelace"
date: "09/16/2014"
output: pdf_document
---

text...

Table: This is a table

| id| age|sex | zone|
|--:|---:|:---|----:|
|  1|  59|m   |    2|
|  2|  54|m   |    2|
|  4|  73|f   |    2|

text...

| id| age|sex | zone|
|--:|---:|:---|----:|
|  1|  59|m   |    2|
|  2|  54|m   |    2|
|  4|  73|f   |    2|

Table: This is a table

texts...

1 个答案:

答案 0 :(得分:4)

This thread can shed some light on the problem you're having请注意,最新版本的pandoc(1.13.2)现在将表格标题放在pdf输出的顶部。

以下示例使用 pandoc-1.12.3

不幸的是,\usepackage{floatrow}建议不适用于longtable(由LaTeX writer for pandoc生成的表格环境),因为它不是float环境。

---
header-includes: 
  - \usepackage{booktabs}
  - \usepackage{longtable}
  - \usepackage{floatrow}
  - \floatsetup[table]{capposition=top}
output: pdf_document
---

| id| age|sex | zone|
|--:|---:|:---|----:|
|  1|  59|m   |    2|
|  2|  54|m   |    2|
|  4|  73|f   |    2|

Table: This is a table

此表格生成以下乳胶:

\begin{longtable}[c]{@{}rrlr@{}}
\toprule\addlinespace
id & age & sex & zone
\\\addlinespace
\midrule\endhead
1 & 59 & m & 2
\\\addlinespace
2 & 54 & m & 2
\\\addlinespace
4 & 73 & f & 2
\\\addlinespace
\bottomrule
\addlinespace
\caption{This is a table}
\end{longtable}

这使您所描述的表格 - 标题不响应yaml标题中的\floatsetup

table 1

要将标题放在顶部,可以移动\caption{}。我个人并不知道一种简单的方法强制longtable标题到顶部(但我不是LaTeX专家)。

\begin{longtable}[c]{@{}rrlr@{}}
\caption{This is a table} \\
\toprule\addlinespace
id & age & sex & zone
\\\addlinespace
\midrule\endhead
1 & 59 & m & 2
\\\addlinespace
2 & 54 & m & 2
\\\addlinespace
4 & 73 & f & 2
\\\addlinespace
\bottomrule
\end{longtable}

table 2

您可以使用xtable程序包生成table环境中的表格,以响应前导中的\floatsetup(尽管该程序包还提供了放置标题在顶部。)

```{r results = 'asis'}
library(xtable)
# Preset some options for printing your xtables
options(xtable.caption.placement = 'bottom', # notice \floatsetup overrides
        xtable.include.rownames = FALSE,
        xtable.comment = FALSE,
        xtable.booktabs = TRUE)

xtable(
  data.frame(
    id = c(1L, 2L, 4L),
    age = c(59L, 54L, 73L),
    sex = c('m', 'm', 'f'),
    zone = rep(2L, 3)),
  caption = 'This is a table')
```

table 3

所有这一点的警告是,如果您决定编译为html,那么所有输入到pandoc的原始LaTeX都将被删除。