Page 1 sur 1

[Résolu] align* et itemize

MessagePosté: Vendredi 26 Avril 2019, 08:23
par GRSG
Bonjour,
l'environnement align* centre automatiquement les équations et je trouve que ça ne devient pas très <<joli>> avec l'environnement itemize. Je sais que je peux m'en sortir avec l'environnement array, mais y-a-t-il une option ou un environnement du type align* qui évite de centrer et d'intégrer un saut de ligne.
Comme je ne suis pas sûr que ma question soit suffisamment claire, je vous ai mis un code ci-dessous; j'arrive à une solution satisfaisante avec l'environnement array et ma question : est-il possible d'arriver à un même résultat avec l'environnement align*?
Merci
Code: Tout sélectionner
\documentclass[11pt]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[frenchb]{babel}
\usepackage{mathtools}\allowdisplaybreaks[4]
\frenchbsetup{StandardLists=true}
\usepackage{array}
\begin{document}
\begin{itemize}
\item
\begin{align*}
g(x)\underset{x\to x_0}{=}\text{o}\big(f(x)\big)
&\Leftrightarrow g(x)=f(x)\times \varepsilon (x)\text{ avec }\lim\limits_{x\to x_0}\varepsilon(x)=0\\
&\Leftrightarrow g(x)\underset{x\to x_0}{=}f(x)\times \text{o}(1)
\end{align*}
\item
$
\begin{array}[t]{r@{\,}l}
g(x)\underset{x\to x_0}{=}\text{o}\big(f(x)\big)
&\Leftrightarrow g(x)=f(x)\times \varepsilon (x)\text{ avec }\lim\limits_{x\to x_0}\varepsilon(x)=0\\
&\Leftrightarrow g(x)\underset{x\to x_0}{=}f(x)\times \text{o}(1)
\end{array}
$
\end{itemize}
\end{document}

Re: align* et itemize

MessagePosté: Vendredi 26 Avril 2019, 10:54
par balf
Bonjour,

Il suffit d'entrer en mode mathématique et d'utiliser l'environnement aligned. J'ai quand même ajouté la possibilité de centrer les équations en mettant la première ligne desdites équations au niveau du bullet.

