[Résolu] Espacement vertical après un environnement

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.

Modérateur: gdm_tex

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

[Résolu] Espacement vertical après un environnement

Messagepar GRSG » Dimanche 05 Février 2012, 19:21

Bonjour,

J'aurais voulu savoir si c'était possible qu'à la sortie d'un environnement, on ne tienne pas compte des sauts de lignes qui suivent avant le texte. Comme ce que j'écris ne me semble pas clair, voici un code pour illustré le pb.
Code: Tout sélectionner
\documentclass[11pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[frenchb]{babel}
\usepackage{ifthen}
\usepackage{linegoal}
\usepackage{mathtools}
\usepackage{amsfonts,mathrsfs,amssymb,yhmath,stmaryrd}

\AtBeginDocument{
\abovedisplayskip=1ex plus 0.5ex minus 0.5ex
\abovedisplayshortskip=0.5ex plus 0.5ex minus -0.5ex
\belowdisplayskip=0.5ex plus 0.5ex minus 0.5ex
\belowdisplayshortskip=0.25ex plus 0.5ex minus -0.25ex
}

\DeclareRobustCommand{\[}{\noindent\begin{equation*}}
\DeclareRobustCommand{\]}{\end{equation*}}

\textwidth=13cm

\newenvironment{enonce}{}{}

\begin{document}
\section{Enoncé avec environnement}
\begin{enumerate}
\item
\begin{enonce}
Soit la suite $(u_n)$ définie sur $\mathbb{N}$ par:
\[u_0=1 \quad\text{ et } \forall n\in\mathbb{N},\ u_{n+1}=\sqrt{2-\ln(u_n)}\]
\end{enonce}
\begin{enumerate}
\item
\begin{enonce}
Montrer que: $\forall n\in\mathbb{N},\ u_n\in[1;2]$.
\end{enonce}
\item
\begin{enonce}
En déduire que la suite $(u_n)$ converge vers $\alpha$.
\end{enonce}
\item
\begin{enonce}
L'objectif est de faire un programme qui approche $\alpha$ à 0,001 près. Pour celà on utilise
\end{enonce}
\end{enumerate}
\end{enumerate}

\section{Enoncé avec environnement avec saut de ligne}

\begin{enumerate}

\item

\begin{enonce}
Soit la suite $(u_n)$ définie sur $\mathbb{N}$ par:
\[u_0=1 \quad\text{ et } \forall n\in\mathbb{N},\ u_{n+1}=\sqrt{2-\ln(u_n)}\]
\end{enonce}

\begin{enumerate}

\item

\begin{enonce}
Montrer que: $\forall n\in\mathbb{N},\ u_n\in[1;2]$.
\end{enonce}

\item

\begin{enonce}
En déduire que la suite $(u_n)$ converge vers $\alpha$.
\end{enonce}

\item

\begin{enonce}
L'objectif est de faire un programme qui approche $\alpha$ à 0,001 près. Pour celà on utilise
\end{enonce}

\end{enumerate}

\end{enumerate}

\end{document}



Dans la première partie, il n'y a pas de sauts de lignes et la présentation est correcte.

dans la deuxième partie, le saut de ligne après \end{enonce} génère une présentation où il y a un espace vertical trop élevé. Il y a-t-il un moyen (automatique) pour éviter cet espacement?

Merci pour vos réponses.

Gabriel
Dernière édition par GRSG le Lundi 06 Février 2012, 13:25, édité 1 fois.
GRSG
Méga-utilisateur
 
Messages: 293
Inscription: Mercredi 08 Octobre 2008, 08:45
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: Espacement vertical après un environnement

Messagepar un bon petit » Dimanche 05 Février 2012, 22:00

Déjà, je ne comprends pas à quoi peut bien servir un environnement qui ne fait rien comme l'est "enonce".

Ensuite, le problème disparait si l'on ne saute pas des lignes à tort et à travers, pour le simple plaisir d'aérer le code. il faut toujours se rappeler que sauter 2 lignes est revient à écrire \par, ce qui est loin d'être inoffensif.

Ici, le problème que tu décrit se passe parce "\]" insère un espacement vertical puis que probablement, "\end{enonce}" quitte le mode vertical pour je ne sais quelle raison (flemme d'aller voir pourquoi) et que juste après, tu sautes 2 lignes (qui revient donc à former un \par). Et comme on est en mode horizontal, ceci saute une ligne dans le document final.
un bon petit
Giga-utilisateur
 
Messages: 719
Inscription: Vendredi 12 Juin 2009, 21:35
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Re: Espacement vertical après un environnement

Messagepar pg » Dimanche 05 Février 2012, 22:50

Mettre un \ignorespacesafterend à la fin de la définition de l'environnement :

Code: Tout sélectionner
\newenvironment{enonce}{}{\ignorespacesafterend}
pg
Modérateur
 
Messages: 2592
Inscription: Jeudi 14 Juin 2007, 23:31

Re: Espacement vertical après un environnement

Messagepar projetmbc » Dimanche 05 Février 2012, 23:03

Bonsoir,
si on commence à produire des commandes pour contourner les règles du langage LaTeX, on n'est pas sorti de l'auberge... Il me semble bien plus important de respecter ces dernières lorsque l'on tape du code LaTeX.

A quoi sert cet environnement enonce ? Que veux-tu faire ? Seule question qui vaille la peine d'être posé ?
projetmbc
Péta-utilisateur
 
Messages: 1895
Inscription: Samedi 29 Décembre 2007, 00:58
Statut actuel: Actif et salarié | Enseignant

Re: Espacement vertical après un environnement

Messagepar pg » Dimanche 05 Février 2012, 23:31

projetmbc a écrit:contourner les règles du langage LaTeX

????? Je rejoins un bon petit pour dire qu'il ne faut pas aérer n'importe comment son fichier source (et l'exemple de GRSG est un peu abusif), mais aucune "règle du langage LaTeX" n'a été enfreinte.

Certains environnements doivent se terminer par \ignorespacesafterend pour éviter des espaces parasites, c'est parfaitement normal et souhaitable. L'exemple standard est \begin{large}...\end{large} qui ne le fait pas et doit donc justement être évité pour cette raison. Ici, c'est bien un problème d'espace parasite car il suffit d'écrire "\end{enonce}%" pour que le problème disparaisse. Pour voir le même phénomène en action (disparaît s'il y a un seul \space) :

Code: Tout sélectionner
\documentclass{article}

\begin{document}

$$a=b$$\space\space\par Bla

\end{document}
pg
Modérateur
 
Messages: 2592
Inscription: Jeudi 14 Juin 2007, 23:31

Re: Espacement vertical après un environnement

Messagepar un bon petit » Lundi 06 Février 2012, 13:01

pg a écrit:espaces parasites

Mais bien sûr, c'est cette espace qui fait quitter le mode vertical. Pfff, l'avais même pas vu, la honte :oops:
un bon petit
Giga-utilisateur
 
Messages: 719
Inscription: Vendredi 12 Juin 2009, 21:35
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Re: Espacement vertical après un environnement

Messagepar GRSG » Lundi 06 Février 2012, 13:08

La commande proposée par pg me convient très bien.

Je préfère lire un source aéré plutôt que dense et je ne pensais que cela pouvait poser problème...

Concernant l'environnement {enonce}, dans mes fichiers d'exercices je mets plusieurs environnements {enonce} {solution} {indication} {commentaire}... et grâce à une commande que m'avait fournie pg je peux exclure (de la compilation) les environnements en fonction des besoins.

Donc le code (trop aéré...) modifié et plus complet est le suivant:
Code: Tout sélectionner
\documentclass[11pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[frenchb]{babel}
\usepackage{ifthen}
\usepackage{linegoal}
\usepackage{mathtools}
\usepackage{amsfonts,mathrsfs,amssymb,yhmath,stmaryrd}
\usepackage{verbatim}

\AtBeginDocument{
\abovedisplayskip=1ex plus 0.5ex minus 0.5ex
\abovedisplayshortskip=0.5ex plus 0.5ex minus -0.5ex
\belowdisplayskip=0.5ex plus 0.5ex minus 0.5ex
\belowdisplayshortskip=0.25ex plus 0.5ex minus -0.25ex
}

\DeclareRobustCommand{\[}{\noindent\begin{equation*}}
\DeclareRobustCommand{\]}{\end{equation*}}

\newenvironment{enonce}{}{\ignorespacesafterend}
\newenvironment{solution}{}{\ignorespacesafterend}

\makeatletter
\newwrite{\verbatim@out@one}
\newcommand\initiatepoubelle[1]{\immediate\openout \verbatim@out@one #1}
\newcommand{\exclure}[1]{
\renewenvironment{#1}{\bgroup\@bsphack
\let\do\@makeother\dospecials
\catcode`\^^M\active
\def\verbatim@processline{%
\immediate\write\verbatim@out@one{\the\verbatim@line}}%
\verbatim@start}
{\immediate\write\verbatim@out@one{ }\@esphack\egroup}}
\def\terminatepoubelle{\immediate\closeout\verbatim@out@one}
\makeatother

\textwidth=13cm

\exclure{enonce}
%\exclure{solution}

\begin{document}

\begin{enonce}
Intro
\end{enonce}

\begin{enumerate}

\item

\begin{enonce}
Question 1
\end{enonce}

\begin{solution}
Solution 1
\end{solution}

\item

\begin{enumerate}

\item

\begin{enonce}
Question 2 a
\end{enonce}

\begin{solution}
Solution 2 a
\end{solution}

\end{enumerate}

\end{enumerate}

\end{document}

Merci pour votre aide

Gabriel
GRSG
Méga-utilisateur
 
Messages: 293
Inscription: Mercredi 08 Octobre 2008, 08:45
Statut actuel: Actif et salarié | Enseignant

Re: Espacement vertical après un environnement

Messagepar pg » Lundi 06 Février 2012, 13:11

GRSG a écrit:Je préfère lire un source aéré plutôt que dense et je ne pensais que cela pouvait poser problème...

On peut mettre des % sur les lignes vides pour éviter tout problème.
pg
Modérateur
 
Messages: 2592
Inscription: Jeudi 14 Juin 2007, 23:31

Re: Espacement vertical après un environnement

Messagepar GRSG » Lundi 06 Février 2012, 13:24

OK. Merci
GRSG
Méga-utilisateur
 
Messages: 293
Inscription: Mercredi 08 Octobre 2008, 08:45
Statut actuel: Actif et salarié | Enseignant


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Proximic [Spider] et 27 invités