0

我正在尝试在 Sublime Text 3 中创建自己sublime-build的,因为默认的内置knitr包(https://sublime.wbond.net/packages/knitr)不起作用(对我来说)。我修改了knitr包中的一个,如下所示:

{
    "selector": "text.html.markdown.knitr",
    "working_dir": "${project_path:${folder}}",
    "cmd": ["Rscript", "-e", "library(knitr); knit('$file')" ],
    "shell": true
}

但得到错误:

Error: '\G' is an unrecognized escape in character string starting "'C:\G"
Execution halted
[Finished in 0.4s with exit code 1]
[cmd: ['Rscript', '-e', "library(knitr); knit('C:\\GitHub\\Projects\\test\\testLaTeXing\\knitrRmd\\testRmd.Rmd')"]]

显然是一些 Windows 路径转义问题,但是当我想动态访问文件路径时,如何解决这个问题?

我在windows7上工作。

4

2 回答 2

1

感谢@MattDMo,这就是我最终做出来的。

{
    "selector": "text.html.markdown.knitr",
    "working_dir": "${project_path:${folder}}",
    "cmd": [ "Rscript -e \"library(knitr); knit('$file', output='$file_path/$file_base_name.md')\"" ],
    "shell": true,

    "windows":
    {
        "selector": "text.html.markdown.knitr",
        // "working_dir": "${project_path:${folder}}",
        // "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
        "cmd": ["Rscript", "-e", "library(knitr); knit('${file/\\\\/\\/\/g}', output='${file_path/\\\\/\\/\/g}/$file_base_name.md' )" ],
        "shell": true
    }
}

默认命令来自 knitr sublime 包(https://github.com/andrewheiss/SublimeKnitr/blob/master/knitr-Markdown.sublime-build

于 2013-12-25T14:33:24.343 回答
1

尝试将您的"cmd"线路设置为:

"cmd": ["Rscript", "-e", "library(knitr); knit('${file/\\\\/\//}')" ],

\基本上,这是一个匹配两个字符并用一个字符替换它们的正则表达式/。每个\and都/需要被 a 转义\,因此是鸡划痕。

我不在 Windows 上进行测试,但理论上这应该可行。如果没有,另一个尝试的选择是

"cmd": ["Rscript", "-e", "library(knitr); knit('${file/\\\\/\\/}')" ],

它用\\单个\.

请让我知道它是如何工作的,我有兴趣知道!

于 2013-12-24T04:55:22.943 回答