R Markdown를 PDF로 변환하는 방법?


127

이전에 R Markdown을 HTML로 변환 하는 명령에 대해 문의했습니다 .

R Markdown 파일을 PDF 문서로 변환하는 좋은 방법은 무엇입니까?

좋은 해결책은 가능한 많은 내용 (예 : 이미지, 방정식, html 테이블 등)을 보존합니다. 솔루션은 명령 줄에서 실행할 수 있어야합니다. 좋은 솔루션은 크로스 플랫폼이며, 의존성을 최소화하여 makefile 등을보다 쉽게 ​​공유 할 수 있도록합니다.

특히 많은 옵션이 있습니다.

  • RMD를 MD로 HTML을 PDF로 변환할지 여부; 또는 RMD에서 MD로 PDF로; 또는 RMD에서 PDF로
  • markdownR 에서 패키지를 사용하는 경우 지정할 옵션
  • 사용 여부 pandoc, R에 내장 된 패키지 또는 다른 것

다음 은 제안 된 솔루션에 대한 합리적인 테스트를 제공하는 rmd 파일 의 예 입니다. 이 블로그 게시물 의 기초로 사용되었습니다 .


7
나는 판독이 최선의 방법이라고 생각합니다. R에 빌드하는 것은별로 의미가 없으며, 가능하다고 생각하지 않습니다 (Haskell로 작성 됨). 내가 아주 일찍 여기 일이 : github.com/yihui/knitr-book를 (두 개의 쉘 스크립트를 참조 knit하고 mdconvert.sh). LaTeX가 너무 유연하기 때문에 일반적인 접근 방식을 찾기가 어려울 수 있습니다. pandoc에 모든 종류의 템플릿을 사용할 수 있습니다.
Yihui Xie

'R 마크 다운 *이란 무엇입니까? rstudio.com/ide/docs/r_markdown
Panic

markdowntopdf.com 이 사이트는 실제로 꽤 좋습니다. 그러나 라텍스 지원은 없습니다
padawan

RStudio v1.0에 대한이 답변을 업데이트 할 수 있습니까?
Adam_G

답변:


69

업데이트 된 답변 (2013 년 2 월 10 일)

rmarkdown package : Pandoc 과 인터페이스 하는 rmarkdown패키지가 github 에 있습니다. render기능 이 포함되어 있습니다. 이 설명서를 통해 다양한 형식 중에서 rmarkdown을 pdf로 변환하는 방법을 매우 명확하게 알 수 있습니다. 여기에는 rmarkdown 파일에 출력 형식을 포함 시키거나 rend 함수에 출력 형식을 제공하는 것이 포함됩니다. 예 :

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

명령 줄 : 명령 줄render 에서 실행하면 (예 : makefile 사용) 가끔 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을 사용해야하는 중요성에 대해서는 아래 참고 사항을 참조하십시오.

Pandoc 사용

다음 명령을 사용하여 R Markdown을 HTML (예 : 이 makefile의 변형 )로 변환했습니다. 여기서 구성 요소가 RMDFILE없는 R Markdown 파일의 이름입니다 .rmd(확장자가 .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에서 호스팅 된 이미지에 대한 참조를 제거했습니다. 수치는 로컬이어야합니다.
  • markdownToHTML기능 의 옵션은 이미지 참조가 HTML 파일에 저장된 데이터가 아니라 파일에 대한 것임을 의미했습니다 (즉, 'base64_images'옵션 목록에서 제거됨 ).
  • 결과 출력은 다음과 같습니다 . 브라우저에서 HTML 파일을 pdf로 인쇄하면 얻을 수있는 것과 대조적으로 LaTeX 스타일의 문서를 분명히 만들었습니다.

Pandoc의 최신 버전 얻기

@daroczig에서 언급했듯이 pdf를 출력하려면 Pandoc의 최신 버전이 있어야합니다. 우분투에 2012년 6월 15 일, 나는이 패키지 관리자에서 Pandoc 버전 1.8.1 붙어했지만,에서 보인다 변경 로그 PDF 지원을 위해 당신이 Pandoc의 최소 버전 1.9+에서 필요.

따라서 설치했습니다 caball-install. 그런 다음 실행했습니다.

cabal update
cabal install pandoc

Pandoc가 설치되었으므로 ~/.cabal/bin/pandoc 실행했을 때 pandoc여전히 이전 버전이 표시되었습니다. 경로추가하려면 여기를 참조하십시오 .


5
이 답변에 감사드립니다. 내 경험에 따르면 .html 파일이 아닌 .md 파일을 pandoc 에 제공하면 더 나은 결과 를 얻을 수 있다고 언급하고 싶습니다 . 실험 해 볼 가치가 있습니다.
yoavram

이것은 내가 좋은 과정을 거친 가장 가까운 것입니다. 그림 텍스트를 "Plot chunk of ..."에서 다른 것으로 변경하는 방법이 있습니까?
svenski

1
pandoc내 구식 우분투 13.04에서도 버전 1.12입니다.
krlmlr

22

훌륭한 소프트웨어 가이 작업을 위해 설계되고 제작 된 pandoc 이 정말로 필요하다고 생각합니다.) pdf 외에도 md 파일을 docx 또는 odt 등으로 변환 할 수 있습니다.

