Невозможно добавить фрагмент кода tikz в мой пост .Rmd с помощью blogdown

Я только начал использовать blogdown и создал проект, используя шаблон Hugo- Xmin. В RStudio при создании проекта в blogdown он создал несколько предопределенных сообщений, я редактирую этот:

/content/post/2015-07-23-r-rmarkdown.Rmd

Добавление изображения тикз

Следуя этому вопросу и bookdown документацию по двигателям, я изменил вышеупомянутый файл, добавив этот фрагмент:

This is a tikz picture:

```{r, echo=FALSE, engine='tikz', out.width='90%', fig.ext=if (knitr:::is_latex_output()) 'pdf' else 'png', fig.cap='Some caption.'}
\begin{tikzpicture}[scale=.7]
\draw [fill=gray!30,very thick] (0,-1) rectangle (5,1);
\draw [very thick] (5, 0) -- (13,0);
\node [below] at (2,-1) {\large Hello};
\node [below, align=center] at (0,-1) {\large Two\\ lines};
\end{tikzpicture}
```

Не удалось обработать сообщение

Как только я сохраняю (поскольку у меня включен serve), но также и при использовании blogdown::build_site(), я получаю следующее:

> blogdown::serve_site()
Rendering content/post/2015-07-23-r-rmarkdown.Rmd
This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2018/W32TeX) (preloaded format=pdflatex)
 restricted \write18 enabled.
entering extended mode
Quitting from lines 49-55 (2015-07-23-r-rmarkdown.Rmd) 
Error: Failed to compile .\tikz53878cd6189.tex. See https://yihui.name/tinytex/r/#debugging for debugging tips.
Execution halted
Error in render_page(f) : 
  Failed to render 'content/post/2015-07-23-r-rmarkdown.Rmd'

Исправление проблем

Я проверил свои двигатели и увидел, что на самом деле tikz среди них:

> names(knitr::knit_engines$get())
 [1] "awk"         "bash"        "coffee"      "gawk"        "groovy"      "haskell"     "lein"        "mysql"      
 [9] "node"        "octave"      "perl"        "psql"        "Rscript"     "ruby"        "sas"         "scala"      
[17] "sed"         "sh"          "stata"       "zsh"         "highlight"   "Rcpp"        "tikz"        "dot"        
[25] "c"           "fortran"     "fortran95"   "asy"         "cat"         "asis"        "stan"        "block"      
[33] "block2"      "js"          "css"         "sql"         "go"          "python"      "julia"       "theorem"    
[41] "lemma"       "corollary"   "proposition" "conjecture"  "definition"  "example"     "exercise"    "proof"      
[49] "remark"      "solution"  

В документации сказано, что некоторые двигатели поставляются в резерве, а не в knitr, но я вижу, что tikz есть! Итак, у меня есть двигатель, но я все еще не могу им пользоваться. Что я делаю неправильно?


Больше информации

Создается файл журнала /content/post/texput.log, который сообщает следующую информацию о сбое:

This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2018/W32TeX) (preloaded format=pdflatex 2019.1.11)  25 FEB 2019 07:54
entering extended mode
 restricted \write18 enabled.
 %&-line parsing enabled.
**.\tikz3cac449b1071.tex

! Emergency stop.
<*> .\tikz3cac449b1071.tex

*** (job aborted, file error in nonstop mode)


Here is how much of TeX's memory you used:
 3 strings out of 492616
 115 string characters out of 6132768
 56950 words of memory out of 5000000
 4017 multiletter control sequences out of 15000+600000
 3640 words of font info for 14 fonts, out of 8000000 for 9000
 1141 hyphenation exceptions out of 8191
 0i,0n,0p,1b,6s stack positions out of 5000i,500n,10000p,200000b,80000s
!  ==> Fatal error occurred, no output PDF file produced!

Если я проверю knitr:

> xfun::session_info('knitr')
R version 3.5.2 (2018-12-20)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200), RStudio 1.1.463

Locale:
  LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252   
  LC_MONETARY=English_United States.1252 LC_NUMERIC=C                          
  LC_TIME=English_United States.1252    

Package version:
  evaluate_0.13   glue_1.3.0      graphics_3.5.2  grDevices_3.5.2 highr_0.7       knitr_1.21.13  
  magrittr_1.5    markdown_0.9    methods_3.5.2   mime_0.6        stats_3.5.2     stringi_1.3.1  
  stringr_1.4.0   tools_3.5.2     utils_3.5.2     xfun_0.5        yaml_2.2.0

