2012-01-04 8 views
25

Ho una tabella che include la seguente colonna:Handling backslashes lattice in xtable

mytable <- data.frame(beta_0 = c(1,2,3) 

Quello che voglio fare è uscita una tabella con una colonna di markup lattice, ad esempio $\beta_0$

Tuttavia, non riesco a capire come per l'uscita del "$ \ beta_0 $" utilizzando print.xtable:

colnames(mytable) <- "$\beta_0$" 
library(xtable) 
print(xtable(mytable), include.rownames = F) 

restituisce una colonna di

\eta\_0\$ 

invece di

$\beta_0$ 

Suppongo che la risposta sia "sanitize.colnames.function" argum ent a print.xtable, ma non è ovvio come utilizzarlo, e ?print.xtable non fornisce esempi.

In particolare, desidero uscita una tabella lattice come:

\begin{table}[ht] 
\begin{center} 
    \begin{tabular}{r} 
    \hline 
    $\beta_0$ \\ 
    \hline 
    1.00 \\ 
    2.00 \\ 
    3.00 \\ 
    \hline 
    \end{tabular} 
\end{center} 
\end{table} 
+0

Consulta anche: http://stackoverflow.com/questions/32865384/function-to-sanitize-strings-for-latex-compilation – landroni

risposta

27

Due problemi qui; in primo luogo, è necessario un doppio backslash perché altrimenti lo tratta come una sequenza di controllo. Secondo, per impostazione predefinita, xtable disinfetta il testo in modo che non si rompa LaTeX. Utilizzare uno dei parametri sanitize. per controllarlo; per non sanificare, passare la funzione di identità.

colnames(mytable) <- "$\\beta_0$" 
print(xtable(mytable), include.rownames = F, sanitize.colnames.function = identity) 
+0

avevo provato le doppie barre inverse, ma è stato il 'sanitize.colnames .function' che mi ha perplesso. Esiste un elenco di possibili valori per gli argomenti 'sanitize *'? –

+1

@David Non esiste un elenco di valori possibili per gli argomenti 'sanitize'. Come dice chiaramente nei documenti: "dovrebbe essere una funzione che prende un vettore di caratteri e ne restituisce uno, e sarà usato per la sanitizzazione invece della funzione interna predefinita". Aaron ha semplicemente passato "identità", che è una funzione che non fa nulla. – joran

+0

Prende qualsiasi funzione adatta. 'identity' è una funzione base che non fa nulla. – Aaron