我正在使用 LaTeX 进行一些格式化,并尝试生成一个 PDF 文件,其中plotly
R 图为 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]
我确实安装了webshot
和phantomJS
,并按照这篇文章中规定正确设置了路径:
在 knitr/rmarkdown 中将 Plotly 作为 png
注意:我正在使用render()
Shiny 应用程序中的调用将此内容编织成 PDF 文档,如下所示:
render('myfile.Rmd', pdf_document())
正是这个调用给了我上述错误。
答案1
答案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