3 Équations et tableaux
Ce chapitre couvre la syntaxe mathématique (équations inline, blocs numérotés, environnements avancés) et les deux niveaux de tableaux : les pipe tables Markdown simples et les tableaux enrichis via l’extension quartable.
3.1 Équations inline
Les équations inline s’écrivent entre signes dollar : $...$. En PDF elles utilisent le mode mathématique LaTeX natif, en HTML elles sont rendues par KaTeX.
Rendu :
La transformée de Fourier d’une fonction f est définie par \hat{f}(\xi) = \int_{-\infty}^{\infty} f(x)\,e^{-2\pi i x\xi}\,\mathrm{d}x.
Utilisez \, pour les espaces fins : f(x)\,\mathrm{d}x donne f(x)\,\mathrm{d}x. Utilisez \mathrm{d} (romain) plutôt que d (italique) pour les différentielles — c’est la norme ISO 80000-2.
3.2 Équations en bloc numérotées
Les équations en bloc s’encadrent par $$...$$. Pour les numéroter et créer une cross-référence, on ajoute {#eq-label} :
Rendu :
i\hbar\frac{\partial \Psi}{\partial t} = \hat{H}\Psi \tag{3.1}
L’équation de Schrödinger (Équation 3.1) décrit l’évolution temporelle d’un système quantique.
@eq-label sans crochets
La cross-référence d’une équation s’écrit @eq-label, sans crochets. Les crochets [@eq-label] sont réservés aux citations bibliographiques et ne fonctionneront pas pour les équations.
3.3 Environnements mathématiques avancés
Les environnements LaTeX comme aligned, cases, bmatrix fonctionnent nativement dans Quarto, en PDF (LaTeX pur) comme en HTML (KaTeX) :
Rendu :
\begin{cases} \dot{x}(t) = Ax(t) + Bu(t) \\ y(t) = Cx(t) + Du(t) \end{cases} \tag{3.2}
La représentation d’état (Équation 3.2) est la forme standard en automatique.
$$
\begin{aligned}
\nabla \cdot \mathbf{E} &= \frac{\rho}{\varepsilon_0} \\
\nabla \cdot \mathbf{B} &= 0 \\
\nabla \times \mathbf{E} &= -\frac{\partial \mathbf{B}}{\partial t} \\
\nabla \times \mathbf{B} &= \mu_0\mathbf{J} + \mu_0\varepsilon_0\frac{\partial \mathbf{E}}{\partial t}
\end{aligned}
$$ {#eq-maxwell}Rendu :
\begin{aligned} \nabla \cdot \mathbf{E} &= \frac{\rho}{\varepsilon_0} \\ \nabla \cdot \mathbf{B} &= 0 \\ \nabla \times \mathbf{E} &= -\frac{\partial \mathbf{B}}{\partial t} \\ \nabla \times \mathbf{B} &= \mu_0\mathbf{J} + \mu_0\varepsilon_0\frac{\partial \mathbf{E}}{\partial t} \end{aligned} \tag{3.3}
Les équations de Maxwell (Équation 3.3) en notation vectorielle — un seul numéro pour l’ensemble du bloc.
Pour attribuer un numéro à chaque ligne, on utilise align (sans le d final) à la place de aligned. L’environnement align est autonome — il ne s’imbrique pas dans $$…$$. Pandoc enveloppe tout $$…$$ dans \[…\] ou \begin{equation}, et nester \begin{align} à l’intérieur est invalide (erreur amsmath). Il faut un bloc {=latex} brut pour le PDF et $$…$$ pour le HTML :
::: {.content-visible when-format="pdf"}
```{=latex}
\begin{align}
\nabla \cdot \mathbf{E} &= \frac{\rho}{\varepsilon_0} \\
\nabla \cdot \mathbf{B} &= 0 \\
\nabla \times \mathbf{E} &= -\frac{\partial \mathbf{B}}{\partial t} \\
\nabla \times \mathbf{B} &= \mu_0\mathbf{J}
+ \mu_0\varepsilon_0\frac{\partial \mathbf{E}}{\partial t}
\end{align}
```
:::
::: {.content-visible when-format="html"}
$$
\begin{align}
\nabla \cdot \mathbf{E} &= \frac{\rho}{\varepsilon_0} \\
\nabla \cdot \mathbf{B} &= 0 \\
\nabla \times \mathbf{E} &= -\frac{\partial \mathbf{B}}{\partial t} \\
\nabla \times \mathbf{B} &= \mu_0\mathbf{J}
+ \mu_0\varepsilon_0\frac{\partial \mathbf{E}}{\partial t}
\end{align}
$$
:::Rendu :
\begin{align} \nabla \cdot \mathbf{E} &= \frac{\rho}{\varepsilon_0} \\ \nabla \cdot \mathbf{B} &= 0 \\ \nabla \times \mathbf{E} &= -\frac{\partial \mathbf{B}}{\partial t} \\ \nabla \times \mathbf{B} &= \mu_0\mathbf{J} + \mu_0\varepsilon_0\frac{\partial \mathbf{E}}{\partial t} \end{align}
Chaque \\ reçoit son propre numéro séquentiel. Pour supprimer le numéro d’une ligne, ajouter \notag avant le \\. Pour référencer une ligne individuelle, utiliser \label{mon-label} dans le bloc {=latex} et \eqref{mon-label} dans le texte (PDF uniquement — KaTeX ne génère pas de labels adressables).
\begin{align} est incompatible avec $$…$$ en Quarto
Quarto (Pandoc) enveloppe tout $$…$$ dans \[…\] (sans label) ou \begin{equation}…\end{equation} (avec {#eq-}). Les deux formes créent une imbrication invalide avec \begin{align}, que amsmath rejette :
Package amsmath Error: Erroneous nesting of equation structures
La solution est systématiquement le pattern {.content-visible} dual : bloc {=latex} brut pour le PDF, $$\begin{align}…\end{align}$$ pour le HTML (KaTeX supporte align nativement).
aligned vs align — quelle différence ?
| Environnement | Syntaxe Quarto | Numérotation | @eq- |
|---|---|---|---|
aligned |
$$\begin{aligned} … \end{aligned}$$ |
un numéro pour le bloc | \checkmark |
align |
{=latex} + $$…$$ (dual) |
un numéro par ligne | \times |
align* |
{=latex} + $$…$$ (dual) |
aucune | — |
Règle pratique : développement de calcul → aligned (un numéro, @eq- possible). Équations indépendantes → align avec le pattern dual.
subequations
Pour la numérotation (3.1a), (3.1b)…, combiner subequations et align dans un bloc {=latex} (KaTeX ne supporte pas subequations) :
::: {.content-visible when-format="pdf"}
```{=latex}
\begin{subequations}\label{eq-navier}
\begin{align}
\rho\,\frac{D\mathbf{u}}{Dt}
&= -\nabla p + \mu\,\nabla^2\mathbf{u} + \mathbf{f}
\label{eq-navier-momentum} \\
\nabla \cdot \mathbf{u} &= 0
\label{eq-navier-incomp}
\end{align}
\end{subequations}
```
:::\label{eq-navier} référence le groupe ; \label{eq-navier-momentum} et \label{eq-navier-incomp} référencent les lignes — accessibles avec \eqref{}. Ajouter un bloc {.content-visible when-format="html"} frère avec $$\begin{align}…\end{align}$$ pour le rendu HTML.
3.4 Tableaux Markdown simples
La syntaxe pipe table de Pandoc/Quarto crée des tableaux avec alignement par colonne. La légende, précédée de :, doit être placée immédiatement après le tableau :
| Commande | Format PDF | Format HTML |
|:------------------|:-------------:|:-------------:|
| `@fig-label` | numéro figure | lien hypert. |
| `@tbl-label` | numéro table | lien hypert. |
| `@eq-label` | numéro éq. | lien hypert. |
| `@sec-label` | numéro section| lien hypert. |
: Préfixes de cross-références Quarto. {#tbl-crossref}Rendu :
| Commande | Format PDF | Format HTML |
|---|---|---|
@fig-label |
numéro figure | lien hypert. |
@tbl-label |
numéro table | lien hypert. |
@eq-label |
numéro éq. | lien hypert. |
@sec-label |
numéro section | lien hypert. |
La Table 3.1 récapitule les quatre préfixes à connaître.
:---— aligné à gauche:---:— centré---:— aligné à droite
La ligne |:---|:---:|---:| définit l’alignement de chaque colonne.
La ligne : Légende. {#tbl-label} doit être placée immédiatement après le tableau, sans ligne vide intermédiaire. Une ligne vide brise l’association tableau-légende et produit une légende orpheline sans numérotation.
3.5 Tableaux avancés avec quartable
L’extension quartable (listée dans filters: de _quarto.yml) ajoute trois capacités aux tableaux Markdown :
- Rowspan :
[texte]{rs=N}fusionne N lignes ;^continue la cellule fusionnée - Colspan :
[texte]{cs=N}fusionne N colonnes - Midrules :
===insère un séparateur horizontal ;===2-4une règle partielle sur les colonnes 2 à 4 .
quartable
Pour voir toutes les fonctionnalités de cette extension (inspirée du package booktabs LaTeX), consultez https://github.com/zinc75/quarto-quartable/ et https://zinc75.github.io/quarto-quartable/test_quartable.pdf/.
| Famille | Fonctionnalité | Chapitre |
|:--------------------|:---------------------|:--------:|
| === | | |
| [Structure]{rs=3} | Titres et niveaux | 1 |
| ^ | Cross-références | 1 |
| ^ | Mise en forme inline | 1 |
| === | | |
| [Visuels]{rs=3} | Figures statiques | 2 |
| ^ | Figures Python | 2 |
| ^ | Multi-colonnes | 2 |
| === | | |
| [Math & données]{rs=3} | Équations | 3 |
| ^ | Tableaux simples | 3 |
| ^ | `quartable` | 3 |
: Récapitulatif des fonctionnalités par famille. {#tbl-recap}Rendu :
| Famille | Fonctionnalité | Chapitre |
|---|---|---|
| Structure | Titres et niveaux | 1 |
| Cross-références | 1 | |
| Mise en forme inline | 1 | |
| Visuels | Figures statiques | 2 |
| Figures Python | 2 | |
| Multi-colonnes | 2 | |
| Math & données | Équations | 3 |
| Équations avancées | 3 | |
| Tableaux simples | 3 |
quartable doit être dans filters:
La syntaxe [texte]{rs=N} n’est reconnue que si quartable est listée dans la clé filters: de _quarto.yml. Sans cela, les accolades restent affichées telles quelles dans le rendu.
===N-M
===2-4 insère une règle qui ne s’étend que sous les colonnes 2 à 4 (incluses). Utile pour souligner un sous-groupe de colonnes sans séparer toute la ligne.