글쎄, Pandoc의 최신 버전을 설치하는 것은 리눅스 에서 찰랑 스러울 수 있지만 ( haskell-platform소스에서 빌드 하려면 전체 버전 이 필요하기 때문에 ) Windows / Mac에서는 몇 메가 바이트 만 다운로드하면 정말 쉽습니다.

양조 / 니트 마크 다운 파일이있는 경우 pandocbash 또는 systemR 내의 함수를 사용하여 호출 할 수 있습니다. 후자의 POC 데모 Ṗandoc.convert는 내 작은 패키지기능으로 구현 됩니다 ( 내가 시도 할 때 몹시 지루해야합니다) 기회가있을 때마다주의를 기울이십시오 ).


+1 기능이 좋아 보인다; R Markdown을 PDF로 변환하기 위해 권장되는 한 줄짜리 pandoc 명령이 있습니까?
Jeromy Anglim 2016 년

1
추가 --toc하면 명령 줄에 유용하고 (제목에 따라 nics 목차에 표시됨) LaTeX 템플릿을 사용자 정의 (예 : 추가 \listoffigures및 / 또는 \listoftables기타 추가)하여 사용자 정의하면 훌륭한 문서가 될 수 있습니다.
daroczig 2016 년

3
무엇에 대해 도전 apt-get install pandoc?
sumid

@sumid 당신은 최신 부분 놓쳤을 수도 있습니다 (테스트를 사용하지 않는다면).
daroczig

네 맞아요-두 번 나는 그것을 놓 쳤고 또한 테스트를 사용하고 있습니다 ;-) 그런 다음 테스트를 허용 sources.list하고 apt-get install -t testing pandoc설치 haskell-platform및 컴파일 하는 것이 더 쉬운 것으로 인식 합니다. (보통 나는 이것을 실험적으로한다. 테스트에서 같은 방식으로 작동하기를 바란다.)
sumid

14

지금 (2014 년 8 월) R Markdown을 PDF로 변환 하기 위해 RStudio 를 사용할 수 있습니다 . 기본적으로 RStudio는 pandoc 을 사용 하여 Rmd를 PDF로 변환합니다.

메타 데이터를 다음과 같이 변경할 수 있습니다.

  1. 목차 추가
  2. 그림 옵션 변경
  3. 구문 강조 스타일 변경
  4. LaTeX 옵션 추가
  5. 그리고 더 많은...

자세한 내용은 http://rmarkdown.rstudio.com/pdf_document_format.html여기에 이미지 설명을 입력하십시오


1
Ubuntu 14.04, pandoc v1.17.1에서는 'knit PDF'옵션을 사용할 수 없습니다. 설정이 필요합니까?
Prradep

어떤 RStudio 버전이 있습니까? 새로운 rmarkdown 파일을 만들었습니까?
Jot eN

Rstudio-v 0.98.507
Prradep


@Prradep 대화의 결과는 무엇입니까?
nealmcb 2019

10

브라우저에서 인쇄 할 때 얻는 것과 유사한 옵션의 경우 wkhtmltopdf하나의 옵션을 제공합니다.

우분투에서

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

결과 파일은 다음과 같습니다 . MathJax를 처리하지 않는 것 같았습니다 ( 이 문제는 여기에서 설명합니다 ). 페이지 나누기는보기 흉합니다. 그러나 경우에 따라 이러한 스타일이 LaTeX 스타일 프리젠 테이션보다 선호 될 수 있습니다.


RStudio에서 마지막 명령을 실행할 수 없습니다. 나는 시도 system("wkhtmltopdf temp.html temp.pdf") 그 해결 방법에 대해 어떤 생각을
Urvah의 Shabbir

9

두 단계 만 :

  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 studio를 사용하는 것이 가장 쉬운 방법을 찾았지만 명령 줄에서 제어하려는 경우 간단한 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 마크 다운이 열린 후 브라우저에서 열기 (왼쪽 상단)를 클릭하고 html이 웹 브라우저에서 열립니다. 3 : 그런 다음 Ctrl + P 및 PDF로 저장하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.