Pregunta

Al final de una encuesta que he realizado, damos a los encuestados una caja abierta para decirnos algo que no cubrimos en los comentarios survey.These a menudo abarcar varias páginas. Estoy familiarizado con el paquete longtable para LaTeX y aquí está la solución que he burlado a:

<<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}")
@

Mientras que esta solución funciona técnicamente, no se ve terriblemente pulido y necesita mejorarse. Tengo dos preguntas relacionadas:

  1. consejos de saneamiento de texto para la salida Sweave que ha de ser tratado como tex. Por ejemplo, si alguien dice Your survey is awesome & I would take more surveys for $$$ 100% of the time! los caracteres especiales &, $, % Havok reak cuando se procesan a través LaTeX. ¿Hay algo más eficiente que una lista de llamadas gsub para reemplazar los caracteres problemáticos con algo benévolo?
  2. Las sugerencias para una mejor forma de imprimir estos largos comentarios con Sweave & LaTeX.
¿Fue útil?

Solución

Se puede echar un vistazo a la xtable paquete para la creación de tablas de látex, pero que no funciona muy bien con conjetura que Longtable. Alternativamente, el látex vistazo a la función en el paquete Hmisc, que tiene una opción "Longtable" y permite un mayor control sobre la salida.

Para añadir una barra de caracteres especiales tal como se utiliza en el látex, se podría hacer algo como esto:

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: el uso de [[: punct:]] está mal, que también cambia signos de puntuación y así sucesivamente. Código se corrige. Las barras invertidas son muy problemáticos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top