簡體   English   中英

knit2pdf可以使用全球環境嗎?

[英]Can knit2pdf use the global environment?

這個答案中 ,@Yihui說knitr使用全球環境。 這讓我很困惑 - 我的經歷是,它沒有。 我從來沒有真正使用knit ,我通常直接使用PDF。

在一個小實驗,似乎knit確實使用全球環境(或任何環境中指定使用envir參數),但knit2pdf沒有。

最小的例子:global_test.Rnw文件

\documentclass{article}
\begin{document}
<<>>=
    print(x)
@
\end{document}

R腳本:

x <- "Hello World"
knit(input="global_test.Rnw")
# Works as expected, could now call tools::texi2pdf to generate pdf.

knit2pdf(input="global_test.Rnw")
# Doesn't

后者生成PDF文件,不會顯示並發出警告:

running command '"C:\PROGRA~2\MIKTEX~1.9\miktex\bin\texi2dvi.exe" --quiet --pdf
"global.pdf"  -I "C:/PROGRA~1/R/R-215~1.3/share/texmf/tex/latex" -I
"C:/PROGRA~1/R/R-215~1.3/share/texmf/bibtex/bst"' had status 1 

我想傳遞一個環境knit2pdfenvir = globalenv()希望這將是...傳遞,我只是得到一個未使用的參數錯誤。

一般來說,我知道引用全局環境的形式很差,但有沒有辦法用knit2pdf來實現,或者明確地傳遞一個環境,或者我最好使用brewsprintf就像在@ Ramnath對上面同一個問題的回答一樣?

在我的使用情況下,我不認為tools::texi2pdf因為我需要XeLaTeX,其編譯為有用knit2pdf輕松處理。

問題中的示例問題似乎與環境無關。 如果output參數不在knit2pdf那么所有內容都將正確編譯並且沒有警告。

作為參考,我在Windows 7上的R 2.15.3上使用了knitr 1.1。我會讓Yihui知道它似乎是knit2pdf一個錯誤(它調用tools::texi2pdf ,它不接受輸出文件路徑) 。

更新:問題已在knitr的開發版本中修復, 可在此處獲得

還值得注意的是, RStudio Compile PDF按鈕使用您當前的環境,因此如果您想要訪問全局變量並使用RStudio,請顯式調用相應的knit函數,而不是依賴於快捷方式。 實際上,它不直接使用knit2pdf ,而是調用rmarkdown::render

暫無
暫無

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

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