16 Eléments de mise en page
Quelques indications sur des mises en pages spécifiques pour des documents de type articles/notebook en format html. Cela concernera l’édition sous forme de colonnes, l’insertion d’éléments dans la zône du grid située à droite (margin) et la mise en page de plusieurs images ou graphiques sous forme de vignettes. Sur ce dernier aspect, il s’agit de tirer profit de l’option lightbox
.
- Affichage d’éléments dans la partie droite du grid (margin):
- Générique: utilisation de la classe Css
.column-margin
. - Dans un programme (graphique, tableau): option
column: margin
. - Cas particuliers: insertion d’un tableau markdown et d’une note.
- Générique: utilisation de la classe Css
- Mise en page avec plusieurs colonnes:
- Classe css multicolumn. Pas recommandé à l’exception d’éléments texte.
- Mise en page fixe. Classe css ou option dans un bloc de codes:
layout-ncol
. - Mise en page libre. Classe css ou option dans un bloc de codes:
layout
.layout= "[liste items col]"
.layout= "[[liste items col], [liste item ligne]]"
.
16.1 Rappel sur l’édition en multicolonne
A réserver plutôt à des éléments texte: paragraphe ou liste. Particulièrement utile pour les présentations de type revealjs.
Une colonne simple: dans une section div: classe css
{.column width="x%"}
="33%"}
::: {.column width/notebook en format html.
Quelques indications sur des mises en pages spécifiques pour des documents de type articles :::
Quelques indications sur des mises en pages spécifiques pour des documents de type articles/notebook en format html.
- Plusieurs colonnes:
- On indique une mise en page sur plusieurs colonnes avec une déclaration préalable: section div introduite avec 4 : (imbrication) et la classe
{.columns}
: :::: {.columns}
- On indique une mise en page sur plusieurs colonnes avec une déclaration préalable: section div introduite avec 4 : (imbrication) et la classe
:::: {.columns}="33%"}
::: {.column width/notebook en format html.
Quelques indications sur des mises en pages spécifiques pour des documents de type articles
::: ="33%"}
::: {.column width
Cela concernera l'édition sous forme de colonnes, l'insertion d'éléments dans la zône du grid située à droite (margin) et la mise en page de plusieurs images ou graphiques sous forme de vignettes.
::: ="33%"}
::: {.column width**`lightbox`**.
Sur ce dernier aspect, il s'agit de tirer profit de l'option ::::
On trouvera ici quelques indications sur des mises en pages spécifiques pour des documents de type articles/notebook en format html.
Cela concernera l’édition sous forme de colonnes, l’insertion d’éléments dans la zône du grid située à droite (margin) et la mise en page de plusieurs images ou graphiques sous forme de vignettes.
Sur le second aspect, il s’agit de tirer profit de l’option lightbox
.
- On peut augmenter l’espace entre deux colonnes en ajoutant des colonnes vide et en jouant sur la largeur.
:::: {.columns}="29%"}
::: {.column width/notebook en format html.
Quelques indications sur des mises en pages spécifiques pour des documents de type articles
::: ="6%"}
::: {.column width
:::="29%"}
::: {.column width
Cela concernera l'édition sous forme de colonnes, l'insertion d'éléments dans la zône du grid située à droite (margin) et la mise en page de plusieurs images ou graphiques sous forme de vignettes.
::: ="6%"}
::: {.column width
:::="29%"}
::: {.column width**`lightbox`**.
Sur ce dernier aspect, il s'agit de tirer profit de l'option
::: ::::
Quelques indications sur des mises en pages spécifiques pour des documents de type articles/notebook en format html.
Cela concernera l’édition sous forme de colonnes, l’insertion d’éléments dans la zône du grid située à droite (margin) et la mise en page de plusieurs images ou graphiques sous forme de vignettes.
Sur ce dernier aspect, il s’agit de tirer profit de l’option lightbox
.
16.2 Insertion d’éléments dans la marge à droite du document
Pour les éléments de type image/graphique, penser à activé l’option lightbox
qui permettra de les agrandir dans une fenêtre.
Pour le format pdf, utiliser dans le yaml les options suivantes
- Graphiques:
cap-location:margin
- Titres des graphiques:
fig-cap-location: margin
- Titre des tableaux:
fig-cap-location: margin
16.2.1 La classe css générique .column-margin
Syntaxe:
-margin}
::: {.column
Elements à insérer
:::
Image Markdown
- Penser à activer l’option
lightbox
qui permettra d’agrandir
-margin}
::: {.column//quarto.org/quarto.png)
![Logo Quarto](https: :::
Graphique généré dans un programme
- Un peu compliqué pour reporter proprement cela dans le support…mais ça marche.
- Il me semble préférable d’utiliser directement l’option dans le bloc de code pour éviter un balisage.
Une liste
-margin}
::: {.column
* item1
* item11
* item12
* item2
:::
- item1
- item11
- item12
- item2
Une formule
-margin}
::: {.column$$x^2-1=(x-1)(x+1)$$
:::
\[x^2-1=(x-1)(x+1)\]
Un tableau markdown
Col1 | Col2 |
---|---|
A | B |
C | D |
-margin}
::: {.column
| Col1 | Col2 |------|------|
|
| A | B |D |
| C |
: Tableau markdown :::
A noter que l’on peut appliquer directement ::: column-margin
.
16.2.2 Options dans un bloc de codes
- Option
#| column: margin
. - Pour les graphiques, l’ajout d’un label semble obligatoire, je ne comprend pas vraiment pourquoi.
Graphique
```{r}
#| label: fig-mpg
#| column: margin
#| fig-cap: "Consommation selon l'origine"
#| warning: false
#| message: false
library(ggplot2)
mtcars$am = as.factor(mtcars$am)
ggplot(mtcars, aes(x=mpg, fill=am)) +
geom_density(alpha=0.4)
```
Tableau
mpg | cyl | disp | |
---|---|---|---|
Mazda RX4 | 21.0 | 6 | 160 |
Mazda RX4 Wag | 21.0 | 6 | 160 |
Datsun 710 | 22.8 | 4 | 108 |
```{r}
#| tbl-cap: "Extrait base mtcars"
#| column: margin
knitr::kable(
mtcars[1:3, 1:3]
)
```
16.2.3 Note à droite du texte
Les notes font l’objet d’un traitement particulier. Le positionnement dans la marge se fait avec l’utilisation de la classe css .aside
. Attention comme la note est directement visible, aucun numéro ne lui est affecté.
On peut ajouter une note directement à droite du texte avec la classe css
**.aside**[Comme elle se situe directement à droite du texte, aucun numéro de note n'est généré]{.aside}
On peut ajouter une note directement à droite du texte avec la classe css .asideComme elle se situe directement à droite du texte, aucun numéro de note n’est généré.
16.3 Mise en page sous forme de vignettes des images/graphiques
Deux types d’insertion: fixe ou libre
16.3.1 Mise en forme fixe
- Classe css ou option d’un bloc de codes:
layout-ncol
- Insertion markdown:
::: {layout-ncol=nbre_col}
- Attention, la classe css n’est pas préfixée par un ..
- Bloc de codes: option
#| layout-ncol: nbre_col
- Insertion markdown:
Exemple: insertion d’images markdown sous forme de vignettes
-ncol=4}
::: {layout/img1.png){group="g1"}
![](img5
/img2.png){group="g1"}
![](img5
/img3.png){group="g1"}
![](img5
/img4.png){group="g1"}
![](img5 :::
Exemple: deux graphiques générés par un programme
```{r}
#| echo: false
#| warning: false
#| message: false
#| layout-ncol: 2
library(ggplot2)
mtcars$am = as.factor(mtcars$am)
mpg = ggplot(mtcars, aes(x=mpg, fill=am)) +
geom_density(alpha=0.4)
disp = ggplot(mtcars, aes(x=disp, fill=am)) +
geom_density(alpha=0.4)
mpg
disp
```
16.3.2 Mise en forme libre
- Classe css
{layout= ... }
. De nouveau non préfixée par un .- Plus compliqué au premier abord en raison de la syntaxe, mais plus souple pour jouer sur l’espace entre deux images.
- On va renseigner les ratios d’affichage entre les différentes images par des valeurs.
- On peut modifier l’espace entre deux images.
- En option d’un bloc de codes:
#| layout: ...
Syntaxe par l’exemple avec deux images:
:::{layout= "[valeur1,valeur2]"}
- Valeur1 et valeur2 n’indique pas une taille d’affichage des images mais le ratio d’affichage entre les deux.
Les images seront affichées de manière identique lorsque les valeurs sont identiques1.
="[50,50]"}
::: {layout/img1.png)
![](img5
/img2.png)
![](img5
:::
Si on remplace [50,50] par [1,1]:
="[1,1]" }
::: {layout/img1.png)
![](img5
/img2.png)
![](img5
:::
L’affichage des vignettes ne change pas:
Maintenant si on modifie le ratio de la manière suivante:
="[1,0.5]" }
::: {layout/img1.png)
![](img5
/img2.png)
![](img5
:::
La seconde image n’est affiché qu’à 50%, et aligné vers le haut.
Vu comme ça, l’utilité n’est pas évidente. Si les images sont enregistrées avec des hauteurs différentes, cela peut-être néanmoins intéressant que l’espace soit rempli identiquement pour les deux images.
Exemple: On a une image nativement moins haute que l’autre de 25%: avec un ratio égal à 1 on aurait:
="[1,1]"}
::: {layout/img4.png)
![](img5
/img10.png)
![](img5 :::
- Si on veut égaliser les hauteurs d’affichage, on rééquilibre le ratio:
{layout="[0.75,1]"}
2.
="[0.75,1]"}
::: {layout/img4.png)
![](img5
/img10.png)
![](img5 :::
- Si on ne souhaite pas modifier le ratio d’affichage, il est visuellement plus correct d’aligner verticalement les images vers le bas avec l’option
layout-valign="bottom"
="[1,1]" layout-valign="bottom"}
::: {layout/img4.png)
![](img5
/img10.png)
![](img5 :::
- Pour afficher des images sur plusieurs lignes on ajoute une nouvelle liste d’images séparée de la précédente avec , et en cloturant le tout dans des crochets:
::: {layout="[[liste ligne 1],[liste ligne 2]]"}
.
="[[1,1,1,1],[1,1,1,1]]"}
::: {layout/img1.png)
![](img5
/img2.png)
![](img5
/img3.png)
![](img5
/img4.png)
![](img5
/img5.png)
![](img5
/img6.png)
![](img5
/img7.png)
![](img5
/img8.png)
![](img5 :::
- On peut modifier (agrandir) l’espace entre 2 images avec des valeurs négatives entre deux images.
Par défaut avec 2 images:
="[1,1]"}
::: {layout/img4.png)
![](img5
/img8.png)
![](img5 :::
Si on veut accroître la distances entre les deux images d’un dizième de la largeur des images
="[1,-0.1,1]"}
::: {layout
/img4.png)
![](img5
/img8.png)
![](img5 :::
Si on veut que la distance soit égale à la largeur des images
="[1,-1,1]"}
::: {layout
/img4.png)
![](img5
/img8.png)
![](img5 :::
- Fonctionne également, sous forme d’option, avec des graphiques générés dans un bloc de codes.
```{r}
#| eval: false
#| warning: false
#| message: false
#| layout: "[[1],[0.5,0.5]]"
library(ggplot2)
mtcars$am = as.factor(mtcars$am)
mpg=ggplot(mtcars, aes(x=mpg, fill=am)) +
geom_density(alpha=0.4)
disp=ggplot(mtcars, aes(x=disp, fill=am)) +
geom_density(alpha=0.4)
wt=ggplot(mtcars, aes(x=wt, fill=am)) +
geom_density(alpha=0.4)
wt
mpg
disp
```