Problema con caracteres extranjeros: algunos funcionan (äöüßĐØ), otros no (ČĈĐĎŸ)

Problema con caracteres extranjeros: algunos funcionan (äöüßĐØ), otros no (ČĈĐĎŸ)

Quiero imprimir algunos caracteres extranjeros en mi PDF final producido con RStudio (0.99) + *.Rnw-File con knitr + XeLaTex (a través de Miktex).

Mientras uso XeLaTex y Polyglossia, puedo lograr que todos los caracteres extranjeros se impriman correctamente en el PDF, si lo paso directamente al entorno Tex del archivo *.Rnw.

Si uso la función Cat("...") para imprimir texto en el PDF dentro de un fragmento R, falla en algunos caracteres ("1."), en otros no ("2....") .

Utilizo el cifrado utf8 en la configuración de RStudio, que obviamente funciona bien dentro del entorno Tex. Pero, ¿por qué a la expresión de gato dentro del fragmento R no le gustan los mismos personajes?

¿Qué puedo hacer para usar la expresión cat("...") (que uso con frecuencia) también para los caracteres extranjeros?

MWE:

\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}

Resultado PDF:

ingrese la descripción de la imagen aquí

Al verificar el archivo tex producido por RSTudio (usando Notepad++ con soporte utf8), la línea dentro del fragmento R se ve así:

ingrese la descripción de la imagen aquí

SO: Win7/64Bit, RStudio 0.99, R 3.2.5, MikTex 2.9.5900

Respuesta1

Puede estar relacionado con la fuente que utiliza su sistema para generar el código; generalmente es otra fuente distinta a la del texto normal. También depende de su sistema, por lo que es posible que deba seguir estosdospasos

¿Qué sucede si agregas esta línea a tu preámbulo de látex después \usepackage{fontspec}?

\usepackage{libertine}

Y es posible que tengas que usarcarácter especial de escape Unicodeen su código R, es más robusto. Eso es por ejemplo ß

cat("\u00DF")
# ß

y la forma más sencilla de hacerlo es utilizarstringi::stri_escape_unicode()

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

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

información relacionada