定义:

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

s.t.
> 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}

这不是必需的。

最佳答案

我认为问题在于这种情况要求xtable尝试将奇怪的字符转换为LaTeX。尝试覆盖sanitize.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标记,因此请注意。

关于string - 用Latex代码替换字符串向量中的重音符号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6697757/

10-12 20:42