Fonctions par morceaux en LaTeX : cases, conditions et numéros
Pour écrire une fonction définie par morceaux en LaTeX, chargez amsmath et placez cases en mode mathématique. Écrivez la valeur, séparez sa condition avec &, puis passez à la branche suivante avec \\. Dans equation, la définition entière reçoit un seul numéro.
Commencer par un exemple complet
Enregistrez ce contenu dans main.tex et compilez avec pdfLaTeX. Ce document article nécessite seulement amsmath. Le paquet distinct nommé cases n'est pas nécessaire ici.
\documentclass[a4paper,11pt]{article}\usepackage{amsmath}\begin{document}\begin{equation}\label{eq:absolute} |x| = \begin{cases} x, & \text{if } x \ge 0, \\ -x, & \text{if } x < 0. \end{cases}\end{equation}See equation~\eqref{eq:absolute}.\end{document}Le PDF doit afficher une accolade gauche, deux lignes de valeurs et de conditions, ainsi qu'un numéro pour l'ensemble. Une fois les références résolues, le numéro cité dans le texte doit correspondre. Zéro appartient à la première branche, les nombres négatifs à la seconde : chaque réel est couvert une seule fois.
Schéma de la définition : la colonne de gauche contient la valeur, celle de droite la condition. Le point frontière 0 appartient à la première ligne.
Aligner les conditions et séparer les branches
&sépare deux colonnes alignées à gauche. Les espaces d'indentation du code ne règlent pas l'alignement dans le PDF.\\commence une nouvelle branche. On l'omet généralement après la dernière ligne. Un simple retour à la ligne dans le fichier source ne crée pas de ligne dans la formule.\text{if }compose le mot en texte normal. Conservez l'espace dans les accolades pour le séparer de la condition mathématique.\text{otherwise}signifie « dans les autres cas ».casesfournit l'accolade gauche : n'ajoutez pas de\left\{. L'environnement doit être en mode mathématique, dans\[...\]ouequation, par exemple. Une définition sur plusieurs lignes se lit généralement mieux en formule séparée.
Dans cette fonction en escalier, sur un domaine réel, otherwise couvre x <= 0, y compris zéro :
\[s(x)=\begin{cases} 1, & \text{if } x > 0, \\ 0, & \text{otherwise}.\end{cases}\]Gardez les symboles mathématiques en mode mathématique. Saisi comme une formule, if devient deux variables italiques et perd ses espaces ordinaires. À l'inverse, une condition entièrement saisie comme texte perd sa composition mathématique. La variante dcases* emploie une autre règle pour la colonne droite.
Exemple pour un article : perte de Huber et frontières
Soit r un résidu réel et δ > 0 le seuil. La perte de Huber utilise un terme quadratique pour les petits résidus et un terme linéaire en la valeur absolue du résidu pour les plus grands :
\[L_{\delta}(r) =\begin{cases} \frac{1}{2}r^2, & \text{if } |r| \le \delta, \\ \delta\left(|r|-\frac{1}{2}\delta\right), & \text{if } |r| > \delta.\end{cases}\]La première branche inclut |r| = δ, la seconde s'applique seulement à |r| > δ. À la frontière, les deux expressions valent δ²/2, mais les conditions affectent ce point uniquement à la première branche. Pour δ = 1, les résidus r = 0, 1 et 2 donnent les pertes 0, 0.5 et 1.5.
Lorsque vous adaptez l'exemple, notez le domaine et vérifiez chaque frontière. Deux inégalités strictes peuvent laisser un point sans définition ; deux inégalités larges peuvent se chevaucher. Une compilation réussie ne valide pas ces conditions mathématiques.
Fractions trop petites : choisir dcases
L'environnement cases ordinaire emploie \textstyle. Les fractions \frac restent petites, même dans une formule séparée. Pour agrandir les fractions, sommes ou intégrales, remplacez \usepackage{amsmath} par \usepackage{mathtools} dans le préambule et utilisez dcases. mathtools charge automatiquement amsmath.
Insérez ce fragment dans le corps d'un document chargeant mathtools pour comparer la même fonction :
\[g(x)=\begin{cases} \frac{1}{1+x^2}, & x \ge 0, \\ 0, & x < 0.\end{cases}\qquadg(x)=\begin{dcases} \frac{1}{1+x^2}, & x \ge 0, \\ 0, & x < 0.\end{dcases}\]
Schéma comparatif des styles : la définition et les conditions restent identiques. Le style hors texte de dcases donne une fraction plus haute et davantage d'espace entre les lignes. Vérifiez le résultat dans votre modèle.
Pour agrandir une seule fraction, vous pouvez remplacer \frac par \dfrac dans cases. Ce changement concerne la fraction ; dcases applique le style hors texte aux expressions des branches. Vérifiez aussi l'espacement et la largeur disponible, surtout en colonnes étroites.
La colonne droite de dcases* est du texte
Dans dcases, les conditions restent en mode mathématique et les mots nécessitent \text{...}. Dans dcases*, la colonne droite est du texte ordinaire ; les conditions mathématiques doivent donc être placées entre $...$ :
\[g(x)=\begin{dcases*} \frac{1}{1+x^2}, & if $x \ge 0$, \\ 0, & otherwise.\end{dcases*}\]Les deux variantes viennent de mathtools. En changeant d'environnement, adaptez aussi la syntaxe de la colonne droite.
Numéroter la définition ou chaque branche
| Besoin | Construction | Paquet et imbrication |
|---|---|---|
| Aucun numéro | cases dans \[...\] | amsmath |
| Un numéro pour la définition | cases dans equation | Références avec \label et \eqref |
| Un numéro par branche | numcases | Paquet cases ; c'est déjà un environnement de formule séparée |
| Suffixes alphabétiques dans un groupe | subnumcases | Paquet cases, par exemple (1a) et (1b) |
Un numéro suffit généralement pour définir une fonction. Pour citer chaque branche, chargez \usepackage{amsmath} et \usepackage{cases} dans le préambule, puis insérez :
\begin{numcases}{h(x)=} x, & if $x \ge 0$ \label{eq:positive} \\ -x, & if $x < 0$ \label{eq:negative}\end{numcases}See equations~\eqref{eq:positive} and~\eqref{eq:negative}.L'argument {h(x)=} fournit l'expression à gauche de l'accolade. La colonne droite est du texte par défaut : les conditions mathématiques nécessitent $...$. N'entourez pas numcases de equation ou de \[...\]. Chaque \label renvoie au numéro de sa ligne. Pour des suffixes alphabétiques, passez à subnumcases, puis contrôlez les références.
Consultez la numérotation et les références des équations pour les règles détaillées.
Corriger les problèmes courants
| Symptôme | Point à vérifier | Correction |
|---|---|---|
| Erreur de mode mathématique ou d'alignement | Environnement extérieur et amsmath | Rétablir le paquet et l'environnement de l'exemple complet |
Environment dcases undefined | Seul amsmath est chargé | Charger mathtools |
| Valeurs et conditions collées | & manquant | Séparer les colonnes par un & à chaque ligne |
| Branches sur une seule ligne | \\ manquant | Ajouter deux barres obliques inverses entre les branches |
Extra alignment tab ou erreur similaire | Trop de & | Garder deux colonnes dans cases |
| Mots italiques et espaces absents | Mots saisis en mode mathématique | Utiliser \text{...} dans cases |
| Deux accolades gauches | \left\{ ajouté manuellement | Conserver l'accolade de cases |
Références affichant ?? | Étiquettes, environnement numéroté, compilations | Vérifier \label, recompiler et lire le journal |
Un symptôme peut avoir plusieurs causes. Commencez par la première erreur du journal et le code voisin, plutôt que par le dernier message.
Vérifier en local ou dans EasyLaTeX
Avec TeX Live ou MiKTeX, exécutez ces commandes dans le dossier de main.tex :
pdflatex -interaction=nonstopmode -halt-on-error main.texpdflatex -interaction=nonstopmode -halt-on-error main.texCherchez les erreurs, références non résolues et Overfull \hbox dans main.log. Ouvrez le nouveau main.pdf et vérifiez l'accolade, les conditions, les fractions et les numéros. Les trois résidus pour δ = 1 permettent aussi de repérer un coefficient mal recopié dans la perte de Huber.
Dans EasyLaTeX, insérez l'exemple dans le fichier principal du projet, vérifiez sa sélection et choisissez pdfLaTeX pour cet exemple article en anglais. Attendez la fin de la compilation. En cas de problème, consultez le panneau Bug et Original Log. Vous pouvez transmettre le code et le journal pertinents à Agent pour chercher la cause ; examinez ses modifications et recompilez. Dans un projet multilingue ou un modèle de revue existant, conservez le compilateur et les réglages adaptés.
Le document minimal complet et les cinq autres fragments ont été compilés avec pdfLaTeX sur TeXLive.net ; les journaux et PDF ont été vérifiés. Ils n'ont pas été testés dans le compilateur du produit ni dans un modèle de revue précis. Après intégration au manuscrit, contrôlez la compatibilité des paquets et le PDF actuel.
Pour poursuivre : indices, fractions, délimiteurs et matrices, retours à la ligne dans les équations et erreurs de compilation.
Références
- Guide d'utilisation d'amsmath : environnements mathématiques,
cases,\textet style texte. - Documentation officielle de mathtools :
dcaseset variantes étoilées. - Documentation du paquet cases :
numcases,subnumcaseset syntaxe des conditions.