Ошибка в R версии 4.0.2, но не в R версии 3.6.3 с DiagrammR:! Ошибка LaTeX: Environment grViz undefined - PullRequest
2 голосов
/ 12 июля 2020

Я успешно использовал grViz в DiagrammR с файлом уценки R (bookdown) в R версии 3.6.3, который вызывает ошибку на другом компьютере с R версии 4.0.2. Я «перепробовал все», что мог придумать, включая переустановку TinyTex и соблюдение ВСЕХ параметров в https://yihui.org/tinytex/r/#debugging

Файл компилируется нормально как HTML в обеих версиях R, но PDF вызывает ошибку в R версии 4.0.2

После 3 часов тестов и поиска я думаю, что это ошибка. Для тестирования я сделал небольшую версию и файл Rmd (см. Ниже), который компилируется в PDF в R 3.6.3, но не в R версии 4.0.2 с предупреждением:

Мне не удалось найдите недостающие пакеты LaTeX в журнале ошибок Untitled4.log. ! Ошибка LaTeX: Environment grViz undefined.

Ошибка: LaTeX не удалось скомпилировать Untitled4.tex. См. https://yihui.org/tinytex/r/#debugging для советов по отладке. См. Untitled4.log для получения дополнительной информации. Выполнение остановлено

ИНФОРМАЦИЯ О СЕССИИ ДЛЯ R версии 3.6.3 появляется в конце PDF-файла по этой ссылке: https://uwmadison.box.com/s/xkim3gujwemrqau6bur7f8ckl35i9s9f

Вот файл RMD: файл RMD также находится по этой ссылке : https://uwmadison.box.com/s/4knl7y3f7yti8ibivfjex7qdv3ez8a11

---
title: "Untitled4"
output: pdf_document
always_allow_html: true
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
options(tinytex.verbose = TRUE)
```


# Test grViz 

```{r flowofinformation, engine='R', eval=TRUE, echo=FALSE, fig.cap='Flow of information.', out.width = if (knitr:::is_html_output()) '100%' else '90%'}

