代码之家  ›  专栏  ›  技术社区  ›  babylinguist

使用makefile和子目录中的sty文件将Rmarkdown moderncv编织成pdf

  •  0
  • babylinguist  · 技术社区  · 6 年前

    moderncv 类在Rmarkdown中创建CV。为了使简历可以在开箱即用,我在根目录中包含了.cls和.sty文件。但是,为了保持根目录的整洁,我更愿意保持所有 子目录(assets/tex/)中的相关文件。我可以使用yaml前端的相对路径访问.cls文件,但是我不能访问.sty文件,除非它们在根目录中。

    TEXINPUTS 使用Makefile(请参见 this thread another thread )

    我不是很擅长makefile,但我已经设法让一个工作,将我的.Rmd文件编织成pdf没有问题,只要.sty文件仍然在根。这就是目前的情况:

    PDF_FILE=my_cv.pdf
    
    all : $(PDF_FILE)
        echo All files are now up to date
    
    clean : 
        rm -f $(PDF_FILE) 
    
    %.pdf : %.Rmd
        Rscript -e 'rmarkdown::render("$<")'
    

    我的理解是我可以设定 使用:

    export TEXINPUTS=".:./assets/tex:"
    

    ! LaTeX Error: Command \fax already defined.
               Or name \end... illegal, see p.192 of the manual.
    

    我想是因为 现代电视 类需要并且找不到相关的.sty文件。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Ralf Stubner    6 年前

    您可以尝试在make规则中定义环境变量:

    %.pdf : %.Rmd
        export TEXINPUTS=".:./assets/tex:"
        Rscript -e 'rmarkdown::render("$<")'
    

    或者可以在Rmd文件的设置块中设置环境变量:

    ```{r setup, include = FALSE}
    Sys.setenv(TEXINPUTS=".:./assets/tex:")
    ```