2012-01-04 17 views
25

tengo una tabla que incluye la siguiente columna:Manejo de barras invertidas de látex en xtable

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

Lo que quiero hacer es salida de una tabla con un encabezado de columna en el marcado de látex, por ejemplo, $\beta_0$

Sin embargo, me parece que no puede encontrar la manera de emitir el "$ \ beta_0 $" usando print.xtable:

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

devuelve un encabezado de la columna de

\eta\_0\$ 

en lugar de

$\beta_0$ 

Supongo que la respuesta es el argum "sanitize.colnames.function" a print.xtable, pero no me resulta obvio cómo usarlo, y ?print.xtable no proporciona ejemplos.

En concreto, me gustaría dar salida a una mesa de látex como:

\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

Consulte también: http://stackoverflow.com/questions/32865384/function-to-sanitize-strings-for-latex-compilation – landroni

Respuesta

27

dos cuestiones; primero, necesita una doble barra invertida ya que de lo contrario la trata como una secuencia de control. En segundo lugar, por defecto, xtable desinfecta el texto para que no rompa LaTeX. Utilice uno de los parámetros sanitize. para controlar esto; para no desinfectar, pasarle la función de identidad.

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

Había probado las dobles barras invertidas, pero fueron los 'sanitize.colnames .function' que me dejó perplejo. ¿Hay una lista de posibles valores para los argumentos 'sanitize *'? –

+1

@David No hay una lista de posibles valores para los argumentos 'sanitize'. Como dice claramente en los documentos: 'debe ser una función que tome un vector de caracteres y devuelva uno, y se usará para la desinfección en lugar de la función interna predeterminada'. Aaron simplemente ha pasado 'identity', que es una función que no hace nada. – joran

+0

Toma cualquier función adecuada. 'identity' es una función base que no hace nada. – Aaron

Cuestiones relacionadas