簡體   English   中英

渲染位於 blogdown static 文件夾中的 Rmd 文件時,RStudio 中 knitr 按鈕的行為

[英]The behavior of the knitr button in RStudio when rendering an Rmd file sitting inside a blogdown static folder

我有一個要轉換為 pdf 文件的 Rmd 文件。 目前它位於“靜態”文件夾的子文件夾中,該文件夾是我的博客站點結構的一部分,由 blogdown package 創建。 問題是,當我點擊 RStudio 中的“編織”按鈕時,它會調用rmarkdown::render_site(...)而我期待rmarkdown::render(...) 我確實有一個文件R/build.R有一行命令blogdown::build_dir("static")所以這對我來說很奇怪。 當我嘗試轉換不同文件夾中的其他 Rmd 文件(與我的博客文件夾/文件無關)時,一切都按預期工作得很好。

為了得到我想要的,我目前正在控制台中輸入rmarkdown::render("myfile.Rmd") ,或者我正在使用無限月亮閱讀器,但都沒有“Knit”按鈕那么方便:(

以下是來自xfun::session_info('blogdown')的 output 將 blogdown package 更新到 1.1 版后:

> xfun::session_info('blogdown')
R version 4.0.3 (2020-10-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18363), RStudio 1.4.1103

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:
  base64enc_0.1.3 BH_1.75.0.0     blogdown_1.1    bookdown_0.21   digest_0.6.27   evaluate_0.14   glue_1.4.2     
  graphics_4.0.3  grDevices_4.0.3 highr_0.8       htmltools_0.5.0 httpuv_1.5.4    jsonlite_1.7.2  knitr_1.30     
  later_1.1.0.1   magrittr_2.0.1  markdown_1.1    methods_4.0.3   mime_0.9        promises_1.1.1  R6_2.5.0       
  Rcpp_1.0.5      rlang_0.4.9     rmarkdown_2.6   servr_0.21      stats_4.0.3     stringi_1.5.3   stringr_1.4.0  
  tinytex_0.29    tools_4.0.3     utils_4.0.3     xfun_0.20       yaml_2.2.1     

編輯:我不確定這是否有幫助,但我想轉換為 pdf 的HW3.Rmd文件如下所示:

---
title: "Homework 3"
subtitle: "due Feb 2, 2021"
output:
  pdf_document: default
---

```{r}
1 + 1
```

當我將此文件保存在C:/Users/jungl/Dropbox/GitHub/blog2020/static/Drexel_2021/HW3.Rmd中的文件夾中時(這里C:/Users/jungl/Dropbox/GitHub/blog2020所有由 blogdown 創建的文件夾/文件),“Knit”按鈕意外調用rmarkdown::render_site(...) 但是,當我在文件夾中復制與HW3.Rmd C:/Users/jungl/Dropbox/test/HW3.Rmd相同的 HW3.Rmd 時,“Knit”按鈕按預期工作並調用rmarkdown::render(...) 所以它看起來像 RStudio 的“Knit”按鈕以某種方式自動確定它是否應該根據工作中的rmarkdown::render_site(...)文件是否位於rmarkdown::render(...) sub) 包含 blogdown 生成的文件夾/文件的根文件夾的文件夾。

編輯:Github 存儲庫位於https://github.com/junglee0713/blog2020 ,我剛剛檢查過同樣的問題仍然存在。 我要轉換為 PDF 的HW3.Rmd文件位於https://github.com/junglee0713/blog2020/tree/master/static/Drexel_2021

另一個編輯:安裝blogdown的開發版本似乎解決了這個問題(下面的輸出,注意它仍然調用rmarkdown::render_site(...) ),但有另一個問題。 它將同一目錄中的其他 Rmd 文件(例如HW1.RmdHW2.Rmd )渲染到相應的 PDF 文件中。

==> rmarkdown::render_site('C:/Users/jungl/Dropbox/GitHub/blog2020/static/Drexel_2021/HW3.Rmd',  encoding = 'UTF-8');
  |..................                                                    |  25%
  ordinary text without R code

  |...................................                                   |  50%
label: setup (with options) 
List of 1
 $ include: logi FALSE



processing file: HW3.Rmd
  |....................................................                  |  75%
  ordinary text without R code

  |......................................................................| 100%
label: unnamed-chunk-1 (with options) 
List of 1
 $ eval: symbol F


"C:/Program Files/RStudio/bin/pandoc/pandoc" +RTS -K512m -RTS HW3.utf8.md --to latex --from markdown+autolink_bare_uris+tex_math_single_backslash --output HW3.tex --lua-filter "C:\Users\jungl\Documents\R\win-library\4.0\rmarkdown\rmarkdown\lua\pagebreak.lua" --lua-filter "C:\Users\jungl\Documents\R\win-library\4.0\rmarkdown\rmarkdown\lua\latex-div.lua" --self-contained --highlight-style tango --pdf-engine pdflatex --variable graphics --variable "geometry:margin=1in" 
output file: HW3.knit.md


Output created: HW3.pdf
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

So each time I render HW3.Rmd to a PDF, I get unsolicited updates of HW1.pdf and HW2.pdf too (as you see, I don't have any ggplot figure in HW3.Rmd and the output warns about picking better value與HW2.Rmd中確實有geom_histogram() )。 對我來說更有趣的是,在HW1.RmdHW2.RmdHW3.Rmd所在的文件夾中,還有其他 Rmd 文件我轉換為 HTML (比如Drexel_2021_Lecture_1.RmdDrexel_2021_Lecture_2.RmdDrexel_2021_Lecture_3.Rmd - 它們是 xaringan 幻燈片)並且它們不會受到針織的影響。

當您單擊“Knit”按鈕時, blogdown確實首先調用rmarkdown::render_site() ,但是這個 function 實際上最終調用rmarkdown::render()

如果單擊 Knit 按鈕時它沒有將您的 Rmd 文件編譯為 PDF,請確保您使用的是最新版本的blogdown ,因為這聽起來像是我幾個月前修復的錯誤(如有疑問,請嘗試更新軟件包)。

如果安裝當前開發版的blogdown (安裝后重啟R):

install.packages('blogdown', repos = c(
  rstudio = 'https://rstudio.r-universe.dev',
  CRAN = 'https://cloud.r-project.org'
))

當您單擊編織按鈕時,您將在 R Markdown 選項卡中看到編織的詳細日志:

R Markdown 選項卡

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM