Dans un document, j'utilise beaucoup de

Ouvrir dans l'éditeur Overleaf
\begin{cases}1\\ 2\\ ...\end{cases}

J'aimerais pouvoir piloter l'espacement vertical entre chaque entrée de manière globale. Par exemple, actuellement, j'utilise:

Ouvrir dans l'éditeur Overleaf
\begin{cases}1\\[3pt] 2\\[3pt] ...\end{cases}

J'ai regardé la définition de cases dans amsmath.sty:

Ouvrir dans l'éditeur Overleaf
\renewenvironment{cases}{%
  \matrix@check\cases\env@cases
}{%
  \endarray\right.%
}
\def\env@cases{%
  \let\@ifnextchar\new@ifnextchar
  \left\lbrace
  \def\arraystretch{1.2}%
  \array{@{}l@{\quad}l@{}}%
}

et j'ai l'impression qu'on ne peut pas y intégrer cette distance de 3pt. J'imagine qu'il faut plutôt jouer avec le \arraystretch{1.2}.

Un ECM

Ouvrir dans l'éditeur Overleaf
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{equation}
\begin{cases}
1 \\ 2
\end{cases}
\end{equation}

\begin{equation}
\begin{cases}
1 \\[3pt] 2
\end{cases}
\end{equation}
\end{document}

Posée 02 Jui, 21:38

pluton's gravatar image

pluton
878520
Taux d'acceptation : 30%

Modifiée 03 Jui, 15:33

Pathe's gravatar image

Pathe ♦♦
5.5k161162

Un exemple complet (minimal) serait bienvenu pour tester ce qu'on peut faire…

(02 Jui, 21:51) Bernard Bernard's gravatar image

Peut-être en définissant un environnement personnel, à base de spreadlines (de mathtools) et de empheq ?

(02 Jui, 22:59) Bernard Bernard's gravatar image

Une solution est de redéfinir l'environnement cases comme suit :

Ouvrir dans l'éditeur Overleaf
\makeatletter 
\def\env@cases{%
  \let\@ifnextchar\new@ifnextchar
  \left\lbrace
  \def\arraystretch{1.2}%
  %---- ajouter
  \def\@arraycr{${\ifnum0=`}\fi\@argarraycr[4pt]}% %$ pour tricher l'éditeur
  %----
  \array{@{}l@{\quad}l@{}}%
}
\makeatother

Nous pouvons aller plus loin en ajoutant un argument optionnel (ici la valeur par défaut est 3pt) :

Ouvrir dans l'éditeur Overleaf
\makeatletter 
\renewcommand\env@cases[1][3pt]{%
  \let\@ifnextchar\new@ifnextchar
  \left\lbrace
  \def\arraystretch{1.2}%
  %---- ajouter
  \def\@arraycr{${\ifnum0=`}\fi\@argarraycr[#1]}% %$ pour tricher l'éditeur
  %----
  \array{@{}l@{\quad}l@{}}%
}
\makeatother

Remarque : Comme c'est déjà remarqué dans l'O.P. et comme l'autre réponse a montré, il y a une autre solution qui consiste à modifier la valeur de \arraystretch dans la définition sans rien y ajouter. Il faut toutefois noter qu'aucune des deux solutions n'est vraiment satisfaisante. En effet, avec \def\arraystretch{<Valeur>} en risque d'affecter l'espace verticale en-dessus de la première ligne et celle au dessous de la dernière ligne. Avec la solution de la présente réponse, c'est-à-dire avec

Ouvrir dans l'éditeur Overleaf
\def\@arraycr{${\ifnum0=`}\fi\@argarraycr[#1]}

La commande \\ est implicitement changée. Ceci implique qu'on ne peut plus utiliser \\ dans la dernière ligne.

ECM

Ouvrir dans l'éditeur Overleaf
\documentclass{article}
\usepackage{amsmath}
\makeatletter 
\renewcommand\env@cases[1][3pt]{%
  \let\@ifnextchar\new@ifnextchar
  \left\lbrace
  \def\arraystretch{1.2}%
  %---- ajouter
  \def\@arraycr{${\ifnum0=`}\fi\@argarraycr[#1]}% %$ pour tricher l'éditeur
  %----
  \array{@{}l@{\quad}l@{}}%
}
\makeatother

\begin{document}

Avec la nouvelle valeur par défaut (3pt): 
\begin{equation}
\begin{cases}
1 & 2 \\
3 & 4 
\end{cases}
\end{equation}

Pour retrouver l'affichage par défaut de \texttt{amsmath} (0pt):
\begin{equation}
\begin{cases}[0pt]
1 & 2 \\
3 & 4 
\end{cases}
\end{equation}

Enfin, si ce n'est pas exagéré (20pt):
\begin{equation}
\begin{cases}[20pt]
1 & 2 \\
3 & 4 
\end{cases}
\end{equation}

\end{document}
Lien permanent

Publiée 03 Jui, 00:04

touhami's gravatar image

touhami
6.4k27
Taux d'acceptation : 54%

Modifiée 04 Jui, 21:54

amsmath redéfinit l'environnement cases et y ajoute une valeur de \arraystretch=1.2, d'où la solution facile suivante avec l'extension xpatch qui change cette valeur en 1.5:

Ouvrir dans l'éditeur Overleaf
   \documentclass{article}
    \usepackage{mathtools}
    \usepackage{xpatch}

    \makeatletter
    \xpatchcmd{\env@cases}{1.2}{1.5}{}{}
    \makeatother

    \begin{document}

    \begin{equation}
    \begin{cases}
    1 \\ 2
    \end{cases}
    \end{equation}

    \end{document}

alt text

Rajoutis :

Pour éviter d'avoir des accolades un peu trop grandes, on peut utiliser l'extension empheq (qui charge mathtools, donc aussi amsmath) et le paramètre optionnel [left=\empheqlbrace], ainsi que l'environnement spreadlines de mathtools qui rajoute automatiquement l'espacement vertical donné en argument entre deux lignes des équations multilignes. Voici un exemple de code, où je définis un environnement mycases qui gère cela:

Préambule:

Ouvrir dans l'éditeur Overleaf
\newenvironment{mycases}[1]%
{\spreadlines{#1}
    \empheq[left =\empheqlbrace]{equation}}%
{\endempheq \endspreadlines}

Corps du document:

Ouvrir dans l'éditeur Overleaf
\begin{mycases}{6pt}
\begin{aligned} 
& 1 \\ & 2
\end{aligned}
\end{mycases}

alt text

Lien permanent

Publiée 02 Jui, 23:56

Bernard's gravatar image

Bernard
3.8k15
Taux d'acceptation : 36%

Modifiée 05 Jui, 23:43

Cette solution me convenait bien mais c'est vrai que l'accolade est affectée par l'élargissement...

(05 Jui, 22:28) pluton pluton's gravatar image

@pluton: J'ai rajouté une autre solution, qui repose sur l'extension empheq.

(05 Jui, 23:42) Bernard Bernard's gravatar image
Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.

Mots-clés de la question :

×1

Question posée : 02 Jui, 21:38

Question vue : 308 fois

Dernière mise à jour : 05 Jui, 23:43

Questions similaires