Misalkan saya memiliki file .Rmd seperti di bawah ini:
---
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).
Ketika \@ref (ch1) dikelilingi oleh string multibyte (misalnya, karakter Cina), mungkin akan menemui kesalahan.
Multibyte murni + ref
上下\@ref(ch1)
Campuran multibyte/singlebyte + ref
上a下\@ref(ch1)
ref + multibyte
\@ref(ch1)。
Kesalahan dalam nchar(u, itype): string multibyte tidak valid, elemen 1
Panggilan:... regmatches<- -> regmatches -> Peta -> mapply ->
Bisakah Anda melihat masalah ini? Terima kasih.
info sesi()
R versi 4.0.2 (2020-06-22)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Berjalan di bawah: Windows 10 x64 (build 20180)
Produk matriks: default
lokal:
[1] LC_COLLATE=Cina (Sederhana)_Cina.936
[2] LC_CTYPE=Cina (Sederhana)_Cina.936
[3] LC_MONETARY=Cina (Sederhana)_Cina.936
[4] LC_NUMERIC=C
[5] LC_TIME=Cina (Sederhana)_Cina.936
paket dasar terlampir:
[1] statistik grafik grDevices menggunakan metode kumpulan data
[7] dasar
paket terlampir lainnya:
[1] officer_0.3.12 officedown_0.2.0 flextable_0.5.10
[4] ggplot2_3.3.2 rapi_1.1.1 rajutan_1.29
[7] dplyr_1.0.2 reticulate_1.16
dimuat melalui namespace (dan tidak dilampirkan):
[1] Rcpp_1.0.5 kisi_0.20-41 unit cantik_1.1.1
[4] sysfonts_0.8.1 ps_1.3.4 utf8_1.1.4
[7] rprojroot_1.3-2 menegaskan bahwa_0.2.1 intisari_0.6.25
[10] R6_2.4.1 backports_1.1.9 evaluasi_0.14
[13] pilar_1.4.6 gdtools_0.2.2 rlang_0.4.7
[16] curl_4.3 uuid_0.1-4 data.table_1.13.0
[19] callr_3.4.3 Matrix_1.2-18 rmarkdown_2.3
[22] desc_1.2.0 pelabelan_0.3 devtools_2.3.1
[25] stringr_1.4.0 munsell_0.5.0 tinytex_0.25
[28] compiler_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 rapi pilih_1.1.0
[37] tibble_3.0.3 bookdown_0.20 fansi_0.4.1
[40] crayon_1.3.4 showtextdb_3.0 denganr_2.2.0
[43] grid_4.0.2 jsonlite_1.7.0 gtable_0.3.0
[46] siklus hidup_0.2.0 magrittr_1.5 scales_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 remotes_2.2.0
[55] testthat_2.3.2 xml2_1.3.2 elipsis_0.3.1
[58] generics_0.0.2 vctrs_0.3.2 tools_4.0.2
[61] showtext_0.9 glue_1.4.1 purrr_0.3.4
[64] prosesx_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] gunakan ini_1.6.1
```````
Judul : "Tanpa Judul"
keluaran:
officedown::rdocx_document:
{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
Lihat @ref (ch1).
Ketika @ref (ch1) dikelilingi oleh string multibyte (misalnya, karakter Cina), mungkin akan mengalami kesalahan.
Masalah Anda terkait dengan fakta bahwa Anda tidak bekerja dengan file yang disandikan UTF-8.
R, R Penurunan harga dan Windows tidak berfungsi dengan baik saat penyandian bukan UTF-8.
Ya, @davidgohel , Anda benar. Meskipun file .Rmd dalam UTF-8, OS berjalan pada pengkodean GBK. Ketika saya mengubah ke bookdown::word_document2
, mesin rajutan berhasil mengkompilasi file. Tapi aku masih mengerti?? tempat bookmark seharusnya muncul.
Anda tidak perlu mencoba fungsi format keluaran baru.
Hasil yang ditunjukkan di bawah ini dibuat dengan Windows dengan lokal Perancis. Tetapi saya memastikan file dikodekan sebagai UTF-8 (saya menggunakan readr::guess_encoding()
, jika tidak dikodekan UTF-8, saya dapat mengubahnya ke UTF8 dengan fpeek::peek_iconv()
).
Bisakah Anda menunjukkan hasil dari
readr::guess_encoding("your/rmd/file")
Hasilnya adalah
tidak | pengkodean | kepercayaan diri
---|-------------|-----------:
1 | UTF-8 | 1
2 | windows-1252 | 0,28
Hai @madlogos ,
Saya juga pengguna Cina. Masalah multibyte juga telah mengganggu saya untuk waktu yang lama. Inilah trik saya untuk itu:
@ref
seperti biasa;readr::read_lines
itu;"\\\\@ref\\([^\\)]+\\)"
;"\\\\@ref\\([^\\)]+\\)"
pada satu baris;Misalnya, 请参考表\@ref(tab: coco)中的数据
harus dibagi menjadi
[baris 1] 请参考表
[baris 2] \@ref(tab: coco)
[baris 3] 中的数据
Yah, saya tidak yakin apakah ini solusi yang efektif tetapi itu berhasil untuk saya. 😄.
@bishun945 terima kasih atas perubahannya. Barang bagus.
@madlogos Saya telah mencoba solusi lain: cukup alihkan sistem Anda dan bahasa MS Word ke Bahasa Inggris.