[Résolu] Coupure d'équations

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] Coupure d'équations

Messagepar GRSG » Samedi 04 Février 2012, 16:04

Bonjour,
Comme je ne souhaite pas avoir des équations coupées en bout de lignes (car du coups, les élèves m'écrivent sur leurs feuilles des équations coupées en bout de lignes...) j'ai créé une petite commande qui gère le positionnement de l'équation : sur la ligne en cours si l'équation n'est pas coupée sinon centrée sur la ligne suivante. J'ai utilisé une commande mentionnée par pg à latex-f6/commande-pour-longueur-de-ligne-restante-t14011.html

Le code est ci-dessous (il faut compiler deux fois...)
Code: Tout sélectionner
\documentclass[11pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[frenchb]{babel}
\usepackage{ifthen}
\usepackage{linegoal}

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

\newlength{\longueurequation}
\newlength{\longueurrestante}

\newcommand{\me}[1]{%
\longueurrestante=\linegoal%
\settowidth{\longueurequation}{$#1$}%
\ifthenelse{\longueurequation>\longueurrestante}{\begin{displaymath} #1 \end{displaymath}}{$#1$}%
}

\textwidth=13cm

\begin{document}

\section{En mode dollars}

du texte en mode math $x=y$ et $x+y=z+t-x$ pour voir ce que ça fait en une seule ligne.

du texte en mode math $x=y$ mais j'allonge pour que l'équation  \(x+y=z+t-x+\frac{1}{2}\) soit coupée et voir ce que ça fait

\section{En mode <<gestion coupure>>}

du texte en mode math \me{x=y} et \me{x+y=z+t-x} pour voir ce que ça fait en une seule ligne.

du texte en mode math \me{x=y} mais j'allonge pour que l'équation \me{x+y=z+t-x+\frac{1}{2}} soit coupée et voir ce que ça fait
\end{document}

Ce qui m'embête, c'est que l'équation soit à l'intérieur d'une commande. Je préfèrerais écrire \(x+y=z+t-x+\frac{1}{2}\) ou encore \<x+y=z+t-x+\frac{1}{2}\> (je me réserve le \[...\] pour l'équation centrée obligatoire et le $...$ pour l'équation en ligne obligatoire).
Comment dois-je modifier la commande?

Merci pour vos réponses.

Gabriel
Dernière édition par GRSG le Lundi 27 Février 2012, 21:23, édité 3 fois.
GRSG
Méga-utilisateur
 
Messages: 290
Inscription: Mercredi 08 Octobre 2008, 08:45
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: amélioration commande présentation équation

Messagepar pg » Samedi 04 Février 2012, 16:41

Un \def\(#1\){...} permet de faire ce que tu veux (compiler deux fois) :

Code: Tout sélectionner
\documentclass[11pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[frenchb]{babel}
\usepackage{ifthen}
\usepackage{linegoal}

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

\newlength{\longueurequation}
\newlength{\longueurrestante}

\protected\def\(#1\){%
  \setlength{\longueurrestante}{\the\linegoal}%
  \settowidth{\longueurequation}{$#1$}%
  \ifthenelse{\longueurequation>\longueurrestante}%
             {\begin{displaymath} #1 \end{displaymath}}%
             {$#1$}%
}
\newcommand{\me}[1]{%
  \setlength{\longueurrestante}{\the\linegoal}%
  \settowidth{\longueurequation}{$#1$}%
  \ifthenelse{\longueurequation>\longueurrestante}%
             {\begin{displaymath} #1 \end{displaymath}}%
             {$#1$}%
}

\textwidth=13cm

\begin{document}

\section{En mode dollars}

du texte en mode math $x=y$ et $x+y=z+t-x$ pour voir ce que ça fait en une seule ligne.

du texte en mode math $x=y$ mais j'allonge pour que l'équation  $x+y=z+t-x+\frac{1}{2}$ soit coupée et voir ce que ça fait

\section{En mode me}

du texte en mode math \me{x=y} et \me{x+y=z+t-x} pour voir ce que ça fait en une seule ligne.

du texte en mode math \me{x=y} mais j'allonge pour que l'équation \me{x+y=z+t-x+\frac{1}{2}} soit coupée et voir ce que ça fait

\section{En mode anti-slash parenthèses}

du texte en mode math \(x=y\) et \(x+y=z+t-x\) pour voir ce que ça fait en une seule ligne.

du texte en mode math \(x=y\) mais j'allonge pour que l'équation \(x+y=z+t-x+\frac{1}{2}\) soit coupée et voir ce que ça fait

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

Re: Amélioration commande présentation équation

Messagepar projetmbc » Samedi 04 Février 2012, 19:27

Bonsoir,
je sais que la discussion a déjà eu lieu, et même si ce code m'intéresse dans son fonctionnement, le rendu me parait très disgracieux.

Que faire ?

Peut-être une commande qui mettrait l'équation centrée sous le texte en mettant dans le texte, à la place de l'ancienne formule, quelque chose du type "voir ci-dessous"...

Idée à creuser...
projetmbc
Péta-utilisateur
 
Messages: 1895
Inscription: Samedi 29 Décembre 2007, 00:58
Statut actuel: Actif et salarié | Enseignant

Re: Amélioration commande présentation équation

Messagepar Altermundus » Samedi 04 Février 2012, 19:27

Je trouve cette méthode horrible sur le plan typographique et si il faut appliquer cela à tous les formules, cela devient une vraie galère.

Cela en effet n'a pas de sens car certaines expressions vont rester sur une ligne et d'autres vont être centrées. Cela risque de faire désordre.

Sans compter les cas particuliers comme une phrase qui se termine par : .... définit sur $\mathbf{R}^{*+}\cup\{i+1\}$. Cela va être atroce de voir l'ensemble tout seul au milieu d'une ligne. Ici il suffit d'écrire $ { \mathbf{R}^{*+}\cup\{i+1\} } $

Soit les expressions sont longues et dans ce cas il me semble que le mode \[ ...\] est nécessaire, soit on veut vraiment rester en mode ligne et après relecture je répète qu'il suffit d'un groupe TeX à l'intérieur de $ .... $ pour que l'expression ne soit pas coupée . Il suffit donc d'écrire ${ .... }$. Soit cela déborde un peu dans la marge, soit l'expression va à la ligne.

Alain
Altermundus
Giga-utilisateur
 
Messages: 557
Inscription: Lundi 28 Mai 2007, 09:31
Localisation: Paris
Statut actuel: Actif et salarié | Enseignant

Re: Amélioration commande présentation équation

Messagepar pg » Samedi 04 Février 2012, 19:35

Altermundus a écrit:Soit cela déborde un peu dans la marge, soit l'expression va à la ligne.

Si cela pouvait être aussi simple...
pg
Modérateur
 
Messages: 2583
Inscription: Jeudi 14 Juin 2007, 23:31

Re: Amélioration commande présentation équation

Messagepar Altermundus » Samedi 04 Février 2012, 21:30

pg a écrit:
Altermundus a écrit:Soit cela déborde un peu dans la marge, soit l'expression va à la ligne.

Si cela pouvait être aussi simple...


En effet mais pourquoi tout compliqué... cela arrive combien de fois une coupure dans une expression de maths ?
Altermundus
Giga-utilisateur
 
Messages: 557
Inscription: Lundi 28 Mai 2007, 09:31
Localisation: Paris
Statut actuel: Actif et salarié | Enseignant

Re: Amélioration commande présentation équation

Messagepar pg » Samedi 04 Février 2012, 22:28

Cela dépend de la taille de page et de la police. Quand on vidéo-projette, cela peut être assez fréquent si on veut que le texte reste visible.
pg
Modérateur
 
Messages: 2583
Inscription: Jeudi 14 Juin 2007, 23:31

Re: [Résolu] Coupure d'équations suivant la taille de la fon

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

C'est exactement mon problème... pour la vidéo projection où ce qui est en ligne et <<bien présenté>> sur le poly se retrouve coupé lorsqu'on change la taille de la police.
Je n'emploierai uniquement le \(...\) lorsque je verrai qu'en changeant la taille mon équation se retrouve coupée et je garde les $...$ et \[...\]

Ce n'est pas une solution miracle...
Merci pour le code

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

Argh

Messagepar GRSG » Lundi 06 Février 2012, 15:54

Bonjour,

J'ai l'impression que \linegoal n'est pas compatible avec {multicols} ou avec \documentclass[11pt,twocolumn,landscape,a4paper]{article}

J'ai fait afficher \the\linewidth, \the\linegoal, \the\textwidth sur des lignes vides. Sur format A4 portrait pas de pbs (valeurs identiques) par contre en mode 2 colonnes...
Sur les colonnes de gauches \the\linewidth > \the\linegoal alors que sur la colonne de droite \the\linegoal < 0.

Ca complique mon affaire...

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

Re: Coupure d'équations

Messagepar pg » Mardi 07 Février 2012, 14:03

Si c'est juste cela, un simple test de négativité devrait résoudre le problème :

Code: Tout sélectionner
\documentclass[11pt,twocolumn,landscape,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[frenchb]{babel}
\usepackage{ifthen}
\usepackage{linegoal}
\usepackage{geometry}

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

\newlength{\longueurequation}
\newlength{\longueurrestante}

\protected\def\(#1\){%
  \setlength{\longueurrestante}{\the\linegoal}%
  \ifdim\longueurrestante<0pt
    \setlength{\longueurrestante}{\columnwidth+\columnsep+\longueurrestante}
  \fi
  \settowidth{\longueurequation}{$#1$}%
  \ifthenelse{\longueurequation>\longueurrestante}%
             {\begin{displaymath} #1 \end{displaymath}}%
             {$#1$}%
}

\begin{document}

\edef\i{0}
\loop
\edef\i{\number\numexpr\i+1}
\ifnum\i<10
\section{Titre}

du texte en mode math \(x=y\) et \(x+y=z+t-x\) pour voir ce que \c a fait en une seule ligne.

du texte en mode math \(x=y\) mais j'allonge pour que l'\'equation \(x+y=z+t-x+\frac{1}{2}\) soit coup\'ee et voir ce que \c ca fait
\repeat

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

Re: Coupure d'équations

Messagepar GRSG » Mercredi 15 Février 2012, 22:32

Merci pour la réponse.

J'ai du adapter les commandes pour essayer de satisfaire au mieux les différentes situations. J'ai l'impression que \linegoal a un peu de mal parfois à calculer la longueur restante à cause de l'élasticité généré par tex.
Je suis donc arrivé au commandes ci-dessous (après pas mal d'essais). Ce n'est pas parfait (surtout le mode crochet) et si vous voyez des améliorations à porter, merci d'en faire part (n'oubliez pas de compiler deux fois).

Gabriel

Code: Tout sélectionner
\documentclass[11pt,a4paper]{article}

\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[frenchb]{babel}
\usepackage{mathtools}
\usepackage{amsfonts,mathrsfs,amssymb,yhmath,stmaryrd}
\usepackage{multicol}
\usepackage{graphicx}
\usepackage{ifthen}
\usepackage{linegoal}


\newlength{\longequa}
\newlength{\longreste}
\newlength{\eqmax}
\newlength{\eqmin}
\newlength{\restemin}

 
\protected\def\(#1\){%
  \setlength{\longreste}{\the\linegoal}%
  \ifthenelse{\longreste<0}%
      {\addtolength{\longreste}{\columnwidth+\columnsep}}%
      {}%
  \setlength{\eqmax}{0.65\linewidth}%
  \setlength{\eqmin}{0.2\linewidth}%
  \setlength{\restemin}{0.2\linewidth}% 
  \settowidth{\longequa}{${#1}$}%
  \ifthenelse{\longequa>\eqmax}%
     {\noindent\begin{center}$#1$\ignorespacesafterend\end{center}}%
     {\ifthenelse{\longequa<\eqmin}
        {$#1$\ \ignorespaces}
        {\ifthenelse{\longreste<\restemin}
           {\noindent\begin{center}$#1$\ignorespacesafterend\end{center}}
           {\ifthenelse{\longreste>\linewidth}%
                 {\noindent\begin{center}$#1$\ignorespacesafterend\end{center}}%
              {$#1$\ \ignorespaces}}}}


\protected\def\<#1\>{%
  \setlength{\longreste}{\the\linegoal}%
  \ifthenelse{\longreste<0}%
      {\addtolength{\longreste}{\columnwidth+\columnsep}}%
      {}%
  \setlength{\eqmax}{0.65\linewidth}%
  \setlength{\eqmin}{0.2\linewidth}%
  \setlength{\restemin}{0.2\linewidth}% 
  \settowidth{\longequa}{$\displaystyle #1$}%
  \ifthenelse{\longequa>\eqmax}%
     {\noindent\begin{equation*}#1\ignorespacesafterend\end{equation*}}%
     {\ifthenelse{\longequa<\eqmin}
        {$\displaystyle #1$\ \ignorespaces}
        {\ifthenelse{\longreste<\restemin}
           {\noindent\begin{equation*}#1\ignorespacesafterend\end{equation*}}
           {\ifthenelse{\longreste>\linewidth}%
                 {\noindent\begin{equation*}#1\ignorespacesafterend\end{equation*}}%
              {$\displaystyle #1$\ \ignorespaces}}}}



\oddsidemargin=-1.5cm%
\evensidemargin=-1.5cm%%%

\textwidth=18cm
\parindent=0cm
\begin{document}

\section{Le texte en mode dollar}
\begin{multicols}{2}
\begin{enumerate}
\item
Soit $a$ et $b$ deux entiers relatifs. Soit $(u_n)_{n\in\mathbb{N}}$ la suite réelle définie par $u_0 = a,\ u_1 = b$ et:
$\forall n \in \mathbb{N},\quad u_{n+2} = 3u^2_{n+1} - 5u_n + 2$

Démontrer que : $\forall n \in \mathbb{N},\quad u_n \in \mathbb{Z}$
\item 
Soit la suite $(u_{n})_{n \in \mathbb{N} ^{*}} $ définie par
$ u_{n}= \int_{1}^{1+ \frac{1}{n}}\sqrt {n^{2}+x^{n}}\,{\rm d}x  $

En encadrant $u_{n}$, montrer que la suite $(u_{n})_{n \in
\mathbb{N} ^{*}} $ est convergente puis déterminer $\lim\limits_{n \to + \infty }u_{n} $
\item
Etudier la nature de la suite $(u_n)$ définie sur $\mathbb{N}^*$ par
$u_n=\frac{1}{n^2}\sum\limits_{k=1}^ n \sin (k)$
\item
Etudier la convergence éventuelle de la suite : $ u_{n}= \frac{1}{n} \cos \left (\frac{n \pi }{2}\right)  $
\item
Soit $f$ une fonction de classe $\mathcal{C}^1$ sur un intervalle I telle que:
\begin{itemize}
\item  $I$ est stable par $f$; c'est à dire: $f(I)\subset I$.
\item  $\exists k\in]0;1[$ tel que $\forall x\in I,\ \big|f'(x)\big|\leq k.$
\item  $f$ admet un unique point fixe $\alpha$ dans $I.$
\end{itemize}
Soit la suite $(u_n)$ définie sur $\mathbb{N}$ par $u_0=x\in I \text{ et } u_{n+1}=f(u_n)$
\begin{enumerate}
\item
Montrer que: $\forall n\in,\ u_n \in I$
\item
Montrer que: $\forall x\in I, \big|f(x)-\alpha\big|\leq k|x-\alpha|$ puis que:
$|u_{n+1}-\alpha| \leq k |u_n-\alpha|$
\item En déduire la convergence de la suite $(u_n).$
\end{enumerate}
\end{enumerate}
\end{multicols}


\section{Le même texte en mode parenthèses}
\begin{multicols}{2}
\begin{enumerate}
\item
Soit \(a\) et \(b\) deux entiers relatifs. Soit \((u_n)_{n\in\mathbb{N}}\) la suite réelle définie par \(u_0 = a,\ u_1 = b\) et:
\(\forall n \in \mathbb{N},\quad u_{n+2} = 3u^2_{n+1} - 5u_n + 2\)

Démontrer que : \(\forall n \in \mathbb{N},\quad u_n \in \mathbb{Z}\)
\item 
Soit la suite \((u_{n})_{n \in \mathbb{N} ^{*}} \) définie par
\( u_{n}= \int_{1}^{1+ \frac{1}{n}}\sqrt {n^{2}+x^{n}}\,{\rm d}x  \)

En encadrant \(u_{n}\), montrer que la suite \((u_{n})_{n \in
\mathbb{N} ^{*}} \) est convergente puis déterminer \(\lim\limits_{n \to + \infty }u_{n} \)
\item
Etudier la nature de la suite \((u_n)\) définie sur \(\mathbb{N}^*\) par
\(u_n=\frac{1}{n^2}\sum\limits_{k=1}^ n \sin (k)\)
\item
Etudier la convergence éventuelle de la suite : \( u_{n}= \frac{1}{n} \cos \left (\frac{n \pi }{2}\right)  \)
\item
Soit \(f\) une fonction de classe \(\mathcal{C}^1\) sur un intervalle I telle que:
\begin{itemize}
\item  \(I\) est stable par \(f\); c'est à dire: \(f(I)\subset I\).
\item  \(\exists k\in]0;1[\) tel que \(\forall x\in I,\ \big|f'(x)\big|\leq k.\)
\item  \(f\) admet un unique point fixe \(\alpha\) dans \(I.\)
\end{itemize}
Soit la suite \((u_n)\) définie sur \(\mathbb{N}\) par \(u_0=x\in I \text{ et } u_{n+1}=f(u_n)\)
\begin{enumerate}
\item
Montrer que: \(\forall n\in,\ u_n \in I\)
\item
Montrer que: \(\forall x\in I, \big|f(x)-\alpha\big|\leq k|x-\alpha|\) puis que:
\(|u_{n+1}-\alpha| \leq k |u_n-\alpha|\)
\item En déduire la convergence de la suite \((u_n).\)
\end{enumerate}
\end{enumerate}
\end{multicols}

\pagebreak
\section{Le même texte en mode crochets}
\begin{multicols}{2}
\begin{enumerate}
\item
Soit \<a\> et \<b\> deux entiers relatifs. Soit \<(u_n)_{n\in\mathbb{N}}\> la suite réelle définie par \<u_0 = a,\ u_1 = b\> et:
\<\forall n \in \mathbb{N},\quad u_{n+2} = 3u^2_{n+1} - 5u_n + 2\>

Démontrer que : \<\forall n \in \mathbb{N},\quad u_n \in \mathbb{Z}\>
\item 
Soit la suite \<(u_{n})_{n \in \mathbb{N} ^{*}} \> définie par
\< u_{n}= \int_{1}^{1+ \frac{1}{n}}\sqrt {n^{2}+x^{n}}\,{\rm d}x  \>%

En encadrant \<u_{n}\>, montrer que la suite \<(u_{n})_{n \in
\mathbb{N} ^{*}} \> est convergente puis déterminer \<\lim\limits_{n \to + \infty }u_{n} \>
\item
Etudier la nature de la suite \<(u_n)\> définie sur \<\mathbb{N}^*\> par
\<u_n=\frac{1}{n^2}\sum\limits_{k=1}^ n \sin (k)\>
\item
Etudier la convergence éventuelle de la suite : \< u_{n}= \frac{1}{n} \cos \left (\frac{n \pi }{2}\right)  \>
\item
Soit \<f\> une fonction de classe \<\mathcal{C}^1\> sur un intervalle I telle que:
\begin{itemize}
\item  \<I\> est stable par \<f\>; c'est à dire: \<f(I)\subset I\>.
\item  \<\exists k\in]0;1[\> tel que \<\forall x\in I,\ \big|f'(x)\big|\leq k.\>
\item  \<f\> admet un unique point fixe \<\alpha\> dans \<I.\>
\end{itemize}
Soit la suite \<(u_n)\> définie sur \<\mathbb{N}\> par \<u_0=x\in I \text{ et } u_{n+1}=f(u_n)\>
\begin{enumerate}
\item
Montrer que: \<\forall n\in,\ u_n \in I\>
\item
Montrer que: \<\forall x\in I, \big|f(x)-\alpha\big|\leq k|x-\alpha|\> puis que:
\<|u_{n+1}-\alpha| \leq k |u_n-\alpha|\>
\item En déduire la convergence de la suite \<(u_n).\>
\end{enumerate}
\end{enumerate}
\end{multicols}

\end{document}
GRSG
Méga-utilisateur
 
Messages: 290
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: Bing [Bot] et 4 invités