Распечатать длинные строки текста латекс / Sweave

StackOverflow https://stackoverflow.com/questions/3600658

  •  25-09-2019
  •  | 
  •  

Вопрос

В конце опроса я проводил, мы даем респондентов открытым концом, чтобы рассказать нам, что мы не охватывали в опросе. Эти комментарии часто проводятся несколько страниц. Я знаком с 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}")
@

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

  1. Советы по санитарному линию текста для выхода SWEAVE, который должен рассматриваться как tex. Отказ Например, если кто-то говорит Your survey is awesome & I would take more surveys for $$$ 100% of the time! Специальные персонажи &, $, % Reak Halkok при обработке через LaTeX. Отказ Есть ли что-то более эффективное, чем список gsub Призывы заменить оскорбительные персонажи чем-то доброжелательным?
  2. Предложения для лучшего способа печатать эти длинные комментарии с 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:]] неправильно, что также изменяет пунктуации и так далее. Код исправлен. Действие яблоки действительно проблематичны.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top