Documentos dinâmicos

Rmarkdown

Prof. Walmes Zeviani

2018-04-10

Objetivo e justificativa

Justificativa

Objetivos

Rmarkdown

O conceito

O documento Rmarkdown tem duas partes:

No YAML, os campos do tipo chave: valor podem conter metadados do documento como título, autor e data, como exemplificado a seguir.

---
title: "Documentos dinâmicos"
subtitle: "Rmarkdown"
author: "Prof. Walmes Zeviani"
date: "10 de Abril de 2018"
---

O YAML também tem variáveis que configuram aspectos do documento e/ou instruções de compilação. Existem várias opções disponíveis. Abaixo um exemplo de opções válidas para o documento tipo html_document fornecido pelo pacote rmarkdown.

---
title: "Documentos dinâmicos"
subtitle: "Rmarkdown"
author: "Prof. Walmes Zeviani"
date: "10 de Abril de 2018"
cls: "ABNT.csl"                     # Para formatar referências
bibiography: "refs.bib"             # Arquivo com as referências.
output:
  html_document:                    # Classe de documento.
    toc: true                       # Exibir sumário.
    toc_depth: 2                    # Profundidade do sumário.
    toc_float:                      # Sumário flutuante na borda.
      collapsed: false
      smooth_scroll: false
    number_sections: true           # Seções numeradas.
    theme: united                   # Tema usado (aparência).
    highlight: tango                # Cores para o destaque de código.
    css: styles.css                 # Caminho para arquivo CSS.
    fig_width: 7                    # Lagura das figuras.
    fig_height: 6                   # Altura das figuras.
    fig_caption: true               # Exibicação de legenda.
    code_folding: hide              # Esconder/exibir bloco de código.
    keep_md: true                   # Manter o arquivo md.
    template: quarterly_report.html # Caminho para o template.
    includes:
      in_header: header.html        # Inclui no preâmbulo/head.
      before_body: doc_prefix.html  # Inclui antes do corpo.
      after_body: doc_suffix.html   # Inclui após o corpo.
 ---

Fragmentos de código em linha

Os fragmentos de código em markdown são delimitados por um par de crases simples ou um par de crases triplas.

Esse texto irá aparecer como `código`.

Esse texto irá aparecer como código.

Fragmentos de código em bloco

Os fragmentos em bloco são delimitados 3 crases. Na primeira marca do par pode-se controlar a exibição e execução com pares chave-valor.

```{r eval = TRUE, echo = TRUE, results = "markup"}
head(iris)
```
head(iris)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa

O funcionamento

  1. O pacote knitr avalia o código R e substitui as marcas pelos resultados correspondentes, que são principalmente:
    • Código de saída em linha ou em bloco.
    • Figuras.
    • Tabelas.
  2. O arquivo markdown é gerado e os arquivos auxiliares produzidos (*.png, por exemplo).
  3. O rmarkdown faz a chamada do Pandoc sobre o arquivo markdown usando os metadados de compilação do YAML.
  4. O documento final é produzido quando o Pandoc conclui a conversão.

Metadados

Tipos de documento

O R Markdown Cheat Sheet lista as opções disponíveis de documentos. Todos estão listados em https://rmarkdown.rstudio.com/formats.html.

O cartão de referência do Rmarkdown tem mais detalhes sobre todas as opções: https://www.rstudio.com/wp-content/uploads/2015/03/rmarkdown-reference.pdf.

Outros pacotes estendem as opções. Alguns deles são:

Tema

O rmarkdown uma a galeria de temas do Bootswatch (https://bootswatch.com/) para permitir o uso de diferentes estilos de documentos html.

Default Minty
Cerulean Pulse
Cosmo Sandstone
Cyborg Simplex
Darkly Sketchy
Flatly Slate
Journal Solar
Litera Spacelab
Lumen Superhero
Lux United
Materia Yeti

Destaque de código

O Pandoc possui 7 esquemas de cores para destacar o código. São eles:

# Para Pandoc >= 1.18, mostra os estilos disponíveis.
pandoc --list-highlight-styles

O pacote knitr uma lista bem maior que pode ser usada em documentos Rhtml e Rnw. Confira em http://animation.r-forge.r-project.org/knitr/.

library(knitr)
themes <- knit_theme$get()
themes
##  [1] "acid"              "aiseered"          "andes"            
##  [4] "anotherdark"       "autumn"            "baycomb"          
##  [7] "bclear"            "biogoo"            "bipolar"          
## [10] "blacknblue"        "bluegreen"         "breeze"           
## [13] "bright"            "camo"              "candy"            
## [16] "clarity"           "dante"             "darkblue"         
## [19] "darkbone"          "darkness"          "darkslategray"    
## [22] "darkspectrum"      "default"           "denim"            
## [25] "dusk"              "earendel"          "easter"           
## [28] "edit-anjuta"       "edit-eclipse"      "edit-emacs"       
## [31] "edit-flashdevelop" "edit-gedit"        "edit-jedit"       
## [34] "edit-kwrite"       "edit-matlab"       "edit-msvs2008"    
## [37] "edit-nedit"        "edit-vim"          "edit-vim-dark"    
## [40] "edit-xcode"        "ekvoli"            "fine_blue"        
## [43] "freya"             "fruit"             "golden"           
## [46] "greenlcd"          "greyscale0"        "greyscale1"       
## [49] "greyscale2"        "kellys"            "leo"              
## [52] "lucretia"          "manxome"           "maroloccio"       
## [55] "matrix"            "moe"               "molokai"          
## [58] "moria"             "navajo-night"      "navy"             
## [61] "neon"              "night"             "nightshimmer"     
## [64] "nuvola"            "olive"             "orion"            
## [67] "oxygenated"        "pablo"             "peaksea"          
## [70] "print"             "rand01"            "rdark"            
## [73] "relaxedgreen"      "rootwater"         "seashell"         
## [76] "solarized-dark"    "solarized-light"   "tabula"           
## [79] "tcsoft"            "vampire"           "whitengrey"       
## [82] "xoria256"          "zellner"           "zenburn"          
## [85] "zmrok"

Inclusão de arquivos auxiliares

No YAML pode-se especificar caminhos para arquivos que terão conteúdo colocado antes (before_body) e após (after_body) do corpo do documento. Também é possível incluir conteúdo no preâmbulo/head do documento.

    includes:
      in_header: header.html        # Inclui no preâmbulo/head.
      before_body: doc_prefix.html  # Inclui antes do corpo.
      after_body: doc_suffix.html   # Inclui após o corpo.

O before_body é útil para definir cabeçalho de páginas HTML, bem como o after_body é útil para rodapé. O arquivo header.html serve para customizar o preâmbulo/head. No LaTeX pode-se usar para carregar pacotes e no HTML tem funcionalidade semelhante.

Customização do CSS

O CSS permite customização fina de páginas HTML. Esse arquivo contém todas instruções relacionadas a aparência da página. Nesse arquivo pode-se definir coisas como fonte, tamanho, cores, espaçamento, etc.

    css: styles.css                 # Caminho para arquivo CSS.

Existem vários sites que permitem edição online de CSS para experimentar os efeitos. Abaixo tem-se uma pequena lista.

Próxima aula