Tipos de produtos

Possibilidades

A linguagem Rmarkdown possibilita a produção de inúmeros tipos de conteúdos diferentes em distintos formatos (HTML, PDF, DOCX, ODT, PPTX etc). Vejam abaixo algumas dessas possibilidades, disponíveis na seção Galeria da página de apresentação da linguagem Rmarkdown. Reparem na enorme quantidade de arquivos nos mais diferentes formatos e estilos que podem ser gerados ao se utilizar a linguagem Rmarkdown:


Discorro abaixo sobre os principais formatos (HTML, PDF, e DOCX), e sobre algumas funcionalidades específicas de determinados pacotes R.

Objetivos de aprendizado

  • Compilar um arquivo Rmd em HTML;
  • Compilar um arquivo Rmd em PDF;
  • Compilar um arquivo Rmd em DOCX;
  • Compilar um arquivo Rmd em ODT;
  • Compilar um arquivo Rmd em PPTX.

HTML

O arquivo HTML é a saída mais comum quanto ao tipo de produto gerado em arquivos Rmd e, portanto, possui o maior número de funcionalidades disponíveis em comparação com os outros tipos de produtos possíveis (PDF e DOCX). Há diversas maneiras de produzir HTML distintos, a depender do pacote R utilizado e a finalidade do HTML. Começaremos pela maneira mais simples, utilizando a função rmarkdown::html_document() do pacote R rmarkdown ():

---
title: "Análise exploratória de dados"
author: Ricardinho
date: 4 Jun 2024
output: html_document
---

PDF

Para poder gerar um PDF, é necessário termos uma distribuição LaTeX instalada no computador. Certifique-se de que você instalou o pacote R tinytex (, ) (ver mais detalhes nesta seção) pois esta é a maneiar mais rápida e fácil atualmente de ter uma distribuição LaTeX funcionando.

Uma vez com o LaTeX instalado em seu computador, e tendo ao menos o pacote R rmarkdown instalado e funcionando, podemos prosseguir à próxima etapa.

Devemos utilizar a função básica rmarkdown::pdf_document() do pacote rmarkdown no YAML junto ao output::

---
title: "Um arquivo Rmd pode gerar um produto DOCX"
author: Juquinha
date: 2027-07-07
output: pdf_document
---

O formato PDF possui uma série de formatações não disponíveis para outros formatos, já que é o LaTeX que controla o produto final. Vejam algumas destas funcionalidades nas seções , , e .

DOCX

Para criar um documento no formato DOCX, devemos utilizar a função rmarkdown::word_document() via linha de comando ou simplesmente o argumento word_document associado ao output no YAML:

---
title: "Um arquivo Rmd pode gerar um produto DOCX"
author: Juquinha
date: 2027-07-07
output: word_document
---

ODT

ODT é a abreviação de OpenDocument, uma implementação de código aberto alternativa ao DOCX.

Apesar de menos famoso que seu irmão DOCX, ele também está incluído no universo do Rmarkdown. Para criarmos um documento ODT, basta utilizarmos a função rmarkdown::odt_document junto ao output do YAML:

---
title: "Um arquivo Rmd pode gerar um produto ODT também!"
author: Carlinhos
date: 2027-07-07
output: odt_document
---

PPTX

Apesar de estranho aos novatos, é possível sim criarmos uma apresentação do PowerPoint (ou simplesmente PPTX) a partir de um arquivo Rmd. Precisamos utilizar a função rmarkdown::powerpoint_presentation junto ao argumento output no YAML:

---
title: "Powerpoint"
author: Bruninha
date: 1 Dez 2031
output: powerpoint_presentation
---

# Cabeçalho de primeiro grau cria um slide a parte

## Cabeçalho de segundo grau é inserido no topo do slide em uma nova página

- item de lista não numerada
- outro item

## Quarto slide

- Mais uma lista
- Outro item

# Mais um slide solitário, como uma quebra de conteúdo

## Outro slide

1. Lista numerada
2. Outro item

---

O separador `---` pode ser utilizado para separar slides também.  


::: {.cell}
::: {.cell-output-display}
![Um plot.](05_output_files/figure-html/cars-1.png){width=672}
:::
:::


## Mais outro slide para finalizar

2. Lista numerada
3. Outro item

Podemos também executar um código R por script ou diretamente no console visando a compilação de um arquivo Rmd:

