输出用于乳胶的重音字符

Output accented characters for use with latex

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

这是我想要执行的一个简短的最小示例:

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

然后我尝试在 R 中这样做:

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

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

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

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

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

-> 与上面相同的输出错误


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

-> 与上面相同的输出和错误


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

-> 这出现在 tex 文件中:\xe9LaTex 抛出此错误:! Undefined control sequence. \xe


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

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


我知道我可以用\'{e}代替é,但我想有一个自动的方法,因为真正的内容很长,包含来自3种不同拉丁语的单词,所以它有很多不同的重音字符。

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

经过大量搜索和反复试验,我找到了适合我的东西:

# 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 中编译得非常好。

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