knitr icon indicating copy to clipboard operation
knitr copied to clipboard

tikzDevice ignores engine passed via dev.args

Open fkohrt opened this issue 2 years ago • 0 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}}$')
```

See also daqana/tikzDevice#214


By filing an issue to this repo, I promise that

  • [x] I have fully read the issue guide at https://yihui.org/issue/.
  • [x] I have provided the necessary information about my issue.
    • If I'm asking a question, I have already asked it on Stack Overflow or RStudio Community, waited for at least 24 hours, and included a link to my question there.
    • If I'm filing a bug report, I have included a minimal, self-contained, and reproducible example, and have also included xfun::session_info('knitr'). I have upgraded all my packages to their latest versions (e.g., R, RStudio, and R packages), and also tried the development version: remotes::install_github('yihui/knitr').
    • If I have posted the same issue elsewhere, I have also mentioned it in this issue.
  • [x] I have learned the Github Markdown syntax, and formatted my issue correctly.

I understand that my issue may be closed if I don't fulfill my promises.

xfun::session_info('knitr')
R version 4.1.2 (2021-11-01)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.6 LTS, RStudio 2021.9.1.372

Locale:
  LC_CTYPE=en_US.UTF-8      
  LC_NUMERIC=C              
  LC_TIME=en_US.UTF-8       
  LC_COLLATE=en_US.UTF-8    
  LC_MONETARY=en_US.UTF-8   
  LC_MESSAGES=en_US.UTF-8   
  LC_PAPER=en_US.UTF-8      
  LC_NAME=C                 
  LC_ADDRESS=C              
  LC_TELEPHONE=C            
  LC_MEASUREMENT=en_US.UTF-8
  LC_IDENTIFICATION=C       

Package version:
  evaluate_0.15   glue_1.6.2      graphics_4.1.2 
  grDevices_4.1.2 highr_0.9       knitr_1.39     
  magrittr_2.0.3  methods_4.1.2   stats_4.1.2    
  stringi_1.7.8   stringr_1.4.0   tools_4.1.2    
  utils_4.1.2     xfun_0.31       yaml_2.3.5

fkohrt avatar Jul 24 '22 10:07 fkohrt

Should be fixed now. Thanks for the report!

yihui avatar Aug 10 '22 20:08 yihui