xtable формат курсива для столбца

Мне нужно вставить названия видов в таблицу, созданную xtable в моем файле Rnw, и я хочу преобразовать относительный столбец в формат курсива. Возможно ли это без какого-либо ручного вмешательства?

Мой звонок:

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

person bioglp    schedule 06.09.2015    source источник
comment
Вы можете вставить команду латекса вокруг нужного столбца курсивом. Так, например, iris$Species <- paste0("\\textit{", iris$Species, "}") ; print(xtable(head(iris)), sanitize.text.function = identity) (но я думаю, что это считается ручным вмешательством)   -  person user20650    schedule 07.09.2015
comment
но работает отлично! Благодарность   -  person bioglp    schedule 07.09.2015
comment
Преимущество (в моем случае использования) решения @user20650 заключается в том, что оно применяет форматирование к записям столбца, но не к заголовку. то есть он дает результаты, подобные тем, которые опубликованы в ответе ниже, за исключением того, что заголовок столбца «Виды» не выделен курсивом.   -  person Josh O'Brien    schedule 16.06.2016


Ответы (1)


Чтобы набрать столбец курсивом (или любой другой нестандартной формой шрифта), вы должны использовать >{\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-файл выглядит так: введите здесь описание изображения

Обратите внимание, что для этого вам необходимо использовать пакет 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, как описано в связанной статье.

person CL.    schedule 07.09.2015
comment
(+1) Хороший ответ, я не знал об этом. Небольшой поиск, я вижу, вы можете использовать bfseriess, чтобы выделить жирным шрифтом. Есть ли эквивалентный способ изменить цвет? (Примечание: вывод немного отличается, так как itshape не корректирует интервал обсуждается здесь - person user20650; 07.09.2015
comment
@user20650 user20650 Да, изменение цвета также возможно. Я обновил свой ответ, чтобы показать это. Я также указал, как использовать textit вместо itshape. В первой версии ответа я избегал этого, потому что синтаксис немного сложнее. - person CL.; 07.09.2015