2010-08-30 3 views
3

В конце опроса, который я провел, мы даем респондентам открытую коробку, чтобы сообщить нам все, что мы не рассматривали в опросе. Эти комментарии будут часто охватывать несколько страниц. Я знаком с longtable пакетом для LaTeX и здесь решением я издевался до:Печатать длинные строки текста LaTeX/Sweave

<<results = tex>>= 
cat("\\begin{longtable}{p{14cm}}\n") 
cat("\\hline\n") 
write.table(toBePrinted, eol = "\\\\\n", col.names = FALSE) 
cat("\\hline\n") 
cat("\\end{longtable}") 
@ 

Хотя это решение технически работает, он не выглядит ужасно полированным и должен быть улучшено. У меня есть два смежных вопроса:

  1. Советы по санитарии текста для выхода Sweave, который должен рассматриваться как tex. Например, если кто-то говорит Your survey is awesome & I would take more surveys for $$$ 100% of the time! специальные символы &, $, % reak havok при обработке через LaTeX. Есть ли что-то более эффективное, чем список gsub звонков, чтобы заменить обидающих персонажей чем-то доброжелательным?
  2. Предложения для лучшего способа печати этих длинных комментариев с помощью Sweave & LaTeX.

ответ

2

Вы можете взглянуть на пакет xtable для создания латексных столов, но это не очень хорошо работает с longtable. В качестве альтернативы, посмотрите на функцию latex в пакете Hmisc, которая имеет опцию «longtable» и позволяет больше контролировать вывод.

Чтобы добавить слэш для специальных символов, используемых в Latex, вы могли бы сделать что-то вроде этого:

add.slash <- function(x){ 
    where <- embed(c(1,gregexpr("[&#$%]",x)[[1]],nchar(x)+1),dim=2) 
    out <- paste(apply(where,1,function(y){substr(x,y[2],y[1]-1)}),collapse="\\") 
    return(out) 
} 

> x <- "I print $ and % and & and # and . and ! and ," 

> cat(add.slash(x),"\n") 
I print \$ and \% and \& and \# and . and ! and , 

EDIT: использования [[пунктуатора]] неверно, что также изменяет пунктуации и так далее. Код исправлен. Обратные косые черты действительно проблематичны.

+1

Как вы отметили, 'xtable' не подходит для таблиц, которые пытаются охватить несколько страниц. Я использую 'xtable' для создания форматированных таблиц LaTeX для остальной части отчета. Мне придется посмотреть на пакет «Hmisc» и посмотреть, смогу ли я что-нибудь сработать. Функция 'add.slash' будет работать так, как должна. Благодаря ~ – Chase

Смежные вопросы