R plot using tikzDevice in LaTeX document with kni

2020-07-10 05:30发布

问题:

I am having a problem making ggplot2, tikzDevice, and knitr working together. I am working with RStudio, and trying to include some R graphics in a Latex document. I used a very simple example:

\documentclass{article} 

\begin{document} 

\begin{figure} 
<<fig1,eval=TRUE,echo=FALSE,dev='tikz'>>= 
library(ggplot2)
library(tikzDevice)
qplot(displ, hwy, data = mpg, colour = factor(cyl)) 
@ 
\end{figure} 

\end{document}

But no pdf is output, and I get the following error message:

Error in getMetricsFromLatex(TeXMetrics) : 
TeX was unable to calculate metrics for the following string
or character:

    hwy

Common reasons for failure include:
  * The string contains a character which is special to LaTeX unless
    escaped properly, such as % or $.
  * The string makes use of LaTeX commands provided by a package and
    the tikzDevice was not told to load the package.

The contents of the LaTeX log of the aborted run have been printed above,
it may contain additional details as to why the metric calculation failed.
Calls: knit ... widthDetails.text -> grid.Call -> <Anonymous> -> getMetricsFromLatex

Execution halted

This problem has been treated here, but the solution proposed does not work for me. Any idea?

回答1:

Perhaps a clash with another package you haven't included in your simple example? For me, I was getting this error message because of some clash between package xcolor and tikz. I was calling xcolor before Tikz, no problem, but as soon as I set dev="tikz" in the chunk options I got the same error as you. As soon as I removed \usepackage{xcolor} everything worked.



回答2:

I added in the R code

options(tikzMetricPackages = c("\\usepackage[utf8{inputenc}",
    "\\usepackage[T1]{fontenc}", "\\usetikzlibrary{calc}", "\\usepackage{amssymb}"))

source