library("rmarkdown")
rmarkdown::render(input = "meuArquivoQueVaiGerarUmPPTX.Rmd", output_format = "powerpoint_presentation")

Isso vale para os outros formatos também. O que mudaria seria apenas o valor colocado no argumento output_format:

  • se desejamos um arquivo HTML, utilizaríamos a seguinte notação rmarkdown::render(input = "meuArquivoQueVaiGerarUmHTML.Rmd", output_format = "html_document");

  • se queremos um PDF, então teríamos rmarkdown::render(input = "meuArquivoQueVaiGerarUmPDF.Rmd", output_format = "pdf_document"), e assim sucessivamente.

Funcionalidades

Apresento abaixo diversas funcionalidades disponíveis para formatar os seus documentos. Algumas funcionalidades só poderão ser utilizadas em determinados produtos ou então apenas presentes em alguns pacotes específicos de R. Leiam com atenção e pratiquem bastante. Em caso de dúvidas, deixe seu comentário ao fim da página.

Acrescentar sumário

Para acrescentar um sumário (ou tabela de conteúdo) em seu documento, use o argumento toc e especifique a profundidade do sumário por meio do argumento toc_depth:

---
title: "Análise exploratória de dados"
author: Ricardinho
date: 4 Jun 2024
output: 
  html_document:
    toc: true
    toc_depth: 3
---

Reparem que em metadados YAML, os espaços contam; isto é, a indentação é necessária!

