Nouvel environnement basé sur align*

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.

Nouvel environnement basé sur align*

Messagepar MB » Lundi 30 Mars 2009, 22:12

Bonjour, je souhaite définir un nouvel environnement basé sur align* qui aurait la structure suivante :

Code: Tout sélectionner
\begin{minipage}[c]{#1\linewidth}
\begin{align*} \noalign{\vskip-\abovedisplayskip\vskip\abovedisplayshortskip}
[...]
\end{align*}
\end{minipage}


Le problème c'est que align* n'aime pas trop se retrouver dans des \newenvironment. J'aimerais bien savoir comment on fait ça (pg ?).

L'objectif est cependant d'intégrer ça dans une structure tabular afin de pouvoir écrire des équations côte à côte et séparées par un trait vertical. Pour l'instant j'utilise la structure suivante (qui ne marche pas trop mal) :

Code: Tout sélectionner
\documentclass[a4paper,10pt]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[frenchb]{babel}
\usepackage{mathtools}
%
\newcommand{\saveeqn}[3]{\newsavebox{#1}
\savebox{#1}[#2\textwidth][c]{\begin{minipage}[c]{#2\textwidth}
\begin{align*} \noalign{\vskip-\abovedisplayskip\vskip\abovedisplayshortskip} #3 \end{align*}
\end{minipage}}}
%
\begin{document}

\saveeqn{\eqna}{0.40}{%
A & = B \\
A & = B \\
A & = B}

\begin{center}
\begin{tabular}{c|c}
\usebox{\eqna} & \usebox{\eqna} \\
\end{tabular}
\end{center}

\begin{center}
\begin{tabular}{c|c}
\usebox{\eqna} & \usebox{\eqna} \\
\end{tabular}
\end{center}

\end{document}
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6782
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: Nouvel environnement basé sur align*

Messagepar pg » Lundi 30 Mars 2009, 22:42

align* est basé sur \collect@body pour lire tout le contenu de l'environnement et ensuite le fournir à une commande qui fera tout le travail. À cause de cela, on ne peut pas utiliser \begin{minipage} et \end{minipage}. Il est possible de contourner ce problème en utilisant à la place directement les commandes qui définissent l'environnement, à savoir \minipage et \endminipage.

On se base sur la définition de align* dans amsmath.sty, qui est :

Code: Tout sélectionner
\newenvironment{align*}{%
  \start@align\@ne\st@rredtrue\m@ne
}{%
  \endalign
}


Cela donne donc :

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

\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[frenchb]{babel}
\usepackage{mathtools}

\makeatletter
\newenvironment{minialign}[1]{%
  \minipage[c]{#1\linewidth}%
  \start@align\@ne\st@rredtrue\m@ne
  \noalign{\vskip-\abovedisplayskip\vskip\abovedisplayshortskip}
 }
 {\endalign
  \endminipage
 }
\makeatother

\begin{document}

\begin{minialign}{0.40}
A & = B \\
A & = B \\
A & = B
\end{minialign}

\begin{minipage}{0.4\linewidth}
\begin{align*}
A & = B \\
A & = B \\
A & = B
\end{align*}
\end{minipage}

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

Re: Nouvel environnement basé sur align*

Messagepar MB » Lundi 30 Mars 2009, 22:50

Parfait pg, une fois de plus merci ! :mrgreen:
C'était bien le minipage qui posait des problèmes, en plus du align.
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6782
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
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: Google [Bot], Proximic [Spider] et 24 invités