用于乳胶的输出重音字符

时间:2015-08-25 15:52:53

标签: r latex

我尝试使用R来创建tex文件的内容。内容包含许多重音字母,我无法正确地将它们写入tex文件。

以下是我想要执行的简短示例:

我有一个文件texinput.tex,它已经存在并且编码为没有BOM的UTF8。当我在Notepad ++中手动编写é并保存此文件时,它会在LaTex中正确编译,并且输出符合预期。

然后我尝试在R中执行此操作:

str.to.write <- "é"
cat(str.to.write, file = "tex_list.tex", append=TRUE)

因此,编码字符xe9出现在tex文件中。 LaTex在尝试编译时抛出此错误:

! File ended while scanning use of \UTFviii@three@octets.<inserted text>\par \include{texinput}

然后我在cat命令之前尝试了以下所有内容:

Encoding(str.to.write) <- "latin1"

- &GT;与上面相同的输出错误

str.to.write <- enc2utf8(str.to.write)

- &GT;与上面相同的输出和错误

Encoding(str.to.write) <- "UTF-8"

- &GT;这出现在tex文件中:\xe9LaTex引发此错误:! Undefined control sequence. \xe

Encoding(str.to.write) <- "bytes"

- &GT;这出现在tex文件中:\\xe9LaTex编译时没有错误,输出为xe9

我知道我可以用é替换\'{e},但我希望有一个自动方法,因为真实内容非常长并且包含来自3种不同拉丁语言的单词,所以它有许多不同的重音字符。

但是,我也很高兴能够自动消毒与Latex一起使用的R输出。我尝试使用xtablesanitize.text.function,但似乎它不接受字符向量作为输入。

2 个答案:

答案 0 :(得分:1)

经过大量的搜索和反复试验,我发现了一些对我有用的东西:

# create output function
writeTex <- function(x) {write.table(x, "tex_list.tex", 
                                     append = TRUE, row.names = FALSE, 
                                     col.names = FALSE, quote = FALSE,
                                     fileEncoding = "UTF-8")}
writeTex("é")

输出符合预期(é),并且在LaTex中编译得非常好。

答案 1 :(得分:0)

使用TIPA处理国际 乳胶中的注音字母(IPA)符号。它已成为语言学领域的标准。