R bookdown,fontawesome5,渲染失败,但在RStudio中文件编织效果很好

时间:2018-06-24 15:01:44

标签: r latex pandoc bookdown

遇到一个奇怪的问题...使用MacTeX 2018,所有软件包的当前版本,R和RStudio同上...我可以编织一个包含fontawesome5图标的文件,在RStudio中就可以了,但是render()失败了,我需要在makefile中使用render来自动执行构建过程... render()似乎使对Latexmk的调用处于活动状态,该调用似乎在已存在的字体上调用tlmgr,然后因文件未找到错误而停止运行...任何建议会非常受欢迎,成功地拔出了头发...预先感谢!

以下是复制所需的最小文件(以下内容为debug.Rmd):

---
output:
  bookdown::pdf_document2:
    toc: no
    latex_engine: lualatex
header-includes:
   - \usepackage{fontawesome5}
---

-   \faIcon{phone}

如果删除\faIcon{phone},它将呈现良好的效果,当然,在RStudio中也可以正常显示。

这是错误消息(会话信息如下)

 Rscript -e 'rmarkdown::render("debug.Rmd",bookdown::pdf_document2(toc = FALSE))'


processing file: debug.Rmd
  |.................................................................| 100%
  ordinary text without R code


output file: debug.knit.md

/usr/local/bin/pandoc +RTS -K512m -RTS debug.utf8.md --to latex --from markdown+autolink_bare_uris+ascii_identifiers+tex_math_single_backslash --output debug.tex --template /Users/jracine/Library/R/rmarkdown/rmd/latex/default-1.17.0.2.tex --number-sections --highlight-style tango --pdf-engine pdflatex --variable graphics=yes --variable 'geometry:margin=1in' --variable 'compact-title:yes' --variable tables=yes --standalone
tlmgr search --file --global '/fa5free0solid[.](tfm|afm|mf|otf)'
Trying to automatically install missing LaTeX packages...
tlmgr install fontawesome5
tlmgr: package repository http://ctan.mirror.colo-serv.net/systems/texlive/tlnet (verified)
tlmgr install: package already present: fontawesome5
tlmgr path add
tlmgr search --file --global '/fa5free0solid[.](tfm|afm|mf|otf)'

Output created: debug.pdf
Error in tools::file_path_as_absolute(output_file) :
  file 'debug.pdf' does not exist
Calls: <Anonymous> -> <Anonymous>
Execution halted

会话信息:

Session info ------------------------------------------------------------------
 setting  value
 version  R version 3.5.0 (2018-04-23)
 system   x86_64, darwin17.5.0
 ui       X11
 language (EN)
 collate  en_CA.UTF-8
 tz       America/Toronto
 date     2018-06-24

Packages ----------------------------------------------------------------------
 package   * version date       source
 backports   1.1.2   2017-12-13 CRAN (R 3.5.0)
 base64enc   0.1-3   2015-07-28 CRAN (R 3.5.0)
 bookdown    0.7.13  2018-06-18 Github (rstudio/bookdown@dda5f5a)
 digest      0.6.15  2018-01-28 CRAN (R 3.5.0)
 evaluate    0.10.1  2017-06-24 CRAN (R 3.5.0)
 glue        1.2.0   2017-10-29 CRAN (R 3.5.0)
 graphics  * 3.5.0   2018-04-23 local
 grDevices * 3.5.0   2018-04-23 local
 highr       0.7     2018-06-09 CRAN (R 3.5.0)
 htmltools   0.3.6   2017-04-28 CRAN (R 3.5.0)
 jsonlite    1.5     2017-06-01 CRAN (R 3.5.0)
 knitr       1.20.6  2018-06-22 Github (yihui/knitr@2b3e617)
 magrittr    1.5     2014-11-22 CRAN (R 3.5.0)
 markdown    0.8     2017-04-20 CRAN (R 3.5.0)
 methods   * 3.5.0   2018-04-23 local
 mime        0.5     2016-07-07 CRAN (R 3.5.0)
 Rcpp        0.12.17 2018-05-18 CRAN (R 3.5.0)
 rmarkdown   1.10.2  2018-06-22 Github (rstudio/rmarkdown@1f5b299)
 rprojroot   1.3-2   2018-01-03 CRAN (R 3.5.0)
 stats     * 3.5.0   2018-04-23 local
 stringi     1.2.3   2018-06-12 CRAN (R 3.5.0)
 stringr     1.3.1   2018-05-10 CRAN (R 3.5.0)
 tinytex     0.5     2018-04-16 CRAN (R 3.5.0)
 tools       3.5.0   2018-04-23 local
 utils     * 3.5.0   2018-04-23 local
 xfun        0.2.5   2018-06-22 Github (yihui/xfun@b75336c)
 yaml        2.1.19  2018-05-01 CRAN (R 3.5.0)
> rmarkdown::pandoc_version()
[1] ‘2.2.1’
> system('pdflatex --version')
pdfTeX 3.14159265-2.6-1.40.19 (TeX Live 2018)
kpathsea version 6.3.0
Copyright 2018 Han The Thanh (pdfTeX) et al.
There is NO warranty.  Redistribution of this software is
covered by the terms of both the pdfTeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the pdfTeX source.
Primary author of pdfTeX: Han The Thanh (pdfTeX) et al.
Compiled with libpng 1.6.34; using libpng 1.6.34
Compiled with zlib 1.2.11; using zlib 1.2.11
Compiled with xpdf version 4.00

1 个答案:

答案 0 :(得分:1)

您的Makefile错误。通话时

Rscript -e 'rmarkdown::render("debug.Rmd",bookdown::pdf_document2(toc = FALSE))'

实际上,您使用latex_engine(默认为bookdown::pdf_document2(toc = FALSE))覆盖了YAML元数据(例如latex_engine = 'pdflatex')中的设置。这就是为什么您的中间.tex输出使用pdflatex而不是lualatex进行编译的原因。

每次通话

Rscript -e 'rmarkdown::render("debug.Rmd")'

如果bookdown::pdf_document2是您唯一需要的输出格式,请调用

Rscript -e 'rmarkdown::render("debug.Rmd", "bookdown::pdf_document2")'

如果您在YAML中设置了多种输出格式。

对于rmarkdown::render()的第二个参数(例如,输出格式),您几乎不需要返回输出格式(例如,bookdown::pdf_document2(...))的输出格式函数形式。在大多数情况下,我认为默认值(NULL,即您在YAML中设置的第一种格式)或字符串(在YAML中设置的格式的名称)应该是您想要的。