Печать длинных строк текста LaTeX / Sweave - PullRequest
3 голосов
/ 30 августа 2010

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

<<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!, специальные символы &, $, % получат havok при обработке через LaTeX. Есть ли что-то более эффективное, чем список gsub вызовов для замены оскорбительных символов чем-то доброжелательным?
  2. Предложения по улучшению способа печати этих длинных комментариев с помощью Sweave & LaTeX.

1 Ответ

2 голосов
/ 30 августа 2010

Вы можете взглянуть на пакет 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 , 

РЕДАКТИРОВАТЬ: использование [[: punct:]] неправильно, что также меняет знаки препинания и так далее.Код исправлен.Обратная косая черта действительно проблематична.

...