
出力を PDF に knitr
するためにパッケージを使用しています。使用中に 2 つの問題が発生します。R
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!
[....]
行名にサニタイズする必要のある他の特殊文字がある場合は、デフォルトのサニタイズ関数を指定しても使用されないため、カスタム関数にその特殊文字も含める必要があることに注意してください。