tikzDevice ignores engine passed via dev.args
fkohrt opened this issue · 2 comments
When using tikzDevice
as device when plotting with knitr and rmarkdown, there appear to be differences between using global options and chunk options for setting the PDF engine. I will demonstrate this with a R Markdown document with embedded PDF documents.
Setting engine = "luatex"
has no effect when using the dev.args
chunk option, the PDF metadata still indicate pdfTeX
as creator:
---
title: "Setting PDF engine via chunk options"
output: html_document
---
```{r, dev-tikz, dev = "tikz", dev.args = list(engine = "luatex")}
par(mar = c(4, 4, 2, .1))
curve(dnorm, -3, 3, xlab = '$x$', ylab = '$\\phi(x)$',
main = 'The density function of $N(0, 1)$')
text(-1, .2, cex = 3, col = 'blue',
'$\\phi(x)=\\frac{1}{\\sqrt{2\\pi}}e^{\\frac{-x^2}{2}}$')
```
Only when setting the global option tikzDefaultEngine = "luatex"
, the metadata indicate LuaTeX
as creator:
---
title: "Setting PDF engine via global options"
output: html_document
---
```{r}
options(tikzDefaultEngine = "luatex")
```
```{r, dev-tikz, dev = "tikz"}
par(mar = c(4, 4, 2, .1))
curve(dnorm, -3, 3, xlab = '$x$', ylab = '$\\phi(x)$',
main = 'The density function of $N(0, 1)$')
text(-1, .2, cex = 3, col = 'blue',
'$\\phi(x)=\\frac{1}{\\sqrt{2\\pi}}e^{\\frac{-x^2}{2}}$')
```
AFAIK this is a conseuqnece of how the tikzDevice
support has been implemented in knitr
. The resulting .tex
file is always processed using tikzDefaultengine
, c.f. https://github.com/yihui/knitr/blob/master/R/plot.R#L174
This is also documented at https://github.com/yihui/knitr/blob/master/inst/examples/knitr-graphics.Rnw#L249-L251
Then this should be an issue of {knitr}. I will create one there.