私は R でドキュメントに取り組んでおり、knitr から pdflatex を使用しており、toLatex
from memisc の拡張バージョンを使用しています。
ただし、カット間隔のあるテーブルを作成している場合、角かっこはサニタイズされず、[
.
Knitr チャンク コードを入れてみsanitize=TRUE
ましたが、これは tikz でしか機能しません。
以前は、gsub を使用して R オブジェクト自体の文字列を置き換えていましたが、これはかなり洗練されていません。私が見逃しているmemiscまたはknitrのニュアンス、またはラテックスの特殊文字を簡単に処理できる別の関数/方法の方向に誰かが私を向けることができることを願っています.
例
library("memisc")
library("Hmisc")
example<-data.frame(cbind(x=1:100,y=1:100))
example$x<-cut2(example$x,m=20)
toLatex(example)
アップデート
SO を検索すると、 apply 関数を使用して latexTranslate を適用することに関する投稿が見つかりましたが、これには文字が必要なため、要素から文字へのクラス分けを解除する必要があります。
関数を識別する別のSO 投稿を見つけましたknitr:::escape_latex
が、チャンクは翻訳する代わりにマークアップとして出力するか (results='asis' を使用)、コード ブロック内に R スタイル テーブルを生成します (results='markup' を使用)。親ドキュメントでフック関数として構成しようとしましたが、すべてのドキュメント コンテンツをマークアップとして出力する効果がありました。これは私にとってまったく新しい分野なので、おそらく間違って実装したのでしょう。
<<setup,include=FALSE>>=
hook_inline = knit_hooks$get('inline')
knit_hooks$set(inline = function(x) {
if (is.character(x)) x = knitr:::escape_latex(x)
hook_inline(x)
})
@
...
<<tab-example,echo=FALSE,cache=TRUE,results='asis',sanitize=TRUE,inline=TRUE>>=
library("Hmisc")
library("memisc")
example<-data.frame(cbind(x=1:100,y=1:100))
example$x<-cut2(example$x,m=20)
toLatex(example)
@
@yihuiによると、これは間違った方法です
更新 2
パーセンテージなどをエスケープする gsub ラッパーを作成しましたが、 [ 記号は引き続きラテックスを数学モードにプッシュし、エラーを発生させます。