报告R包中的tex2docx函数出错

时间:2013-07-27 11:39:51

标签: r report docx tex

我正在尝试在tex2docx reports包中重现R函数的示例,并收到以下错误。

DOC <- system.file("extdata/doc_library/apa6.qual_tex/doc.tex",
   package = "reports")
BIB <- system.file("extdata/docs/example.bib", package = "reports")
tex2docx(DOC, file.path(getwd(), "test.docx"), path = NULL, bib.loc = BIB)

错误消息

pandoc.exe: Error reading bibliography `C:/Users/Muhammad'
citeproc: the format of the bibliographic database could not be recognized
using the file extension.
docx file generated!
Warning message:
running command 'C:\Users\MUHAMM~1\AppData\Local\Pandoc\pandoc.exe -s C:/Users/Muhammad Yaseen/R/win-library/3.0/reports/extdata/doc_library/apa6.qual_tex/doc.tex -o C:/Users/Muhammad Yaseen/Documents/test.docx --bibliography=C:/Users/Muhammad Yaseen/R/win-library/3.0/reports/extdata/docs/example.bib' had status 23

我想知道如何让tex2docx reports包中的R功能正常运行。任何帮助将受到高度赞赏。感谢

1 个答案:

答案 0 :(得分:4)

如上面的注释所述,错误是由传递文件名/路径引起的,包括一些也没有转义的空格,也没有引用。解决方法可能是在shQuote传递给命令行之前将所有文件路径和名称包装在system内。

代码:https://github.com/trinker/reports/pull/31


演示:

  1. 正在加载包

    library(reports)
    
  2. 创建一个虚拟目录,其名称中包含一个空格,用于保存bib文件

    dir.create('foo bar')
    file.copy(system.file("extdata/docs/example.bib", package = "reports"), 'foo bar/example.bib')
    
  3. 指定源和复制的bib文件:

    DOC <- system.file("extdata/doc_library/apa6.qual_tex/doc.tex", package = "reports")
    BIB <- 'foo bar/example.bib'
    
  4. 运行测试:

    tex2docx(DOC, file.path(getwd(), "test2.docx"), path = NULL, bib.loc = BIB)
    

  5. 免责声明:我尝试测试此拉取请求,但我无法设置一个环境,其中包含所有必需的工具,可以在5分钟内使用晕影和其他所有内容运行R CMD check(对不起,但现在正在度假,午餐后享受午睡),所以请将此拉取请求视为“未经测试” - 尽管应该工作。