
我正在使用該knitr
套件將我的R
輸出放入 PDF 中。我使用時遇到兩個問題 xtable
:
當我的表格資料有這樣的字元時:
[
在其中,從到 的]
轉換失敗並出現錯誤.tex
.pdf
當我使用包
seqinr:stresc()
來轉義此類字元時,我至少能夠顯示內容(比上面的情況 1 更好)。但仍存在這樣的問題:最終的 PDF 最終顯示如下:\lbrack{}ABD\rbrack{} r22
而不是顯示如下:[ABD] r22
。
誰能告訴我們如何解決這個問題?
答案1
如果您的行名稱以左括號開頭,則可能會發生這種情況,在這種情況下您會遇到大衛在評論中描述的問題。我還沒有發現表體中的括號有問題(但在某些情況下可能會發生)。如果這就是您所看到的,您可以sanitize.rownames.function
向print.xtable
函數添加自訂參數以將它們括在大括號中。
\documentclass{article}
\begin{document}
<<>>=
library("xtable")
DF <- data.frame(x=c("[]", "bleah", "foo[", "[", "]"),
stringsAsFactors = FALSE)
rownames(DF)[1:2] <- c("[1,2]", "[3,4]")
@
<<results="asis">>=
print(xtable(DF),
sanitize.rownames.function = function(x) paste0("{",x,"}"))
@
\end{document}
由此產生的文件.tex
(未顯示)將給出一個有效的 PDF,如果沒有sanitize.rownames.function
,它將給出錯誤:
[....]
! Illegal unit of measure (pt inserted).
<to be read again>
>
l.83 [3,4]
& bleah \\
?
! Emergency stop.
<to be read again>
>
l.83 [3,4]
& bleah \\
! ==> Fatal error occurred, no output PDF file produced!
[....]
請注意,如果您的行名稱中可能還需要清理其他特殊字符,則也必須將其包含在自訂函數中,因為如果您提供了預設清理函數,則不會使用預設清理函數。