在我进行的调查结束时,我们给受访者一个开放式框,告诉我们调查中未涵盖的任何内容。这些评论通常会跨越几页。我熟悉 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! 特殊字符 &, $, % 处理时受到破坏 LaTeX. 。有没有比列表更有效的东西 gsub 呼吁用仁慈的东西取代有问题的角色?
  2. 关于打印这些长评论的更好方法的建议 Sweave & LaTeX.
有帮助吗?

解决方案

您可以查看用于创建乳胶表的 xtable 包,但我猜这与 longtable 配合得不太好。或者,查看 Hmisc 包中的 Latex 函数,它有一个选项“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:]] 是错误的,这也会改变标点符号等。代码已更正。反斜杠确实有问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top