1

tikzDevice は、UTF-8 の Windows でウムラウトを含むコードを出力しません

RMarkdown でレポートを書き、プロットには tikzDevice を使用します。ドイツ語のウムラウト (äöüÖÄÜ) を使用すると、RStudio は次のエラーをスローします。

pandoc.exe: バイト '\xd6' をデコードできません: Data.Text.Internal.Encoding.streamDecodeUtf8With: 無効な UTF-8 ストリームです

最小限の例を次に示します。

---
title: "test"
author: "test"
date: "Today"
output: 
  pdf_document: 
    keep_tex: true
header-includes:
   - \usepackage{tikz}
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
library(tikzDevice)
options(tikzDefaultEngine = "xetex")
```
```{r plot, dev="tikz", external=FALSE}
x <- rnorm(50)
y <- rnorm(50)

plot(x, y, xlab = "ÖÄÜ", ylab = "öäü")
```

このコードでは、tikzDevice は TeX ファイル (プロット) を 1252 エンコーディングで書き込みますが、これはメインの LaTeX ドキュメントに含まれている場合は機能しません。したがって、Pandoc はエラーをスローします。Ubuntuで試してみたところ、コードが機能しました。Windowsエンコーディングがこの問題の原因であると思われますが、解決策がわかりません.

ソース ファイル (Rmd) は UTF-8 エンコーディングです。生成された TeX ファイル (tikzDevice によって) は、UTF-8 エンコーディングではありません。

セッション情報 (Windows):

version  R version 3.6.1 (2019-07-05)
os       Windows 10 x64
system   x86_64, mingw32
ui       RStudio
language (EN)
collate  German_Germany.1252
ctype    German_Germany.1252
tz       Europe/Berlin
date     2019-09-04 

セッション情報 (Ubuntu):

version  R version 3.4.4 (2018-03-15)
os       Ubuntu 18.04.3 LTS
system   x86_64, linux-gnu
ui       X11
language (EN)
collate  C.UTF-8
ctype    C.UTF-8
tz       Europe/Berlin
date     2019-09-04
4

3 に答える 3