xtable 함수 생성 라텍스는 대괄호와 같은 특수 문자에 대해 구문 분석되지 않습니다.

xtable 함수 생성 라텍스는 대괄호와 같은 특수 문자에 대해 구문 분석되지 않습니다.

knitrR출력을 PDF로 저장하기 위해 패키지를 사용하고 있습니다 . 다음을 사용하는 데 두 가지 문제가 있습니다 xtable.

  1. [내 테이블 데이터에 다음 과 같은 문자가 있으면 오류로 인해 에서 로의 변환이 실패 합니다 ]..tex.pdf

  2. 이러한 문자를 이스케이프 처리하기 위해 패키지를 사용하면 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!
[....]

행 이름에 삭제해야 하는 다른 특수 문자가 있을 수 있는 경우 이를 사용자 지정 함수에 포함해야 합니다. 이를 제공하면 기본 삭제 함수가 사용되지 않기 때문입니다.

관련 정보