xtableのエスケープを抑制する
xtableを使うとmatrixやdataframeをTeX形式の表に変換してくれて便利です。
しかし、表の中に数式などが含まれている場合、xtableの出力結果の中で _
や {
の前にエスケープ文字列 \
がつく場合があります。
当然、出力結果を貼り付けてそのままコンパイルすると、適切に数式が表示されません。
例
> library(tidyverse) > library(xtable) > > d <- tibble(Variable = c("$\\hat{X}$"), + Value = "0.1") > xtable(d) % latex table generated in R 3.5.3 by xtable 1.8-4 package % Tue Jan 28 14:28:26 2020 \begin{table}[ht] \centering \begin{tabular}{rll} \hline & Variable & Value \\ \hline 1 & \$$\backslash$hat\{X\}\$ & 0.1 \\ \hline \end{tabular} \end{table}
xtableオブジェクトをprint関数に渡して以下のようにオプションを指定すると、エスケープしません。これは複数指定できます。
#列ラベルのエスケープを抑制したい場合 xtable(d) %>% print(sanitize.colnames.function = identity) #行ラベルのエスケープを抑制したい場合 xtable(d) %>% print(sanitize.rownames.function = identity) #各要素のエスケープを抑制したい場合 xtable(d) %>% print(sanitize.text.function = identity)
上の例で実際にやってみると、確かにエスケープされなくなります。
xtable(d) %>% print(sanitize.text.function = identity) % latex table generated in R 3.5.3 by xtable 1.8-4 package % Tue Jan 28 14:28:59 2020 \begin{table}[ht] \centering \begin{tabular}{rll} \hline & Variable & Value \\ \hline 1 & $\hat{X}$ & 0.1 \\ \hline \end{tabular} \end{table}
参考: