Ответ 1
Вы можете использовать capture.output()
для захвата строк, напечатанных (неявным) вызовом print.xtable()
. Затем примените gsub()
к выходу, используя шаблон и замену, которые окружают каждое отрицательное число с помощью \textcolor{red}{}
. Наконец, используйте cat()
с sep="\n"
, чтобы записать измененные строки в файл *.tex
.
\documentclass{article}
\begin{document}
<<simpleExamp, results="asis", echo=FALSE>>=
library(knitr)
library(xtable)
testMatrix <- matrix(c(sample(-10:10,10)), ncol = 2)
## I added the following three lines
xt <- capture.output(xtable(testMatrix))
xt_mod <- gsub("(\\s|^)(-\\d*)", "\\1\\\\textcolor{red}{\\2}", xt)
cat(xt_mod, sep="\n")
@
\end{document}
(Заметим также, что я заменил results=tex
на results="asis"
, который предпочитает knitr, и который он будет быстрее обрабатывать.)
Изменить: Добавление изображения итоговой таблицы. (Получение его в форме SO-ready потребовало нескольких настроек для кода, который также включен ниже.)
\documentclass{standalone}
\renewenvironment{table}{}{}% Ignore `table` environment in standalone mode.
\begin{document}
<<simpleExamp, results="asis", echo=FALSE>>=
library(knitr)
library(xtable)
cat("\\Huge\n\n")
testMatrix <- matrix(c(sample(-10:10,10)), ncol = 2)
## I added the following three lines
xt <- capture.output(print.xtable(xtable(testMatrix), table.placement=NULL))
xt_mod <- gsub("(\\s|^)(-\\d*)", "\\1\\\\textcolor{red}{\\2}", xt)
cat(xt_mod, sep="\n")
@
\end{document}