Documentos dinâmicos no R: interação entre as linguagens Rmarkdown e latex

Dr. Henrique José de Paula Alves - http://lattes.cnpq.br/1676599123972157

13/08/2022

Sobre mim

Introdução

Markdown é uma linguagem de marcação, ou seja, não é uma linguagem de programação. Linguagens de marcação dizem como algo deve ser entendido, mas não têm capacidade de processamento e execução de funções.

Por exemplo, HTML é uma linguagem de marcação. Ela apenas diz como uma página web está estruturada, mas não executa nenhum processamento. O Markdown, da mesma forma, apenas informa como um documento está estruturado.

Vantagens

No entanto, a vantagem do Markdown é a sua simplicidade e a possibilidade de utilização de uma linguagem comum para a criação de vários tipos de documentos.

Por exemplo, um mesmo código Markdown pode ser convertido para HTML, LaTeX (gera pdf’s), docx etc.

Para isso, é necessário um conversor, que lê um código em Markdown e, considerando a escolha do output desejado, converte o arquivo para a linguagem desejada. Isto ficará mais claro com os exemplos.

O que é Rmarkdown

RMarkdown é a possibilidade de executar-se scripts em R (além de outras linguagens) e incorporá-los a um arquivo Markdown (extensão .md). O pacote knitr executará “pedaços” (chunk) de códigos e gerará um arquivo .md com os códigos e seus resultados.

