次のような.Rmdファイルがあるとします。
---
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).
\ @ref (ch1)がマルチバイト文字列(漢字など)で囲まれていると、エラーが発生する可能性があります。
純粋なマルチバイト+参照
上下\@ref(ch1)
マルチバイト/シングルバイトの混合+参照
上a下\@ref(ch1)
ref +マルチバイト
\@ref(ch1)。
nchar(u、itype)のエラー:無効なマルチバイト文字列、要素1
呼び出し:... regmatches <-> regmatches-> Map-> mapply->
この問題を調べていただけますか? ありがとう。
sessionInfo()
Rバージョン4.0.2(2020-06-22)
プラットフォーム:x86_64-w64-mingw32 / x64(64ビット)
実行中:Windows 10 x64(ビルド20180)
マトリックス製品:デフォルト
ロケール:
[1] LC_COLLATE =中国語(簡体字)_China.936
[2] LC_CTYPE =中国語(簡体字)_China.936
[3] LC_MONETARY =中国語(簡体字)_China.936
[4] LC_NUMERIC = C
[5] LC_TIME =中国語(簡体字)_China.936
添付の基本パッケージ:
[1]統計グラフィックgrDevicesutilsデータセットメソッド
[7]ベース
その他の付属パッケージ:
[1] Officer_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.2reticulate_1.16
名前空間を介してロードされます(接続されていません):
[1] Rcpp_1.0.5lattice_0.20-41prettyunits_1.1.1
[4] sysfonts_0.8.1 ps_1.3.4 utf8_1.1.4
[7] rprojroot_1.3-2 assertthat_0.2.1digest_0.6.25
[10] R6_2.4.1 backports_1.1.9evaluate_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 fani_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.2ellipsis_0.3.1
[58] generics_0.0.2 vctrs_0.3.2 tools_4.0.2
[61] showtext_0.9glue_1.4.1purrr_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
`` `` `` ``
タイトル:「無題」
出力:
officedown :: rdocx_document:
{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
@ref (ch1)を参照してください。
@ref (ch1)がマルチバイト文字列(漢字など)で囲まれていると、エラーが発生する可能性があります。
問題は、UTF-8でエンコードされたファイルを使用していないという事実に関連しています。
エンコーディングがUTF-8でない場合、R、R Markdown、およびWindowsはうまく機能しません。
はい、 @ davidgohel 、その通りです。 .RmdファイルがUTF-8である場合、OSはGBKエンコーディングで実行されます。 bookdown::word_document2
に変更すると、knitrエンジンはファイルをコンパイルすることができます。 しかし、私はまだ得ますか? ブックマークが表示される場所。
新しい出力フォーマット機能を試す必要はありません。
以下に示す結果は、フランス語ロケールのWindowsで作成されています。 ただし、ファイルがUTF-8としてエンコードされていることを確認しました( readr::guess_encoding()
を使用しています。UTF-8でエンコードされていない場合は、 fpeek::peek_iconv()
でUTF8に変更できます)。
の結果を見せていただけませんか
readr::guess_encoding("your/rmd/file")
結果は
いいえ| エンコーディング| 自信
--- | ------------- | -----------:
1 | UTF-8 | 1
2 | windows-1252 | 0.28
こんにちは@madlogos 、
私も中国人ユーザーです。 マルチバイトの問題も長い間私を悩ませてきました。 これが私の秘訣です:
@ref
を書き込みます。readr::read_lines
;"\\\\@ref\\([^\\)]+\\)"
パターンを含む文字列に一致します。"\\\\@ref\\([^\\)]+\\)"
があることを確認します。たとえば、 请参考表\@ref(tab: coco)中的数据
は次のように分割する必要があります
[1行目] 请参考表
[2行目] \@ref(tab: coco)
[3行目] 中的数据
まあ、これが効果的な解決策であるかどうかはわかりませんが、私にとってはうまくいきます。 😄
@ bishun945お返事ありがとうございます。 いい物。
@madlogos別の解決策を試しました。システムとMSWordの言語を英語に切り替えるだけです。