首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >崇高的建筑是如何工作的?

崇高的建筑是如何工作的?
EN

Stack Overflow用户
提问于 2014-06-16 00:01:37
回答 1查看 1.4K关注 0票数 5

更新

我的问题是在尝试了对这个问题的评论中详细说明的各种事情之后发生了变化。前面在这个问题中描述的问题可能确实是由于@apple16 16所建议的糟糕的JSON造成的,或者与我的"$PATH"配置有关,就像@RandyLai所讨论的那样。

我可能已经发现了潜在的问题:字符编码。使用我在崇高文本中的构建变体和我的.Rmd文档前面的对话(我在这里询问原始问题时一直在做的)会导致一个与最初描述的错误不同的错误,而我似乎不再得到这样的错误:

代码语言:javascript
复制
Error en yaml::yaml.load(front_matter)

有趣的是,此错误不是在RStudio或终端(或从shell脚本)中抛出的相同的YAML,在这些脚本中,所有内容都呈现得非常完美。当我从YAML中删除diacritics时,我在ST中没有错误;但是,如果我将diacritics放在主文档中,这些内容在生成的NA中被呈现为NA。这种类似于之前发生的事情,我在下面描述为“错误的”HTML输出。

在对这个问题的评论中,我试图对我的"$PATH"做各种事情,就像@RandyLai一样,现在似乎没有必要;我特别指的是在/etc/launchd.config中添加到pandoc的路径:在恢复了默认路径/usr/bin:/bin:/usr/sbin:/sbin之后,一切都在ST中工作,就像我现在描述的那样,无论我在SublimeKnitr-knitr's .sublime-build还是R Box-R Markdown's .sublime-build中使用构建变体。

这是我的地区信息,如果有用的话:

代码语言:javascript
复制
Mi-Mac:~ LeGastronome$ locale
LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

我正在试图了解崇高文本是如何执行其.sublime-build文件的。

在我的Mac上的崇高文本3 (v10.9.3)中,我为SublimeKnitrknitr-MarkdownR盒R Markdown语法创建了一个自定义构建变体;以下是前者的.sublime-build文件,该文件具有完全功能的原始/默认构建,然后是我的错误版本:

代码语言:javascript
复制
{
  "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,

  "variants":
  [
    {
      "name": "Render",
      "working_dir": "$file_path",
      "shell_cmd": "Rscript -e \"rmarkdown::render(input = '$file')\""
    }
  ]
}

下面是我用于R Box的R Markdown的.sublime-build,它非常类似于SublimeKnitr的针织品-标记器构建:

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

  "variants":
  [
    {
      "name": "Render",
      "working_dir": "$file_path",
      "shell_cmd": "Rscript -e \"rmarkdown::render(input = '$file')\""
    }
  ]
}

在我的自定义构建变体中,我尝试使用cmdshell这对键,以及上面代码中引用的shell_cmd,我认为这对于ST3来说是新的。在任何情况下,我在终点站运行时,两人都会做一些不受欢迎的事情:

代码语言:javascript
复制
Rscript -e "rmarkdown::render(input = 'path/to/file.Rmd')"

我也不会在RStudio中运行:

代码语言:javascript
复制
rmarkdown::render(input = 'path/to/file.Rmd')

我得到了相同的结果,使用亚石灰build的构建,就像我使用R Box的构建。我得到的输出如下:

  1. 通过映射: "cmd":"Rscript -e \“rmarkdown::呈现(输入=‘$file’)\”,"shell":true 我得到: 错误: pandoc版本1.12.3或更高版本是必需的,没有找到。Ejecuci‘’on在0.4s内结束,出口代码为1cmd:'Rscript -e‘rmarkdown::呈现(input=\’/path/to/file.rmd\‘)“] dir: /path/to/中肯/目录 请注意,我确实安装了pandoc并已完全运行,例如: Mac:~ LeGastronome$ pandoc -版本pandoc 1.12.4.2,用文本数学0.6.6.1编译,突出显示-kate 0.5.8.1。以下语言支持语法突出显示: actionscript、ada、apache、asn1、asp、awk、bash、bibtex、boo、c、changelog、clojure、cmake、咖啡、coldfusion、commonlisp、cpp、cs、css、curry、d、diff、djangotemplate、doxygen、doxygen、dtd、eiffel、电子邮件、erlang、fortran、fsharp、gcc、go、go、haskell、haxe、html、ini、isocpp、java、javadoc、javascript、json、jsp、julia、乳胶乳、lex、apache、literatehaskell、lua、makefile、makefile、latex、maxima、lua。metafont、mips、modelines、modula2、modula3、monobasic、nasm、noweb、objectivec、objectivecpp、ocaml、octave、pascal、perl、php、pike、postscript、prolog、python、r、松弛性压缩、重组文本、rhtml、roff、ruby、锈病、scala、John、sci、sed、sgml、sql、sqlmysql、sqlpostgresql、tcl、texinfo、verilog、vhdl、xml、xorg、xul、xul、yacc、yaml默认用户目录:/ user /LeGastronome/.pandoc (C) --2014年-- MacFarlane http://johnmacfarlane.net/pandoc:免费软件;有关复制条件,请参见源。没有任何保证,即使是适销性或适合某一特定用途。
  2. 在地图上: "shell_cmd":"Rscript -e \“rmarkdown::呈现(输入=‘$file’)\” 我得到了想要的文档类型,HTML,但HTML错误得离谱,与我从终端和RStudio运行上述代码时得到的不同;此外,仅在崇高文本中,我会收到以下警告: pandoc: YAML头不是一个对象“源”(第1行,第1列) 请注意,如果像上面提到的最初构建配置一样,我使用方括号"[“,如下所示: "shell_cmd":"Rscript -e \“rmarkdown::呈现(输入=‘$file’)\” 当我试图运行构建变量时,崇高不会构建,也不会做任何其他事情,只会保存我的文件。

我的问题似乎是特定于用户的,因此我正在寻找关于如何执行.sublime-build文件的更精确的信息。我从一些非正式文件了解到,默认情况下会运行一些Python;但是,正如上面提到的,当我从终端运行与构建变体中包含的代码相同的代码时,怎么可能:

代码语言:javascript
复制
Rscript -e "rmarkdown::render(input = 'path/to/file.Rmd')"

我从崇高的文本中得到了如此不理想的不同结果?谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-18 01:25:04

看来你的系统不是用英语写的。当您在终端中运行R时,因为"LC_CTYPE“是utf-8,R会将文档读入UTF-8文档。但是,如果命令是在Sublime内部启动的,那么"LC_CTYPE“是空的,因此R不知道使用什么编码。

有几种解决办法。

  1. 最简单但不那么吸引人的解决方案是将您的系统语言转换为英语。
  2. 另一种可能的方法是通过将LANG=en_US.UTF-8添加到~/..Renviron,将R默认区域设置更改为utf8。
  3. 另一种可能的解决方案是在.崇高构建文件中添加变量LANG。检查env 这里选项
  4. 或在rmarkdown::UTF8函数中指定编码。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24235175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档