Resposta atualizada (10 de fevereiro de 2013)
Pacote rmarkdown : Agora existe um rmarkdown
pacote disponível no github que faz interface com o Pandoc. Inclui uma render
função. A documentação deixa bem claro como converter rmarkdown em pdf entre vários outros formatos. Isso inclui a inclusão de formatos de saída no arquivo rmarkdown ou a execução de um formato de saída para a função de renderização. Por exemplo,
render("input.Rmd", "pdf_document")
Linha de comando:
Quando corro a render
partir da linha de comando (por exemplo, usando um makefile), às vezes tenho problemas com o pandoc não sendo encontrado. Presumivelmente, ele não está no caminho de pesquisa. A resposta a seguir explica como adicionar pandoc ao meio ambiente R .
Por exemplo, no meu computador executando o OSX, onde tenho uma cópia do pandoc através do RStudio, posso usar o seguinte:
Rscript -e "Sys.setenv(RSTUDIO_PANDOC='/Applications/RStudio.app/Contents/MacOS/pandoc');library(rmarkdown); library(utils); render('input.Rmd', 'pdf_document')"
Resposta antiga (por volta de 2012)
Assim, várias pessoas sugeriram que Pandoc é o caminho a percorrer. Veja as notas abaixo sobre a importância de ter uma versão atualizada do Pandoc.
Usando Pandoc
Eu usei o seguinte comando para converter R Markdown em HTML (ou seja, uma variante desse makefile ), onde RMDFILE
é o nome do arquivo R Markdown sem o .rmd
componente (ele também assume que a extensão é .rmd
e não .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'))"
e então este comando para converter para pdf
Pandoc -s example-r-markdown.html -o example-r-markdown.pdf
Algumas notas sobre isso:
- Eu removi a referência no arquivo de exemplo que exporta plotagens para imgur para hospedar imagens.
- Eu removi uma referência a uma imagem que estava hospedada no imgur. Os números parecem precisar ser locais.
- As opções na
markdownToHTML
função significavam que as referências de imagem são para arquivos e não para dados armazenados no arquivo HTML (ou seja, eu removi 'base64_images'
da lista de opções).
- A saída resultante parecia ser este . Claramente, criou um documento no estilo LaTeX, em contraste com o que recebo se imprimir o arquivo HTML em pdf a partir de um navegador.
Obtendo a versão atualizada do Pandoc
Conforme mencionado por @daroczig, é importante ter uma versão atualizada do Pandoc para gerar PDFs. No Ubuntu, a partir de 15 de junho de 2012, eu estava preso à versão 1.8.1 do Pandoc no gerenciador de pacotes, mas parece que, no log de alterações, para o suporte ao pdf, você precisa pelo menos da versão 1.9+ do Pandoc.
Assim, eu instalei caball-install
. E então correu:
cabal update
cabal install pandoc
Pandoc foi instalado em ~/.cabal/bin/pandoc
Assim, quando eu corri pandoc
, ainda estava vendo a versão antiga. Veja aqui para adicionar ao caminho .
knit
emdconvert.sh
). Pode ser difícil apresentar uma abordagem geral, já que o LaTeX é muito flexível; você pode usar todos os tipos de modelos para o pandoc.