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.

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$.

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.

AstuceEspaces fins en mathématiques

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} :

$$
i\hbar\frac{\partial \Psi}{\partial t} = \hat{H}\Psi
$$ {#eq-schrodinger}

L'équation de Schrödinger (@eq-schrodinger) décrit l'évolution temporelle…

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.

Avertissement@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) :

$$
\begin{cases}
  \dot{x}(t) = Ax(t) + Bu(t) \\
  y(t) = Cx(t) + Du(t)
\end{cases}
$$ {#eq-statespace}

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).

Avertissement\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).

Astucealigned 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.

NoteNumérotation hiérarchique (3.1a), (3.1b) avec 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 :

Table 3.1: Préfixes de cross-références Quarto.
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.

AstuceAlignement des colonnes
  • :--- — aligné à gauche
  • :---: — centré
  • ---: — aligné à droite

La ligne |:---|:---:|---:| définit l’alignement de chaque colonne.

AvertissementLa légende doit être collée au tableau

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-4 une règle partielle sur les colonnes 2 à 4 .
AstuceDocumentation complète de l’extension 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 :

Table 3.2: Récapitulatif des fonctionnalités des chapitres 1 à 3.
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
Avertissementquartable 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.

NoteRègles partielles avec ===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.