我正在使用Windows 7,R2.15.3和带有knitr 1.1的RStudio 0.97.320。不确定我的pandoc
版本是什么,但我几天前下载了它。
sessionInfo()
R版本2.15.3(2013-03-01) 平台:x86_64-w64-mingw32 / x64(64位)
locale:
[1] LC_COLLATE=Spanish_Argentina.1252 LC_CTYPE=Spanish_Argentina.1252 LC_MONETARY=Spanish_Argentina.1252
[4] LC_NUMERIC=C LC_TIME=Spanish_Argentina.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] tools_2.15.3
我想在html
和Word中获取报告,因此我使用了markdown和pandoc。
我在西班牙语中用n:á-ú
和ñ
上的元音和波浪号重音。
我阅读了很多帖子,我发现问题类似于我使用knitr
新版本解决的问题。但有一个问题我没有找到解决方案。
当我开始时,我使用'system default'
对话框中显示的RStudio
编码,即ISO 8859-1
,RStudio
预览效果很好。然而,当我试图获取Word文档时,pandoc
在强调的元音上窒息。我发现了一篇帖子,展示了如何使用iconv
解决此问题:
iconv -t utf-8“myfile.md”| pandoc -o“myfile.docx”| iconv -f utf-8
虽然这确实解决了pandoc's
无法识别的utf-8
个字符投诉,但出于某些原因pandoc
停止查找我的情节,并出现如下错误:
pandoc:找不到图像`figure / Parent.png',跳过...
如果我只使用非重音字符,pandoc会查找没有问题的图像。我用.md
编辑器查看了两个hex
文件,当我比较处理数字的部分时,我看不出有任何区别:
![plot of chunk Parent](figure/Parent.png)
虽然显然强调的字符完全不同...我已经验证图像文件确实存在于图文件夹
无论如何,在阅读了很多帖子之后,我决定将RStudio
设置为使用UTF-8
编码。只有一个级别的文件,事情很有效。例如,我可以 - 独立编织,然后将以下2个Rmd文件pandoc到Word中:
Parent - SAVED WITH utf-8 encoding in RStudio
========================================================
u with an accent: "ú" SAVED WITH utf-8 encoding in RStudio
```{r fig.width=7, fig.height=6}
plot(cars, main='Parent ú')
```
并单独:
Child - SAVED WITH utf-8 encoding in RStudio
========================================================
u with an accent: "ú" Child file
```{r fig.width=7, fig.height=6}
plot(cars, main='One File Child ú')
```
我在RStudio
中获得了2个完美的优势,从pandoc
获得了2个完美的Word文档。
当我尝试从父部分调用子部分时出现问题。换句话说,如果我在第一个文件中添加以下行:
```{r CallChild, child='TestUTFChild.Rmd'}
```
然后子文件中的所有重音都变得混乱,好像UTF-8
被解释为ISO 8859-1
。 Pandoc
也停止阅读该文件,抱怨它不是utf-8
。
如果有人能指出我正确的方向:
1。 pandoc
如果我留在ISO 8859-1
,则找不到情节。我也试过Windows-1252
,因为这是我在sessionInfo
中看到的,但结果是一样的。
或
2。通过调用子文件,如果UTF-8
是可行的方法。我已经找到了一种设置一些选项来强制子调用中的编码的方法,但我还没有找到它。
非常感谢!
答案 0 :(得分:3)
我认为这个问题应该在最新的开发版本中修复。请参阅the development repository中有关如何安装devel版本的说明。然后你应该能够在RStudio中选择UTF-8,并获得一个UTF-8编码的输出文件。
以防任何人对血腥细节感兴趣:之前失败的原因是我使用您提供的编码编写了子输出,但没有使用相同的编码读取它。现在我只是避免为child documents编写输出文件。