我可以编写YAML标头,使用knitr为R Markdown文件生成多种输出格式吗?我无法重现the original question with this title的答案中描述的功能。
此降价文件:
---
title: "Multiple output formats"
output:
pdf_document: default
html_document:
keep_md: yes
---
# This document should be rendered as an html file and as a pdf file
生成pdf文件,但没有HTML文件。
这个文件:
---
title: "Multiple output formats"
output:
html_document:
keep_md: yes
pdf_document: default
---
# This document should be rendered as an html file and as a pdf file
生成HTML文件(和md文件),但没有pdf文件。
后一个例子是给original question的解决方案。我尝试使用Shift-Ctrl-K和RStudio中的Knit按钮进行编织,以及调用rmarkdown::render
,但只创建了一种输出格式,无论我使用哪种方法生成输出文件。 / p>
可能相关,但我找不到解决方案:
使用R版本3.3.1(2016-06-21),knitr 1.14,Rmarkdown 1.3
答案 0 :(得分:14)
我实际上在Render all vignette formats #1051中简要提到过你错过了它:
rmarkdown::render('your.Rmd', output_format = 'all')
它在帮助页面?rmarkdown::render
上有记录。
答案 1 :(得分:0)
尽管谢一辉(Yihui Xie)给出了权威性的回答,并且对一个伟大的软件包的作者给予了应有的尊重,但在许多情况下,output_format = 'all'
并不是最理想的。
该解决方案引起的问题之一是,对于每种格式,从头开始重新处理R脚本。证明:
rmarkdown::render("new.Rmd", output_format = c("html_document", "pdf_document"))
processing file: new.spin.Rmd
|....................... | 33%
ordinary text without R code
|............................................... | 67%
label: unnamed-chunk-1
|......................................................................| 100%
ordinary text without R code
output file: new.knit.md
"C:/Users/fabrn/AppData/Local/Pandoc/pandoc" +RTS -K512m -RTS new.utf8.md --to html4 --from markdown+autolink_bare_uris+tex_math_single_backslash --output new.html --lua-filter "C:\Users\fabrn\R\win-library\4.0\rmarkdown\rmarkdown\lua\pagebreak.lua" --lua-filter "C:\Users\fabrn\R\win-library\4.0\rmarkdown\rmarkdown\lua\latex-div.lua" --email-obfuscation none --self-contained --standalone --section-divs --template "C:\Users\fabrn\R\win-library\4.0\rmarkdown\rmd\h\default.html" --no-highlight --variable highlightjs=1 --variable "theme:bootstrap" --include-in-header "C:\Users\fabrn\AppData\Local\Temp\RtmpW6Vban\rmarkdown-str3490247b1f1e.html" --mathjax --variable "mathjax-url:https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"
Output created: new.html
processing file: new.spin.Rmd
|....................... | 33%
ordinary text without R code
|............................................... | 67%
label: unnamed-chunk-1
|......................................................................| 100%
ordinary text without R code
output file: new.knit.md
"C:/Users/fabrn/AppData/Local/Pandoc/pandoc" +RTS -K512m -RTS new.utf8.md --to latex --from markdown+autolink_bare_uris+tex_math_single_backslash --output new.tex --lua-filter "C:\Users\fabrn\R\win-library\4.0\rmarkdown\rmarkdown\lua\pagebreak.lua" --lua-filter "C:\Users\fabrn\R\win-library\4.0\rmarkdown\rmarkdown\lua\latex-div.lua" --self-contained --highlight-style tango --pdf-engine pdflatex --variable graphics --variable "geometry:margin=1in"
在处理大数据时,这确实是一个问题。
在实际示例中,我通常将乳胶输出用作单个rmarkdown::render
输出,然后使用.tex
或类似工具(如pdf的pandoc
)重新处理prince
文件。所以我的工作流程就像:
rmarkdown::render('new.R', output_format = 'latex_document')
lapply(c("html", "pdf", ...),
function(form) rmarkdown::pandoc_convert("new.tex", output=paste0("new.", form)))
最重要的是:一切取决于您的数据。如果很小,output_format='all'
很简单。
如果大,最好使用通用格式(最好使用乳胶,但在某些情况下使用html更好)作为转换工具的输入。