3

定義:

df <- data.frame(name=c("México","Michoacán"),dat=c(1,2))

st

> df
        name dat
1    México   1
2 Michoacán   2

アクセント付きの文字を使用してこの表を.texファイルに出力するxtableと、文字化けが発生しますが、これは当然のことです。

Latexアクセントを適切な書式に置き換えたいと思います。

> df
     name dat
1 M\'{e}xico   1
2 Michoac\'{a}n   2

実際のデータセットには、アクセント付きの文字が異なる多くの異なる名前がありますが、すべて同じ種類のアクセント (つまり、スラッシュ) が付いているため、変更する必要が\'{.}あるのはドットの代わりの文字だけです。

ある読者の提案を試す際に、私は次のことを行いました。

> df <- data.frame(name=c("México","Michoacán"),dat=c(1,2))
> df
        name dat
1    México   1
2 Michoacán   2
> df$name <- sub("é", "\\\\'{e}", df$name,)
> df
         name dat
1 M\\'{e}xico   1
2  Michoacán   2
> capture.output(
+       print(xtable(df)),
+       file = "../paper/rTables.tex", append = FALSE)

メモ帳でrTables.texファイルを開いたとき:

% latex table generated in R 2.13.1 by xtable 1.5-6 package
% Fri Jul 15 13:19:17 2011
\begin{table}[ht]
\begin{center}
\begin{tabular}{rlr}
  \hline
 & name & dat \\ 
  \hline
1 & M$\backslash$'\{e\}xico & 1.00 \\ 
  2 & Michoacán & 2.00 \\ 
   \hline
\end{tabular}
\end{center}
\end{table}

これは必要なものではありません。

4

2 に答える 2

2

パッケージを使用して、stringr各タイプのアクセント付き文字を一度に 1 つずつ置き換えます。

library(stringr)
df$name <- str_replace_all(df$name, "é", "\\\\'{e}")  
df$name <- str_replace_all(df$name, "á", "\\\\'{a}")
df$name
于 2011-07-14T18:50:35.430 に答える
1

xtable問題は、このケースが奇妙な文字を に変換する多くの試みを求めていることだと思いますLaTeXsanitize.text.function次のようにオーバーライドしてみてください。

print(xtable(df),sanitize.text.function=function(x){x})

私のシステムではこれが出力されます:

% latex table generated in R 2.13.0 by xtable 1.5-6 package
% Fri Jul 15 10:30:00 2011
\begin{table}[ht]
\begin{center}
\begin{tabular}{rlr}
  \hline
 & name & dat \\ 
  \hline
1 & M\'{e}xico & 1.00 \\ 
  2 & Michoacán & 2.00 \\ 
   \hline
\end{tabular}
\end{center}
\end{table}

LaTeXただし、これを行うと他のマークアップが壊れる可能性があるため、注意してください。

于 2011-07-15T17:33:26.187 に答える