Retour

Source de systeme.tex

Fichier TeX
%##########################################################################
%######################## MACROS POUR LES SYSTÈMES ########################
%########################    v 0.1 du 28/12/2007   ########################
%##########################################################################
%
% Auteur : Christian TELLECHEA
% Site   : www.bricamath.net
%
\makeatletter
\newcommand*\SiSousChaineDansChaine[2]{% est ce que la sous chaine #1 se trouve dans #2 ?
	\def\la@chaine##1#1##2\@nil{%
		\def\la@fin{##2}% on isole ce qu'il y a après la sous chaine
		\ifx\la@fin\@empty%qu'y a t-il apès la sous chaine ?
			\expandafter\@secondoftwo% rien -> on exécute #4
		\else
			\expandafter\@firstoftwo% quelque chose -> on exécute #3
		\fi
 	}%
 	\expandafter\la@chaine#2#1\@nil
}
\newcommand*{\MembreGauche}[1]{%renvoie le membre gauche : ce qui est à gauche de =
	\def\a@testergauche##1=##2\@nil{##1}
	\expandafter\a@testergauche#1\@nil
}
\newcommand*{\MembreDroite}[1]{%renvoie le membre gauche : ce qui est à droite de = et avant *
	\SiSousChaineDansChaine{*}{#1}{\def\a@testerdroite##1=##2*##3\@nil{##2}}{\def\a@testerdroite##1=##2\@nil{##2}}
	\expandafter\a@testerdroite#1\@nil
}
\newcommand*{\LeCoeff}[1]{%renvoie le coeff : ce qui est à droite de *
	\def\a@testercoeff##1*##2\@nil{##2}%
	\expandafter\a@testercoeff#1\@nil
}
\makeatother
% ___________________________________________________
%|                                                   |
%|    Écrit un système 2x2 avec les coefficients     |
%|       de la combinaison linéaire si besoin        |
%|___________________________________________________|
\newcommand*{\Systeme}[3][0pt]{%
% #1 : espacement entre les 2 équations (0pt par défaut)
% #2 et #3 : les 2 équations avec éventuellement *coeff à la fin (utiliser \frac pour un coeff fractionnaire)
	\SiSousChaineDansChaine{=}{#2}{%
		\SiSousChaineDansChaine{=}{#3}{%on teste les signes =
			\ensuremath{
				\left\lbrace
				\begin{aligned}
					\MembreGauche{#2}&=\MembreDroite{#2}\SiSousChaineDansChaine{*}{#2}{&\scriptstyle\times&\scriptstyle\LeCoeff{#2}}{}\\[#1]
					\MembreGauche{#3}&=\MembreDroite{#3}\SiSousChaineDansChaine{*}{#3}{&\scriptstyle\times&\scriptstyle\LeCoeff{#3}}{}
				\end{aligned}
				\right.
				}
			}
			{Pas de signe =}
		}
		{Pas de signe =}
}