使用knitr的pandoc模板变量中的UTF-8字符

时间:2014-03-05 13:14:33

标签: r utf-8 markdown knitr pandoc

考虑下面的simpel RMarkdown文件。我已使用UTF-8编码将其保存为test.md。请注意,我在文件中嵌入了自定义pandoc变量'test'。该变量包含UTF-8字符©。

%My title
%The authorslist

<!--pandoc
format: latex
V: test:"Copyright notice. © copyright holder"
-->

# First section

fgsdfg jsdksdfgsdfg

现在我尝试使用knitr从R中编译它。

library(knitr)
pandoc("test.md", format = "latex")

knitr在系统命令中向pandoc插入一个额外的字符。我认为它与编码有关。关于如何解决这个问题的任何建议?

executing pandoc -V test:"Copyright notice. © copyright holder"  -f markdown -t latex -o test.pdf "test.md"

我系统上sessionInfo()的结果

R version 3.0.2 (2013-09-25)
Platform: i386-w64-mingw32/i386 (32-bit)

locale:
[1] LC_COLLATE=Dutch_Belgium.1252  LC_CTYPE=Dutch_Belgium.1252    LC_MONETARY=Dutch_Belgium.1252
[4] LC_NUMERIC=C                   LC_TIME=Dutch_Belgium.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] knitr_1.5

loaded via a namespace (and not attached):
[1] evaluate_0.5.1 formatR_0.10   fortunes_1.5-2 stringr_0.6.2  tools_3.0.2 

1 个答案:

答案 0 :(得分:3)

正如我猜测的那样,您的默认语言环境不是UTF-8,在这种情况下,除非您明确指定编码,否则R无法读取UTF8编码的文件。我在pandoc()函数中拥有added编码支持,因此您现在可以使用pandoc("test.md", format = "latex", encoding = "UTF-8")处理文件。目前,您可以安装development version,以后将在CRAN上成为 knitr v1.6。