Na sequência, o pandoc, que é um conversor, converte-o para a linguagem desejada, gerando os arquivos nos formatos escolhidos (.html, .docx, .pdf, .odt) (http://rmarkdown.rstudio.com).

Figura 1: renderização de documentos em Rmarkdown.

Rmarkdown

Aspectos

  • Reprodutibilidade. Isto é importante quando um estudo é realizado. Pode ser que em algum momento após a realização do seu estudo outro analista/pesquisador deseje replicá-lo. Um documento que une o código às explicações pode ser fundamental neste momento.

  • Compartilhamento de informação. É possível que você tenha aprendido a usar um novo pacote e ache que ele pode ser interessante para outros colegas. Com o RMarkdown, você poderá criar um documento com exemplos de uso do pacote, facilmente compartilhável.

Aspectos

  • Documentação de Rotinas. A criação de rotinas para a realização de tarefas repetitivas é cada vez mais comum. No entanto, é importante que haja uma boa documentação da rotina para que você ou outro colega possa entender e dar manutenção à rotina no futuro.

  • Relatórios parametrizados. O RMarkdown facilita a criação de relatórios, inclusive dashboards, em que a estrutura é padrão, mas os dados dependem de um parâmetro. Por exemplo, relatórios de balança comercial por unidade da federação (UF). No caso, a UF seria um parâmetro que variaria de relatório para relatório.

Iniciando no Rstudio

Instalação, carregando e novo documento

install.packages("rmarkdown")
library(rmarkdown)
Figura 2: passos para inicialização do Rmarkdown

Estrutura de um Rmarkdown

---
  YAML (Configurações)
---
  
  Textos e Markdown

  Code Chunks

 Textos e Markdown

Um exemplo simples

---
title: "Primeiro Exemplo para o Curso de R"
author: "Paulo"
date: "29 de setembro de 2021"
output:
  html_document: default
  lang: pt-br
---
plot(rnorm(100))
# Cabeçalho de primeiro nível
## Cabeçalho de segundo nível
### Cabeçalho de terceiro nível

YAML

O YAML é o responsável pelas configurações dos documentos. Basicamente, estamos informando qual é o título do documento, a data de criação, o nome do autor e o tipo de output que desejamos.

No exemplo, está definido como output html_document. Caso quiséssemos um arquivo no formato Word (.docx), o output poderia ser modificado para word_document.

Cada formato possui um conjunto de opções disponíveis. Nesse caso, é importante consultar a página de cada formato disponível na documentação do RMarkdown.

Code chunks

Os Code Chunks são pedaços de código em R que podem ser executados para gerar resultados que serão incorporados ao documento.

Você pode inserir um chunk manualmente ou com o atalho CTRL + ALT + I.

É possível incluir uma série de opções relacionadas à execução do código. Falaremos destas opções mais adiante.

Renderizando um documento

Figura 3: renderizando um documento em Rmarkdown

Sintaxe

Criando cabeçalhos

  • Cada seção pode ser criada com o Markdown digitando um único caractere ‘#’ no início de uma linha;

  • Exemplo:

  • # Seção

  • Para criar subseções basta adicionar dois caracteres “#”

  • ## Subseção

  • Para criar subsubseções basta adicionar três caracteres “#”

  • ### Subsubseção

Linguagem para texto

Opção LaTeX Markdown Resultado
Itálico \it{texto} *texto* ou _texto_ texto
Negrito \bf{texto} **texto** ou __texto__ texto
Negrito e itálico \textbf{\textit{texto}} ***texto*** ou ___texto___ texto
Texto riscado \sout{texto} ~~texto~~ texto

Criando lista

Criando listas utilizando o sinal de menos (-):

- item 1
- item 2
- item 3
  • item 1
  • item 2
  • item 3

Criando lista

1. item                                  * Item

    * Subitens dentro do item 1             - Subitens dentro do item 

    * Subitens dentro do item 1             - Subitens dentro do item 
  1. item
    • Subitens dentro do item 1
    • Subitens dentro do item 1
  • Item
    • Subitens dentro do item
    • Subitens dentro do item

Criando lista

1. Item                                

    1. Ordenando dentro do item 1         

    2. Ordenado dentro do item 1         
  1. Item
    1. Ordenando dentro do item 1
    2. Ordenado dentro do item 1

Criando Teoremas, Proposições, Lemas etc

 Teorema 1
:   Descrição do Teorema 1
Teorema 1

Descrição do Teorema 1

Proposição 1
:   Descrição do Proposição 1
Proposição 1

Descrição do Proposição 1

Definição 1
:   Descrição do Definição 1
Definição 1

Descrição do Definição 1

Tabela

|À esquerda          | À direita         | Centralizado  |
|:-------------------|------------------:|:-------------:|
|Essa coluna foi     |Essa coluna foi    |Essa coluna foi|
|alinhada à esquerda |alinhada à direita |Centralizada   |      

Table: Título da Tabela
Título da Tabela
À esquerda À direita Centralizado
Essa coluna foi Essa coluna foi Essa coluna foi
alinhada à esquerda alinhada à direita Centralizada

Inserindo vídeos do Youtube na apresentação

<a href="http://www.youtube.com/watch?feature=
    player_embedded&v=COLOQUE_AQUI_O_ID_VIDEO_YOUTUBE
   "target="_blank"><img src="http://img.youtube.com/vi/
    COLOQUE_AQUI_O_ID_VIDEO_YOUTUBE/0.jpg" 
   alt="Texto da imagem" width="240" 
    height="180" border="10" /></a>
    

UFLA

Inserindo vídeos do Youtube na apresentação

[![Texto da imagem](http://img.youtube.com/vi/COLOQUE_AQUI_
O_ID_VIDEO_YOUTUBE/0.jpg)](http://www.youtube.com/watch?v=
COLOQUE_AQUI_O_ID_VIDEO_YOUTUBE)

Texto da imagem

Ambiente matemático

São os mesmos comandos utilizados no Latex.

$\bar{x} = \frac{ \displaystyle \sum_{i=1}^{n} x_i}{n}$

\(\bar{x} = \frac{ \displaystyle \sum_{i=1}^{n} x_i}{n}\)

$$\mbox{var}(x)=\frac{\displaystyle \sum_{i=1}^{n}
(x_i- \bar{x})^2}{n-1}$$

\[\mbox{var}(x) =\frac{\displaystyle\sum_{i=1}^{n}(x_i- \bar{x})^2}{n-1} \]

Alinhamento de equações

$$
\begin{aligned}
  \bar{x} & = \frac{1}{N}\sum_{i=1}^{N}x_{i} \\
  \widehat{\boldsymbol{\beta}} & = (\mathbf{X}^{T}
  \mathbf{X})^{-1}\mathbf{X}^{T}\mathbf{y} 
\end{aligned}
$$

\[ \begin{aligned} \bar{x} & = \frac{1}{N}\sum_{i=1}^{N}x_{i} \\ \widehat{\boldsymbol{\beta}} & = (\mathbf{X}^{T} \mathbf{X})^{-1}\mathbf{X}^{T}\mathbf{y} \end{aligned} \]

Opções de chunk e principais formatos gerados

Opções de chunk

Figura 4: opções de chunk R

Principais formatos gerados - HTML

A HTML é a linguagem de marcação para construção de páginas web. Assim, se criarmos um documento e escolhermos como opção de output html_document, o resultado será uma página a ser aberta em browsers. Outros formatos do markdown, como flexdashboard e ioslides, também geram páginas html. Cada tipo de formato tem um conjunto de aspectos específicos. Abaixo listamos os principais para html:

  • A aparência e o estilo são definidos por um arquivo no formato css. Isso impõe uma dificuldade adicional para a formatação do documento. O Rmarkdown fornece alguns temas e pacotes que também podem fornecer documentos com alguma formatação de estilo.

  • Único formato que aceita htmlwidgets (o próprio nome indica isso).

Principais formatos gerados - PDF

Para a criação de PDFs pelo RMarkdown, utiliza-se o LaTeX (pronuncia-se: Lah-tech or Lay-tech), que é um sistema de preparação de documentos muito utilizado pela comunidade científica. Inicialmente, o RMarkdown abstrai para o usuário a necessidade de saber-se essa linguagem.

Entre as vantagens do LaTeX estão:

  • Numeração automática de seções (e os demais níveis) e de equações;

  • Criação automática de legendas com base em arquivos .bib;

  • Facilidade de referências cruzadas no documento.

É possível usar templates e, para gerar código em latex, é necessário ter alguma instalação TEX disponível.

Principais formatos gerados - Word

A geração de word segue a geração dos demais formatos. No entanto, templates apenas funcionam para definir estilos que serão usados no documento.

Atualmente, devido a limitações do conversor (pandoc), é difícil ter-se total acesso à formatação do documento.

Vamos a prática