Domanda

Al termine di un sondaggio che ho condotto, diamo intervistati una scatola a tempo indeterminato di dirci qualsiasi cosa noi non copriamo nei commenti survey.These spesso estendersi su diverse pagine. Sono familiarità con il pacchetto longtable per LaTeX ed ecco la soluzione che ho preso in giro fino:

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

Anche se questa soluzione funziona tecnicamente, non sembra terribilmente lucido e deve essere migliorata. Ho due domande correlate:

  1. suggerimenti Testo igienico-sanitarie per l'uscita Sweave che deve essere trattato come tex. Ad esempio, se qualcuno dice Your survey is awesome & I would take more surveys for $$$ 100% of the time! i caratteri speciali &, $, % havok reak durante l'elaborazione attraverso LaTeX. C'è qualcosa di più efficiente di un elenco delle chiamate gsub per sostituire i caratteri problematici con qualcosa di benevolo?
  2. Suggerimenti per un modo migliore per stampare questi lunghi commenti con Sweave & LaTeX.
È stato utile?

Soluzione

Si potrebbe dare un'occhiata al XTABLE pacchetto per la creazione di tabelle di lattice, ma che non funziona molto bene con immagino longtable. In alternativa, cerca nella funzione lattice nel pacchetto Hmisc, che ha un opzione "longtable" e permette un maggiore controllo sul uscita.

Per aggiungere una barra per i caratteri speciali usati in lattice, si potrebbe fare qualcosa di simile:

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: l'uso di [[: punct:]] è sbagliato, che cambia anche segni di interpunzione e così via. Codice è corretto. Backslash sono davvero problematici.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top