我正在使用该knitr
包将输出转换R
为 PDF。使用时遇到两个问题 xtable
:
当我的表格数据包含如下字符时:
[
,从到 的]
转换失败并出现错误.tex
.pdf
当我使用该包
seqinr:stresc()
转义此类字符时,我至少能够显示内容(比上面的情况 1 更好)。但仍然存在问题,即最终的 PDF 最终显示如下:\lbrack{}ABD\rbrack{} r22
而不是显示如下:[ABD] r22
。
有人能告诉我们如何解决这个问题吗?
答案1
如果您的行名以左括号开头,则可能会发生这种情况,在这种情况下,您会遇到 David 在他的评论中描述的问题。我还没有看到表格主体中的括号存在问题(但在某些情况下可能会发生)。如果您看到这种情况,您可以向函数添加自定义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!
[....]
请注意,如果您的行名中可能有其他需要清理的特殊字符,那么您还必须将其包含在自定义函数中,因为如果您提供了默认的清理函数,则不会使用默认的清理函数。