通过makefile使用knitr的重音字符

通过makefile使用knitr的重音字符,r,makefile,knitr,non-ascii-characters,R,Makefile,Knitr,Non Ascii Characters,在makefile中使用knitr将.Rnw文件编译成.tex文件时,我遇到了重音字符问题。令人惊讶的是,如果我直接在R中编译相同的文件,问题就会消失 在makefile的某个阶段,我可以使用knitr从.Rnw文件中获取.tex文件: %.tex: %.Rnw Rscript \ -e "library(knitr)" \ -e "options(width=$(WIDTH))" \ -e "knitr::opts_chunk[['set']](fi

在makefile中使用knitr将.Rnw文件编译成.tex文件时,我遇到了重音字符问题。令人惊讶的是,如果我直接在R中编译相同的文件,问题就会消失

在makefile的某个阶段,我可以使用knitr从.Rnw文件中获取.tex文件:

%.tex: %.Rnw
    Rscript \
      -e "library(knitr)" \
      -e "options(width=$(WIDTH))" \
      -e "knitr::opts_chunk[['set']](fig.width=5,fig.height=5,fig.align='center')" \
      -e "knitr::opts_chunk[['set']](fig.path='$(CHKFIGSDIR)/$*-')" \
      -e "knitr::opts_chunk[['set']](cache=TRUE,cache.path='$(CACHDIR)/$*-')" \
      -e "knitr::knit('$<','$@',encoding = 'UTF-8')"

虽然这解决了问题,但它显然破坏了makefile的使用目的(我的设置涉及许多其他文件),因此如果有人能帮助我克服这一问题,我将不胜感激。

您是否尝试了中间的情况,没有Make,
Rscript-e“library(knitr)”-e“knit('variaveis.Rnw','variaveis.tex',encoding='UTF-8')”
?现在就尝试。。。而且它是有效的。。。奇怪的是,它似乎与makefile有关。。。问题是我做了一些进一步的实验,现在我更困惑了。完整故事:variaveis.Rnw与其他文件在一个文件夹中,调用Rscript的makefile就在那里。如果我调用此文件夹中的make,则没有问题!但我在另一个文件夹中调用make,其中另一个makefile cd与第一个makefile一起发送到该文件夹,并在那里调用make。这是我得到错误的地方,如果我在variaveis.Rnw所在的原始文件夹中调用make,则不会出现错误,是的,有两个makefiles的原因,这是一个进步。现在最小化两个makefile。试试中间的例子,比如
cd文件夹;在第二个makefile中创建一个规则,上面写着“cd folder;Rscript…”。操作系统的本机编码是UTF-8,因此您实际上不需要指定
encoding
参数,除非您与使用不支持UTF-8的其他类型操作系统的用户共享此makefile和Rnw文档。我不明白Makefile如何影响此处的knitr
…是的,UTF-8不是必需的,这是在绝望状态下添加的;-)我同意,在尝试了Beta的建议之后,这个问题显然与knitr无关——这是一个makefile和/或shell问题,可能是因为我对这两个方面都不了解
<<>>=
preçoIVA <- 240 * (1 + iva)
@ 
...
label: unnamed-chunk-1
  |...............                                                  |  23%
  ordinary text without R code

  |....................                                             |  31%
label: unnamed-chunk-2
Warning in block_exec(params) :
  failed to tidy R code in chunk <unnamed-chunk-2>
reason: Error in parse(text = x, keep.source = TRUE) : 
  <text>:1:11: unexpected '>'
1: pre<U+00E7>
              ^

Quitting from lines 95-96 (variaveis.Rnw) 
Error in parse(text = x, srcfile = src) : <text>:1:11: unexpected '>'
1: pre<U+00E7>
              ^
Calls: <Anonymous> ... evaluate -> parse_all -> parse_all.character -> parse

Execution halted
make[1]: *** [variaveis.tex] Error 1
> library(knitr)
> knit("variaveis.Rnw","variaveis.tex",encoding="UTF-8")


processing file: variaveis.Rnw
  |.....                                                            |   8%
  ordinary text without R code

  |..........                                                       |  15%
label: unnamed-chunk-1
  |...............                                                  |  23%
  ordinary text without R code

  |....................                                             |  31%
label: unnamed-chunk-2
  |.........................                                        |  38%
  ordinary text without R code

  |..............................                                   |  46%
label: unnamed-chunk-3
...
...
...    
output file: variaveis.tex

[1] "variaveis.tex"
> sessionInfo()
R version 3.0.2 (2013-09-25)
Platform: x86_64-pc-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=pt_PT.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=pt_PT.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=pt_PT.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=pt_PT.UTF-8 LC_IDENTIFICATION=C       

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   highr_0.3      stringr_0.6.2  tools_3.0.2