2015-09-06 70 views
4

我需要在我的Rnw文件中的xtable创建的表中插入物种名称,我想将相关列转换为斜体格式。没有任何人工干预可能吗?列的xtable斜体格式

我的电话是:

xtable(cklist, caption="Checklist...", align='lllc',label = 'tab:ckzygo') 
+3

您可以将latex命令粘贴到需要斜体的列的周围。因此,例如,'iris $ Species < - paste0(“\\ textit {”,iris $ Species,“}”); print(xtable(head(iris)),sanitize.text.function = identity)'(但我想这算作手动干预) – user20650

+0

,但它完美的工作!谢谢 – bioglp

+1

@ user20650解决方案的优点(在我的使用情况下)是,它将列格式应用于格式,但不将**应用于标题。即它给出了类似于下面答案中发布的结果,除了列标题“种类”不是斜体。 –

回答

2

排版斜体一列(或任何其他非标准字体形状),你应该使用>{\cmd}语法列规范。

指定列类型>{\itshape}l生成斜体的左对齐列。

这是一个比iris$Species <- paste0("\\textit{", iris$Species, "}")更好的解决方案,因为您不需要修改数据,也不需要禁用文本清理。

小插图:

\documentclass{article} 
\usepackage{array} 
\begin{document} 
<<xtableItalics, results = "asis">>= 
library(xtable) 

print(xtable(head(iris), align = c(rep("l", 5), ">{\\itshape}l"))) 
@ 
\end{document} 

的PDF看起来像: enter image description here

请注意,您需要使用array包这个工作。

EDIT:为了显示该方法的灵活性,两个例子:

print(xtable(head(iris), align = c(rep("l", 5), ">{\\textit\\bgroup}l<{\\egroup}"))) 
print(xtable(head(iris), align = c(rep("l", 5), ">{\\textcolor{red}\\bgroup}l<{\\egroup}"))) 

第一行使用\textit{}代替\itshape排版斜体。由于\textit{}要求将文本修改为参数,因此我们需要稍微更复杂的语法。 (在上面链接的wikibooks.org文章中有描述)。

此语法也可用于更改文本的颜色。在更复杂的情况下,需要lrbox,如链接文章中所述。

+0

(+1)很好的答案,我没有意识到这一点。一些快速搜索,我看到你可以使用'bfseries'大胆。有没有改变颜色的等效方法? (一个侧面说明 - 输出略有不同,因为'itshape'不能纠正间距[这里讨论](http://tex.stackexchange.com/questions/41681/correct-way-to-bold-italicize-text/41684#41684) – user20650

+1

@ user20650是的,改变颜色也是可以的,我更新了我的答案以表明这一点,我也包括了如何使用'textit'而不是'itshape'在答案的第一个版本中,我避免了这个因为语法有点复杂。 –