이전에 R Markdown을 HTML로 변환 하는 명령에 대해 문의했습니다 .
R Markdown 파일을 PDF 문서로 변환하는 좋은 방법은 무엇입니까?
좋은 해결책은 가능한 많은 내용 (예 : 이미지, 방정식, html 테이블 등)을 보존합니다. 솔루션은 명령 줄에서 실행할 수 있어야합니다. 좋은 솔루션은 크로스 플랫폼이며, 의존성을 최소화하여 makefile 등을보다 쉽게 공유 할 수 있도록합니다.
특히 많은 옵션이 있습니다.
- RMD를 MD로 HTML을 PDF로 변환할지 여부; 또는 RMD에서 MD로 PDF로; 또는 RMD에서 PDF로
markdown
R 에서 패키지를 사용하는 경우 지정할 옵션- 사용 여부
pandoc
, R에 내장 된 패키지 또는 다른 것
다음 은 제안 된 솔루션에 대한 합리적인 테스트를 제공하는 rmd 파일 의 예 입니다. 이 블로그 게시물 의 기초로 사용되었습니다 .
답변
업데이트 된 답변 (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
여전히 이전 버전이 표시되었습니다. 경로 에 추가하려면 여기를 참조하십시오 .
답변
훌륭한 소프트웨어 가이 작업을 위해 설계되고 제작 된 pandoc 이 정말로 필요하다고 생각합니다.) pdf 외에도 md 파일을 docx 또는 odt 등으로 변환 할 수 있습니다.
글쎄, Pandoc의 최신 버전을 설치하는 것은 리눅스 에서 찰랑 스러울 수 있지만 ( haskell-platform
소스에서 빌드 하려면 전체 버전 이 필요하기 때문에 ) Windows / Mac에서는 몇 메가 바이트 만 다운로드하면 정말 쉽습니다.
양조 / 니트 마크 다운 파일이있는 경우 pandoc
bash 또는 system
R 내의 함수를 사용하여 호출 할 수 있습니다. 후자의 POC 데모 Ṗandoc.convert
는 내 작은 패키지 의 기능으로 구현 됩니다 ( 내가 시도 할 때 몹시 지루해야합니다) 기회가있을 때마다주의를 기울이십시오 ).
답변
지금 (2014 년 8 월) R Markdown을 PDF로 변환 하기 위해 RStudio 를 사용할 수 있습니다 . 기본적으로 RStudio는 pandoc 을 사용 하여 Rmd를 PDF로 변환합니다.
메타 데이터를 다음과 같이 변경할 수 있습니다.
- 목차 추가
- 그림 옵션 변경
- 구문 강조 스타일 변경
- LaTeX 옵션 추가
- 그리고 더 많은…
자세한 내용은 http://rmarkdown.rstudio.com/pdf_document_format.html
답변
브라우저에서 인쇄 할 때 얻는 것과 유사한 옵션의 경우 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 스타일 프리젠 테이션보다 선호 될 수 있습니다.
답변
두 단계 만 :
-
여기에서 최신 릴리스 “pandoc”을 설치하십시오.
-
에서 함수
pandoc
를 호출하십시오 .library(knitr)
library(knitr) pandoc('input.md', format = 'latex')
따라서 “input.md”를 “input.pdf”로 변환 할 수 있습니다.
답변
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))
}
}
}
답변
아무것도 설치하지 않으려면 html을 출력하십시오. 그런 다음 html 파일을여십시오-브라우저 창에서 연 다음 마우스 오른쪽 버튼을 클릭하여 인쇄하십시오. Mac 인 경우 인쇄 창에서 오른쪽 하단에있는 “pdf로 저장”을 선택하십시오. 짜잔!