A profundidade do sumário diz respeito ao grau do cabeçalho que se deseja atingir, isto é, você deseja que seu sumário liste os cabeçalhos até o segundo grau (== “##”)? Ou até o terceiro grau (==“###”)? Ou até o quarto grau (=“####”) ?

Para cada uma das respostas acima, teríamos o argumento toc_depth com as seguintes respostas:

toc_depth: 2
toc_depth: 3
toc_depth: 4

Se não desejarmos o sumário, podemos usar o argumento toc: false ou simplesmente não utilizá-lo.

Numerar seções

Você pode numerar seções utilizando o argumento number_sections, que habilita a numeração caso seja atribuído o valor true a ele:

---
title: "Análise exploratória de dados"
author: Ricardinho
date: 4 Jun 2024
output: 
  html_document:
    number_sections: true
---

Se você desejar numerar todas as seções, excluindo alguma(s), você pode fazer acrescentar o valor {-} após o cabeçalho que você deseja não numerar. Por exemplo, suponha que a seção # Prefácio não deva ser numerada por você. Você deve fazer então da seguinte maneira:

# Prefácio {-}

Referência cruzada de figuras e tabelas

Fazer referência de figuras e tabelas no texto é um recurso muito útil em qualquer tipo de documento. Porém, este recurso só está disponível no pacote R bookdown (). Logo, será necessário mudar o valor atribuído ao argumento output nos metadados do seu arquivo. Em vez de output: html_document, usaremos output: bookdown::html_document2. Veja abaixo:

---
title: "Análise exploratória de dados"
author: Ricardinho
date: 4 Jun 2024
output: bookdown::html_document2
---

Em seguida, devemos nos preocupar com a referência em si. Para isso, precisaremos dos itens abaixo:

  • Figuras ou tabelas deverão possuir uma legenda;
  • Pedaços de código nomeados, pois esse nome será o código utilizado como identificador da referência.

A referência cruzada é feita por meio da seguinte notação:

\@ref(tipo:codigo)

em que tipo se refere à figura fig ou tabela tab, e codigo se refere ao codigo identificador do pedaço de código em que faremos a inserção da figura ou tabela.

Para ficar mais claro, vejam o exemplo abaixo:

---
title: "Análise exploratória de dados"
subtitle: "Aqui vai o subtítulo"
author: Ricardinho
date: 4 Jun 2024
# documentclass: book
output: 
  bookdown::pdf_document2:
    toc: true
    # includes:
    #   in_header: "header.tex"
    #   before_body: "before-body.tex"
  # bookdown::word_document2:
  #   reference_docx: modelo.docx
  #   theme: cerulean
  #   fig_width: 12
  #   fig_height: 10
# lof: yes
# lot: yes
bibliography: minhaprimeiraref.bib
csl: associacao-brasileira-de-normas-tecnicas.csl
---

```{r, echo=FALSE, eval=TRUE, message=FALSE}
library("knitr")
variavel1 <- 5+2
variavel2 <- variavel1 +2

library("dplyr")

exemplinho <- read.table("exemplinho.csv", sep = ",", header = TRUE)
```

\newpage

```{r, echo=FALSE, eval=FALSE}
1+1+1+1+1+2
```


```{r}
#| echo: true
#| eval: false
#| include: false
#| message: false
#| warning: false
5+2
```

# Introdução

## Subintrodução

Aqui está a variável 1: `r variavel1`.  


Aqui eu tenho um texto introdutório sobre minha análise exploratória de dados (AED) referentes a carros.  

Vejam a figura \@ref(fig:fig1).  

```{r fig1, fig.cap = "Aqui vai a legenda das figuras.", out.width="120%"}
plot(mtcars)
```

Olha a fotinha \@ref(fig:fotinha).  

```{r fotinha, fig.cap= "Fotinha", out.width="50%"}
#| echo: false
knitr::include_graphics("fotinha.JPG")
```

```{r}
magick::image_read("../fotinha.JPG") |> 
  magick::image_scale("x700")
```


A tabela \@ref(tab:minha-tabela) expõe as primeiras 6 linhas do conjunto de dados 'mtcars'.  

```{r minha-tabela}
knitr::kable(head(mtcars), caption = "Aqui vai a legenda de tabelas, isto é, dentro do argumento 'caption' da função knitr::kable")
```



# Material e métodos

Aqui eu discorro sobre os métodos utilizados para responder minhas perguntas.  

Uma lista de refs [@Xieetal2020;@Yaoetal2024].  


## Localidades

## Análise de dados

```{r, echo=FALSE, warning=FALSE}
library("palmerpenguins")
library("ggplot2")
ggplot(penguins) +
  geom_point(aes(x = bill_length_mm, y = bill_depth_mm, color = species)) +
  theme_bw()

```

# Resultados

## Genética

### ddradSEQ

## Morfologia

Reunimos um conjunto de `r nrow(mtcars)` observações e `r ncol(mtcars)` variáveis.  

```{r}
mtcars2 <- dplyr::bind_rows(mtcars, mtcars)
```

Na série temporal do ano de 2019, houve `r nrow(mtcars2)` observações e `r ncol(mtcars2)` variáveis para estimar o traço funcional do solo papapa.  

A tabela \@ref(tab:tab2) evidencia as seis primeiras linhas de nosso conjunto de dados.  

```{r tab2}
#| echo: false
dados = read.table("exemplinho.csv", header = TRUE, sep = ",")
knitr::kable(dados, caption = "Seis primeiras linhas do conjunto de dados iris.")
```

Coletamos `r length(unique(dados$Species))` espécies diferentes.  

As espécies coletadas foram `r glue::glue_collapse(x = sort(unique(dados$Species)), sep = ", ", last = " e ")`.  

`r 1+1`

| Nome    | Altura |
|---------|--------|
| Lysne   | `r 1+1`|
| Luciana | `r 1+2`|
| Rhaylla | 1,68   |
| José    | 1,82   |
| Sylvio  | 1,73   |
| Carlos  | 1,75   |
| Ricardo | 1,79   |

: https://www.tablesgenerator.com/


# Referências

Para mais possibilidades, veja a seção Update the date automatically do livro Rmarkdown cookbook ().

Aparência

Por meio do argumento theme dentro do YAML, podemos controlar a aparência de seu arquivo HTML. Possíveis valores incluem:

default, bootstrap, cerulean, cosmo, darkly, flatly, journal, lumen, paper, readable, sandstone, simplex, spacelab, united, yeti

Teste cada uma dessas possibilidades e veja como fica a aparência de seu produto. Para testar, escreva dessa maneira no seu YAML, substituindo após theme: por cada uma das possibilidades acima:

---
title: "Análise exploratória de dados"
author: Guguinha
output: 
  html_document:
    theme: journal
---

Podemos mudar também a aparência dos pedaços de códigos em nossos produtos. Suponha que eu possua o código abaixo:

1 + 1
[1] 2

Como ele vai aparecer no produto final?

Nós controlamos essa variável por meio do argumento highlight. As opções disponíveis incluem:

default, tango, pygments, kate, monochrome, espresso, zenburn, haddock, breezedark, textmate

Teste as opções acima em seu YAML escrevendo como abaixo:

---
title: "Análise exploratória de dados"
author: Guguinha
output: 
  html_document:
    highlight: espresso
---