DiagrammeR::grViz("
digraph dot {

graph [layout = dot
       rankdir = LR]

node [shape =  'rectangle', style = filled, fillcolor = pink]
DNA, RNA, Protein

DNA -> {RNA}
RNA -> {Protein}

edge [color = gray, arrowtail =  left, style = dashed ]
RNA -> {DNA}
}")
```

```{r}
sessionInfo()
```

SESSION INFO for version R 4.0.2:

R version 4.0.2 (2020-06-22)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Mojave 10.14.6

Matrix products: default
BLAS:   /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
 [1] bookdown_0.20      visNetwork_2.0.9   digest_0.6.25     
 [4] jsonlite_1.7.0     magrittr_1.5       evaluate_0.14     
 [7] rlang_0.4.7        rmarkdown_2.3      DiagrammeR_1.0.6.1
[10] RColorBrewer_1.1-2 tools_4.0.2        glue_1.4.1        
[13] htmlwidgets_1.5.1  tinytex_0.24       xfun_0.15         
[16] yaml_2.2.1         compiler_4.0.2     htmltools_0.5.0   
[19] knitr_1.29     

РЕДАКТИРОВАТЬ # 1

Я проверил созданный файл .tex. Похоже, что в R 4.0.2 файл .tex содержит команды, которые не созданы в R 3.6.3. Например, вот результат для R 4.0.2:

\begin{figure}

\hypertarget{htmlwidget-7447954648696f078221}{}
\begin{grViz}

\end{grViz}

Flow of information.

\end{figure}

Итак, создаются \begin{grViz} и \end{grViz}, но между ними нет ничего.

Я изменил YAML для запуска в R 3.6.3, чтобы сохранить файл .tex

---
title: "Untitled4-R3.6.3"
output:
  pdf_document:
    keep_tex: true
always_allow_html: true
---

В результирующем файле .tex нет команды \begin{grViz} и \end{grViz}, поэтому проблема связана с этим аспект кажется. В R 3.6.3 код проще и просто включает файл, созданный в подпапке Untitled4_files/figure-latex/flowofinformation-1, которая, вероятно, является PDF-файлом, и папка должна быть временной, поскольку я не могу ее найти:

\hypertarget{test-grviz}{%
\section{Test grViz}\label{test-grviz}}

\begin{figure}
\includegraphics[width=0.9\linewidth]{Untitled4_files/figure-latex/flowofinformation-1} \caption{Flow of information.}\label{fig:flowofinformation}
\end{figure}

Поэтому новый добавление \begin{grViz} и \end{grViz}, похоже, вызывает проблему, но я не знаю, откуда они. В простом примере, подобном этому, нет никакого пользовательского файла preamble.tex любого типа ...

EDIT 2

Я думаю, что мне придется дополнительно запросить помощь у Yihui на GitHub, вот и fun::session_info для R 4.0.2. Сначала только для Tinytex, а затем для всех:

> xfun::session_info('tinytex')
R version 4.0.2 (2020-06-22)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Mojave 10.14.6, RStudio 1.3.959

Locale: en_US.UTF-8 / en_US.UTF-8 / en_US.UTF-8 / C / en_US.UTF-8 / en_US.UTF-8

Package version:
  graphics_4.0.2  grDevices_4.0.2 stats_4.0.2     tinytex_0.24    tools_4.0.2    
  utils_4.0.2     xfun_0.15      
> 

и для всех:

> xfun::session_info()
R version 4.0.2 (2020-06-22)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Mojave 10.14.6, RStudio 1.3.959

Locale: en_US.UTF-8 / en_US.UTF-8 / en_US.UTF-8 / C / en_US.UTF-8 / en_US.UTF-8

Package version:
  assertthat_0.2.1   backports_1.1.8    base64enc_0.1.3    BH_1.72.0.3       
  bookdown_0.20      callr_3.4.3        cli_2.0.2          clipr_0.7.0       
  colorspace_1.4.1   compiler_4.0.2     crayon_1.3.4       desc_1.2.0        
  DiagrammeR_1.0.6.1 digest_0.6.25      downloader_0.4     dplyr_1.0.0       
  ellipsis_0.3.1     evaluate_0.14      fansi_0.4.1        farver_2.0.3      
  generics_0.0.2     ggplot2_3.3.2      glue_1.4.1         graphics_4.0.2    
  grDevices_4.0.2    grid_4.0.2         gridExtra_2.3      gtable_0.3.0      
  highr_0.8          hms_0.5.3          htmltools_0.5.0    htmlwidgets_1.5.1 
  igraph_1.2.5       influenceR_0.1.0   isoband_0.2.2      jsonlite_1.7.0    
  knitr_1.29         labeling_0.3       lattice_0.20.41    lifecycle_0.2.0   
  magrittr_1.5       markdown_1.1       MASS_7.3.51.6      Matrix_1.2.18     
  methods_4.0.2      mgcv_1.8.31        mime_0.9           munsell_0.5.0     
  nlme_3.1.148       pillar_1.4.6       pkgbuild_1.0.8     pkgconfig_2.0.3   
  pkgload_1.1.0      praise_1.0.0       prettyunits_1.1.1  processx_3.4.3    
  ps_1.3.3           purrr_0.3.4        R6_2.4.1           RColorBrewer_1.1-2
  Rcpp_1.0.5         readr_1.3.1        rlang_0.4.7        rmarkdown_2.3     
  rprojroot_1.3.2    rstudioapi_0.11    scales_1.1.1       splines_4.0.2     
  stats_4.0.2        stringi_1.4.6      stringr_1.4.0      testthat_2.3.2    
  tibble_3.0.3       tidyr_1.1.0        tidyselect_1.1.0   tinytex_0.24      
  tools_4.0.2        utf8_1.1.4         utils_4.0.2        vctrs_0.3.1       
  viridis_0.5.1      viridisLite_0.3.0  visNetwork_2.0.9   withr_2.2.0       
  xfun_0.15          yaml_2.2.1        
> 

1 Ответ

0 голосов
/ 05 августа 2020

РЕШЕНО благодаря ответу Yihui. Проблема возникла из-за некоторых изменений в Markdown. См. Его ответ в https://github.com/yihui/tinytex/issues/230, где вы также можете увидеть все тесты, которые я проводил до этого.

РЕЗЮМЕ, если у вас есть эта проблема:

  1. обновить с remotes::install_github('rstudio/rmarkdown')
  2. Также запустите webshot::install_phantomjs()

После этого PDF-файл будет создан, и среда \grViz больше не будет часть файла .tex.

Ответ пришел после того, как я уже перешел на страницу проблемы DiagrammeR по адресу https://github.com/rich-iannone/DiagrammeR/issues/409

...