外来字符的问题:有些有效(äöüßĐØ),有些无效(ČĈĐĎŸ)

外来字符的问题:有些有效(äöüßĐØ),有些无效(ČĈĐĎŸ)

我想在使用 RStudio (0.99) + *.Rnw-File 和 knitr + XeLaTex(通过 Miktex)生成的最终 PDF 中打印一些外文字符。

使用 XeLaTex 和 polyglossia 时,如果我将所有外文字符直接传递给 *.Rnw 文件的 Tex 环境,我就能确保所有外文字符都能在 PDF 中正确打印。

如果我使用 Cat("...") 函数在 R 块内的 PDF 中打印文本,它会在某些字符(“1.”)上失败,但在其他字符上则不会(“2....”)。

我在 RStudio 设置中使用 utf8 编码,这显然在 Tex 环境中运行良好。但为什么 R-chunk 中的 cat-expression 不喜欢相同的字符?

我该如何使用 cat("...") 表达式(我经常使用)来表示外来字符?

梅威瑟:

\documentclass[utf8, a4paper]{article} % with/without [utf8] does not change anything 
% !Rnw weave = knitr
% !TeX program = XeLaTeX 
\usepackage{polyglossia}
\setmainlanguage[]{english} 
\usepackage{fontspec} 

\begin{document}
Directly passed in tex environment:    
1. äöüßĐØ
2. ČĈĐĎŸ

<<echo=FALSE, results = 'asis'>>=
cat("Within a R-Knitr-Junk: \\newline")
cat("1. äöüßĐØ ~")
cat("2. ČĈĐĎŸ")
@
\end{document}

PDF 结果:

在此处输入图片描述

检查 RSTudio 生成的 tex 文件(使用支持 utf8 的 Notepad++),R-chunk 内的行如下所示:

在此处输入图片描述

操作系统:Win7/64位,RStudio 0.99,R 3.2.5,MikTex 2.9.5900

答案1

这可能与系统用于输出代码的字体有关,通常是与普通文本不同的字体。它也依赖于您的系统,因此您可能需要遵循这些脚步

如果你将此行添加到你的乳胶前言中,会发生什么\usepackage{fontspec}

\usepackage{libertine}

你可能必须使用特殊转义 Unicode 字符在你的 R 代码中,它更加健壮。例如

cat("\u00DF")
# ß

最简单的方法是使用stringi::stri_escape_unicode()

stringi::stri_escape_unicode("ČĈĐĎŸ")
# \u010c\u0108\u0110\u010e\u0178

https://stackoverflow.com/questions/29265172/print-unicode-character-string-in-r

相关内容