J'en ai profité pour nettoyer un peu votre code. En particulier, cela fait un bout de temps qu'il est recommandé d'utiliser l'encodage utf8 (seul encodage universel avec l'ascii), qui est compris par tous les systèmes d'exploitation modernes et tous les éditeurs TeX.
Code: Tout sélectionner
    \documentclass[11pt, french]{article}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{lmodern}
    \usepackage{babel}
    \usepackage[showframe]{geometry}
    \usepackage{mathtools}\allowdisplaybreaks[4]
    \frenchsetup{StandardLists=true}
    \usepackage{array}
    \usepackage{linegoal}

    \begin{document}

    \begin{itemize}

    \item $\displaystyle\begin{aligned}[t]
    g(x)\underset{x\to x_0}{=}\mathrm{o}\big(f(x)\big)
    &\Leftrightarrow g(x)=f(x)\times \varepsilon (x)\text{ avec }\lim_{x\to x_0}\varepsilon(x)=0\\
    &\Leftrightarrow g(x)\underset{x\to x_0}{=}f(x)\times \mathrm{o}(1)
    \end{aligned}$

    \item \makebox[\linegoal]{$\displaystyle\begin{aligned}[t]
    g(x)\underset{x\to x_0}{=}\mathrm{o}\big(f(x)\big)
    &\Leftrightarrow g(x)=f(x)\times \varepsilon (x)\text{ avec }\lim_{x\to x_0}\varepsilon(x)=0\\[-0.5ex]
    &\Leftrightarrow g(x)\underset{x\to x_0}{=}f(x)\times \mathrm{o}(1)
    \end{aligned}$}

    \end{itemize}

    \end{document}

Résultat en p.j.

B. A.

Re: align* et itemize

MessagePosté: Samedi 27 Avril 2019, 07:37
par GRSG
Merci beaucoup.
Avec votre nettoyage de codes, me vient 2 questions :
  • quelle est la différence sur la visualisation entre \mathrm{o} et \text{o}. Moi je n'e vois qu'une... c'est lorsque on met l'équation à l'intérieur d'un emph mais il y en a peut-être d'autres
  • sur la commande \linegoal; de mon côté je l'utilise pour éviter des coupures d'équations lorsque je compile en mode diaporama ; c'est plus ou moins efficace, par contre je trouve qu'elle ne fonctionne pas bien lorsque l'on est en mode \twocolumn et/ou multicols; je ne comprends pas bien comment l'équation va se centrer en cas de besoin avec le <<\makebox[\linegoal]>> mais j'ai l'impression que cette syntaxe me simplifierait bien un code compliqué que j'ai fait pour voir s'il faut centrer l'équation ou non...
Ci-dessous j'ai remis le code avec un texte en 20pt et une commande emph.
Encore merci
Gabriel
Code: Tout sélectionner
\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[frenchb]{babel}
\usepackage{mathtools}\allowdisplaybreaks[4]
\frenchbsetup{StandardLists=true}
\usepackage{array}
\usepackage{linegoal}
\usepackage[20pt]{extsizes}
\begin{document}
\begin{itemize}
\item $
\begin{aligned}[t]
g(x)\underset{x\to x_0}{=}\mathrm{o}\big(f(x)\big)
&\Leftrightarrow g(x)=f(x)\times \varepsilon (x)\text{ avec }\lim_{x\to x_0}\varepsilon(x)=0\\
&\Leftrightarrow g(x)\underset{x\to x_0}{=}f(x)\times \mathrm{o}(1)
\end{aligned}
$
\item \emph{Formule importante : \\$
\begin{aligned}[t]
g(x)\underset{x\to x_0}{=}\text{o}\big(f(x)\big)
&\Leftrightarrow g(x)=f(x)\times \varepsilon (x)\text{ avec }\lim_{x\to x_0}\varepsilon(x)=0\\
&\Leftrightarrow g(x)\underset{x\to x_0}{=}f(x)\times \mathrm{o}(1)
\end{aligned}
$}
\item
\makebox[\linegoal]{$
\begin{aligned}[t]
g(x)\underset{x\to x_0}{=}\mathrm{o}\big(f(x)\big)
&\Leftrightarrow g(x)=f(x)\times \varepsilon (x)\text{ avec }\lim_{x\to x_0}\varepsilon(x)=0\\[-0.5ex]
&\Leftrightarrow g(x)\underset{x\to x_0}{=}f(x)\times \mathrm{o}(1)
\end{aligned}
$}
\end{itemize}
\end{document}

Re: align* et itemize

MessagePosté: Dimanche 28 Avril 2019, 19:14
par balf
Bonsoir,

Je ne suis pas sûr de très bien comprendre ce que vous voulez faire avec \makebox. Ce qu'il faut simplement savoir, c'est que, quelle que soit la longueur choisie, le contenu de la boîte est centré par défaut dans celle-ci, et donc que, si la longueur « naturelle » du contenu est supérieure à celle de la boîte, il débordera également de chaque côté.
Par ailleurs, il semble que \linegoal, utilisé dans un environnement de liste, ne mesure pas jusqu'à la fin de la ligne courante: il semble qu'il manque la longueur \leftmargini, pour une raison qui reste un mystère pour moi. Pour avoir la bonne longueur dans cette situation ( \makebox est le seul contenu de \item ), il vaut mieux utiliser \linewidth.
Petit commentaire sans rapport avec votre problème : évitez d'employer avec pour apporter des précisions dans une équation — c'est un anglicisme. me paraît amplement suffisant, et il est plus court…

B. A.

Re: align* et itemize

MessagePosté: Lundi 29 Avril 2019, 05:43
par GRSG
merci pour tout.
Gabriel

Re: [Résolu] align* et itemize

MessagePosté: Dimanche 07 Juillet 2019, 13:51
par F. Pantigny
Si vous utilisez l'environnement {DispWithArrows*} de l'extension {witharrows}, (que j'ai écrite) vous aurez directement le résultat souhaité. L'avantage par rapport à la méthode avec l'environnement {aligned} de amsmath est que vous pouvez avoir les équations numérotées (si vous utilisez {DispWithArrows} au lieu de {DispWithArrows*}).

En fait, l'environnement {DispWithArrows} est conçu pour être similaire à {align} et l'environnement {WithArrows} similaire à {aligned}. Comme leurs noms l'indiquent, ces environnements sont conçus pour pouvoir ajouter facilement des flèches explicatives à droite.

Par défaut, {DispWithArrows} ne met pas d'espace avant l'environnement quand on est après un \item de {itemize} ou {enumerate} car j'ai trouvé que c'était plus esthétique ainsi. Il y a néanmoins une option pour avoir un comportement exactement similaire à celui de {align}.

Code: Tout sélectionner
\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{geometry}
\geometry{total={17.5cm,24cm}}

\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[french]{babel}
\usepackage{mathtools}
\frenchbsetup{StandardLists=true}
\usepackage{array}

\usepackage{witharrows}

\begin{document}

\begin{itemize}
\item \begin{DispWithArrows}
g(x)\underset{x\to x_0}{=}\mathrm{o}\big(f(x)\big)
&\Leftrightarrow g(x)=f(x)\times \varepsilon (x)\text{ avec }\lim_{x\to x_0}\varepsilon(x)=0\\
&\Leftrightarrow g(x)\underset{x\to x_0}{=}f(x)\times \mathrm{o}(1)
\end{DispWithArrows}



\WithArrowsOptions{fleqn}

\item \begin{DispWithArrows}
g(x)\underset{x\to x_0}{=}\mathrm{o}\big(f(x)\big)
&\Leftrightarrow g(x)=f(x)\times \varepsilon (x)\text{ avec }\lim_{x\to x_0}\varepsilon(x)=0\\[-0.5ex]
&\Leftrightarrow g(x)\underset{x\to x_0}{=}f(x)\times \mathrm{o}(1)
\end{DispWithArrows}

\end{itemize}
\end{document}


Dans l'exemple précédent, j'ai aussi montré que l'on pouvait aussi caler les formules à gauche avec l'option fleqn.

Le seul inconvénient des environnements de witharrows par rapport à ceux à amsmath est que le numéro d'équation n'est pas reporté à la ligne suivante en cas de collision avec une équation longue.