R markdown / Plotly R 与 LaTeX 无法生成图,并且在带有连字符的文件名上出现错误

R markdown / Plotly R 与 LaTeX 无法生成图,并且在带有连字符的文件名上出现错误

我正在使用 LaTeX 进行一些格式化,并尝试生成一个 PDF 文件,其中plotlyR 图为 png。以下代码给出了如下所示的错误。自动生成的文件名中的连字符似乎有问题?有什么想法吗?

---
output:
  pdf_document: default
header-includes:
- \usepackage{graphicx}
- \usepackage[dvipsnames]{xcolor}
- \usepackage[most]{tcolorbox}
- \usepackage{fancyhdr}
- \pagestyle{fancy}
- \setlength{\headheight}{100pt}
- \setlength{\textheight}{530pt}
- \rhead{\textsc{\bfseries \large MY \\Plots}}
- \renewcommand{\footrulewidth}{0.4pt}
- \fancypagestyle{plain}{\pagestyle{fancy}}
---
\begin{tcolorbox}[colbacktitle=Fuchsia,
fonttitle=\centering\Large\bfseries\color{white},
colback=white,boxsep=1mm,arc=0mm,boxrule=1pt,
title=PLOT INFORMATION]\parskip1em

\centering

```{r, results = 'asis', echo = FALSE, eval = TRUE, message = FALSE, warn = FALSE}
  library(plotly)
  p <- mtcars %>%
    plot_ly(x = ~wt, y = ~mpg, type = 'scatter', mode = 'markers')
  tmpFile <- tempfile(fileext = '.png')
  export(p, file = tmpFile)
```
\end{tcolorbox}

错误信息如下:

processing file: myfile.Rmd
output file: myfile.knit.md

! Missing $ inserted.
<inserted text>
                $
l.103 ![](myfile_
                           files/figure-latex/unnamed-chunk-1-1.png)<!-- -->
Here is how much of TeX's memory you used:
 34563 strings out of 493029
 658943 string characters out of 6136233
 733691 words of memory out of 5000000
 37639 multiletter control sequences out of 15000+600000
 25977 words of font info for 38 fonts, out of 8000000 for 9000
 1141 hyphenation exceptions out of 8191
 63i,3n,101p,10496b,275s stack positions out of 5000i,500n,10000p,200000b,80000s

Warning: Error in : Failed to compile myfile.tex. See myfile.log for more info.
  [No stack trace available]

我确实安装了webshotphantomJS,并按照这篇文章中规定正确设置了路径: 在 knitr/rmarkdown 中将 Plotly 作为 png

注意:我正在使用render()Shiny 应用程序中的调用将此内容编织成 PDF 文档,如下所示:

render('myfile.Rmd', pdf_document()) 

正是这个调用给了我上述错误。

答案1

它在我的电脑上呈现。你还确保安装了 ggplot2 吗?我不太熟悉 Latex,但我使用的是 Mac OSX 和 TinyTex。我也在使用--pdf-engine pdflatex

在此处输入图片描述

答案2

您的错误消息表明您的Shiny应用正在尝试包含带有 的图形,但文件夹名称中![](myfile_files/figure-latex/unnamed-chunk-1-1.png)的下划线被解释为下标的标记,必须在数学模式下用 包围。这就是为什么你得到的原因我建议你寻找一种不涉及写下划线的方法。_myfile_files$Missing $ inserted.

我收到另外两个需要更正的错误。第一个是加载时选项冲突xcolor。您使用 加载它,\usepackage[dvipsnames]{xcolor}但这与您执行 时设置的选项发生冲突\usepackage[most]{tcolorbox}。可以通过将其添加classoption: dvipsnames到 YAML 标头来修复此问题。之前已在此处回答过此问题:Knitr 钩子在 tex 文件中的 \documentclass 行之前添加代码,以避免选项与 xcolor 发生冲突

第二个问题是将代码块放入的语法tcolorbox。正确的语法Rmd\tcolorbox...代码块...,\endtcolorbox如下所示:我怎样才能让 Rchunks 在 tcolorbox 内进行渲染?

---
title: "TeX.SE"
classoption: dvipsnames
output:
  pdf_document: default
header-includes:
- \usepackage{xcolor}
- \usepackage{graphicx}
- \usepackage[most]{tcolorbox}
- \usepackage{fancyhdr}
- \pagestyle{fancy}
- \setlength{\headheight}{100pt}
- \setlength{\textheight}{530pt}
- \rhead{\textsc{\bfseries \large MY \\Plots}}
- \renewcommand{\footrulewidth}{0.4pt}
- \fancypagestyle{plain}{\pagestyle{fancy}}
---
\tcolorbox
\centering
```{r, results = 'asis', echo = FALSE, eval = TRUE, message = FALSE, warn = FALSE}
  library(plotly)
  p <- mtcars %>%
    plot_ly(x = ~wt, y = ~mpg, type = 'scatter', mode = 'markers')
  tmpFile <- tempfile(fileext = '.png')
  export(p, file = tmpFile)
```
\endtcolorbox

在此处输入图片描述

相关内容