Angenommen, ich habe eine .Rmd-Datei wie unten:
---
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).
Wenn \@ref (ch1) von Multibyte-Strings (z. B. chinesische Schriftzeichen) umgeben ist, treten möglicherweise Fehler auf.
Reines Multibyte + ref
上下\@ref(ch1)
Gemischtes Multibyte/Singlebyte + Ref
上a下\@ref(ch1)
ref + Multibyte
\@ref(ch1)。
Fehler in nchar(u, itype): ungültiger Multibyte-String, Element 1
Anrufe:... regmatches<- -> regmatches -> Map -> mapply ->
Können Sie sich dieses Problem bitte ansehen? Danke.
Sitzungsinfo()
R-Version 4.0.2 (2020-06-22)
Plattform: x86_64-w64-mingw32/x64 (64-Bit)
Läuft unter: Windows 10 x64 (Build 20180)
Matrix-Produkte: Standard
Gebietsschema:
[1] LC_COLLATE=Chinesisch (vereinfacht)_China.936
[2] LC_CTYPE=Chinesisch (vereinfacht)_China.936
[3] LC_MONETARY=Chinesisch (vereinfacht)_China.936
[4] LC_NUMERIC=C
[5] LC_TIME=Chinesisch (vereinfacht)_China.936
angehängte Basispakete:
[1] stats graphics grDevices utils Datensätze Methoden
[7] Basis
andere angehängte Pakete:
[1] offizier_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 reticulate_1.16
über einen Namensraum geladen (und nicht angehängt):
[1] Rcpp_1.0.5 lattice_0.20-41 prettyunits_1.1.1
[4] sysfonts_0.8.1 ps_1.3.4 utf8_1.1.4
[7] rprojroot_1.3-2assertthat_0.2.1digest_0.6.25
[10] R6_2.4.1 Backports_1.1.9 Evaluation_0.14
[13] pillar_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 labeling_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 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] lifecycle_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 ellipse_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] processx_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
```````
Titel: "Ohne Titel"
Ausgang:
officedown::rdocx_document:
{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
Siehe @ref (ch1).
Wenn @ref (ch1) von Multibyte-Strings (z. B. chinesische Schriftzeichen) umgeben ist, treten möglicherweise Fehler auf.
Ihr Problem hängt damit zusammen, dass Sie nicht mit einer UTF-8-codierten Datei arbeiten.
R, R Markdown und Windows funktionieren nicht gut, wenn die Codierung nicht UTF-8 ist.
Ja, @davidgohel , du hast Recht. Obwohl die .Rmd-Datei in UTF-8 vorliegt, läuft das Betriebssystem mit GBK-Codierung. Wenn ich zu bookdown::word_document2
wechsle, schafft es die Knitr-Engine, die Datei zu kompilieren. Aber ich bekomme immer noch ?? wo das Lesezeichen erscheinen soll.
Sie müssen keine neuen Ausgabeformatfunktionen ausprobieren.
Das unten gezeigte Ergebnis wurde mit einem Windows mit französischem Gebietsschema erstellt. Aber ich habe sichergestellt, dass die Datei als UTF-8 kodiert wurde (ich verwende readr::guess_encoding()
, wenn nicht UTF-8 kodiert, kann ich sie mit fpeek::peek_iconv()
in UTF8 ändern).
Könntest du das Ergebnis zeigen
readr::guess_encoding("your/rmd/file")
Die Ergebnisse sind
nein | Kodierung | Vertrauen
---|-------------|-----------:
1 | UTF-8 | 1
2 | windows-1252 | 0,28
Hallo @madlogos ,
Ich bin auch ein chinesischer Benutzer. Das Multibyte-Problem beschäftigt mich auch schon lange. Hier ist mein Trick dafür:
@ref
;readr::read_lines
sie;"\\\\@ref\\([^\\)]+\\)"
enthalten;"\\\\@ref\\([^\\)]+\\)"
in einer einzigen Zeile stehen;Zum Beispiel sollte 请参考表\@ref(tab: coco)中的数据
aufgeteilt werden als
[Zeile 1] 请参考表
[Zeile 2] \@ref(tab: coco)
[Zeile 3] 中的数据
Nun, ich bin mir nicht sicher, ob dies eine effektive Lösung ist, aber es funktioniert für mich. 😄
@bishun945 danke für die Antwort. Gutes Zeug.
@madlogos Ich habe eine andere Lösung ausprobiert: Stellen Sie einfach Ihr System und Ihre MS Word-Sprache auf Englisch um.