person Andry    schedule 23.02.2019    source источник
comment
Проверьте, есть ли файл журнала, например tikz1ee41b8e2745.log.   -  person Yihui Xie    schedule 25.02.2019
comment
@YihuiXie Я отредактировал ответ. Журнал присутствует, и о его содержании было сообщено. Сообщение ссылается на .tex файл, который я не смог найти, я думаю, это временный файл, который будет удален, как только инструменты закончат работу :(   -  person Andry    schedule 25.02.2019
comment
@YihuiXie: К сожалению, сообщение мало что говорит. Вы испытали это на своей коробке? Я действительно не делаю ничего продвинутого с точки зрения развертывания. Просто возьмем один из примеров и добавим фрагмент.   -  person Andry    schedule 26.02.2019
comment
Попробуйте remotes::install_github(c('yihui/tinytex', 'yihui/knitr', 'yihui/servr'), upgrade = TRUE), перезапустите R, обновите сообщение Rmd и перекомпилируйте его (через blogdown::serve_site()). Если вы также установили TinyTeX, я считаю, что он должен работать автоматически.   -  person Yihui Xie    schedule 01.03.2019
comment
@YihuiXie: Я попробую, спасибо. Дам тебе знать...   -  person Andry    schedule 02.03.2019
comment
@YihuiXie: Я пробовал, но он продолжает терпеть неудачу: `невозможно удалить предыдущую установку пакета« stringi », хотя я устанавливал его несколько раз и перезапускал все сеансы R.   -  person Andry    schedule 05.03.2019
comment
@YihuiXie: Думаю, я решил проблему с удалением пакета. Теперь, после того, что вы мне сказали сделать, я получаю ту же самую ошибку, что и раньше, и тот же файл журнала, созданный с тем же содержимым :(   -  person Andry    schedule 05.03.2019
comment
Файл журнала не должен называться texput.log. Должно получиться что-то вроде tikzxxxxx.log. Сообщение об ошибке тоже не должно быть точно таким же. По крайней мере, ошибка не должна исходить от tools::texi2dvi, потому что, если вы успешно установили версию knitr для разработчиков, она больше не использует tools::texi2dvi. Пожалуйста, проверьте свой xfun::session_info('knitr').   -  person Yihui Xie    schedule 05.03.2019
comment
В консоли написано: Error: Failed to compile .\tikz51143a65cfd.tex. See https://yihui.name/tinytex/r/#debugging for debugging tips.   -  person Andry    schedule 05.03.2019
comment
@YihuiXie: Нет никаких следов другого файла журнала, кроме этого (внутри post). Я проверил другие каталоги и не нашел там никаких журналов.   -  person Andry    schedule 05.03.2019
comment
@YihuiXie: Я обновил вопрос выводом команды, которую вы попросили меня запустить.   -  person Andry    schedule 05.03.2019
comment
@YihuiXie: Возможно ли, что моя среда каким-то образом испортилась? Судя по новой информации, которую я опубликовал в вопросе, можете ли вы увидеть правильную версию зависимостей или некоторые из них не были должным образом обновлены? В случае, как я могу сбросить свои пакеты? Нужно ли мне удалить R / RStudio и установить их заново?   -  person Andry    schedule 05.03.2019
comment
Как говорится в сообщении об ошибке, следуйте yihui.name/tinytex/r/#debugging и посмотрите если вы получите новую информацию. Вам не нужно переустанавливать R или RStudio. Закройте и перезапустите RStudio.   -  person Yihui Xie    schedule 05.03.2019


Ответы (1)


Оказывается, это проблема в knitr, которую я только что исправил на Github (не уверен, что это ошибка pdflatex). Вы можете попробовать

remotes::install_github('yihui/knitr')

Обратите внимание, что вам потребуется установить два дополнительных пакета R, magick и pdftools, если они еще не установлены.

person Yihui Xie    schedule 05.03.2019
comment
Я сделал это, и это работает. Он генерирует PDF-файл с изображением. Ошибка возникает, когда я пытаюсь визуализировать документ. - person Andry; 06.03.2019
comment
Я выполнил процедуру для получения подробных сообщений, но консоль по-прежнему выдает то же сообщение, а файл журнала имеет такое же содержимое, когда я пытаюсь использовать blogdown::serve_site() - person Andry; 06.03.2019
comment
Показанное сообщение указано в моем вопросе в разделе Не удалось обработать сообщение - person Andry; 06.03.2019
comment
Думаю, я наконец понял это. Я немного удивлен, что вы первый, кто обнаружил эту проблему в Windows (возможно, никто раньше действительно не использовал механизм tikz в Windows, или они просто молча сдались). Спасибо за отчет! - person Yihui Xie; 06.03.2019
comment
О, я вижу. Я дам ему попробовать. Я видел изменение, и большое спасибо, что указали мне на это, и спасибо, что исправили. Поскольку я собираюсь использовать rmarkdown и bookdown для системы, которую хочу создать, для меня очень важно получить представление о кодовой базе :) Позвольте мне попробовать это и посмотреть - person Andry; 07.03.2019
comment
Идеально! Я очень рад, что этот вопрос наконец-то решен! - person Yihui Xie; 07.03.2019