在自己的 shareLatex 服务器上安装 knitr

在自己的 shareLatex 服务器上安装 knitr

编辑: 根据分享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

相关内容