通常表格顶部有字幕。
但是,RMarkdown总是将标题放在pdf_document输出的底部:
这很奇怪,因为在html文档中,标题会自动放在顶部:
如何将表格标题放在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...
答案 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
。
要将标题放在顶部,可以移动\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}
您可以使用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')
```
所有这一点的警告是,如果您决定编译为html,那么所有输入到pandoc的原始LaTeX都将被删除。