设置' texi2dvi'对于' R CMD Rd2pdf'

时间:2015-11-30 20:06:45

标签: r documentation packages texinfo

我的texi2dvi显然位于R CMD Rd2pdf没有预料到的地方。我的位于/usr/local/bin/texi2dvi,正在寻找/usr/local/opt/texinfo/bin/texi2dvi

[KenMacBook:~/git] % \R CMD Rd2pdf missing
Hmm ... looks like a package
Converting Rd files to LaTeX 
Creating pdf output from LaTeX ...
Error in texi2dvi(file = file, pdf = TRUE, clean = clean, quiet = quiet,  : 
  Running 'texi2dvi' on 'Rd2.tex' failed.
Messages:
sh: /usr/local/opt/texinfo/bin/texi2dvi: No such file or directory
Output:

Error in texi2dvi(file = file, pdf = TRUE, clean = clean, quiet = quiet,  : 
  Running 'texi2dvi' on 'Rd2.tex' failed.
Messages:
sh: /usr/local/opt/texinfo/bin/texi2dvi: No such file or directory
Output:

Error in running tools::texi2pdf()

我可以通过运行R_TEXI2DVICMD=/usr/local/bin/texi2dvi R CMD Rd2pdf解决此问题,然后正确构建文档。

我想将此设置放在我的.Rprofile中,以便像RStudio(它不会读取我的.zshrc)和其他随机R会话之类的内容会看到该设置。但是,以下这两项似乎都没有对我的.Rprofile

产生任何影响
Sys.setenv(R_TEXI2DVICMD='/usr/local/bin/texi2dvi')
options(texi2dvi='/usr/local/bin/texi2dvi')

我猜.Rprofile没有被R CMD命令读取,这是正确的吗?是否有适当的地方放置我的设置?

更新

由于Dirk怀疑我怀疑.RProfile影响R CMD Rd2pdf :-),这是我的证据:

[KenMacBook:~/git] % tail -n2 ~/.Rprofile
Sys.setenv(TEXI2DVI='/no/where')
cat("End of RProfile\n")

[KenMacBook:~/git] % Rscript -e '2+2'    
End of RProfile
[1] 4

[KenMacBook:~/git] % R CMD Rd2pdf missing
Hmm ... looks like a package
Converting Rd files to LaTeX 
Creating pdf output from LaTeX ...
Error in texi2dvi(file = file, pdf = TRUE, clean = clean, quiet = quiet,  : 
  Running 'texi2dvi' on 'Rd2.tex' failed.
Messages:
sh: /usr/local/opt/texinfo/bin/texi2dvi: No such file or directory
Output:

Error in texi2dvi(file = file, pdf = TRUE, clean = clean, quiet = quiet,  : 
  Running 'texi2dvi' on 'Rd2.tex' failed.
Messages:
sh: /usr/local/opt/texinfo/bin/texi2dvi: No such file or directory
Output:

Error in running tools::texi2pdf()

请注意,文件的设置在正常的R会话中受到尊重,但设置TEXI2DVI在此处无效。

3 个答案:

答案 0 :(得分:1)

这似乎是错误的,因为/usr/local/bin/texi2dvi应该在$PATH中。 我有

edd@max:~$ grep texi2dvi /etc/R/Renviron
## used for options("texi2dvi")
R_TEXI2DVICMD=${R_TEXI2DVICMD-${TEXI2DVI-'/usr/bin/texi2dvi'}}
edd@max:~$ 

请注意,如果您要设置TEXI2DVI环境变量,则可能必须先启动,然后启动R-think ~/.bash_profile

以下示例明确设置TEXI2DVI

edd@max:/tmp$ TEXI2DVI=/no/where R CMD Rd2pdf Rcpp-package.Rd 
Converting Rd files to LaTeX ...
  Rcpp-package.Rd
Creating pdf output from LaTeX ...
Error in texi2dvi(file = file, pdf = TRUE, clean = clean, quiet = quiet,  : 
  Running 'texi2dvi' on 'Rd2.tex' failed.
Messages:
sh: 1: /no/where: not found
Output:

Error in texi2dvi(file = file, pdf = TRUE, clean = clean, quiet = quiet,  : 
  Running 'texi2dvi' on 'Rd2.tex' failed.
Messages:
sh: 1: /no/where: not found
Output:

Error in running tools::texi2pdf()
edd@max:/tmp$ 

如您所见,它受到尊重。

编辑:另外,我们不要忘记RenvironRenviron.site因此您有很多选择,所以请设置他的。

编辑2:您似乎怀疑~/.Rprofile

edd@max:~$ tail -1 .Rprofile
cat("End of .Rprofile\n")
edd@max:~$ Rscript -e '2+2'
End of .Rprofile
[1] 4
edd@max:~$ 

答案 1 :(得分:1)

有同样的问题,并想出如何解决它 - 我认为它与先前安装的macports干扰使用brew安装R的路径有关(假设你在OSX上)。

在终端中运行以下命令:

defaults write com.apple.finder AppleShowAllFiles TRUE

然后去Apple>强制退出> Finder>重新启动。您现在可以看到隐藏文件了。

在你的用户目录中可能有一个名为.profile的文件,在这个文件中我注释掉了这一行(即在它前面放一个#,如图所示)。

#export PATH=/opt/local/bin:/opt/local/sbin:$PATH

然后导航到你的R.home()(通过在R)中运行R.home()来获得它

R.home()
[1] "/usr/local/Cellar/r/3.2.4_1/R.framework/Resources"

并修改Renviron中的以下行

R_TEXI2DVICMD=${R_TEXI2DVICMD-${TEXI2DVI-'/usr/local/bin/texi2dvi'}}

这为我修好了。

将取景器恢复正常运行

defaults write com.apple.finder AppleShowAllFiles FALSE

终端中的

并重新启动它。

希望有所帮助。

答案 2 :(得分:-1)

与Dirk的来回产生了一些解决方案,但它们已经被埋葬了,所以我在这里总结一下。

诊断:etc/Renviron包含陈旧信息。

我的/usr/local/Cellar/r/3.2.2_1/R.framework/Versions/3.2/Resources/etc/Renviron文件(使用Homebrew安装)包含以下行:

R_TEXI2DVICMD=${R_TEXI2DVICMD-${TEXI2DVI-'/usr/local/opt/texinfo/bin/texi2dvi'}}

这是某人(可能是我,可能是Homebrew的R包创建者)的遗留物,他在默认位置安装了MacTeX,然后该路径在Renviron文件中及时冻结。我的texi2dvi现在位于/usr/local/bin/texi2dvi,因此需要以某种方式覆盖此值。

1)$HOME/.Rprofile$HOME/.Renviron无济于事。

它们不会很快生效,让R注意到它们。 R根据它在启动时看到的环境设置options("texi2dvi")

% tail -n2 ~/.Rprofile
Sys.setenv(TEXI2DVI='/no/where')
options(texi2dvi='/no/where/else')

% cat ~/.Renviron
TEXI2DVI=/no/where/at/all

% R CMD Rd2pdf myPackageDirectory   # Still no joy
Hmm ... looks like a package
Converting Rd files to LaTeX 
Creating pdf output from LaTeX ...
Error in texi2dvi(file = file, pdf = TRUE, clean = clean, quiet = quiet,  : 
  Running 'texi2dvi' on 'Rd2.tex' failed.
Messages:
sh: /usr/local/opt/texinfo/bin/texi2dvi: No such file or directory
...

有关启动文件的详细信息,请参阅“Initialization at Start of an R Session”,但如上所示,该文档中有关覆盖R_HOME/etc/Renviron的信息可能不正确或不完整。也许它应该在关于R_CHECK_ENVIRONR_BUILD_ENVIRON的部分中进行修改,以便也包含R CMD RD2*的内容,但我不确定这是不是正在发生的事情,我只知道这不是解决方案。

2)$HOME/.zshrc(和朋友)无济于事。

在OS X上,启动GUI应用程序时不会查询您的shell启动文件。您可以use defaults write or launchctl setenv更改TEXI2DVI变量,以便在R启动时设置它,但您还必须将其粘贴在shell启动文件中,以便进程而不是启动launchd,这是icky。我也version my dotfiles,我不喜欢在launchctl以太地方保留这些配置,我不能轻易记住它。但是launchctl可能是解决这个问题的一种方法。

3)etc/Renviron.site无济于事。

这个令人惊讶 - 我希望它能起作用:

% cat /usr/local/Cellar/r/3.2.2_1/R.framework/Resources/etc/Renviron.site
R_TEXI2DVICMD=/usr/local/bin/texi2dvi
TEXI2DVI=/usr/local/bin/texi2dvi

% \R CMD Rd2pdf myPackageDirectory
Hmm ... looks like a package
Converting Rd files to LaTeX 
Creating pdf output from LaTeX ...
Error in texi2dvi(file = file, pdf = TRUE, clean = clean, quiet = quiet,  : 
  Running 'texi2dvi' on 'Rd2.tex' failed.
Messages:
sh: /usr/local/opt/texinfo/bin/texi2dvi: No such file or directory

所以Renviron.site的设置在这里没有生效。我变得不耐烦,所以我没有尝试诊断原因。

3)编辑etc/Renviron作为最后的手段

所以这最终有效:

% grep TEXI2DVI /usr/local/Cellar/r/3.2.2_1/R.framework/Resources/etc/Renviron 
TEXI2DVI=/usr/local/bin/texi2dvi  ## Added by Ken
R_TEXI2DVICMD=${R_TEXI2DVICMD-${TEXI2DVI-'/usr/local/opt/texinfo/bin/texi2dvi'}}

我不喜欢它,因为下次升级R时我会丢失这些设置.R的文档专门说"do not change ‘R_HOME/etc/Renviron’ itself"。但至少它有效。