我有以下 Rnw 文档,我打算生成一个包含“ab c”和“α β γ”的小表格。目前,编码似乎造成了问题。有趣的是,pdf 中的输出与 R 控制台中的输出不同。以下示例没有引发任何错误,但没有我想要的希腊字母:
\documentclass{article}
\begin{document}
<<makegreek>>=
greek <- c("\U03B1", "\U03B2", "\U03B3")
greek
@
<<r grecoroman>>=
gr <- data.frame(roman=letters[1:3], greek=greek)
gr
@
<<gr-table, results='asis'>>=
library(xtable)
print(xtable(gr))
@
\end{document}
我也尝试在我的序言中添加以下行:\usepackage[utf8]{inputenc}
,但这只会引发错误:Package inputenc Error: Unicode char \u8:? not set up for use with LaTeX.
答案1
以下是我的第一个想法,但我确信存在更好的方法:
\documentclass{article}
\begin{document}
<<makegreek>>=
greek <- c("$\\alpha$", "$\\beta$", "$\\gamma$")
greek
@
<<r grecoroman>>=
gr <- data.frame(roman=letters[1:3], greek=greek)
gr
@
<<gr-table, results='asis'>>=
library(xtable)
print(xtable(gr),sanitize.text.function = function(x) x)
@
\end{document}
按照上述@mnel 的建议,这似乎也有效(我的其余解决方案保持不变):
\documentclass{article}
\usepackage[greek,english]{babel}
\begin{document}
<<makegreek>>=
greek <- c("\\greektext a", "\\greektext b", "\\greektext c")
greek
@
由于这是从 StackOverflow 迁移过来的,所以我想我会解释一些可能会让熟悉 LaTeX 但不熟悉 R 的人感到困惑的事情。
此处的 R 代码生成 LaTeX 并将其插入文档中。反斜杠在 R 中是特殊字符,因此我们需要对其进行转义(例如\\alpha
)。接下来,我们必须告诉xtable
函数不是尝试处理表条目,因为它通常会假设您希望它将某些特殊字符转换为文字(如\backslash
)。所以我只是传递了一个不执行任何操作的身份函数
sanitize.text.function = function(x) x