我尝试使用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文件中:\xe9
。 LaTex
引发此错误:! Undefined control sequence. \xe
Encoding(str.to.write) <- "bytes"
- &GT;这出现在tex文件中:\\xe9
。 LaTex
编译时没有错误,输出为xe9
我知道我可以用é
替换\'{e}
,但我希望有一个自动方法,因为真实内容非常长并且包含来自3种不同拉丁语言的单词,所以它有许多不同的重音字符。
但是,我也很高兴能够自动消毒与Latex一起使用的R输出。我尝试使用xtable
和sanitize.text.function
,但似乎它不接受字符向量作为输入。
答案 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)符号。它已成为语言学领域的标准。