Распечатать длинные строки текста латекс / Sweave
Вопрос
В конце опроса я проводил, мы даем респондентов открытым концом, чтобы рассказать нам, что мы не охватывали в опросе. Эти комментарии часто проводятся несколько страниц. Я знаком с longtable
Пакет для латекса и вот решение, которое я издевался:
<<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}")
@
Хотя это решение технически работает, оно не выглядит ужасно отполировано и должно быть улучшено. У меня есть два связанных вопроса:
- Советы по санитарному линию текста для выхода SWEAVE, который должен рассматриваться как
tex
. Отказ Например, если кто-то говоритYour survey is awesome & I would take more surveys for $$$ 100% of the time!
Специальные персонажи&, $, %
Reak Halkok при обработке черезLaTeX
. Отказ Есть ли что-то более эффективное, чем списокgsub
Призывы заменить оскорбительные персонажи чем-то доброжелательным? - Предложения для лучшего способа печатать эти длинные комментарии с
Sweave & LaTeX
.
Решение
Вы можете взглянуть на пакет Xtable для создания латексных таблиц, но это не очень хорошо работает с Longtable, я думаю. Альтернативно, посмотрите на функцию латекса в пакете HMISC, который имеет опцию «Longtable» и позволяет больше контролировать на выходе.
Чтобы добавить Slash для специальных символов, используемых в 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:]] неправильно, что также изменяет пунктуации и так далее. Код исправлен. Действие яблоки действительно проблематичны.