Quelques remarques sur le code :
- il est inutile d'écrire "blabla~:~\[...\]", "blabla~:\[...\]" suffit (du point de vue de la présentation du code, c'est même mieux de faire un saut de ligne entre le : et le \[)
- au lieu d'utiliser des \\ et des \noindent partout, il vaut mieux faire un \parindent=0pt et ensuite taper le texte normalement (c'est-à-dire en laissant une ligne blanche lorsqu'on veut changer de paragraphes)
- les \renewcommand{\arraycolsep}{1.4pt} sont déjà dans \syst, donc inutile de les répéter à chaque début de multicols
- il vaut mieux rajouter un \nobreak après le \par à la fin de \ex pour qu'il n'y ait pas une éventuelle coupure de page intempestive juste après \ex
- je définirai bien une commande \euros{xxx} qui prend en argument un nombre et affiche la somme en euros correspondante :
J'ai supprimé l'espace après le symbole euro qui, me semble-t-il, n'est pas utile et j'ai utilisé \texteuro à la place de \EUR (a priori, \texteuro a été conçu pour s'harmoniser un peu mieux que le logo officiel de l'euro, mais à toi de voir ce que tu préfère).
Concernant l'espacement autour de \ex, effectivement, tu peux probablement rajouter un petit \vspace{3pt} après, mais surtout rajouter un \vskip 3pt plus 9pt avant, cela fera que TeX de mettra toujours au moins 3pt avant et mettre au plus 3pt+9pt=12pt si besoin est. Ça rajoute un peu d'extensibilité à cet endroit. La commande ressemblera donc à ça (j'ai supprimé le tableau qui est inutile, rajouté "inner sep = 5pt" et changé la couleur en 0.9white pour qu'elle soit cohérente avec celle du titre, mais peut-être as-tu fait le contraire en changeant la couleur du titre en LightGrey).
Code : Tout sélectionner
\newcounter{exercice}
\newcommand{\ex}{\par\vskip 3pt plus 9pt\stepcounter{exercice}%
\begin{tikzpicture}\node[rectangle,rounded corners=2pt,draw,fill=0.9white,drop shadow={fill=gray,opacity=1},inner sep=5pt]
{\bfseries Exercice~\arabic{exercice}};
\end{tikzpicture}\par\nobreak\vspace{3pt}}
Concernant la macro \syst, il vaut mieux tout mettre entre un \begingroup et un \endgroup afin que les redéfinitions soient locales (afin d'éviter tout effet de bord indésirable). J'ai aussi changé le ccc en un ccr pour l'alignement des nombres du membre de droite (à voir) :
Code : Tout sélectionner
\newcommand{\syst}[4]{\begingroup\renewcommand{\arraystretch}{1.6}%
\renewcommand{\arraycolsep}{1.4pt}%
\[\left\{
\begin{array}{ccr}
#1 & = & #2\\
#3 & = & #4\\
\end{array}
\right.
\]\endgroup}
Avec tout ça, voici le résultat :
[attachment=0]dl_math.png[/attachment]
Pour obtenir ceci, voici le contenu de perso.sty (probablement différent du tien) :
Code : Tout sélectionner
\RequirePackage[latin1]{inputenc}
\RequirePackage[frenchb]{babel}
\RequirePackage[autolanguage]{numprint}
\RequirePackage[T1]{fontenc}
\RequirePackage{lmodern}
\RequirePackage{textcomp}
\RequirePackage{xcolor}
\RequirePackage{tikz}
\usetikzlibrary{shadows}
\RequirePackage{tabularx}
\RequirePackage{multicol}
\RequirePackage{marvosym}
\RequirePackage{amsmath}
\RequirePackage{nccmath}
\RequirePackage{geometry}
\geometry{a4paper}
\definecolor{0.9white}{rgb}{0.9,0.9,0.9}
\def\classe#1{\gdef\@classe{#1}}
\def\numerodevoir#1{\gdef\@numerodevoir{#1}}
\def\typededevoir#1{\gdef\@typededevoir{#1}}
\def\@maketitle{\noindent\begin{tikzpicture}
\node[rectangle,rounded corners=8pt,draw,fill=0.9white,drop shadow={fill=gray,opacity=1}] {\begin{tabularx}{\textwidth}{lXr}
{\bfseries \@classe}& & {\bfseries \`{A} rendre le \@date}\tabularnewline
\noalign{\vspace*{0.25em}}\multicolumn{3}{c} {\large\bfseries \@typededevoir\ de Mathématiques \no \@numerodevoir \vspace*{0.25em}}
\end{tabularx}};
\end{tikzpicture}\vspace*{0.5em}}
\renewcommand\maketitle{\par
\begingroup
\renewcommand\thefootnote{\@fnsymbol\c@footnote}%
\def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}%
\long\def\@makefntext##1{\parindent 1em\noindent
\hb@xt@1.8em{%
\hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
\if@twocolumn
\ifnum \col@number=\@ne
\@maketitle
\else
\twocolumn[\@maketitle]%
\fi
\else
\newpage
\global\@topnum\z@ % Prevents figures from going at top of page.
\@maketitle
\fi
\thispagestyle{empty}\@thanks
\endgroup
\setcounter{footnote}{0}%
\global\let\thanks\relax
\global\let\maketitle\relax
\global\let\@maketitle\relax
\global\let\@thanks\@empty
\global\let\@author\@empty
\global\let\@date\@empty
\global\let\@title\@empty
\global\let\title\relax
\global\let\author\relax
\global\let\date\relax
\global\let\and\relax
}
\newcommand{\syst}[4]{\begingroup\renewcommand{\arraystretch}{1.6}%
\renewcommand{\arraycolsep}{1.4pt}%
\[\left\{
\begin{array}{ccr}
#1 & = & #2\\
#3 & = & #4\\
\end{array}
\right.
\]\endgroup}
\newcounter{exercice}
\newcommand{\ex}{\par\vskip 3pt plus 9pt\stepcounter{exercice}%
\begin{tikzpicture}\node[rectangle,rounded corners=2pt,draw,fill=0.9white,drop shadow={fill=gray,opacity=1},inner sep=5pt]
{\bfseries Exercice~\arabic{exercice}};
\end{tikzpicture}\par\nobreak\vspace{3pt}}
\parindent=0pt
\pagestyle{empty}
\newcommand{\euros}[1]{\nombre{#1}\text{\,\texteuro}}
et le contenu du fichier principal
Code : Tout sélectionner
\documentclass[landscape,svgnames,a4paper,10pt]{article}
\usepackage{perso}
\begin{document}
\typededevoir{Corrigé du dl}
\numerodevoir{2}
\classe{Seconde~2}
\date{le 6 janvier 2009}
\maketitle
\setlength{\columnseprule}{0.4pt}
\begin{multicols}{2}
\ex
Soit $x$ le prix d'un repas, et $y$ celui de la chambre.
Le prix de la pension complète est de \euros{690} par jour, donc on a~:
\[2x+y=690.\]
Le montant du séjour sans les frais divers est égal à~:
\[\nombre{13650}-\nombre{1500}=\nombre{12150}.\]
On en déduit alors l'équation suivante~:
\begin{align*}
14(2x+y)+4(2x+0,8y)&=\nombre{12150}\\
36x+17,2y & =\nombre{12150}.
\end{align*}
Les systèmes suivants sont équivalents~:
\setlength{\columnseprule}{0pt}
\begin{multicols*}{2}
\syst{2x+y}{690}{36x+17,2y}{\nombre{12150}}
\syst{2x+y}{690}{18x+8,6y}{\nombre{6075}}
\syst{17,2x+8,6y}{\nombre{5934}}{18x+8,6y}{\nombre{6075}}
\syst{0,8x}{141}{2x+y}{690}
\syst{x}{\nombre{176,25}}{y}{\nombre{337,5}}
\end{multicols*}
Le prix d'une chambre est donc de \euros{337,5} et celui d'un repas de \euros{176,25}.
\ex
Soit $x$ le montant placé en actions, et $y$ celui placé en obligations.
Les systèmes suivants sont équivalents~:
\setlength{\columnseprule}{0pt}
\begin{multicols*}{2}
\syst{x+y}{\nombre{50000}}{\mfrac{8}{100}x+\mfrac{11}{100}y}{\nombre{4500}}
\syst{x+y}{\nombre{50000}}{8x+11y}{\nombre{450000}}
\syst{11x+11y}{\nombre{550000}}{8x+11y}{\nombre{450000}}
\syst{3x}{\nombre{100000}}{x+y}{\nombre{50000}}
\syst{x}{\mfrac{\nombre{100000}}{3}}{y}{\mfrac{\nombre{50000}}{3}}
\end{multicols*}
J'avais placé environ \euros{33333,33} en actions, et environ \euros{16666,67} en obligations.
\end{multicols}
\end{document}