13

この回答で、@Yihuiknitrは地球環境を利用していると述べました。これは私を混乱させました-私の経験はそうではないということでした。私は実際に使用することはありません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 

渡されることを期待してknit2pdf( )に環境を渡そうとしましたが、未使用の引数エラーが発生します。envir = globalenv()...

一般的に、地球環境を参照することは貧弱な形式であることを私は知っていますが、それを行う方法knit2pdf、または環境を明示的に渡す方法はありますか、または上記の同じ質問に対する@Ramnathの回答のbrewようsprintfに使用する方が良いですか?

tools::texi2pdf私のユースケースでは、XeLaTeXを使用してコンパイルする必要があるため、役に立たないと思います。XeLaTeXknit2pdfは簡単に処理できます。

4

1 に答える 1

8

問題の例の問題は、環境とは何の関係もないようです。output引数が。から外されている場合、すべてが正しくコンパイルされ、警告は表示されませんknit2pdf

参考までに、Windows7のR2.15.3でknitr1.1を使用していました。バグのように見えるのでYihuiに通知しますknit2pdf(これは、を呼び出しtools::texi2pdf、出力ファイルパスを受け入れません)。

更新:この問題は、の開発バージョンで修正されました。ここknitrから入手できます

また、 RStudioCompile PDFのボタンは現在の環境を使用しないため、グローバル変数にアクセスする必要があり、RStudioを使用している場合は、ショートカットに依存するのではなく、適切な関数を明示的に呼び出してください。実際、直接使用するのではなく、を呼び出します。 knitknit2pdfrmarkdown::render

于 2013-03-26T21:56:05.960 に答える