R MarkdownをPDFに変換する方法


127

以前、R MarkdownをHTMLに変換するためコマンドについて尋ねました。

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

優れた解決策は、コンテンツ(たとえば、画像、数式、HTMLテーブルなど)を可能な限り保持することです。ソリューションはコマンドラインから実行できる必要があります。優れたソリューションはクロスプラットフォームでもあり、理想的には依存関係を最小限に抑えて、メイクファイルなどを共有しやすくします。

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

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

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


7
私はパンドックが最善の方法であるべきだと信じています。それをRに組み込むことは私にはあまり意味がなく、それも可能だとは思いません(Haskellで書かれています)。github.com/yihui/knitr-book(2つのシェルスクリプトknitとを参照mdconvert.sh)の非常に早い段階での作業があります。LaTeXは柔軟性が高すぎるため、一般的なアプローチを考えるのは難しいかもしれません。pandocにはあらゆる種類のテンプレートを使用できます。
Yihui Xie

「Rマークダウン」とは何ですか?rstudio.com/ide/docs/r_markdown
大佐パニック

markdowntopdf.comこのサイトは実際にはかなり良いです。ただし、ラテックスサポートはありません
padawan 2015年

RStudio v1.0のこの回答を更新できますか?
Adam_G 2016年

回答:


69

回答の更新(2013年2月10日)

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

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

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

たとえば、OSXを実行しているコンピューターで、RStudioを介してpandocのコピーを持っている場合、次のように使用できます。

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

古い回答(2012年頃)

ですから、多くの人々がパンドックが進むべき道であると提案しました。Pandocの最新バージョンを使用することの重要性については、以下のメモを参照してください。

Pandocの使用

次のコマンドを使用して、RマークダウンをHTML(つまり、このmakefileのバリアント)に変換しました。ここで、RMDFILEは、.rmdコンポーネントなしのRマークダウンファイルの名前です(拡張子はである.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'オプションリストから削除しました)。
  • 結果の出力は次のように見えたこの。ブラウザーからHTMLファイルをPDFに印刷した場合に得られるものとは対照的に、それは明らかに非常にLaTeXスタイルのドキュメントを作成しました。

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

@daroczigが述べたように、PDFを出力するには、Pandocの最新バージョンを入手することが重要です。Ubuntuで2012年6月15日の時点で、パッケージマネージャーでバージョン1.8.1のPandocが表示されませんでしたが、変更ログから、PDFサポートにはバージョン1.9以降のPandocが必要であるようです。

したがって、私はインストールしましたcaball-install。そして走った:

cabal update
cabal install pandoc

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


5
この回答をありがとう。私の経験では、.htmlファイルではなく.mdファイルをpandocに渡すと、より良い出力が得られるというコメントをしたいと思います。したがって、実験する価値があります。
yoavram '19年

これも私が良いプロセスに至った最も近いものです。図のテキストを「...のプロットチャンク」から別のものに変更する方法はありますか?
スベンスキー2013年

1
pandoc私の今時代遅れのUbuntu 13.04でもバージョン1.12です。
krlmlr 2014

22

このタスクのためだけに設計されて構築された素晴らしいソフトウェアであるpandocが本当に必要だと思います:) PDFのほかに、mdファイルをたとえばdocxodtなどに変換できます。

まあ、Pandocの最新バージョンをインストールすると、 Linuxで問題が発生する可能性があります(haskell-platformソースからビルドするためにentire全体を必要とするため)が、数メガバイトのダウンロードでWindows / Macで本当に簡単です。

brewed / knittedマークダウンファイルがある場合はpandoc、たとえばbashまたはsystemR内の関数で呼び出すことができます。後者のPOCデモはṖandoc.convert、私の小さなパッケージの関数に実装されています私が試してみると、非常に退屈しているはずです)あらゆる機会に注意を向けてください)。


+1機能は良さそうです。R MarkdownをPDFに変換するための推奨される1行のpandocコマンドはありますか?
Jeromy Anglim 2012年

1
--tocコマンドラインで追加すると便利です(見出しに基づいてnicsの目次が作成されます)。また、LaTeXテンプレートをニーズに合わせてカスタマイズすると(追加\listoffiguresや追加\listoftablesなど)、すばらしいドキュメントが得られます。
daroczig

3
何に挑戦していapt-get install pandocますか?
sumid

@sumid 最新の部分見逃している可能性があります(テストを使用していない場合)。
daroczig

ええ、あなたは正しいです-2回。私はそれを逃し、私はテストも使用しています;-)次に、テストを実行sources.listしてapt-get install -t testing pandocからインストールhaskell-platformしてコンパイルすることを簡単に一時的に許可します。(通常、私はこれを実験的に行います。テストでも同じように機能することを願っています。)
sumid

14

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

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

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

詳細-http://rmarkdown.rstudio.com/pdf_document_format.htmlここに画像の説明を入力してください


1
「knit PDF」オプションは、Ubuntu 14.04、pandoc v1.17.1では使用できません。必要な設定はありますか?
Prradep

RStudioのどのバージョンをお持ちですか?新しいrmarkdownファイルを作成しましたか?
Jot eN 2016

Rstudio-v 0.98.507
Prradep 2016


@Prradep会話の結果はどうでしたか?
nealmcb 2017

10

ブラウザから印刷したときと同じように見えるオプションについては、wkhtmltopdf1つのオプションを提供します。

Ubuntuの場合

sudo apt-get install wkhtmltopdf

そして、HTMLにアクセスするためのpandocの例と同じコマンド:

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

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


RStudioで最後のコマンドを実行できません。私はsystem("wkhtmltopdf temp.html temp.pdf") それを修正する方法を考えてみまし た
Urvah Shabbir 2017

9

2つのステップのみ:

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

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

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

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

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


3

私は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))
        }
    }
}

0

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


0

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.