Supprimer le passage à la ligne avec itemize — Les-mathematiques.net The most powerful custom community solution in the world

Supprimer le passage à la ligne avec itemize

Bonjour à toutes et tous,

Ma question est la suivante : comment empêcher le passage à la ligne avec l'environnement itemize ?

En tapant
\documentclass[a4paper,11pt]{article}

\usepackage[french]{babel}
\usepackage[T1]{fontenc}    
\usepackage[utf8]{inputenc}
\usepackage[left=1cm, right=1cm, top=1cm, bottom=2cm]{geometry} 

\AtBeginDocument{\renewcommand{\labelitemi}{\textbullet}}	% Définition des puces par défaut comme des points

\begin{document}

\noindent 
On dit aussi que : 
\begin{itemize}
\item le nombre $a$ est un multiple du nombre $b$ ;
\item le nombre $a$ est divisible par le nombre $b$ ;
\item le nombre $a$ est dans la table de multiplication du nombre $b$.
\end{itemize}

\end{document}

j'obtiens l'image 1 ci-jointe.

Je voudrais obtenir l'image 2 (à la police d'écriture près, n'en tenez pas compte).

Si l'environnement "itemize" n'est celui adapté à la situation, je suis évidemment près à adopter toute autre solution (idem pour la question suivante, d'ailleurs).

Merci par avance pour votre aide.

michaël.100018

Réponses

  • Pour la question 1, tu peux faire:
    \documentclass{article}
    \usepackage{enumitem}
     
    \begin{document}
     
    \noindent 
    Blablabla : 
    \begin{itemize}[label=\textbullet, nolistsep, before*={\mbox{}\vspace{-\baselineskip}}, leftmargin=65pt]
    \item My item1
    \item My item2...
    \end{itemize}
    blablabla ....
      
    \end{document}
    

    mais il faut bien régler "leftmargin".

    Une autre possibilité est avec une minipage :
    \documentclass{article}
    
    \begin{document}
    
    blabla : 
    \begin{minipage}[t]{0.4\linewidth}
      \begin{enumerate} 
        \item a
        \item b 
      \end{enumerate}
    \end{minipage}
    
    \end{document}
    

    Tu peux aussi essayer de mettre la liste dans un tableau (je n'ai pas essayé).
  • Une autre solution pour la question 1:
    \documentclass{article}
    \usepackage{enumitem}
    
    \begin{document}
    
    \begin{tabular}{rl}
      Blablabla: &
      \begin{minipage}[t]{0.4\textwidth}
        \begin{itemize}[leftmargin=0pt]
        \item aaa
        \item bbb
        \end{itemize}
      \end{minipage}
    \end{tabular}
    
    \end{document}
    
  • Bonjour Saturne,

    merci beaucoup pour tes réponses.
    J'ai essayé toutes les solutions proposées et je vais mettre de côté la solution 1 (le réglage de leftmargin fait un peu "bidouillage" (pour moi, en tout cas) et c'est justement ce que je voudrais éviter en passant à LaTeX).

    Je ne vois pas de différence de rendu entre les solutions 2 et 3
    [Edit (je n'avais pas compilé le bon fichier (td)) : avec la solution 3, le texte des puces passe sur le "On dit aussi que" (voir pièce jointe)], je vais donc opter pour la 2 à quelques modifications près :
    * j'ai mis un environnement "itemize" plutôt que "enumerate" ;
    * j'ai remplacé "0.4\linewidth" par "15cm" (sinon, chacune de mes phrases allait à la ligne).

    Merci encore pour ton aide.

    michaël.100026
  • Re,

    en fait, la solution que j'ai adoptée est la suivante :
    \documentclass[a4paper,11pt]{article}
    
    \usepackage[french]{babel}
    \usepackage[T1]{fontenc}    
    \usepackage[utf8]{inputenc}
    \usepackage[left=1cm, right=1cm, top=1cm, bottom=2cm]{geometry} 
    
    \AtBeginDocument{\renewcommand{\labelitemi}{\textbullet}}	% Définition des puces par défaut comme des points
    
    \begin{document}
    
    On dit aussi que :
    \begin{minipage}[t]{15cm}
      \begin{itemize} 
    \item le nombre $a$ est un multiple du nombre $b$ ;
    \item le nombre $a$ est divisible par le nombre $b$ ;
    \item le nombre $a$ est dans la table de multiplication du nombre $b$.
      \end{itemize}
    \end{minipage}
    
    \end{document}
    

    Et ça me donne ce qui est en pièce jointe (première image) avec un gros espacement entre ":" et la première puce (bullet).

    Dans le document avec lequel je travaille pour l'instant, ça me va mais j'aimerais aussi pouvoir avoir les puces (bullet) alignées juste après les deux points (en gros qu'il y ait juste une espace entre ":" et "bullet" comme dans l'image 2 du premier message que je remets ci-dessous).

    Merci par avance pour votre aide.

    michaël.100038
    100040
  • En incluant le package enumitem on peut régler cet espace avec l'option leftmargin :
    On dit aussi que :
    \begin{minipage}[t]{15cm}
      \begin{itemize}[label=\textbullet, leftmargin=10pt]
    \item le nombre $a$ est un multiple du nombre $b$ ;
    \item le nombre $a$ est divisible par le nombre $b$ ;
    \item le nombre $a$ est dans la table de multiplication du nombre $b$.
      \end{itemize}
    \end{minipage}
    
  • Parfait, merci beaucoup Saturne !

    Pour essayer de comprendre un peu, peux-tu me dire comment tu sais que c'est "10pt" qu'il faut écrire ? En faisant des essais ?
    (naturellement, j'aurais mis "1ex" mais j'ai vu que ça ne fonctionnait pas).
  • Je reviens à ma 1ère solution, celle que tu as laissée de côté. Pour ne pas avoir à régler le leftmargin, tu peux utiliser widthof du package calc :
    \documentclass{article}
    \usepackage{enumitem}
    \usepackage{calc}
    
    \begin{document}
     
    \noindent Blablabla
    \begin{itemize}[label=\textbullet, nolistsep, before*={\mbox{}\vspace{-\baselineskip}}, leftmargin=\widthof{Blablabla}+15pt]
    \item My item1
    \item My item2...
    \end{itemize}
    
    \noindent Blablablablabla
    \begin{itemize}[label=\textbullet, nolistsep, before*={\mbox{}\vspace{-\baselineskip}}, leftmargin=\widthof{Blablablablabla}+15pt]
    \item My item1
    \item My item2...
    \end{itemize}
      
    \end{document}
    

    J'ajoute 15pt car leftmargin est l'espacement entre la marge gauche et le contenu des items, ce n'est pas l'espacement entre la marge gauche et la bullet.
  • Oui, pour trouver le bon espacement, je fais des essais.
  • Super, merci Saturne.
  • À mon avis, ce style de mise en forme n'est pas terrible car si utilisé à plusieurs endroits de la page avec des textes précédents différents (les « On dit aussi que »), les différents paquets de puces (ô combien visibles !) ne seront pas alignés.

    Néanmoins, voici une autre possibilité sans tâtonnement. Le principal désavantage par rapport à la méthode donnée ci-dessus est que la minipage ne peut être coupée entre deux pages, c'est juste une grosse boîte. Cela dit, on peut arranger la méthode ci-dessus pour ne pas tâtonner en procédant comme ci-dessous (voir mon message suivant) :
    \documentclass{article}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage[french]{babel}
    \usepackage{enumitem}
    \usepackage{lipsum}
    
    \newsavebox{\maboite}
    \newlength{\longueur}
    
    \newcommand*{\mesureEtCompose}[1]{%
      \sbox{\maboite}{#1}%
      \settowidth{\longueur}{\usebox{\maboite}}%
      \leavevmode\box\maboite
    }
    
    \begin{document}
    
    \lipsum[1][1-3]
    
    \noindent \mesureEtCompose{On dit aussi que : }%
    \begin{minipage}[t]{\dimexpr \linewidth - \longueur}
      \begin{itemize}[label=\textbullet, labelindent=0pt, leftmargin=*]
    \item le nombre $a$ est un multiple du nombre $b$ ;
    \item le nombre $a$ est divisible par le nombre $b$ ;
    \item le nombre $a$ est dans la table de multiplication du nombre $b$.
      \end{itemize}
    \end{minipage}
    
    \end{document}
    
    Même chose légèrement plus sophistiquée pour prendre en compte un éventuel alinea (cf. argument optionnel qui donne la largeur de ce qui précède) :
    \documentclass{article}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage[french]{babel}
    \usepackage{enumitem}
    \usepackage{lipsum}
    
    \newsavebox{\maboite}
    \newlength{\longueur}
    
    \newcommand*{\mesureEtCompose}[2][0pt]{%
      \sbox{\maboite}{#2}%
      \settowidth{\longueur}{\usebox{\maboite}}%
      \addtolength{\longueur}{#1}%
      \leavevmode\box\maboite
    }
    
    \begin{document}
    
    \lipsum[1][1-3]
    
    \mesureEtCompose[\parindent]{On dit aussi que : }%
    \begin{minipage}[t]{\dimexpr \linewidth - \longueur}
      \begin{itemize}[label=\textbullet, labelindent=0pt, leftmargin=*]
    \item le nombre $a$ est un multiple du nombre $b$ ;
    \item le nombre $a$ est divisible par le nombre $b$ ;
    \item le nombre $a$ est dans la table de multiplication du nombre $b$.
      \end{itemize}
    \end{minipage}
    
    \end{document}
    
    100046
  • Voici une solution :
    • sans tâtonnement ;
    • qui ne met pas la liste dans une grosse boîte ;
    • qui n'autorise pas de coupure de page avant le début de la liste (i.e., après le « On dit aussi que : » de l'exemple).
    \documentclass{article}
    \usepackage{lmodern}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage[french]{babel}
    %\usepackage[paperheight=1.71cm]{geometry} % pour vérifier les coupures de pages
    \usepackage{enumitem}
    \usepackage{lipsum}
    
    \makeatletter
    \newsavebox{\maboite}
    \newlength{\longueur}
    
    \newcommand*{\mesureEtCompose}[2][0pt]{%
      \sbox{\maboite}{#2}%
      \settowidth{\longueur}{\usebox{\maboite}}%
      \addtolength{\longueur}{#1}%
      \leavevmode\box\maboite
    }
    
    \newenvironment{bizarre}[2][0pt]
      {%
        \mesureEtCompose[#1]{#2}%
        \@nobreaktrue
        \itemize[label=\textbullet,
                 before*={\vspace*{\glueexpr-\baselineskip-\parskip}},
                 labelindent=\longueur, leftmargin=*]
      }
      {\enditemize}
    \makeatother
    
    \begin{document}
    
    \lipsum[1][1-3]
    \medskip
    
    \begin{bizarre}[\parindent]{On dit aussi que : }
      \item le nombre $a$ est un multiple du nombre $b$ ;
      \item le nombre $a$ est divisible par le nombre $b$ ;
      \item le nombre $a$ est dans la table de multiplication du nombre $b$.
    \end{bizarre}
    
    Variante sans alinéa :\par\medskip
    
    \noindent
    \begin{bizarre}{On dit aussi que : }
      \item le nombre $a$ est un multiple du nombre $b$ ;
      \item le nombre $a$ est divisible par le nombre $b$ ;
      \item le nombre $a$ est dans la table de multiplication du nombre $b$.
    \end{bizarre}
    
    \end{document}
    

    @Michaël Tu vois qu'il n'était pas inutile de séparer les questions : il y avait pas mal à dire sur chacune d'entre elles et les solutions sont franchement différentes.

    Edit : dès fois que le \parskip serait non nul — ce qui est le cas par défaut, puisque la valeur standard est 0.0pt plus 1.0pt —, il faut en tenir compte à l'endroit où l'on « rembobine », d'où l'utilisation de :
    before*={\vspace*{\glueexpr-\baselineskip-\parskip}}
    
    On peut vérifier le bon comportement avec par exemple :
    \setlength{\topsep}{20pt plus 6.0pt minus 4.0pt}
    \setlength{\parskip}{15pt plus 4.0pt}
    
    avant \begin{document} et :
    \par\flushbottom\pagebreak
    
    après le dernier \end{bizarre}. Ceci étire les espaces verticaux de manière un peu monstrueuse, ce que signale d'ailleurs le message de LaTeX « Underfull \vbox (badness 10000) has occurred while \output is active », et montre que même dans ces conditions, la première puce d'une liste 'bizarre' est à la bonne hauteur.

    Edit 2 : remplacement de « On dit aussi que : » par #2 dans la définition de l'environnement 'bizarre', suppression d'un \relax superflu et ajout de l'accent sur le « e » d'alinéa.100118
  • Salut brian,

    Merci une fois de plus pour tout ça.
    Oui, faire plusieurs fils valait le coup. Je pensais naïvement que la solution serait quasi-identique (au moins pour trois questions sur quatre).
    Mais c'est noté pour la prochaine fois : une question par fil et un exemple complet minimal pour expliquer le problème.

    Merci encore.

    michaël.
  • Voilà. J'ai fait une petite modif. à mon dernier message (voir note « Edit »). Tes exemples minimaux sont bien. Comme on écrit en français ici, je propose de les commencer par :
    \documentclass{article}
    \usepackage{lmodern}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc} % ceci est même facultatif puisque par défaut depuis... 2 ans ?
    \usepackage[french]{babel}
    
    Ce n'est pas rigoureusement minimal, mais de cette façon, on a des césures correctes, des espaces avant et après ponctuation également corrects pour le français, ainsi qu'une police par défaut vectorielle. Pas besoin de mettre d'appel à 'geometry', sauf si c'est pertinent pour le problème.

    En tout cas, pour ceux qui essaient d'aider, c'est vraiment agréable de pouvoir comprendre le problème et travailler à partir d'un document épuré comme cela. :-)
  • OK, c'est noté. Je mets ça dans mon "document_test.tex".
    Je vais aussi ajouter "\usepackage{lmodern}" dans mon fichier de travail sur l'arithmétique.
    Pour le package geometry, je le mettais parce que je sais que les marges que je choisis ne sont pas "standard" (je vais d'ailleurs regarder si mon souci de note de bas de page ne vient pas de là). Mais je prends en note qu'il n'est pas nécessaire en général dans les exemples complets minimaux.
  • Bonjour,

    Pour écrire les choses comme dans le premier message :
    \begin{document}
    
    \noindent 
    On dit aussi que : 
    \begin{itemize}
    \item le nombre $a$ est un multiple du nombre $b$ ;
    \item le nombre $a$ est divisible par le nombre $b$ ;
    \item le nombre $a$ est dans la table de multiplication du nombre $b$.
    \end{itemize}
    
    \end{document}
    

    voici une autre piste (s'appuyant sur le code de Brian) :
    \documentclass[12pt]{article}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage{lipsum}
    \usepackage[frenchb]{babel}
    \frenchbsetup{StandardLists=true}
    \usepackage{textcomp}
    \usepackage{enumitem}
    
    \makeatletter
    
    \newlength\longueur
    
    \newcommand\mesure{%
      \mbox{}
      $$
        \abovedisplayshortskip\z@
        \abovedisplayskip\z@
        \belowdisplayshortskip\z@
        \belowdisplayskip\z@
        \predisplaypenalty\@M
        \postdisplaypenalty\@M
        \global\longueur\predisplaysize
        \global\advance\longueur-2em
      $$
      \vskip-2\baselineskip
      \vskip-\parskip
      \noindent}
    
    \newenvironment{myitemize}
      {\mesure
        \@nobreaktrue
        \itemize[partopsep=0pt,topsep=0pt,
          label=\textbullet,
          labelindent=\longueur,leftmargin=*,
          before*={\vspace*{\glueexpr-\baselineskip-\parskip\relax}}]}
      {\enditemize}
    
    \makeatother
    
    \begin{document}
    
    \lipsum[2]
    
    \medskip
    
    On dit que :
    \begin{myitemize}
      \item le nombre $a$ est un multiple du nombre $b$ ;
      \item le nombre $a$ est divisible par le nombre $b$ ;
      \item le nombre $a$ est dans la table de multiplication du nombre $b$.
    \end{myitemize}
    
    \medskip
    
    Variante sans alinéa :
    
    \medskip
    
    \noindent On dit aussi que :
    \begin{myitemize}
      \item le nombre $a$ est un multiple du nombre $b$ ;
      \item le nombre $a$ est divisible par le nombre $b$ ;
      \item le nombre $a$ est dans la table de multiplication du nombre $b$.
    \end{myitemize}
    
    \end{document}
    

    Edit : "partopsep=0pt" inutile. A noter qu'il ne faut pas laisser une ligne blanche après "On dit que :" et "\noindent On dit aussi que :".
  • Que de solutions ! Merci Audeo.
  • Je trouve que \frenchsetup{StandardLists=true} (\frenchbsetup est le nom obsolète de cette commande) espace beaucoup les items les uns des autres, mais c'est un choix esthétique. En revanche, l'astuce du \predisplaysize-2em (*), au-delà de son allure quelque peu baroque, vaut son pesant de cacahouètes. Je crois qu'elle a déjà été donnée sur ce forum (sans doute déjà Audeo), mais je l'avais oubliée. Merci Audeo !

    (*) Astuce qui permet de mesurer automatiquement la largeur de la dernière ligne d'un paragraphe. Pour comprendre comment ça marche, on peut lire le TeXbook p. 188 et suivantes. Le 2em — longueur qui dépend de la police courante — n'est pas une valeur ad-hoc comme on pourrait le croire, c'est précisément la valeur utilisée par TeX pour calculer \predisplaysize au début d'une formule de type display.
  • @Brian : Il doit y avoir d'autres défauts dans ce que je propose. En particulier, je me demande si la coupure de page sera bien évitée dans tous les cas. Sinon je n'ai jamais évoqué cette astuce sur le forum et je la tiens de la page suivante.
  • Ah, ok, merci pour la source. Je crois qu'il n'y a pas de problème pour les coupures de pages (par raisonnement, mais j'ai aussi testé). J'aurais regroupé les deux \vskip, mais en pratique, ça ne doit rien changer tant qu'il n'y a pas de \unskip juste après. Le principal problème que je vois avec cette technique, c'est que comme elle permet de commencer la liste n'importe où à la fin d'un paragraphe, il faut faire attention à ce que ça ne tombe pas vers la fin d'une ligne (sauf erreur, ça pourrait aussi tomber au tout début). La valeur passée à labelindent serait alors très proche de \linewidth, donc il y aurait une très faible largeur disponible pour la liste elle-même, d'où un résultat horrible. Mais si c'est utilisé après une unique ligne assez courte comme dans l'exemple, je pense que cela fonctionne aussi bien que ma solution.

    Note : il y a des cas particuliers où \predisplaysize est mis à -\maxdimen ou \maxdimen après le $\$\$$ ouvrant :
    • -\maxdimen s'il n'y a pas de ligne de paragraphe juste avant (par exemple, si le $\$\$$ ouvrant est précédé de \noindent ou du $\$\$$ fermant d'un display précédent) ;
    • \maxdimen si... [TeXbook p. 188] TeX looks inside the hbox that was formed by the previous line, and sets $p$ to the position of the right edge of the rightmost box inside that hbox, plus the indentation by which the enclosing hbox has been moved right, plus two ems in the current font. However, if this value of $p$ depends on the fact that glue in that hbox was stretching or shrinking—for example, if the \parfillskip glue is finite, so that the material preceding it has not been set at its natural width—then $p$ is set to \maxdimen. (This doesn’t happen often, but it keeps TeX machine independent, since $p$ never depends on quantities that may be rounded differently on different computers.)
    En situation normale, \parfillskip vaut 0pt plus 1 fil, donc le deuxième cas ne devrait pas se produire à moins de le faire exprès.
  • J'ai fait une petite correction dans le message ci-dessus : j'avais oublié de remplacer « On dit aussi que : » par #2 dans la définition de l'environnement 'bizarre', ce qui fait que l'amorce était codée en dur en dépit des apparences...
  • @brian : Si je peux me permettre, peut-être faudrait-il ajouter "topsep=0pt" dans le \itemize de la définition de l'environnement "bizarre" ? En effet, le saut que l'on met avant l'environnement (avant "On dit aussi que : " ou autre) est "libre" mais pas celui en sortie.
  • Je ne suis pas sûr d'avoir bien compris le sens du mot « libre » dans ta dernière phrase. J'aurais dit le contraire, en fait : si on décale avant la liste, ça fiche l'alignement en l'air. Mais décaler après, si on en a envie, pourquoi pas ?

    Je veux bien que tu me proposes un cas où ça marche mal, mais d'après mes tests, le \topsep d'avant la liste est neutralisé par mon \@nobreaktrue (je ne suis pas allé voir pourquoi). Si l'on s'amuse à mettre \itemize[label=\textbullet, topsep=50pt, ...] dans la définition de l'environnement 'bizarre', cette longueur ne se retrouve qu'après la liste. On peut donc la régler comme on veut, ça me semble bien. As-tu un exemple problématique précis sous la main ?
  • Supposons que @michael termine un paragraphe et en commence un nouveau, disons non indenté, par l'environnement "Bizarre" après un écart vertical de 20pt. On aura donc le résultat suivant :


    Fin du paragraphe précédant l'utilisation de "bizarre".

    Espacement vertical de 20pt.

    On dit aussi que : * ... <= Début de l'énumération bizarre via \begin{bizarre}{On dit aussi que : }
    .............................*
    .............................*
    .............................* Dernier item de l'énumération bizarre...

    Espacement vertical

    Reprise du texte ...


    Eh bien, sauf erreur, l'espacement vertical avant "Reprise du texte ...", qui est induit par "\end{itemize}" et la valeur par défaut de \topsep en l'absence de réglage de \topsep, peut ne pas être le bon. En mettant \topsep à 0pt, @michael pourra avoir également un saut de 20pt s'il le souhaite, en le mettant à la main sans avoir à faire \unskip.
  • Par construction, un espacement vertical séparant la fin d'un paragraphe et le début d'une énumération bizarre doit être mis à la main donc il me semble homogène de mettre \topsep à 0pt afin qu'il en soit de même pour la sortie. Après, je peux faire fausse route !
  • Sur ton dernier message : moui, mais par construction, le début de la liste produite par 'bizarre' est fortement non-standard (d'où le nom), alors que ce qui se passe à la fin est assez standard. Enfin, c'est comme ça que je vois les choses. Mais si Michaël les voit comme toi, je veux bien faire le changement, pas de problème.

    (Maintenant, je réponds à celui d'avant)
    D'accord, mais si un \topsep > 0pt s'applique à l'itemize dans 'bizarre', cela veut dire qu'il a été réglé quelque part, qu'il s'applique déjà aux listes itemize de même niveau hiérarchique, donc je pars du principe qu'il est souhaité. S'il n'est pas souhaité, alors il faut le mettre à 0pt plus des bricoles et ce, de la manière la plus large possible, me semble-t-il. Autrement dit, autant je vois pourquoi l'espace « avant » possiblement induit par \topsep (mais pas ici) doit être évité — sous peine de bousiller l'alignement avec la phrase d'amorce —, autant je ne vois pas pourquoi on devrait traiter l'espace « après » induit par \topsep différemment selon qu'il provient de l'itemize utilisé par l'environnement 'bizarre' ou d'un itemize utilisé hors environnement 'bizarre'. Si les listes à puces du document de Michaël sont suivies d'un espace de 10pt (exemple à la noix pour fixer les idées), pourquoi celles produites par 'bizarre' devraient-elles être différentes ?

    Si ça intéresse quelqu'un, je veux bien changer la définition de 'bizarre' pour qu'il prenne un argument optionnel supplémentaire, voire des mots-clés afin de pouvoir passer des options (p. ex. topsep) au cas par cas à l'environnement itemize produit par 'bizarre', mais pour l'instant, j'ai du mal à voir une raison de changer le comportement par défaut. Mais je suis prêt à être convaincu. :-)
  • Je suis un peu largué dans votre discussion (trop technique pour moi) mais une précision sur mon envie de faire ainsi (si besoin) : je ne compte pas faire systématiquement comme ça, mais en le faisant, ici, je gagne une ligne qui me permet de tout faire tenir sur une page de moins. Bref : je voulais juste gagner une ligne dans mon document ;-)
    L'avantage de l'environnement "bizarre", pour moi, est de pouvoir refaire ça à l'occasion assez facilement.

    Merci pour toutes vos solutions.
  • En gros, les environnements de liste (itemize, enumerate, description...) ont des espaces verticaux insérés automatiquement avant et après, définis par \topsep + \parskip, hauteur à laquelle on ajoute \partopsep lorsque l'environnement de liste a été commencé en mode vertical (i.e., hors d'un paragraphe : typiquement, après \par ou une ligne blanche).

    (De plus, mais ce n'est pas le sujet ici, si un tel environnement est suivi d'une ligne blanche, alors le texte qui suit sera indenté comme un nouveau paragraphe [mais on peut utiliser \noindent comme d'habitude] ; sinon, il y a techniquement un nouveau paragraphe mais son indentation est retirée.)

    Mon environnement 'bizarre' neutralise l'espace avant, sinon le premier item ne serait pas aligné avec la phrase d'amorce (le « On dit aussi que : »). Concernant l'espace après, mon environnement ne change rien à ce que fait un itemize de même niveau dans le reste du document. Si les environnements itemize de même niveau sont suivis d'un espace après dû à \topsep, ce sera aussi le cas pour la liste sortie par 'bizarre'. Pour Audeo, il semblerait préférable d'annuler l'espace après la liste sortie par 'bizarre', quitte à ce que tu en rajoutes un toi-même si besoin (avec \vspace, par exemple).

    Voilà, tu peux choisir. Comme je l'ai dit, je peux éventuellement ajouter un argument optionnel à 'bizarre', voire des mots-clés (clé1=valeur1, clé2=valeur2, etc.) pour permettre d'injecter des options au cas par cas (p. ex. topsep) à l'environnement 'itemize' sous-jacent.
  • Merci pour cette explication, brian, c'est très clair.
    Je me note toutes ces solutions/explications pour les retrouver facilement en temps voulu.
  • Sauf erreur, ce que j'ai écrit au sujet de l'espacement vertical avant/après environnement, de hauteur \topsep + \parskip (+ \partopsep si l'environnement a commencé en mode vertical) et de l'éventuelle suppression de l'indentation du paragraphe qui suit, s'applique à tous les environnements basés sur trivlist, ce qui donne au minimum :
    • trivlist, list, center, flushleft, flushright, verbatim, itemize, enumerate, tabbing et les environnements définis avec \newtheorem pour ce qui est du noyau LaTeX (donc applicable à toutes les classes, sauf bien sûr si une classe ou un package redéfinit ou modifie les environnements en question) ;
    • description, verse, quote, quotation et thebibliography pour la classe article (je n'ai pas regardé les autres classes).
Connectez-vous ou Inscrivez-vous pour répondre.
Success message!