这也许可能与tables
包要做到这一点,但xtable
提供了一个非常简单的解决方案。以下最低示例显示了两个不同的方法:
\documentclass{article}
\begin{document}
<<setup, echo = FALSE>>=
library(xtable)
library(knitr)
opts_chunk$set(echo = FALSE, results = "asis")
matrix <- matrix(1:9, nrow = 3)
colnames(matrix) <- c(
"first column",
"second column which I want to have 2 lines because of its very long header title",
"third column")
@
<<ChangeColumnType>>=
print(xtable(matrix, align = c("r", "r", "p{4cm}", "r")), include.rownames = FALSE)
@
<<ChangeOnlyCell>>=
colnames(matrix)[2] <- "\\multicolumn{1}{p{4cm}}{second column which I want to have 2 lines because of its very long header title}"
print(xtable(matrix), include.rownames = FALSE, sanitize.colnames.function = identity)
@
\end{document}
第一种方法(块ChangeColumnType
)非常简单:它设置到p{4cm}
列型柱2。这给出了一个4厘米宽的列自动文字换行(更多细节见wikibooks.org)。缺点是,这会影响整个列,而不仅仅是第一行的单元格。
第二种方法(块ChangeOnlyCell
)使用默认对齐方式(或任何您想要通过align
指定),并使用\multcolumn
仅更改有问题的单元格的列类型。 默认情况下,xtable
“清理”您的表格,这意味着所有特殊的乳胶字符都将被转义。这很方便,因为你不能(很容易)破坏你的TEX代码,但是在这里我们手动的想注入LaTeX代码,所以我们必须关闭它。因此,请设置sanitize.colnames.function = identiy
。所有列名将在您指定时使用 - 所以在LaTeX中使用具有特殊含义的字符时要小心。
从上面的例子提供了以下表格:
你能简单地添加\ n,如“我想有2个\ nlines ...... – lawyeR
它是否适合你seconf列@lawyeR对我来说“\ n”简单地被忽略 – dariaa
@dariaa,你是对的,似乎没有工作(我也尝试了一个简单的回车并尝试了setNames()函数,我不是乳胶大师,但是你有查看http://tex.stackexchange.com/questions/39253/multiline-table-header – lawyeR