2012-01-04 25 views
25

Tôi có một bảng bao gồm các cột sau:Xử lý backslashes Latex trong xtable

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

Những gì tôi muốn làm ra là một bảng với một tiêu đề cột trong đánh dấu cao su, ví dụ $\beta_0$

Tuy nhiên, tôi dường như không thể tìm ra cách để sản xuất các "$ \ beta_0 $" sử dụng print.xtable:

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

trả về một tiêu đề cột của

\eta\_0\$ 

thay vì

$\beta_0$ 

Tôi cho rằng câu trả lời là "sanitize.colnames.function" argum vi phạm cho print.xtable, nhưng không rõ ràng đối với tôi cách sử dụng điều này và ?print.xtable không cung cấp ví dụ nào.

Cụ thể, tôi muốn ra một bảng mủ như:

\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

Xem thêm: http://stackoverflow.com/questions/32865384/function-to-sanitize-strings-for-latex-compilation – landroni

Trả lời

27

Hai vấn đề ở đây; đầu tiên, bạn cần một dấu gạch chéo ngược đôi nếu không nó xử lý nó như là một chuỗi điều khiển. Thứ hai, theo mặc định, xtable khử trùng văn bản để nó không phá vỡ LaTeX. Sử dụng một trong các thông số sanitize. để kiểm soát điều này; không làm vệ sinh, vượt qua nó chức năng nhận dạng.

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

Tôi đã thử các backslashes đôi, nhưng nó là 'sanitize.colnames .function' làm tôi bối rối. Có danh sách các giá trị có thể cho các đối số 'sanitize *' không? –

+1

@David Không có danh sách các giá trị có thể cho đối số 'sanitize'. Như nó nói rõ ràng trong các tài liệu: 'nó phải là một chức năng lấy một vector nhân vật và trả về một, và sẽ được sử dụng cho việc khử trùng thay vì hàm nội bộ mặc định'. Aaron đã đơn giản truyền 'danh tính' là một chức năng không làm gì cả. – joran

+0

Nó có chức năng phù hợp. 'identity' là một hàm cơ sở không làm gì cả. – Aaron