2012-01-04 12 views
25

Mam tabeli, która zawiera następujące kolumny:Handling backslashe lateksu xtable

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

Co chcę zrobić, to wyjście stół z nagłówka kolumny w LaTeX, na przykład $\beta_0$

Jednak nie wydaje się dowiedzieć się, jak wyjście "$ \ beta_0 $" za pomocą print.xtable:

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

zwraca nagłówek kolumny

\eta\_0\$ 

zamiast

$\beta_0$ 

Zakładam, że odpowiedź brzmi "sanitize.colnames.function" argum ent do print.xtable, ale nie jest dla mnie oczywiste, jak z niego korzystać, a ?print.xtable nie podaje żadnych przykładów.

Konkretnie chciałbym wyjście stół lateks jak:

\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

Zobacz także: http://stackoverflow.com/questions/32865384/function-to-sanitize-strings-for-latex-compilation – landroni

Odpowiedz

27

tutaj dwie kwestie; po pierwsze, potrzebujesz podwójnego ukośnika odwrotnego, ponieważ w przeciwnym razie traktuje go jako sekwencję kontrolną. Po drugie, domyślnie xtable oczyszcza tekst, aby nie złamał LaTeXa. Użyj jednego z parametrów sanitize., aby to kontrolować; aby nie odkażać, przekaż mu funkcję tożsamości.

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

próbowałem podwójnych ukośników, ale to właśnie 'sanitize.colnames .funkcji, które mnie wprawiły w zakłopotanie. Czy istnieje lista możliwych wartości dla argumentów 'sanitize *'? –

+1

@David Nie ma listy możliwych wartości dla argumentów 'sanitize'. Jak wyraźnie mówi się w dokumentach: "powinna to być funkcja przyjmująca wektor znaków i zwracająca, i będzie używana do sanityzacji zamiast domyślnej funkcji wewnętrznej". Aaron po prostu przekazał "tożsamość", która jest funkcją, która nic nie robi. – joran

+0

Pełni dowolną odpowiednią funkcję. "identity" to funkcja podstawowa, która nie robi nic. – Aaron