web-dev-qa-db-ja.com

R MarkdownをPDFに変換する方法は?

以前に R MarkdownをHTMLに変換するコマンド について質問しました。

R MarkdownファイルをPDFドキュメントに変換する良い方法は何ですか?

適切なソリューションは、コンテンツ(画像、方程式、htmlテーブルなど)を可能な限り保存します。ソリューションは、コマンドラインから実行できる必要があります。優れたソリューションはクロスプラットフォームでもあり、理想的には依存関係を最小限に抑えて、メイクファイルなどを簡単に共有できるようにします。

具体的には、多くのオプションがあります。

  • RMDからMDからHTMLからPDFに変換するかどうか。またはRMD to MD to PDF;またはRMDからPDF
  • Rでmarkdownパッケージを使用する場合、指定するオプション
  • pandoc、Rに組み込まれたパッケージ、または他の何かを使用するかどうか

以下に例を示します rmd file これは、おそらく提案されたソリューションの妥当なテストを提供します。 このブログ投稿 の基礎として使用されました。

125
Jeromy Anglim

更新された回答(2013年2月10日)

rmarkdown package:Pandocとインターフェースする rmarkdownパッケージがgithubで利用可能 があります。 render関数が含まれています。ドキュメントは、他のさまざまな形式間でrmarkdownをpdfに変換する方法をかなり明確にします。これには、rmarkdownファイルに出力形式を含めるか、rend関数に出力形式を指定して実行することが含まれます。例えば。、

render("input.Rmd", "pdf_document")

コマンドライン:コマンドラインからrenderを実行すると(たとえば、メイクファイルを使用して)、時々pandocで問題が発生しません見つかっています。おそらく、検索パスにはありません。次の回答では、 R環境にpandocを追加する方法 について説明しています。

したがって、たとえば、RStudioを介してpandocのコピーがあるOSXを実行しているコンピューターでは、次のものを使用できます。

Rscript -e "Sys.setenv(RSTUDIO_PANDOC='/Applications/RStudio.app/Contents/MacOS/pandoc');library(rmarkdown);  library(utils); render('input.Rmd', 'pdf_document')"

古い回答(2012年頃)

そのため、多くの人々が、Pandocを使用する方法を提案しています。 Pandocの最新バージョンを使用することの重要性については、以下のメモを参照してください。

Pandocを使用する

次のコマンドを使用して、R MarkdownをHTMLに変換します(つまり、 このmakefileのバリアント )。ここで、RMDFILE.rmdコンポーネントなしのR Markdownファイルの名前です。 (また、拡張子が.rmdではなく.Rmdであると想定しています)。

RMDFILE=example-r-markdown  
Rscript -e "require(knitr); require(markdown); knit('$RMDFILE.rmd', '$RMDFILE.md'); markdownToHTML('$RMDFILE.md', '$RMDFILE.html', options=c('use_xhml'))"

そして、このコマンドはpdfに変換します

Pandoc -s example-r-markdown.html -o example-r-markdown.pdf

  • ホストファイルにimgurにプロットをエクスポートするサンプルファイルの参照を削除しました。
  • Imgurでホストされている画像への参照を削除しました。図はローカルである必要があるようです。
  • markdownToHTML関数のオプションは、画像参照がHTMLファイルに保存されたデータではなくファイルを参照することを意味しました(つまり、オプションリストから'base64_images'を削除しました)。
  • 結果の出力は this のようになりました。ブラウザからpdfにHTMLファイルを印刷した場合に得られるものとは対照的に、明らかに非常にLaTeXスタイルのドキュメントを作成しました。

Pandocの最新バージョンの入手

@daroczigが述べたように、pdfを出力するためには、Pandocの最新バージョンを持つことが重要です。 2012年6月15日のUbuntuでは、パッケージマネージャーでPandocのバージョン1.8.1に固執していましたが、 変更ログ から、pdfサポートには少なくともバージョン1.9+のPandocが必要であるようです。

したがって、caball-installをインストールしました。そして実行しました:

cabal update
cabal install pandoc

Pandocは~/.cabal/bin/pandocにインストールされました。したがって、pandocを実行したとき、まだ古いバージョンが表示されていました。 パスへの追加 についてはこちらをご覧ください。

