Supongamos que tengo un archivo .Rmd como el siguiente:
---
title: "Untitled"
output:
officedown::rdocx_document:
default
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
md5-4caffc4710057148fdad652000287a10
# Chapter1 {#ch1}
# Chapter2 {#ch2}
Refer to \@ref(ch1).
Cuando \@ref (ch1) está rodeado de cadenas de varios bytes (por ejemplo, caracteres chinos), es posible que encuentre errores.
Multibyte puro + referencia
上下\@ref(ch1)
Mixto multibyte/monobyte + ref
上a下\@ref(ch1)
referencia + multibyte
\@ref(ch1)。
Error en nchar(u, tipo): cadena multibyte no válida, elemento 1
Llamadas:... regmatches<- -> regmatches -> Mapa -> mapply ->
¿Puedes por favor investigar este problema? Gracias.
sessionInfo()
R versión 4.0.2 (2020-06-22)
Plataforma: x86_64-w64-mingw32/x64 (64 bits)
Ejecutándose bajo: Windows 10 x64 (compilación 20180)
Productos Matrix: por defecto
lugar:
[1] LC_COLLATE=Chino (simplificado)_China.936
[2] LC_CTYPE=Chino (simplificado)_China.936
[3] LC_MONETARY=Chino (simplificado)_China.936
[4] LC_NUMERICO=C
[5] LC_TIME=Chino (simplificado)_China.936
Paquetes básicos adjuntos:
[1] estadísticas gráficos grDevices utils conjuntos de datos métodos
[7] base
otros paquetes adjuntos:
[1] oficial_0.3.12 officedown_0.2.0 flextable_0.5.10
[4] ggplot2_3.3.2 tidyr_1.1.1 knitr_1.29
[7] dplyr_1.0.2 reticulado_1.16
cargado a través de un espacio de nombres (y no adjunto):
[1] Rcpp_1.0.5 lattice_0.20-41 unidades bonitas_1.1.1
[4] sysfonts_0.8.1 ps_1.3.4 utf8_1.1.4
[7] rprojroot_1.3-2 afirmar que_0.2.1 digest_0.6.25
[10] R6_2.4.1 backports_1.1.9 evaluar_0.14
[13] pilar_1.4.6 gdtools_0.2.2 rlang_0.4.7
[16] curl_4.3 uuid_0.1-4 datos.tabla_1.13.0
[19] callr_3.4.3 Matrix_1.2-18 rmarkdown_2.3
[22] desc_1.2.0 etiquetado_0.3 devtools_2.3.1
[25] stringr_1.4.0 munsell_0.5.0 tinytex_0.25
[28] compilador_4.0.2 xfun_0.16 pkgconfig_2.0.3
[31] systemfonts_0.2.3 base64enc_0.1-3 pkgbuild_1.1.0
[34] rvg_0.2.5 htmltools_0.5.0 tidyselect_1.1.0
[37] tibble_3.0.3 bookdown_0.20 fansi_0.4.1
[40] crayon_1.3.4 showtextdb_3.0 withr_2.2.0
[43] grid_4.0.2 jsonlite_1.7.0 gtable_0.3.0
[46] ciclo de vida_0.2.0 magrittr_1.5 escalas_1.1.1
[49] zip_2.1.0 cli_2.0.2 stringi_1.4.6
[52] farver_2.0.3 fs_1.5.0 remotos_2.2.0
[55] testthat_2.3.2 xml2_1.3.2 puntos suspensivos_0.3.1
[58] genéricos_0.0.2 vctrs_0.3.2 herramientas_4.0.2
[61] showtext_0.9 pegamento_1.4.1 purrr_0.3.4
[64] procesox_3.4.3 pkgload_1.1.0 yaml_2.2.1
[67] colorspace_1.4-1 sessioninfo_1.1.1 memoise_1.1.0
[70] usethis_1.6.1
```````
título: "Sin título"
producción:
officedown::rdocx_document:
{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
Consulte @ref (ch1).
Cuando @ref (ch1) está rodeado de cadenas de varios bytes (por ejemplo, caracteres chinos), es posible que encuentre errores.
Su problema está relacionado con el hecho de que no está trabajando con un archivo codificado en UTF-8.
R, R Markdown y Windows no funcionan bien cuando la codificación no es UTF-8.
Sí, @davidgohel , tienes razón. Aunque el archivo .Rmd está en UTF-8, el sistema operativo se ejecuta en codificación GBK. Cuando cambio a bookdown::word_document2
, el motor knitr logra compilar el archivo. Pero todavía tengo ?? donde se supone que debe aparecer el marcador.
No necesita probar nuevas funciones de formato de salida.
El resultado que se muestra a continuación está hecho con Windows con configuración regional francesa. Pero me aseguré de que el archivo estuviera codificado como UTF-8 (estoy usando readr::guess_encoding()
, si no está codificado en UTF-8, puedo cambiarlo a UTF8 con fpeek::peek_iconv()
).
¿Podrías mostrar el resultado de
readr::guess_encoding("your/rmd/file")
los resultados son
no | codificación | confianza
---|-------------|-----------:
1 | UTF-8 | 1
2 | ventanas-1252 | 0.28
Hola @madlogos ,
También soy un usuario chino. El problema de los multibytes también me ha molestado durante mucho tiempo. Aquí está mi truco para ello:
@ref
como de costumbre;readr::read_lines
;"\\\\@ref\\([^\\)]+\\)"
;"\\\\@ref\\([^\\)]+\\)"
en una sola línea;Por ejemplo, 请参考表\@ref(tab: coco)中的数据
debe dividirse como
[línea 1] 请参考表
[línea 2] \@ref(tab: coco)
[línea 3] 中的数据
Bueno, no estoy seguro de si esta es una solución efectiva, pero funciona para mí. 😄
@bishun945 gracias por el cambio. Buen material.
@madlogos He probado otra solución: simplemente cambie su sistema y el idioma de MS Word a inglés.