Multiformats
Il s’agit d’une page miroir au chapitre 12 du support avec une compilation en plusieurs formats
Compilation en plusieurs formats
Dans le yaml de ce chapitre:
---
format:
html: default
pdf: default
docx: default
---
Si plusieurs formats sont renseignés dans le yaml, à droite du document (margin) sous la table des matières un menu Other formats permet d’accéder directement au document dans un ou plusieurs autrees formats.
On peut supprimer ce menu dans le yaml avec l’option
format-links: false
On peut effectuer une compilation multiformat avec le bouton RENDER ou via le terminal de RStudio.
Tant qu’on a pas compiler au moins une fois avec un format alternatif au html, Quarto ne compilera pas simultanément en plusieurs formats. Cela n’est d’ailleurs pas spécialement conseillé avec le PDF en raison de la durée de compilation bien plus longue que le format html ou docx (idem odt).
- Toujours penser à prioriser la compilation html avant de se lancer dans le PDF?
Avec le bouton RENDER
Après avoir enregistré le fichier, on peut accéder directement à un sous menu permettant de choisir le format de sortie. C’était déjà le cas avec Rmarkdown.
- Dans le menu du bouton Render, on doit compiler au moins une fois le document pour les autres formats individuellement.
Dans le terminal
On exécute la ou les lignes de commandes suivantes:
Compilation simultanée de tous les formats indiqués dans le yaml:
quarto render <nom_fichier.qmd>
Compilation d’un format spécifique:
quarto render <nom_fichier.qmd> --to pdf quarto render <nom_fichier.qmd> --to docx
Contenu conditionnel
Contenu non adapté à tous les formats
Certains éléments, par exemple de mise en page, ne sont pas adaptés à tous les formats
On pourrait dans une documentation comme celle-ci et éditée dans plusieurs formats, réserver des éléments explicatifs propre à chaque format au format qui sera affichier: attention si html on devra faire ça , attention si pdf on devra faire cela etc…
Quarto donne la possibilité contrôler la compilation du contenu format par format.
Attention toutefois, pour un contrôle qui s’applique à une mise en page on va multiplier dans le code source du document un même type d’élement . En raison de cette contrainte, j’ai rapidement compris que je ne pourrais pas diffuser ce support simultanément en html et en pdf.
On prendra comme exemple une mise en page des images sous forme de vignettes à l’option lightbox.
Très pratique pour le format dynamique html, le rendu pour des formats statiques (pdf,docx) ne sera en revanche pas satisfaisant.
- En html, on génère et positionne 4 graphiques sur une même ligne. L’option lightbox permet d’agrandir les graphiques et de naviguer entre eux
```{r}
#| layout-ncol: 4
#| lightbox:
#| group: cars
data("mtcars")
df = mtcars
plot(df$mpg, df$cyl)
plot(df$mpg, df$wt)
plot(df$mpg, df$qsec)
plot(df$mpg, df$disp)
```
- En compilant simultanément en pdf, le rendu est le suivant:
Contrôler le contenu affiché
- Quarto a implémenté des classes css qui permettent de contrôler le contenu qui sera affiché par type de format:
{.content-visible <sélection format>}
{.content-hidden <sélection format>}
- Les options de sélection:
when-format="type_format"
unless-format="type_format"
- [Documentation site officiel]
Dans notre exemple: * L’affichage des graphiques sous forme de vignettes sera réservé au format html * Pour les formats statiques, les graphiques seront affichés à leur taille réelle, les uns après les autres. * On devra renseigner le programme deux fois en modifiant les options:
Format html [Aggrandir les images et naviguer entre elles]:
{.content-visible when-format="html"}
::: {.content-visible when-format="html"}
```{r}
#| layout-ncol: 4
#| lightbox:
#| group: cars
data("mtcars")
df = mtcars
plot(df$mpg, df$cyl)
plot(df$mpg, df$wt)
plot(df$mpg, df$qsec)
plot(df$mpg, df$disp)
``` :::
Format pdf,docx [Ouvrir les documents]
{.content-hidden when-format="html"}
::: {.content-hidden when-format="html" }
```{r}
data("mtcars")
df = mtcars
plot(df$mpg, df$cyl)
plot(df$mpg, df$wt)
plot(df$mpg, df$qsec)
plot(df$mpg, df$disp)
``` :::