67
Jeromy Anglim

pandoc が必要だと思います。このタスクのためだけに設計され、構築されたすばらしいソフトウェアです:)pdfに加えて、 mdファイルを例えばdocxまたはodtなど。

Pandocの最新バージョンをインストールする は、Linuxでは問題になるかもしれません(ソースからビルドするにはhaskell-platform˙全体が必要になるため)、しかしWindows /ダウンロードがわずか数メガバイトのMac。

作成/編集されたマークダウンファイルがある場合は、bashなどでpandocを呼び出すか、R内のsystem関数を使用します。後者のPOCデモは Ṗandoc.convert私の小さなパッケージの機能あらゆる機会にそこに注意を向けようとするので、あなたはひどく退屈しなければなりません)。

22
daroczig

現在(2014年8月)R MarkdownをPDFに変換するためにRStudioを使用できます。基本的に、RStudioはpandocを使用してRmdをPDFに変換します。

メタデータを次のように変更できます。

  1. 目次を追加する
  2. フィギュアオプションの変更
  3. 構文の強調表示スタイルを変更する
  4. LaTeXオプションを追加
  5. などなど...

詳細については、- http://rmarkdown.rstudio.com/pdf_document_format.htmlenter image description here

14
Jot eN

ブラウザから印刷したときに得られるものに似たオプションの場合、 wkhtmltopdf が1つのオプションを提供します。

Ubuntuで

Sudo apt-get install wkhtmltopdf

そして、pandocの例と同じコマンドを使用してHTMLにアクセスします。

RMDFILE=example-r-markdown  
Rscript -e "require(knitr); require(markdown); knit('$RMDFILE.rmd', '$RMDFILE.md'); markdownToHTML('$RMDFILE.md', '$RMDFILE.html', options=c('use_xhml'))"

その後

wkhtmltopdf example-r-markdown.html example-r-markdown.pdf

結果のファイルは this のように見えました。 MathJaxを処理していないようで( この問題についてはここで説明します )、改ページは見苦しくなります。ただし、場合によっては、このようなスタイルは、LaTeXスタイルのプレゼンテーションよりも優先されることがあります。

10
Jeromy Anglim

2つのステップのみ:

  1. ここから最新リリースの「pandoc」をインストールします。

    https://github.com/jgm/pandoc/releases

  2. library(knitr)で関数pandocを呼び出します

    library(knitr)
    pandoc('input.md', format = 'latex')
    

したがって、「input.md」を「input.pdf」に変換できます。

9
Wei

Rスタジオを使用するのが最も簡単な方法であることがわかりましたが、コマンドラインから制御したい場合は、単純なRスクリプトで rmarkdown renderコマンドを使用してトリックを実行できます(前述のとおり)。完全なスクリプトの詳細 こちら

#!/usr/bin/env R

# Render R markdown to PDF.
# Invoke with:
# > R -q -f make.R --args my_report.Rmd

# load packages
require(rmarkdown)

# require a parameter naming file to render
if (length(args) == 0) {
    stop("Error: missing file operand", call. = TRUE)
} else {
    # read report to render from command line
    for (rmd in commandArgs(trailingOnly = TRUE)) {
        # render Rmd to PDF
        if ( grepl("\\.Rmd$", rmd) && file.exists(rmd)) {
            render(rmd, pdf_document())
        } else {
            print(paste("Ignoring: ", rmd))
        }
    }
}
3
Frank Jung

次の簡単な手順に従ってください。

1:RmarkdownスクリプトでKnit(Ctrl + Shift + K)を実行します2:その後、htmlマークダウンを開いた後、ブラウザーで開く(左上)をクリックし、Webブラウザーでhtmlを開きます3:次にCtrl + Pを使用してPDFとして保存します。

0
Ankit Kamboj

何もインストールしたくない場合は、htmlを出力できます。次に、HTMLファイルを開きます。ブラウザウィンドウで開き、右クリックして印刷します。 Macを使用している場合は、印刷ウィンドウの右下隅にある[pdf形式で保存]を選択します。出来上がり!

0
Mariah Akinbi