编辑: 根据分享Latex Github讨论,我应该创建一个.latexmkrc
文件并添加以下代码(我已经在主目录中尝试过但没有成功):
my $root_file = $ARGV[-1];
add_cus_dep( 'Rtex', 'tex', 0, 'rtex_to_tex');
sub rtex_to_tex {
do_knitr("$_[0].Rtex");
}
sub do_knitr {
my $dirname = dirname $_[0];
my $basename = basename $_[0];
system("Rscript -e \"library('knitr'); setwd('$dirname'); knit('$basename')\"");
}
my $rtex_file = $root_file =~ s/\.tex$/.Rtex/r;
unless (-e $root_file) {
if (-e $rtex_file) {
do_knitr($rtex_file);
}
}
编辑结束
可以knitr
通过创建名为 的文件在官方 ShareLatex 服务器上使用*.Rtex
。我有自己的 ShareLatex 服务器,其中已安装 R 和 Knitr。命令行上一切正常,但当我*.Rtex
在 ShareLatex 项目中创建文件时,它无法编译。
这是我\Sexpr{pi}
在 Rtex 文件中使用此 knitr 代码()时的错误代码。
This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014) (preloaded format=pdflatex 2015.3.20) 28 MAY 2015 05:52
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
**main.tex
! Emergency stop.
<*> main.tex
*** (job aborted, file error in nonstop mode)
非常有趣的是,我没有main.tex
文件,只有一个main.Rtex
,并且我在我的项目中将此文件声明为主文件。
答案1
上次我检查时,ShareLaTeX 不支持.Rnw
语法,这就是您在那里使用的语法\Sexpr{}
。语法.Rtex
是\rinline{}
:http://yihui.name/knitr/demo/minimal/
答案2
经过与开发人员(James Allen)的反复沟通后,我终于让它运行起来了。
如何配置服务器来编译 *.Rtex 文件
0)进入你的 sharelatex 服务器(如果它是用于sudo docker exec -i -t sharelatex bash
连接的 docker 服务器)
1)导航至cd /usr/local/share/latexmk/
2)创建一个名为LatexMk
3)将以下代码粘贴进去
my $root_file = $ARGV[-1];
add_cus_dep( 'Rtex', 'tex', 0, 'rtex_to_tex');
sub rtex_to_tex {
do_knitr("$_[0].Rtex");
}
sub do_knitr {
my $dirname = dirname $_[0];
my $basename = basename $_[0];
system("Rscript -e \"library('knitr'); setwd('$dirname'); knit('$basename')\"");
}
my $rtex_file = $root_file =~ s/\.tex$/.Rtex/r;
unless (-e $root_file) {
if (-e $rtex_file) {
do_knitr($rtex_file);
}
}
4)重启服务器(供docker使用sudo docker restart sharelatex
)