% \iffalse meta-comment % Time-stamp: <2009-06-22T14:58:16 (cest) [yvon sur hypatie]> % Copyright (C) 2009 by Yvon Henel % dit �le TeXnicien de surface� <le.texnicien.de.surface@wanadoo.fr> % ------------------------------------------------------------------ % % This file may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.2 % of this license or (at your option) any later version. % The latest version of this license is in: % % http://www.latex-project.org/lppl.txt % % and version 1.2 or later is part of all distributions of LaTeX % version 1999/12/01 or later. % \fi % % \iffalse %<package|suite|taupe>\NeedsTeXFormat{LaTeX2e}[1999/12/01] %<package>\def\PackageName{tdsfrmath} %<package|suite|taupe>\def\fileversion{v1.3} %<package|suite|taupe>\def\filedate{2009/06/22} %<package>\def\fileinfo{macros pour les maths %<package> par Le TeXnicien de surface} %<package>\ProvidesPackage{tdsfrmath} %<package> [\filedate\space\fileversion\space\fileinfo] %<*driver> \documentclass[a4paper]{ltxdoc} \usepackage[latin9]{inputenc} \usepackage[T1]{fontenc} \usepackage{array} \usepackage{xspace} \usepackage{url} \usepackage{fixltx2e} \usepackage{float} \usepackage[tame]{paresse} \IfFileExists{lmodern.sty}{\usepackage{lmodern}}{} \usepackage[np]{numprint} \usepackage[taupe,suite]{tdsfrmath}[2008/08/11] \usepackage[english,frenchb]{babel} \usepackage[pdfpagelabels, colorlinks=true, linkcolor=blue, urlcolor=blue, citecolor=blue]{hyperref} % commentez la ligne suivante pour avoir un document avec le code % \OnlyDescription \EnableCrossrefs \CodelineIndex \RecordChanges \makeatletter %%% quelques red�finition de commande de la classe ltxdoc.cls ou de %%% l'extension doc.sty pour une documentation en fran�ais. \GlossaryPrologue{% \section*{{Changements}}% \markboth{{Changements}}{{Changements}}} \IndexPrologue{\section*{Index}\markboth{Index}{Index}% Les nombres en italique ou en bleu renvoient � la page o� l'entr�e est d�crite; les nombres soulign�s renvoient � la ligne de code de la d�finition; les nombres en caract�res romains renvoient � la ligne de code o� l'entr�e est utilis�e.} \renewcommand{\SpecialMainEnvIndex}[1]{% \@bsphack\special@index{% #1\actualchar {\string\ttfamily\space#1} (environnement)% \encapchar main}% \special@index{environnements:\levelchar{% \string\ttfamily\space#1}\encapchar main}\@esphack} \def\generalname{G�n�ral} %%% fin de la francisation \newcommand\DescribeOptionCle[1]{\@bsphack \marginpar{\raggedleft \OptionclePresent{#1}}\index{#1 (\textsc{cl�})}\@esphack} \newcommand\DescribeOptionVal[2]{\@bsphack \marginpar{\raggedleft \OptionvalPresent{#1}}\index{#1 [#2]}\@esphack} \newcommand\IndexVal[2]{\index{#1 [#2]}} \makeatother \newcommand\mlabel[1]{\phantomsection\label{macro#1}} \newcommand\clabel[1]{\phantomsection\label{cle#1}} \newcommand\Page[1]{page~\pageref{macro#1}} \newcommand\Voir[1]{cf.~page~\pageref{macro#1}} \newlength\xttlarge \newcommand\Alinea[1][12]{\hspace*{#1\xttlarge}} \newcommand\DonneMath{\framebox{\footnotesize\grastab{M}}\xspace} \newcommand\CleVal[2]{\framebox{\footnotesize\texttt{[#1=#2]}}} \newcommand{\CAD}{c.-�-d.\xspace} \newcommand{\PX}{p.~ex.\xspace} \newcommand{\TO}{\textemdash~\ignorespaces} \newcommand{\TF}{\unskip~\textemdash\xspace} \newcommand{\BOP}{\discretionary{}{}{}} \newcommand{\Pkg}[1]{\texttt{#1.sty}} \newcommand{\fctt}{\texttt{fr.comp.text.tex}\xspace} \newcommand{\Sourire}{\texttt{;-)}\xspace} \newcommand\OptionclePresent[1]{\texttt{\textbf{#1}}} \newcommand\Optioncle[1]{\OptionclePresent{#1}} \newcommand\OptionvalPresent[1]{\texttt{\textit{#1}}} \newcommand\Optionval[2]{\OptionvalPresent{#1}\IndexVal{#1}{#2}} \newcommand\SignalNouveau[1]{% \marginpar{\raggedleft\framebox{\textbf{N v#1}}\hspace*{2em}}} \newcommand\Nouveau[3][***]{% % \SignalNouveau{#3}% \emph{#2}\footnote{Nouveaut� de la version #3% \ifthenelse{\equal{#1}{***}}{.}{, #1}}} %%% fin de la personalisation \begin{document} \settowidth{\xttlarge}{\texttt{x}} \DocInput{tdsfrmath.dtx} \end{document} %</driver> % \fi % % \CheckSum{1100} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z % Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z % Digits \0\1\2\3\4\5\6\7\8\9 % Exclamation \! Double quote \" Hash (number) \# % Dollar \$ Percent \% Ampersand \& % Acute accent \' Left paren \( Right paren \) % Asterisk \* Plus \+ Comma \, % Minus \- Point \. Solidus \/ % Colon \: Semicolon \; Less than \< % Equals \= Greater than \> Question mark \? % Commercial at \@ Left bracket \[ Backslash \\ % Right bracket \] Circumflex \^ Underscore \_ % Grave accent \` Left brace \{ Vertical bar \| % Right brace \} Tilde \~} % % \GetFileInfo{tdsfrmath.sty} % % \changes{v1}{2008/06/01}{1\iere version publique.} % \changes{v1.1}{2008/08/11}{Correction de l'avertissement �ronn� en cas % de chargement d'une police pour le gras de tableau.} % \changes{v1.1}{2008/08/11}{Correction de l'oubli de la cl� CharPoGdT % dans l'exemple de chargement de dsfont} % \changes{v1.1}{2008/08/11}{Changement du m�canisme de d�finition du % gras de tableau pour permettre l'utilisation d'un gras \og % normal\fg.} % \changes{v1.2}{2008/09/17}{Cr�ation de la cl� % \texttt{avecmathdesign} pour permettre l'utilisation de mathdesign.} % % \DoNotIndex{\newcommand,\newenvironment,\ae,\oe,\DeclareOption,^^A % \alpha, \beta, \gamma, \delta, \epsilon,^^A % \varepsilon, \zeta, \eta, \theta, \vartheta, \iota, \kappa,^^A % \lambda, \mu, \nu, \xi, \pi, \varpi, \rho, \varrho, \sigma,^^A % \varsigma, \tau, \upsilon, \phi, \varphi, \chi, \psi, \omega,^^A % \upalpha, \upbeta, \upgamma, \updelta, \upepsilon,^^A % \upvarepsilon, \upzeta, \upeta, \uptheta, \upvartheta, \upiota, \upkappa,^^A % \uplambda, \upmu, \upnu, \upxi, \uppi, \upvarpi, \uprho, \upvarrho, \upsigma,^^A % \upvarsigma, \uptau, \upupsilon, \upphi, \upvarphi, \upchi, \uppsi, \upomega,^^A % \Delta, \Gamma, \Theta, \Lambda, \Xi, \Pi, \Phi, \Psi \Sigma,^^A % \Upsilon, \ExecuteOptions, \providecommand, \newif,^^A % \fi, \if, \or, \ifnum, \ifinner, \ifcase, \def, \expandafter,^^A % \RequirePackage, \@ctrerr, \ProcessOptions,\relax,^^A % \AtEndOfPackage, \AtBeginDocument,\,, \{, \}, \`, \',^^A % \DeclareMathOperator, \InputIfFileExists,^^A % \@ifstar, \@gobble, \@ifdefinable, \@nil,^^A % \ifthenelse, \equal, \value,^^A % \frac, \geqslant, \leqslant, \dfrac,\ast, \imath, \jmath, \binom,^^A % \displaystyle, \ifx, \infty, \int, \langle, \left, \let, \llbracket,^^A % \longmapsto, \longrightarrow, \lVert, \lvert, \MakeUppercase, \mathbb,^^A % \mathscr, \MessageBreak, \mspace, \newtoks, \overrightarrow,^^A % \PackageError, \PackageInfo, \PackageWarningNoLine, \partial, \rangle,^^A % \renewcommand, \right, \rrbracket, \rVert, \rvert, \string, \the,^^A % \varnothing, \xrightarrow, \xspace,^^A % \text, \textup \csname, \endcsname, \value, \else, \Omega,^^A % \ensuremath, \newcommandx, \@ifundefined, \edef, \long,^^A % \DeclareRobustCommand,\IfFileExists, \ExecuteOptionsX,^^A % \define@boolkey, \define@choicekey, \define@cmdkey,^^A % \count, \count@, \mathcal, \newboolean, \newmcodes@,^^A % \newmuskip, \ProcessOptionsX, \qopname, \setboolean,^^A % \boolean, \textup, \WithSuffix, \ProvidesFile^^A % } % % \title{L'extension \textsf{tdsfrmath}\thanks{Ce document correspond % au fichier \textsf{tdsfrmath}~\fileversion, du \filedate.}} % \author{Le \TeX nicien de surface\thanks{% % \texttt{le.texnicien.de.surface@wanadoo.fr}}} % % \maketitle % % \begin{abstract} % Cette extension veut fournir des macros � \og l'utilisateur % final\fg pour cr�er des documents math�matiques ayant un aspect % fran�ais. % \end{abstract} % \begin{otherlanguage}{english} % \begin{abstract} % This package provides a bunch of macros to help the ``final % user'' to produce maths texts with a definite french look. For % there is a marked aspect of localisation, I don't provide any % English documentation. % \end{abstract} % \end{otherlanguage} % % \tableofcontents{} % \newpage %\section{Introduction} %\label{secIntro} % Le but de cette extension est de fournir des macros pr�tes � l'usage % � des professeurs de math�matiques des coll�ges, lyc�es \TO et plus % si affinit�s\TF qui voudraient bien utiliser \LaTeX\ sans trop % mettre le nez dans la programmation ni devoir retenir des choses % aussi barbares que \cs{overrightarrow} pour faire un vecteur % \Sourire % % De plus elle tente de donner aux math�matiques un aspect vraiment % plus fran�ais. On aura par exemple \og \(\D x\)\fg au lieu de \og % \(dx\)\fg dans les int�grales et les d�riv�es. % % \Pkg{tdsfrmath} s'appuie lourdement sur \texttt{amsmath} qu'il % requiert. On n'aura donc pas besoin de le charger avec un % \cs{usepackage} si l'on utilise \texttt{tdsfrmath}. % % \textbf{Remarque}: depuis la version~1.2, \texttt{amssymb} est % utilis� si l'option % \Optioncle{avecmathde}\BOP\OptionclePresent{sign} est fausse comme % c'est le cas par d�faut. % Si on utilise \Pkg{mathdesign}, on donnera la valeur % \OptionvalPresent{true} � \Optioncle{avecmathdesign} et, dans ce % cas, \texttt{amssymb} ne sera pas charg�. Voir la % section~\ref{nouveau12}, page~\pageref{nouveau12}. % % \medbreak % % � l'origine de cette extension, je trouve un vieux fichier % \texttt{.sty} que je m'�tais concoct�, par petits bouts, lorsque je % s�vissais encore dans le secondaire. Ayant appris un peu de \LaTeX\ % depuis, j'ai pens� � en am�liorer les macros. J'ai aussi consacr� % quelques heures � la francisation de l'aspect, chose � laquelle je % n'avais accord� que peu d'attention jusqu'ici car, je dois l'avouer, % je m'�tais beaucoup servi de \LaTeX\ pour produire des textes % math�matiques en anglais. % % En tout cas, pour en rassurer certains qui pourraient consid�rer % qu'ils ne pourraient jamais arriver � un tel niveau (\emph{sic}) % d'�criture de macros: ceci est le r�sultat de nombreuses heures % �tal�es sur plus de 15~ans. Je dois par ailleurs remercier % publiquement tous ceux qui sur \fctt ont r�pondu � mes questions, % pas toujours tr�s profondes d'ailleurs, et m'ont apport� une aide % pr�cieuse jusqu'aujourd'hui m�me dans l'utilisation de notre outil % pr�f�r� de cr�ation de document. % % \section{Utilisation} % % Pour la premi�re fois, plut�t que des options, j'utilise le syst�me % de cl�s et valeurs que permet \Pkg{xkeyval}. De m�me, j'utilise % \Pkg{xargs} qui permet la d�finition de commandes admettant % plusieurs arguments par d�faut. % % Dans le cours du texte une cl� est �crite \OptionclePresent{cl�} et % une valeur \OptionvalPresent{val}. Les cl�s dont les noms comportent % des majuscules sont bool�ennes \CAD que leur valeur est soit % \OptionvalPresent{true} \TO vrai\TF soit \OptionvalPresent{false} % \TO faux. Les cl�s marqu�es \og choix\fg dans la % table~\ref{TABcles}, page~\pageref{TABcles}, permettent de choisir % entre quelques valeurs pr�d�finies. D'autres enfin attendent un % texte avec plus ou moins de restrictions suivant ce � quoi servira % le texte. % % J'ai amplement (\string?) comment� la partie contenant le code, et % on s'y reportera pour les d�tails d'imp�mentation, mais je commence % ici par pr�senter toutes les options et toutes les macros de cette % extension. % % \subsection{� propos des cl�s bool�ennes} % % Nouveaut� de la version 1.3. % % Les cl�s bool�ennes, comme \Optioncle{taupe} p.~ex., sont des cl�s % qui n'admettent pour valeur que |true| ou |false|. L'extension % \Pkg{xkeyval} me permet de leur donner une valeur \emph{par d�faut} % et une valeur \emph{d'origine}: la valeur d'origine est celle que % poss�de la cl� lorsque l'on charge \Pkg{tdsfrmath} sans aucune % option avec |\usepackage|\BOP|{tdsfrmath}|. La valeur par d�faut est % celle que l'on obtient en mentionnant la cl� sans lui donner de % valeur comme avec |\usepackage|\BOP|[taupe]|\BOP|{tdsfrmath}| qui % revient au m�me que |\usepackage|\BOP|[taupe| |=| % |true]|\BOP|{tdsfrmath}| car la valeur par d�faut de la cl� % \Optioncle{taupe} est \OptionvalPresent{true}. % % \subsection{Chargement optionnel} % % \Pkg{tdsfrmath} permet de charger du code de mani�re optionnelle. Ce % code est plac� dans des fichiers d'extension \texttt{.sto}, � % savoir: \texttt{taupe.sto} contenant des macros destin�e plut�t � % une utilisation en classe pr�pa; \texttt{suite.sto} dont les macros % ne traitent que des suites. % % \DescribeOptionCle{taupe}\clabel{taupe} % � chacun de ces fichiers correspond une cl� bool�enne, de m�me nom, % dont la valeur d'origine est \OptionvalPresent{false} ce qui % \DescribeOptionCle{suite}\clabel{suite} % entraine que ces fichiers ne sont pas charg�s. % % Si on veut utiliser les macros d�finies dans \texttt{taupe.sto}, on % appelera \texttt{tdsfrmath} par: % |\usepackage[taupe=true]{tdsfrmath}| ou encore avec % |\usepackage|\BOP|[taupe]|\BOP|{tdsfrmath}| depuis la version % 1.3\SignalNouveau{1.3} puisque la valeur par d�faut de % \Optioncle{taupe} est \OptionvalPresent{true}. % % \bigbreak % % Le fichier \texttt{taupe.sto} contient des d�finitions qui d�pendent % de la cl� \Optioncle{ArgArcMaj} \TO % \DescribeOptionCle{ArgArcMaj}\clabel{ArgArcMaj} \textbf{arg} et % \textbf{arc} avec \textbf{maj}uscule\TF dont la valeur d'origine est % \Optionval{false}{ArgArcMaj} ce qui entraine que les noms des % fonctions circulaires et hyperboliques r�ciproques \TO comme % \(\argch x\)\TF sont �crites en minuscule. En donnant la valeur % \Optionval{true}{ArgArcMaj}, valeur par d�faut, � la cl� % \Optioncle{ArgArcMaj}, ils prennent une majuscule \TO on a alors % \(\operatorname{Argch}x\). % % \subsection{R�glage de la police calligraphique} % % Trois cl�s r�glent le choix de la police calligraphique en mode % math�matique. D'origine la cl� bool�enne \Optioncle{CharPoCal} \TO % pour \OptionclePresent{Char}ger % \DescribeOptionCle{CharPoCal}\clabel{CharPoCal} une % \OptionclePresent{Po}lice \OptionclePresent{Cal}ligraphique\TF est % \OptionvalPresent{true} ce qui permet de d�finir la police % calligraphique pour remplacer \cs{mathcal} qui serait celle que l'on % obtiendrait si \Optioncle{CharPoCal} avait la valeur % \OptionvalPresent{false}. % % Lorsque \Optioncle{CharPoCal} vaut \OptionvalPresent{true} \TO ce % qui est �galement sa valeur par d�faut \TF, il faut d�finir les cl�s % \Optioncle{calpack} et \Optioncle{calcomd}. % % La cl� \Optioncle{calpack}, qui contient % \DescribeOptionCle{calpack}\clabel{calpack} % \OptionvalPresent{mathrsfs} par d�faut, prend pour valeur le nom, % sans l'extension \texttt{sty}, d'un module donnant acc�s � une % \DescribeOptionVal{mathrsfs}{calpack} % police calligraphique, \PX, \texttt{mathrsfs} ou \texttt{eucal}. % % La cl� \Optioncle{calcomd}, qui contient % \DescribeOptionCle{calcomd}\clabel{calcomd} % \OptionvalPresent{mathscr} par d�faut, prend pour valeur le nom % d'une macro \textbf{sans} la barre oblique initiale. C'est la macro % \DescribeOptionVal{mathscr}{calcomd} % permettant de \emph{passer} en police calligraphique. L'extension % \Pkg{mathrsfs} contient bien la macro \cs{mathscr}. % % \bigbreak % % En r�sum�, si l'on veut utiliser le \cs{mathcal} tel que propos� par % \LaTeX\ plus \Pkg{amsmath}, on chargera: % % \noindent|\usepackage[CharPoCal=false]{tdsfrmath}| % % \noindent\TO ce que l'on fera �galement pour utiliser \Pkg{fourier} % si on veut b�n�ficier de la red�finition de \cs{mathcal} qu'op�re % cette extension \TF et si l'on veut utiliser \Pkg{eucal} et sa % commande \cs{mathcal} \TO eh oui! cette extension red�finit % \cs{mathcal}\TF il faudra % % \noindent|\usepackage[calpack=eucal,| % |cal|\BOP|comd=|\BOP|math|\BOP|cal]|\BOP|{tdsfrmath}| % % \noindent on remarquera que |CharPoCal=true| n'est pas n�cessaire % puisque c'est la valeur par d�faut. % % Si n�cessaire, on peut passer une option � l'extension \emph{pass�e} % � \Optioncle{calpack}, en renseignant la cl� \Optioncle{caloptn} % \DescribeOptionCle{caloptn}\clabel{caloptn} % comme dans, \PX % % \noindent|\usepackage[calpack=euscript,|\\ % \Alinea |caloptn=mathcal,|\\ % \Alinea |calcomd=mathcal]{tdsfrmath}| % % \noindent dans lequel on remarquera qu'il faut bien donner une % valeur � \Optioncle{calcomd} comme je l'ai d�j� �crit % ci-dessus. % % \texttt{Remarque}: j'ai introduit dans la version 1.2 une cl� % permettant d'utiliser conjointement \Pkg{tdsfrmath} et % \Pkg{mathdesign}, cf.~\pageref{nouveau12}. Dans ce cas, les cl�s % \Optioncle{CharPoCal}, \Optioncle{calpack}, \Optioncle{caloptn} et % \Optioncle{calcomd} sont ignor�es donc inutiles. % % \bigbreak % % \DescribeMacro{\manus} Dans tous les cas, on acc�de � la police % calligraphique avec la macro \cs{manus}, � un seul argument % obligatoire, qui est d�finie de telle sorte que l'on puisse saisir % \og |et dans \manus{c} on trouve|\fg pour obtenir \og et dans % \manus{c} on trouve\fg. % % \subsection{R�glage de la police \og gras de tableau\fg} % % Par d�faut, le \og gras de tableau\fg (\emph{blackboard bold}) est % celui de \LaTeX\ plus \Pkg{amsmath} \CAD \(\mathbb{G}\). Il en % existe bien d'autres versions que l'on trouvera dans le fameux % \texttt{symbols-a4.pdf} disponible g�n�ralement dans votre % distribution, et donc sur votre disque, dans % \texttt{texmf-doc/doc/english/comprehensive/}. % % Pour permettre de red�finir la police du gras de tableau, je fournis % un m�canisme similaire � celui qui pr�c�de. On utilisera alors la % macro \cs{grastab} pour obtenir le \og gras de tableau\fg choisi. % % La cl� bool�enne \Optioncle{CharPoGdT} \TO pour % \OptionclePresent{Char}ger % \DescribeOptionCle{CharPoGdT}\clabel{CharPoGdT} une % \OptionclePresent{Po}lice \OptionclePresent{G}ras % \OptionclePresent{d}e \OptionclePresent{T}ableau\TF vaut % \OptionvalPresent{false} � l'origine mais a \OptionvalPresent{true} % pour valeur par d�faut. % % En fixant \Optioncle{CharPoGdT} � \OptionvalPresent{true}, on peut % \DescribeOptionCle{gdtpack}\clabel{gdtpack} % d�finir la cl� \Optioncle{gdtpack} en lui donnant le nom de l'extension % qui fournira le gras d�sir�, on peut �ventuellement lui passer une % \DescribeOptionCle{gdtoptn}\clabel{gdtoptn} % option avec \Optioncle{gdtoptn} et, toujours �ventuellement, fixer % \Optioncle{gdtcomd} avec le nom de la macro d�sir�e \TO toujours % sans barre oblique inverse\TF seulement, cette fois, du fait du % \DescribeOptionCle{gdtcomd}\clabel{gdtcomd} % choix de la valeur par d�faut de \Optioncle{gdtcomd}, on n'aura pas % besoin de fixer la valeur de \Optioncle{gdtcomd} si la macro est % encore \cs{mathbb}. % % Voici ce que l'on �crira pour obtenir le gras de tableau tel que % fournit par \Pkg{dsfont} avec l'option \texttt{sans} et la commande % \cs{mathds} \TO tous les go�ts sont dans la nature \TF % % \noindent|\usepackage[CharPoGdT=true,| |gdtpack=dsfont,| |gdtoptn=sans,|\\ % \Alinea |gdtcomd=mathds]{tdsfrmath}|% % % \noindent ou encore: % % \noindent|\usepackage[CharPoGdT,| |gdtpack=dsfont,| |gdtoptn=sans,|\\ % \Alinea |gdtcomd=mathds]{tdsfrmath}|% % % \noindent et \cs{grastab} donnera ce que l'on voit dans % \texttt{symbols-a4.pdf}. % % On peut �galement\footnote{Ce changement � lui seul justifie le % passage � la version 1.1. C'est � la demande g�n�rale de Maxime % \textsc{Chupin} sur \texttt{fctt} que je proc�de � la red�finition % du m�canisme du choix du gras de tableau \Sourire}, lorsque la cl� % \Optioncle{CharPoGdT} vaut \OptionvalPresent{true} ne pas d�finir la % cl� \Optioncle{gdtpack} mais d�finir la cl� \Optioncle{gdtcomd} % comme pr�c�demment. Ce m�canisme permet d'utiliser \PX le gras \og % normal\fg pour le \og gras de tableau\fg avec % % \noindent|\usepackage[CharPoGdT=true,| |gdtcomd=textbf]{tdsfrmath}| % % \noindent ou encore: % % \noindent|\usepackage[CharPoGdT,| |gdtcomd=textbf]{tdsfrmath}| % % \noindent et on aura alors, \PX, \(\textbf{R}\) avec |\R|. % % \bigbreak % % \DescribeMacro{\grastab} La macro \cs{grastab} prend �galement un % seul argument obligatoire. Elle ne passe pas son argument en % majuscule car certaines extensions fournissent aussi des minuscules % en gras de tableau. Cependant elle assure le mode math�matique. On % peut donc saisir \og |et comme \grastab{M} est unif�re|\fg pour % obtenir \og et comme \grastab{M} est unif�re\fg. % % \subsection{Utilisation de \Pkg{tdsfrmath} avec \Pkg{mathdesign}} % \label{nouveau12} % % � la demande d'un utilisateur\footnote{Eh oui! C'est encore Maxime % \textsc{Chupin}. Si vous aussi, vous voulez voir votre nom dans % cette documentation, n'h�sitez pas � me faire part de vos % d�sid�ratas. Sait-on jamais, vous pourriez motiver le passage � la % version suivante \Sourire} de \Pkg{mathdesign} qui voulait % pouvoir utiliser \Pkg{tdsfrmath} j'ai pass� cette extension � la % version~1.2 dans laquelle j'introduis un m�canisme plut�t % simplissime pour assurer la cohabitation la plus harmonieuse % possible entre ces deux extensions. % % La cl� bool�enne \Optioncle{avecmathdesign}\label{avecMD} vaut % \Optionval{false}{avecmathdesign} � l'origine. % \DescribeOptionCle{avecmathdesign} Lorsqu'on lui donne, au % chargement de \Pkg{tdsfrmath}, la valeur \OptionvalPresent{true} \TO % qui est sa valeur par d�faut \TF, on n'a plus besoin de sp�cifier % quoique ce soit concernant la police calligraphique car % \Pkg{tdsfrmath} se repose enti�rement sur \Pkg{mathdesign} qu'il % faut charger explicitement avec \cs{usepackage} en lui passant les % options ad�quates comme l'explique le manuel \TO % \texttt{mathdesign-doc.pdf}\TF de l'extension. % % Cette option ne change rien au m�canisme de gestion du gras de % tableau. C'est d� au fait agr�able que la macro de \Pkg{mathdesign} % qui cr�e le gras de tableau s'appelle �galement \cs{mathbb} ce que % \Pkg{tdsfrmath} consid�re comme la valeur par d�faut. Cela permet de % r�pondre � moindre frais aux deux demandes de Maxime % \textsc{Chupin}. % % \subsection{Des n-uplets, de leur saisie et de leur pr�sentation} % % La cl� \Optioncle{nupletsep} % \DescribeOptionCle{nupletsep}\clabel{nupletsep} peut prendre la % valeur \Optionval{virgule}{nupletsep}, qui est le r�glage par % d�faut, ou \Optionval{pointvirgule}{nupletsep}. Toute autre valeur % provoque un avertissement et on se retrouve avec le r�glage par % d�faut. % % Le r�glage par d�faut\DescribeOptionVal{virgule}{nupletsep}, % \Optionval{virgule}{nupletsep} compose les \(n\)-uplets comme ceci: % \nuplet{a b}. Avec l'autre r�glage possible % \Optionval{pointvirgule}{nupletsep}, on aurait \((a\,\string;\, % b)\). J'ai longtemps utilis� cette derni�re\footnote{Pour tout dire, % � l'�poque, mon fichier de macros ne ressemblait � celui-ci que de % tr�s loin mais on apprend avec l'age \TO au moins pendant un % moment.} pour �crire des textes � destination des �l�ves du % secondaire car on est souvent amen� � utiliser des nombres d�cimaux % et, dans ce cas, le m�lange de virgule ne m'a jamais paru tr�s % heureux. % % \bigbreak % % La macro \cs{TdSMnuplet} \DescribeMacro{\TdSMnuplet}prend un % argument obligatoire qui est une liste dont les �l�ments sont % s�par�s par des espaces. Avec \og |\TdSMnuplet{a b c d}|\fg on % obtient \og \TdSMnuplet{a b c d}\fg. C'est une macro auxiliaire % aussi lui ai-je donn� un nom qui commence par |TdSM| mais elle peut % reservir, directement ou dans la d�finition d'une commande dont je % n'ai pas vu l'utilit�, aussi je n'ai pas mis de |@| dans son nom. % % La macro \emph{ordinaire} est \cs{nuplet}.\DescribeMacro{\nuplet} % Avec elle on obtient la pr�sentation \emph{classique} des % \(n\)-uplets: |\nuplet{a b 3 c 8}| compose \nuplet{a b 3 c 8}. % % La d�finition de \cs{TdSMnuplet} permet de coder % \verb*|\nuplet{ a b}| pour \nuplet{ a b}. % % Bien entendu, comme d'habitude, on ne peut avoir le beurre et % l'argent d'icelui. On peut coder % \verb*|\nuplet{ a\times b+c a\cap b}| pour obtenir \nuplet{ a\times % b+c a\cap b} mais avec % \verb*|\nuplet{ a + b + c }| on aura \nuplet{ a + b + c }. Vous �tes % pr�venus! \Sourire% % % En fait, la pr�sentation obtenue avec \cs{nuplet} repose sur % \cs{EncloreExtensible} \DescribeMacro{\EncloreExtensible} dont la % syntaxe est: % % \noindent\cs{EncloreExtensible}\oarg{md}\marg{d�lim-gauche}\BOP% % \marg{d�lim-droite}\marg{texte} % % \noindent\meta{md} vaut |1| par d�faut, s'il vaut |0| les % math�matiques sont compos�es en mode hors-texte \TO % \cs{displaystyle}. Je sais bien que c'est une mauvaise pratique, % que �a bousille l'interligne, que �a fiche en l'air l'uniformit� du % gris typo, \&c. \textsc{mais}, h�las, parfois, c'est bien % utile. Alors je le permets mais avec \(0\) qui rappelle ce qu'il % faut penser d'une telle pratique \Sourire. % % \meta{d�lim-gauche} est quelque chose qui peut �tre pr�c�d� de % \cs{left} comme |(| ou |\Vert|, \meta{d�lim-droite} est quelque % chose qui peut �tre pr�c�d� de \cs{right} comme |)| ou |\Vert|, Si % on ne veut rien de visible � gauche ou � droite, il faut que le % 1\ier ou le 2\ieme argument obligatoire soit un % point. \meta{texte} est ce qui sera plac� entre les d�limiteurs, % en mode math�matique. % % \bigbreak % % La macro \cs{EncloreExtensible} nous place en mode math�matique. % % En voici un exemple un rien b�te: % \cs{EncloreExtensible}\BOP|{(}|\BOP|{\rangle}|\BOP|{x^{2}}| produit % \EncloreExtensible{(}{\rangle}{x^{2}}. % % Le comportement des d�limiteurs varient suivant qu'on est \TO de % mani�re forc�e par l'argument optionnel ou de mani�re % \emph{naturelle} parce que l'on est dans une formule compos�e % hors-texte\TF en mode math�matique hors-texte ou en mode % math�matique en ligne. Dans le 1\ier cas, les d�limiteurs sont % extensibles, dans le second ils ne le sont pas. On verra plus bas, % \Page{repere}, le rendu des parenth�ses dans la macro \cs{repere}. % % Cette macro \cs{EncloreExtensible} me sert � en d�finir plusieurs % autres que voici. Toutes ont la m�me syntaxe: % % \noindent\cs{Macro}\oarg{md}\marg{texte} % % \noindent o� \meta{md} et \meta{texte} \DescribeMacro{\parent} ont % le m�me sens que ci-dessus. Ce sont \cs{parent} pour obtenir des % parenth�ses, \cs{accol} pour des accolades \DescribeMacro{\accol} et % \cs{crochet} pour des \dots\ oui, des crochets! Voici, \PX, % |\parent{a}| qui produit \parent{a}; |\accol{\vide}| qui produit % \accol{\vide}; \DescribeMacro{\crochet} |\crochet{8\cdot9}| qui % produit \crochet{8\cdot9}. % % Dans le m�me genre, on a \cs{varabs} pour obtenir la valeur absolue % comme ici: \DescribeMacro{\varabs} \varabs{-12} cod� |\varabs{-12}|. % % Dans la m�me veine, toujours, \cs{norme} pour �crire la norme comme % suit: \DescribeMacro{\norme} \norme{\vecti} cod� |\norme{\vecti}|. % % \bigbreak % % Revenons aux \(n\)-uplets. Les macros qui les produisent acceptent, % elles aussi, toutes un argument optionnel qui force le mode % hors-texte quand il vaut |0|. % % \DescribeMacro{\nuplet} On obtient, comme d�j� vu ci-dessus, % \nuplet{c d} avec \verb*|\nuplet{c d}| \TO j'insiste sur l'espace, % non?\TF et avec \verb*|\anuplet{c d}| on a \anuplet{c d}. Cette % \DescribeMacro{\anuplet} % derni�re doit son nom � ce qu'elle utilise des \textbf{a}ccolades. % % Toutes les deux, comme je l'ai d�j� signal�, peuvent traiter % un\label{nupletrem} nombre quelconque d'arguments s�par�s par des % espaces comme, \PX, \anuplet{a b c d e f} obtenu avec % |\anuplet{a b c d e f}|. % Il faut toutefois remarquer que si l'on veut utiliser % un macro � l'int�rieur, \PX \cs{alpha}, il faudra la faire suivre ou % l'entourer d'une paire d'accolades pour pr�server l'espace, sinon % c'est l'erreur assur�e et \TeX\ prof�rera une de ces habituelles % remarques absconces \Sourire % % On codera donc |\nuplet{a \alpha{} \beta}| pour obtenir \nuplet{a % \alpha{} \beta}. Mais, coqu�terie d'auteur, je me suis arrang� % pour que l'on puisse coder directement |\nuplet{a �a �b}| pour avoir % {\ActiveLaParesse\nuplet{a �a �b}} lorsque l'extension % \Pkg{paresse}, de votre serviteur, est charg�e. % % Avec |\nuplet{\frac{1}{2} \frac{3}{4}}| on produit % \nuplet{\frac{1}{2} \frac{3}{4}}. % % \bigbreak % % Je ne suis pas all� plus loin car je pense que je couvre largement % les besoins du secondaire avec tout �a. Qui voudrait obtenir % une macro du m�me genre, pourra toujours la d�finir � l'aide de % \cs{EncloreExtensible} et \cs{TdMnuplet} qui font le travail % principal. % % Cependant, je fournis la macro \cs{rnuplet}, pr�vue pour �tre % utilis�e dans le cas de l'�criture d'une fonction, \PX En effet, % elle pr�c�de la composition du \(n\)-uplet d'une espace n�gative ce % qui a pour effet de rapprocher la premi�re parenth�se de ce qui % pr�c�de. Comparer \(f\rnuplet{x y}\), obtenu avec % |\(f\rnuplet{x y}\)|, � \(f\nuplet{x y}\), |\(f\nuplet{x y}\)|, % et � \(f\rnuplet{x y}[5]\), |\(f\rnuplet{x y}[5]\)|. % % \DescribeMacro{\rnuplet} % Cette macro a pour syntaxe % % \noindent\cs{rnuplet}\oarg{md}\marg{texte}\oarg{�cart} % % \noindent le seul argument nouveau est \meta{�cart} qui r�gle % l'espacement entre ce qui pr�c�de la macro et la parenth�se. Par % d�faut cet argument vaut \cs{TdSMReculParenthese} dont la valeur % est~\(-2\), \meta{�cart} doit �tre un nombre. % % Le |r| est l� pour faire penser (\string?) � \emph{recul}. % % On pourrait donc �crire mais, bien s�r, on \textbf{ne le fera pas}, % |\(f|\BOP|\rnuplet|\BOP|[0]|\BOP|{\frac{1}|\BOP|{2}| % |3}|\BOP|[10]|\BOP|\)| pour obtenir l'horreur: % \(f\rnuplet[0]{\frac{1}{2} 3}[10].\) % % \vspace{\baselineskip} % % \DescribeMacro{\TdSMReculParenthese}\mlabel{TdSMReculParenthese} % C'est la macro qui fixe, de mani�re g�n�rale, l'espace entre le % texte qui pr�c�de et la parenth�se \TO ou d�limiteur �quivalent\TF % ouvrante. On peut la red�finir avec \cs{renewcommand}. % % \textsf{Remarque}: Elle n'est pas \emph{secr�te} donc son nom ne % comporte pas de |@| mais on n'est pas sens� l'utiliser toutes les % trois secondes d'o� les capitales. C'est la convention % g�n�rale\footnote{Il faut prendre ces conventions pour ce qu'elles % sont et on n'aurait pas trop de peine � trouver des exceptions � % cette \emph{r�gle}, exceptions qui ne survivent que par la force de % l'habitude.} de nommage des macros. % % \subsection{De la d�finition des ensembles} % % Je fournis la macro \cs{ensemble}, \Voir{ensemble}, qui permet % d'�crire, \PX, \og \ensemble{x\in\R}{x^{2}\pgq 2}\fg avec % \DescribeOptionCle{SepDefEnsExt}\clabel{SepDefEnsExt} % |\ensemble|\BOP|{x\in\R}|\BOP|{x^{2}\pgq 2}|. Le rendu en est % controll� par la cl� \Optioncle{SepDefEnsExt} \TO % \DescribeOptionVal{true}{SepDefEnsExt} % \textbf{s�p}arateur de la \textbf{d�f}inition d'un \textbf{ens}emble % \textbf{ext}ensible\TF qui vaut \Optionval{true}{SepDefEnsExt} par % d�faut. Par ailleurs, la macro \cs{TdSMsepdefens} contient le % \DescribeMacro{\TdSMsepdefens}\mlabel{TdSMsepdefens} % s�parateur et peut-�tre red�finie � l'aide d'un \cs{renewcommand}. % % Si, comme c'est le cas � l'origine et par d�faut, la cl� % \Optioncle{SepDefEnsExt} vaut \Optionval{true}{SepDefEnsExt}, la % d�finition de \cs{TdSMsepdefens} doit �tre \emph{quelque chose} % supportant l'action de \cs{middle} \TO qui est � un d�limiteur % central ce que \cs{left} et \cs{right} sont � ceux de gauche et % droite\TF comme, \PX, \cs{vert}. Ce qui fait que si l'on veut un % s�parateur qui ne supporte pas cela, comme |:|, les deux-points, il % faut passer explicitement la valeur \OptionvalPresent{false} � la % cl� \Optioncle{SepDefEnsExt}. % % \subsection{Des noms des ensembles classiques} % % Il s'agit ici des macros qui permettent d'obtenir \R et \Q[*] ou % encore \C[-3]. % % \DescribeMacro{\TdSM@Decoration} Cette macro \emph{secr�te} place % les �toiles et signe plus ou moins, ce que j'appelle ici la % d�coration du nom de l'ensemble. Par d�faut on a \R[*+] mais cette % disposition est control�e par la cl� % \DescribeOptionCle{ensdeco}\clabel{ensdeco} \Optioncle{ensdeco} qui % peut prendre les valeurs \Optionval{ehsb}{ensdeco}, % \Optionval{ehsh}{ensdeco}, \Optionval{sheh}{ensdeco}, % \Optionval{ebsb}{ensdeco}, \Optionval{sbeb}{ensdeco} et % \Optionval{ebsh}{ensdeco}. % % \DescribeOptionVal{ebsh}{ensdeco} % Par d�faut, on a |[ensdeco=ebsh]|. Toute autre valeur provoque un % avertissement et on se retrouve avec le r�glage par d�faut. % % La valeur par d�faut \Optionval{ehsb}{ensdeco} place % l'\OptionclePresent{�}toile en \OptionclePresent{h}aut et le % \OptionclePresent{s}igne en \OptionclePresent{b}as. On pourra % retenir que, quand l'ordre importe peu, on commence par l'�toile % d'o� \Optionval{ehsb}{ensdeco} et \Optionval{ebsh}{ensdeco} et que, % sinon, l'ordre d'apparition de \OptionvalPresent{e} et % \OptionvalPresent{s} r�gle la place de l'�toile \(\ast\) et du % signe. % % Grace au m�canisme de \cs{define@choice*+} de l'extension % \texttt{xkeyval}, on pourra passer les valeurs en capitales. Donc % |[ensdeco=EHSB]| est une �criture valide. % % \medbreak % % \DescribeMacro{\TdSM@PlaceSigne} Cette macro tout aussi % \emph{secr�te} place le signe plus ou moins quand il est seul. Par % d�faut on a \R[+] mais cette disposition est control�e par la cl� % \DescribeOptionCle{placesigne}\clabel{placesigne} % \Optioncle{placesigne} qui peut prendre les valeurs % \Optionval{haut}{placesigne} et \Optionval{bas}{placesigne}. % % \DescribeOptionVal{haut}{placesigne} Par d�faut, on a % |[placesigne=haut]|. Toute autre valeur provoque un avertissement et % on se retrouve avec le r�glage par d�faut. % % % \bigbreak % % \DescribeMacro{\EnsembleDeNombre} Cette macro fait le gros boulot de % composition.\SignalNouveau{1.3} Elle prend 4~arguments obligatoires: % le 1\ier donne la lettre majuscule symbolisant l'ensemble comme \og % R\fg pour \R; le \DescribeMacro{\C} comportement de la macro varie % suivant que le 2\ieme est �gal � \(1\), \Nouveau{est �gal % �~\(0\)}{1.3}, l'une de ces sept chaines de caract�res |*|, |+|, % |-|, \DescribeMacro{\N} |*+|, |+*|, |-*| et |-*| \TO ou % \Nouveau{sinon suivant qu'il commence par un signe moins ou % pas}{1.3}. C'est ce qui permet d'obtenir plus tard, \PX, \Q[+*] % avec |\Q[+*]|\TF; le 3\ieme argument est utilis� \DescribeMacro{\Q} % pour d�noter les ensembles de polyn�mes comme \C[-3] et dans ce cas % le 2\ieme doit commencer par un signe moins; enfin le 4\ieme doit % �tre un \DescribeMacro{\R} entier qui donne le nombre de |mu| \TO % unit� de longueur sp�cifique \DescribeMacro{\Z} au mode % math�matique\TF qui s�parent la majuscule du crochet ouvrant. % % Je rappelle au passage que |mu| \TO pour \emph{maths unit}\TF est % une unit� de longueur d�finie uniquement en mode math�matique. Elle % vaut 1/18 d'un |em| qui est \TO approximativement\TF la largeur d'un % M dans la fonte courante. % % Avec la version 1.3\SignalNouveau{1.3} j'op�re un changement de % doctrine! Si le 2\ieme argument n'est pas |*|, |+|, |-|, |*+|, |+*|, % |-*|, |-*|, |0| ou |1|, la seule chose qui compte est de savoir s'il % commence par un signe \og \(-\)\fg ou pas. Ce qui fait que |\R[--4]| % donne d�sormais le (douteux?) \R[--4]. Toutefois, on a maintenant % \R[n] avec |\R[n]| et \R[-m] avec |\R[-m]| et c'est bien cela dont % j'avais besoin ces derniers temps! On peut m�me laisser des blancs % devant le signe moins: \verb*+\R[ -3]+ donne \R[ -3] gr�ce � une % r�ponse de Manuel \textsc{P�gouri�-Gonnard} sur \fctt. % % Comme il serait fastidieux d'avoir � taper % \cs{EnsembleDeNombre}\BOP|{N}|\BOP|{1}|\BOP|{}|\BOP|{}| pour obtenir % simplement \N, je fournis maintenant des commandes courtes % auxquelles j'ai d�j� fait allusion ci-dessus. Ce sont \cs{N} % pour~\N, \cs{Z} pour~\Z, \cs{Q} pour~\Q, \cs{R} pour~\R, \cs{C} % pour~\C et, enfin, si on a pass� la valeur \Optionval{true}{taupe} � % la cl� \Optioncle{taupe}, \cs{K} pour~\K. % % \bigbreak % % Je ne fournis pas \cs{D} pour les d�cimaux car, d'une part, je doute % finalement de l'utilit� de cet ensemble et, d'autre part, je r�serve % cette macro pour plus tard. % % \bigbreak % % J'utilise ici, avec beaucoup de satisfactions, l'extension % \Pkg{xargs} afin que ces macros prennent deux arguments optionnels % qui fourniront, dans l'ordre, les 2\ieme et 3\ieme arguments de % \cs{EnsembleDeNombre}. Par d�faut, le 1\ier argument vaut~|1| et le % 2\ieme~|X|. % % Voici toutes les fa�ons d'utiliser \cs{R}, \PX, et ce qu'elles % produisent: % \begin{itemize}\mlabel{nomsens} % \item |\R| donne \R; % \item |\R[*]| donne \R[*]; % \item |\R[+]| donne \R[+]; % \item |\R[-]| donne \R[-]; % \item |\R[+*]| ou |\R[*+]| donne \R[+*]; % \item |\R[-*]| ou |\R[*-]| donne \R[-*]; % \item |\R[1]| donne \R[1]; % \item |\R[5]| donne \R[5]; % \item |\R[n]| donne \R[n]; % \item |\R[0]| donne \R[0]; % \item |\R[-6]| donne \R[-6]; % \item |\R[-m]| donne \R[-m]; % \item |\R[-6][Y]| donne \R[-6][Y]. % \end{itemize} % On notera que l'on ne peut pas donner le 2\ieme argument optionnel % sans donner d'abord le premier. % % \bigbreak % % Cependant, pour des raisons que l'on peut voir \Page{suite*} � % propos de \cs{suite*}, je fournis quelques macros suppl�mentaires % qui, du coup, peuvent abr�ger la saisie. % % \DescribeMacro{\R*} \cs{N}, \cs{Z}, \cs{Q}, \cs{R} et \cs{C} ont une % forme �toil�e qui fait la m�me chose que la macro avec une |*| pour % 1\ier argument. On aura donc, \PX, \N* avec |\N*| comme avec % |\N[*]|. Il en est de m�me avec \cs{K} si \texttt{taupe.sto} est % charg�. % % \DescribeMacro{\R+} \cs{Q} et \cs{R} ont une forme % \emph{pluss�e} et une forme \emph{moins�e} qui font, respectivement, % la m�me chose que \DescribeMacro{\R-} la macro avec |+| et |-| pour % 1\ier argument optionnel. On aura donc, \PX, \Q+ avec |\Q+| comme % avec |\Q[+]| et \R- avec |\R-| comme avec |\R[-]|.\mlabel{plusse} % % \DescribeMacro{\R>} \cs{R} b�n�ficie de deux autres raccourcis, � % savoir \cs{R>} qui produit \R> \CAD la m�me chose que |\R[+*]| % \DescribeMacro{\R<} et \cs{R<} qui produit \R< \CAD comme |\R[-*]|. % Si l'on veut d�finir d'autres raccourcis du m�me genre on pourra % regarder le code page~\pageref{suffixe}. % % Toutefois, si pour une raison quelconque, on voulait \og \(\Q{} + % \Q\)\fg on devra coder |\(\Q{} + \Q\)|. Il arrive que certaines % �pines aient des roses\dots % % � la demande\SignalNouveau{1.3} de Maxime Chupin, on dispose % d�sormais de la macro |\R/| qui donne \R/ et |\R/+| qui donne \R/+. % % \subsection{Des vecteurs, des bases et des rep�res} % \label{SSECvecteursutil} % % \DescribeMacro{\definirvecteur}\mlabel{definirvecteur} % Cette macro permet, comme son nom l'indique presque, de d�finir % des macros qui produisent des vecteurs. Sa syntaxe est: % % \noindent\cs{definirvecteur}\oarg{bb}\BOP\marg{a}\BOP% % \marg{n}\BOP\marg{m} % % Avec \cs{definirvecteur}\BOP\marg{a}\BOP\marg{n}\BOP\marg{m} on % obtient une macro qui s'appelle \cs{vecta} et qui produit, en se % pla�ant dans le mode math�matique, la lettre |a| surmont�e de la % fl�che que donne \cs{overrightarrow} avec un d�calage de |n|~|mu|s % devant et |m|~|mu|s derri�re le texte. % % L'argument optionnel \meta{bb} permet d'obtenir le nom % \cs{vectbb} ce qui est indispensable quand le 1\ier argument % obligatoire est lui-m�me une macro comme \PX \cs{imath}. % % Cette macro fait appel � \cs{TdSM@fairevecteur} d�crite % \Page{TdSMAfairevecteur}. % % \DescribeMacro{\redefinirvecteur}\mlabel{redefinirvecteur} % Elle teste l'existence d'une macro du m�me nom et produit une erreur % s'il en existe d�j� une. Si l'on veut red�finir une commande comme % \cs{vecti}, on utilisera \cs{redefinirvecteur} qui a la m�me syntaxe % que sa grande s�ur et qui, elle, produira une erreur si on tente de % red�finir un vecteur qui ne l'est pas encore. % % \bigbreak % % \DescribeMacro{\vecti} % Gr�ce � \cs{definirvecteur}, je d�finis quelques vecteurs courants % \DescribeMacro{\vectj} % et utiles: \cs{vecti} \vecti; \cs{vectj} \vectj; \cs{vectk} \vectk; % \DescribeMacro{\vectk} % \cs{vectu} \vectu et enfin \cs{vectv} \vectv. % % On pourra comparer la composition que permet d'obtenir % \DescribeMacro{\vectu} % \cs{TdSM@faire}\BOP|vec|\BOP|teur|, � l'aide des 2\ieme et 3\ieme % arguments qui % \DescribeMacro{\vectv} % d�finissent un nombre de |mu|s, avec ce que donne une composition % directe comme ici: \vecti obtenu avec |\vecti| et % \(\overrightarrow\imath\) produit par |\(\overrightarrow\imath\)|. % % \bigbreak % % \DescribeMacro{\vecteur}\mlabel{vecteur} % Cette macro peut �tre suivie par une �toile. Elle prend un argument % optionnel, valant |1| par d�faut, qui d�termine l'espace plac� % devant le texte sous la fl�che. % % Elle prend un argument obligatoire qui donne le \meta{texte} qui % sera plac� sous la fl�che du vecteur. Avec la version sans �toile, % le texte est compos� \emph{normalement} en mode math�matique comme % dans \vecteur{AB} produit par |\vecteur{AB}|. Avec la version % �toil�e le texte est en caract�res romains, ou, plus exactement, est % compos� dans la police en vigueur pour l'argument de \cs{text} de % l'extension \Pkg{amstext}, charg�e ici par l'interm�diaire de % \Pkg{amsmath}. On a donc \vecteur*{CD} avec |\vecteur*{CD}|. % % Enfin, le troisi�me argument, optionnel, r�gle l'espace % suppl�mentaire, toujours en nombre de |mu|s, qui suit le % texte. Comparez % \vecteur{AB} produit par |\vecteur{AB}| avec % \vecteur[10]{AB} produit par |\vecteur[10]{AB}|, % \vecteur{AB}[20] produit par |\vecteur{AB}[20]| et % \vecteur[10]{AB}[20] produit par |\vecteur[10]{AB}[20]|. % % \DescribeMacro{\V} % Ce n'est qu'un raccourci de \cs{vecteur}. Il a donc la m�me syntaxe: % % \noindent\cs{V}|*|\oarg{espace-avant}\marg{texte}\oarg{espace-apr�s} % % o� \meta{espace-avant} et \meta{espace-apr�s} sont des nombres. % % \bigbreak % % \DescribeMacro{\base}\mlabel{base} % La macro \cs{base} admet un seul argument, optionnel, qui ne doit % prendre que les valeurs |1|, |2| \TO valeur par d�faut\TF ou |3|. On % obtient alors \base[1] avec |\base[1]|, \base avec |\base| ou % |\base[2]|, \base[3] avec |\base[3]|. % % \bigbreak % % \DescribeMacro{\repere}\mlabel{repere} % La macro \cs{repere} fournit un rep�re � la fran�aise. Elle est % construite sur \cs{base} et son 1\ier argument optionnel a le m�me % r�le que celui de \cs{base}. Le 2\ieme argument optionnel de % \cs{repere} d�finit le centre du rep�re, c'est |O| par d�faut. % % On a donc \repere ou \repere[3] ou \repere[2][O'] avec |\repere| ou % |\repere[3]| ou |\repere[2][O']|. On a m�me \repere[1] avec % |\repere[1]|. % % Je rappelle qu'il faut le 1\ier argument optionnel si l'on veut % pr�ciser le 2\ieme. % % Voyons maintenant le rendu des rep�res dans une formule hors-texte: % \[\repere[1] \quad \repere \quad \repere[3]\] % % \bigbreak % % Viennent maintenant des macros qui servent essentiellement % d'abr�viations. % % \DescribeMacro{\rog}\mlabel{rog} % Tout d'abord ce qu'il faut pour �crire \og \rog\fg avec \cs{rog} % puis \og \ron\fg avec \cs{ron} \DescribeMacro{\ron}\mlabel{ron} et % enfin \og \rond\fg avec \cs{rond}.\DescribeMacro{\rond}\mlabel{rond} % % Ces trois commandes acceptent les m�mes arguments que \cs{repere} ce % qui fait que l'on peut obtenir \og \rond[3][A]\fg avec % |\rond[3][A]|. On \textbf{ne} doit \textbf{pas} les utiliser en mode % math�matiques. % % \DescribeMacro{\repcom}\mlabel{repcom} % Je fais de m�me avec les rep�res pour le plan complexe, o�, en % g�n�ral, on utilise \vectu et \vectv pour la base. % \DescribeMacro{\roncom}\mlabel{roncom} On a donc \og \repcom\fg avec % \cs{repcom}, \DescribeMacro{\rondcom}\mlabel{rondcom} \og \roncom\fg % avec \cs{roncom} et enfin \og \rondcom\fg avec \cs{rondcom}. % % Je fournis de quoi �crire les rep�res � la mode du % coll�ge\footnote{Enfin, c'est comme cela que j'y pensais du temps o� % j'enseignais en lyc�e. Est-ce bien encore le cas?} mais je ne traite % que le cas d'un rep�re du plan. % % \medbreak % % \DescribeMacro{\Repere}\mlabel{Repere} % Cette macro a une forme �toil�e. Sans �toile, on obtient \og % \DescribeMacro{\Repere*} % \Repere\fg et avec l'�toile \TO \CAD avec \cs{Repere*}\TF c'est \og % \Repere*\fg. % % \DescribeMacro{\Rog} % Viennent ensuite des abr�viations, construites sur le m�me mod�le % que les pr�c�dentes: \cs{Rog} pour \og \Rog\fg, \cs{Ron} pour \og % \DescribeMacro{\Ron} % \Ron\fg et enfin \cs{Rond} pour \og \Rond\fg. Elles ont toutes une % forme �toil�e qui permet d'obtenir les lettres \og droites\fg \TO % \DescribeMacro{\Rond} % avec les m�mes remarques qu'� propos de \cs{vecteur*}, % \Voir{vecteur}. On a donc, \PX, \og \Rond*\fg avec |\Rond*|. % % \subsection{L'exponentielle} % \label{SSECfonctionsutil} % % \DescribeMacro{\E}\mlabel{E} % La macro \cs{E} permet d'obtenir un \og e\fg droit quelque soit % l'environnement: \og \emph{Le nombre \E vaut approximativement % \(\np{2,7}\)}\fg cod� |\emph{Le nombre| |\E| |vaut| % |approximativement| |\(\np{2,7}\).}| grace � \cs{textup} mais il % n'est en \emph{romain} que si l'environnement est en romain: \og % \textsl{\textsf{Le nombre \E vaut approximativement % \(\np{2,7}\)}}\fg o� j'ai utilis� \cs{textsl} pour obtenir des % caract�res sans empattements. % % \DescribeMacro{\eu}\mlabel{eu} % La macro \cs{eu} prend un argument obligatoire qui sera plac� en % exposant. On saisit |\eu{2x+3}| pour obtenir \eu{2x+3}. Une fois % encore, grace � \cs{ensuremath}, on n'a pas besoin de passer % explicitement en mode math�matique. % % \subsection{Le nombre i} % % \DescribeMacro{\I}\mlabel{I} Je d�finis \cs{I} pour qu'elle donne un % \og i\fg droit qui est ce que l'on devrait utiliser en fran�ais pour % noter \og la racine carr�e de \(-1\)\fg \TO pour parler comme les % anciens. % % On a donc \og le nombre \I qui v�rifie \(\I^{2}=-1\)\fg avec % le code \og |le| |nombre| |\I| |qui| |v�rifie| |\(\I^{2}=-1\)|\fg. % % Les remarques faites ci-dessus � propos de~\cs{E} s'appliquent % �galement �~\cs{I}. % % \subsection{Int�grales} % \label{SSECintegralesutil} % % \[\intabfx \qquad \text{plut�t que �a:}\qquad \int_{a}^{b}f(x)dx\] % % \DescribeMacro{\FixeReculIntegrande}\mlabel{FixeReculIntegrande} % Ces deux macros prennent un \textbf{nombre} pour unique argument % obligatoire. % \DescribeMacro{\FixeAvanceDx}\mlabel{FixeAvanceDx} % Elles permettent de \emph{fixer} le nombre de |mu|s dont % l'int�grande sera rapproch� du signe somme et celui dont % l'int�grande et le \(\D x\) seront s�par�s. % % \medbreak % % \DescribeMacro{\D}\mlabel{D} % Je fournis la macro \cs{D} avec un \cs{providecommand} car elle est % d�j� d�finie par \Pkg{kpfonts} de Christophe \textsc{Caignaert}, % avec le m�me effet mais par un autre tour. Cela permet d'utiliser % \Pkg{kpfonts} et \Pkg{tdsfrmath} sans craindre un conflit de nom. % % \bigbreak % % \DescribeMacro{\intgen}\mlabel{intgen} % C'est la macro la plus g�n�rale pour �crire une int�grale. Sa % syntaxe est: % % \noindent\cs{intgen}\BOP\oarg{md}\BOP\oarg{recul}\BOP\marg{inf}% % \BOP\marg{sup}\BOP\marg{int�grande} % % \noindent o� \meta{md} est le mode dans lequel sera compos� la % formule, par d�faut le mode math�matique courant, valeur |1|, avec % |0| on est en mode hors-texte \TO je ne fais pas de rappel sur ce % qu'il faut penser de cette man�uvre \Sourire % % \meta{recul} vaut par d�faut |6mu| ou la valeur fix�e par % \cs{FixeReculIntegrande}, sinon ce doit �tre un nombre de |mu|s \TO % explicitement on �crira |[1][-8mu]|, et je rappelle que le 2\ieme % argument optionnel ne peut �tre donn� que si le 1\ier est donn� % �galement. \meta{inf} et \meta{sup} sont les bornes inf�rieure et % sup�rieure de l'int�grale, \meta{int�grande} est \TO surprise!\TF % l'int�grande. % % On l'utilise lorsque l'int�grande et le \(\D x\) sont % \emph{m�lang�s} comme dans \[\intgen{2}{5}{\dfrac{\D x}{\ln x}}\] % cod� avec |\[\intgen{2}{5}{\dfrac{\D x}{\ln x}}\]|. % % \bigbreak % % \DescribeMacro{\integrer}\mlabel{integrer} Vient la macro pour le % cas o� l'int�grande est s�par� de \(\D x\). Sa syntaxe est: % % \noindent\cs{integrer}\BOP\oarg{md}\BOP\oarg{recul}\BOP\marg{inf}% % \BOP\marg{sup}\BOP\marg{integrande}\BOP\marg{var}% % \BOP\oarg{avance}. % % On retrouve les arguments de \cs{intgen} mais on trouve un argument % obligatoire suppl�mentaire \meta{var}, qui est le symbole de la % variable, et un argument optionnel final \meta{avance} qui r�gle % la distance entre l'int�grande et le |\D|; \meta{avance} est % soumis aux m�mes r�gles que le \meta{recul}. Par d�faut % \meta{avance} vaut |4mu|. % % On code |\[\integrer{0}{\pi}{\cos 2x}{x}\]| pour % avoir \[\integrer{0}{\pi}{\cos 2x}{x}\] % % \bigbreak % % \DescribeMacro{\integrale}\mlabel{integrale} % La macro suivante est construite sur \cs{integrer} mais est con�ue % pour �tre un raccourci de % \cs{integrer}|{a}|\BOP|{b}|\BOP|{f(x)}|\BOP|{x}| avec % \cs{integrale}|{a}|\BOP|{b}|\BOP|{f}|\BOP|{x}|. % % � l'exception du 3\ieme argument obligatoire qui est un % \emph{symbole} de fonction \TO comme \(f\), \(g\) \&c\TF tous ses % arguments sont ceux de \cs{integrer}. % % \DescribeMacro{\intabfx}\mlabel{intabfx} % Enfin, raccourci du raccourci \cs{intabfx} remplace % \cs{integrale}|{a}|\BOP|{b}|\BOP|{f}|\BOP|{x}| et compose \intabfx % dans le cours du texte et \[\intabfx\] en hors-texte. % % % \subsection{Au bonheur du math�maticien, bazar} % \label{SSECbazarutil} % % Je regroupe ici plusieurs macros qui me facilitent la vie dans la % saisie des math�matiques. J'y fais une utilisation intense de % \cs{ensuremath} et \cs{xspace}. % % % \subsubsection{De l'infini} % \label{SSSECinfiniutil} % % \DescribeMacro{\plusinf}\mlabel{plusinf} J'ai mis tr�s longtemps � % retenir le nom de \cs{infty}, aussi je me % \DescribeMacro{\moinsinf}\mlabel{moinsinf}suis fait \cs{plusinf}, % \plusinf, et \cs{moinsinf}, \moinsinf. J'esp�re que leurs seuls noms % me dispense d'en dire plus sauf qu'il me faut pr�ciser qu'elles % assurent le mode math�matique et s'occupe de l'espace derri�re ce % qui permet d'�crire |et| |en| |\moinsinf| |on| |trouve| pour % composer \og et en \moinsinf on trouve\fg. % % \subsubsection{\texorpdfstring{Des intervalles de % \(\mathbb{R}\)}{Des intervalles de R}} % \label{SSSECintervalesdeRutil} % % \DescribeMacro{\interff}\mlabel{interff} % On peut �crire les diff�rents intervalles avec les macros % \cs{interff}, \cs{interoo}, \cs{interof} et % \DescribeMacro{\interoo}\mlabel{interoo}\cs{interfo}. Leur % syntaxe commune est % \cs{int...}\BOP\oarg{md}\BOP\oarg{avant}\BOP\marg{a b}% % \BOP\oarg{apr�s}. % On retiendra que \cs{inter} est mis pour \texttt{intervalle} puis % que la premi�re lettre donne le \emph{sens} du crochet gauche et la % suivante celui du crochet droit avec \texttt{f} pour \emph{ferm�} et % \texttt{o} pour \emph{ouvert}. % % Le premier argument \meta{md} est optionnel est r�gle le mode % \DescribeMacro{\interfo} math�matique, il vaut |1| par d�faut. Le % 2\ieme \meta{avant}, optionnel, vaut |0| par d�faut et donne le % nombre de~|mu|s qui s�pare le d�limiteur ouvrant du texte. Le % 4\ieme et dernier \meta{apr�s}, qui vaut |0| par d�faut, est % �galement optionnel. Il d�finit, en nombre % \DescribeMacro{\interof} de~|mu|s, la distance qui s�pare le texte % int�rieur du d�limiteur fermant. % % Le 3\ieme argument \meta{a b} est obligatoire, il fournit le texte � % placer entre les d�limiteurs. L'espace s�pare les deux valeurs % extr�mes de l'intervalle. On code donc \verb*|\interff{12 37/5}| % pour obtenir \interff{12 37/5} mais il faudra coder % |\interoo|\BOP\verb*|{\moinsinf{} |\BOP|\plusinf}| pour avoir % \interoo{\moinsinf{} \plusinf}. % % Le s�parateur des valeurs extr�mes de l'intervalle est soumis � la % cl� \Optioncle{nupletsep}. % % \subsubsection{La r�serve du bazar, miscellan�es} % % \DescribeMacro{\mdfrac}\mlabel{mdfrac} % Deux macros pour fain�ant donc pour moi \Sourire: \cs{mdfrac} et % \DescribeMacro{\mfrac}\mlabel{mfrac} % \cs{mfrac} permettent de saisir les fractions comme si on utilisait % |\(\dfrac{...}{...}\)| et |\(\frac{...}{...}\)| respectivement. On % pourra donc coder |\mfrac{1}{2}| pour obtenir \mfrac{1}{2}. % % \medbreak % % \DescribeMacro{\cnp}\mlabel{cnp} % Il fut une �poque o�, en France, on ne notait pas le nombre de % combinaisons comme dans le monde anglo-saxon, d'o� \cs{cnp}. La % tradition s'est perdue mais la macro est rest�e pour fournir la % notation \emph{nouvelle vague}. Avec |\cnp{n}{p}| on a % \cnp{n}{p}. L� encore il n'est pas n�cessaire de passer % explicitement en mode math�matique. % % \medbreak % % \DescribeMacro{\dans}\mlabel{dans} % Deux abr�viations pour �crire les d�finitions de fonctions. Je % trouve que \cs{dans} est plus court et plus facile � retenir que % \DescribeMacro{\donne}\mlabel{donne} \cs{longrightarrow} et qu'il en % est de m�me de \cs{donne} vis-�-vis de \cs{longmapsto}. De fait % |\(f\):| |\(\R \dans \R\);| |\(x \donne 2x\)| compose: \og \(f\): % \(\R \dans \R\); \(x \donne 2x\)\fg\footnote{D�but seconde, % peut-�tre \Sourire}. % % \medbreak % % \DescribeMacro{\vide}\mlabel{vide} % Je pr�f�re \vide � \(\emptyset\)\footnote{Celui-l� je m'en sers % tellement que j'avais oubli� son nom. Ce n'est pas \cs{nothing} mais % \cs{emptyset} pour faciliter le travail de la m�moire.} et par % paresse encore, je me suis fait une \cs{vide} qui permet de saisir % |\vide et autre| pour obtenir \og \vide et autre\fg. Merci % \cs{ensuremath} \emph{et} \cs{xspace}. % % \medbreak % % \DescribeMacro{\ppq}\mlabel{ppq} % Je veux ceci \(0 \ppq 1\) et \(2 \pgq 1\). Comme \cs{leqslant} et % \DescribeMacro{\pgq}\mlabel{pgq} % \cs{geqslant}, c'est pas beau, je me suis fait \cs{ppq} \TO \textbf{p}lus % \textbf{p}etit \textbf{q}ue\TF et \cs{pgq} \TO \textbf{g}rand. % % \medbreak % % \DescribeMacro{\ensemble}\mlabel{ensemble} % La macro \cs{ensemble} a deux arguments obligatoires, elle sert � % �crire la d�finition d'un ensemble comme \og % \ensemble{x\in\R}{f(x)\pgq \frac{1}{2}}\fg obtenu avec % |\ensemble|\BOP|{x\in\R}|\BOP|{f(x)\pgq \frac{1}{2}}| et dont l'aspect est % \[\ensemble{x\in\R}{f(x)\pgq \frac{1}{2}}\] % en hors-texte, du fait de la pr�sence de \cs{middle}, lorsque la cl� % bool�enne \Optioncle{SepDefEnsExt} vaut \OptionvalPresent{true} % comme c'est le cas par d�faut. % % Sa syntaxe compl�te est: % % \noindent\cs{ensemble}\oarg{avant}\marg{1\ier texte}\marg{2\ieme % texte}\oarg{apr�s} % % \noindent o� \meta{avant} et \meta{apr�s} doivent �tre des % nombres. Leur valeur par d�faut est |3|. Ces arguments optionnels % r�glent la distance avant et apr�s le symbole de s�paration, en % nombre de |mu|s. % % \subsection{Pour les taupes, taupins et taupines} % % Les macros de cette section ne sont d�finies que si l'on a pass� la % valeur \Optionval{true}{taupe} � la cl� \Optioncle{taupe}. Je ne % pense pas que ces macros soient utiles avant le sup�rieur. Cependant % aucun m�canisme n'est pr�vu pour s'assurer de la destination du % document final \Sourire % % \DescribeMacro{\K}\mlabel{K} % La macro \cs{K} donne \K, le corps bien connu, alias de \R ou \C. % % \medbreak % % \DescribeMacro{\prodscal}\mlabel{prodscal} % Cette macro permet d'�crire le produit scalaire comme on le trouve % assez souvent dans les bouquins pour taupins. Elle ne prend qu'un % seul argument obligatoire qui est une liste dont les �l�ments sont % s�par�s par des espaces. Les remarques formul�es � propos de % \cs{nuplet} s'appliquent donc ici. % % Avec |\prodscal{u v}| on obtient \og \prodscal{u v}\fg et avec % |\prodscal{\vectu{}| |\vectv|\BOP|}| ou |\prodscal{{\vectu}| % |\vectv}| on obtient \og \prodscal{{\vectu} \vectv}\fg. % % \bigbreak % % Je red�finis quelques macros classiques pour leur donner un aspect % fran�ais comme on le trouve encore souvent.\label{fonctiontaupe} % % Ce sont les fonctions taupiques usuelles \cs{sinh}, \cs{cosh}, % \cs{tanh} auxquelles j'ajoute \cs{cot} parce que j'ai d� en avoir % besoin un jour. % % On aura donc, \PX, \og \(\cosh x\)\fg en codant |\(\cosh x\)|. % % Je cr�e les macros \cs{argsh}, \cs{argch} et \cs{argth} pour les % fonctions hyperboliques r�ciproques. Par d�faut elles ont l'aspect % suivant: \(\argch x\), \(\argsh y\) et \(\argth z\). % % \medbreak % % Si on a pass� la valeur \Optionval{true}{ArgArcMaj} � la cl� % \Optioncle{ArgArcMaj} alors je d�finis les macros \cs{argsh}, % \cs{argch} et \cs{argth} pour qu'elles soient �crites avec une % majuscule comme \(\operatorname{Argsh}x\). Dans ce cas, je red�finis % �galement les macros \cs{arccos}, \cs{arcsin} et \cs{arctan} pour % qu'elles aient le m�me aspect. % % \begin{table}[h,t] % \centering % \caption{Macros red�finies dans \texttt{taupe.sto}} % \label{TABmacrosredeftaupe} % \begin{tabular}[c]{*{2}{l >{\(}l<{\)}}} % \cs{sinh} & \sinh x & \cs{cosh} & \cosh x\\ % \cs{tanh} & \tanh x & \cs{cot} & \cot y\\ % \end{tabular} % \end{table} % % \begin{table}[h,t] % \centering % \caption{Macros dont l'aspect d�pend de la cl� % \OptionclePresent{ArgArcMaj} --- aspect par d�faut} % \label{TABmacrosdefdouble} % \begin{tabular}[c]{*{2}{l >{\(}l<{\)}}} % \cs{arccos} & \arccos x & \cs{arcsin} & \arcsin x\\ % \cs{arctan} & \arctan x & \cs{argsh} & \argsh x\\ % \cs{argch} & \argch x & \cs{argth} & \argth x\\ % \end{tabular} % \end{table} % % Pour noter le noyau et l'image avec une majuscule, je fournis % \cs{Ker} \TO \(\Ker f\) avec |\(\Ker f\)| � comparer � \(\ker f\) % avec |\(\ker f\)|\TF et \cs{Img} qui donne \(\Img f\) avec % |\(\Img f\)| \TO \cs{Im} est d�j� prise pour noter la partie % imaginaire d'un complexe. % % \medbreak % % \DescribeMacro{\tendversen}\mlabel{tendversen} % Pour �crire \(f(x)\tendversen{0} \plusinf\), je fournis % \cs{tendversen}\marg{en} � utiliser \textbf{en mode % math�matique}. J'ai cod� % |\(f(x)|\BOP|\tendversen{0}| |\plusinf\)| l'exemple ci-avant. % % \medbreak % % \DescribeMacro{\devlim}\mlabel{devlim} % Je fournis \cs{devlim}\oarg{en}\marg{ordre} � utiliser en mode % math�matique pour obtenir \devlim{4} avec |\devlim{4}| et % \devlim[1]{7} avec |\devlim[1]{7}|. On remarque donc que \meta{en} % vaut |0| par d�faut. N'est-ce pas �trange? % % \medbreak % % \DescribeMacro{\parties}\mlabel{parties} % Pour �crire \parties{E}, je fournis \cs{parties} utilisable en mode % texte. Sa syntaxe est \cs{parties}\oarg{n}\marg{ensemble} o� % \emph{n} est un nombre de~|mu|s qui permet de r�gler la distance % entre \manus{p} et la parenth�se ouvrante, \emph{n} vaut |-2| par % d�faut; \emph{ensemble} est le nom de l'ensemble dont on consid�re % l'ensemble des parties, �tonnant, non? % % \medbreak % % \DescribeMacro{\drv}\mlabel{drv} % Pour �crire \og \drv{f(x)}{x}\fg, je fournis % \cs{drv}\BOP\marg{fonction}\BOP\marg{var} utilisable en mode % texte. J'ai cod� |\drv{f(x)}{x}| l'exemple ci-dessus. % % Cette macro admet d�sormais --- depuis la version % 1.3\SignalNouveau{1.3} --- un argument optionnel avec % |\drv[3]{f(x)}{x}| on obtient \og \drv[3]{f(x)}{x}\fg. % % \medbreak % % \DescribeMacro{\ddrv}\mlabel{ddrv} \cs{ddrv} est � \cs{drv}, ce que % \cs{dfrac} est � \cs{frac} et donc \og |et| |\ddrv{f(x)}{x}| % |vaut|\fg compose \og et \ddrv{f(x)}{x} vaut \fg, en bousillant % l'interligne comme pr�vu! Elle admet �galement un argument optionnel % qui joue le m�me r�le que celui de~\cs{drv}. % % \medbreak % % \DescribeMacro{\interent}\mlabel{interent} % Avec |\interent{3 12}| on obtient \interent{3 12}. Cette macro a % pour syntaxe compl�te: % \cs{interent}\BOP\oarg{md}\BOP\oarg{avant}\BOP\marg{n m}% % \BOP\oarg{apr�s}, les arguments jouant le m�me r�le que ceux des % macros pour intervalles, \Voir{interff}. % % Sa d�finition utilise \cs{llbracket} et \cs{rrbracket} fournis par % \Pkg{stmaryrd} charg� quand \Optioncle{taupe} vaut % \Optionval{true}{taupe}. % % \DescribeMacro{\interzn}\mlabel{interzn} % Cette macro permet d'obtenir \interzn avec \cs{interzn}. Sa syntaxe % est d�riv�e de celle de \cs{interent} et prend les m�mes arguments % \emph{optionnels} avec la m�me signification. Sa syntaxe est donc % \cs{interzn}\oarg{md}\oarg{avant}\oarg{apr�s}. % % \bigbreak % % Je consacre quelques lignes � la macro \cs{derpart} qui permet % d'obtenir \TO et je passe en mode math�matique hors-texte pour % l'occasion\TF % \[\derpart{f\rnuplet{x y z}}{xxyyyz}\] % avec le code |\[\derpart{f\rnuplet{x y z}}{xxyyyz}\]|. % % \DescribeMacro{\TdSMDerPartSepar}\mlabel{TdSMDerPartSepar} % Cette macro contient ce qui s�pare, \PX, un \(\partial x^{2}\) du % \(\partial y\) qui le suit. Par d�faut, elle est d�finie comme �tant % �gale � |\,| ce qui, � mon sens, am�liore le rendu. Mais on peut la % red�finir avec un coup de \cs{renewcommand}. % % \DescribeMacro{\derpart}\mlabel{derpart} % Comme on vient de le voir cette macro permet d'obtenir l'�criture de % la d�riv�e partielle. Sa syntaxe est: % % \noindent\cs{derpart}\marg{dessus}\marg{dessous} % % \noindent o� \meta{dessus} est le texte qui sera compos� � cot� du % \(\partial\) au num�rateur et \meta{dessous} est une liste de % lex�mes \TO � priori des lettres mais on peut y placer une macro % comme \cs{alpha} en la faisant suivre d'un espace\TF qui formeront % le d�nominateur. % % Cette macro assure le passage en mode math�matique si n�cessaire. % % Allez, encore un petit exemple, % |\[|\BOP|\derpart|\BOP|{f}|\BOP\verb*|{xyz zz\alpha\alpha x}|% % \BOP|\]| compose % \[\derpart{f}{x y z z z\alpha\alpha x}\] % et on voit que l'on peut se permettre de placer des espaces inutiles % \Sourire % % \textsf{Remarque}: pour les utilisateurs de \Pkg{paresse}. On ne % peut pas utiliser |�a| comme raccourci de \cs{alpha} dans le 2\ieme % argument de \cs{derpart}. �a serait analys� comme |�| puis |a| ce % qui n'est peut-�tre pas tout � fait ce que l'on veut. % % \subsection{Des suites pour le secondaire} % % Lorsque l'on passe la valeur \Optionval{true}{suite} � la cl� % \Optioncle{suite}, on charge le fichier \texttt{suite.sto} qui donne % acc�s � quelques macros concernant les suites. % % Depuis la version 1.3\SignalNouveau{1.3}, on obtient le chargement % de \texttt{suite.sto} en �crivant simplement % |\usepackage[suite]{tdsfrmath}|. % % \DescribeMacro{\suite}\mlabel{suite} % La premi�re macro \cs{suite} a pour syntaxe \cs{suite}\oarg{texte} % et la valeur par d�faut de \meta{texte} est |u|. Elle assure le mode % math�matique et on peut donc coder |\suite| pour avoir \og % \suite\fg. % % \DescribeMacro{\suite*}\mlabel{suite*} % La version �toil�e a pour syntaxe % \cs{suite}|*|\oarg{deco}\oarg{texte} o� \meta{texte} a la m�me % fonction que dans la version sans �toile et o� \meta{deco} vaut % \cs{N} \CAD \N par d�faut. On a donc \og \suite*\fg avec |\suite*|, % \og \suite*[\N*]\fg avec |\suite*[\N*]| et \og % \suite*[\N][w]\fg avec |\suite*[\N][w]|. % % \medbreak % % \LaTeX\ ne supporte pas les arguments optionnels imbriqu�s, les % parenth�ses dans |\suite*[{\N[*]}]| sont absolument indispensables, % c'est pourquoi j'ai d�fini les macros �toil�es, pluss�es et moins�es % pr�sent�es en \Page{plusse}. % % \medbreak % % \DescribeMacro{\suitar}\mlabel{suitar} La commande \cs{suitar} \TO % \texttt{ar} pour \emph{arithm�tique}\TF a pour syntaxe % % \noindent\cs{suitar}\oarg{texte}\marg{raison}\oarg{rang}\marg{prem}% % \oarg{entre} % % \noindent o� la valeur par d�faut de \meta{texte} est encore |u|, % \meta{raison} donne la valeur de la raison de la suite et % \meta{prem} la valeur du premier terme dont \meta{rang} est le % rang. Enfin \meta{entre}, qui vaut |{}| par d�faut, compose le % texte entre la suite et sa description. % % En codant |\suitar{3}{5}|, on compose \og \suitar{3}{5}\fg et, % avec |\suitar[w]{3}{5}|, on obtient \og \suitar[w]{3}{5}\fg, enfin, % avec |\suitar{3}[1]{5}|, on obtient \og \suitar{3}[1]{5}\fg. % % Avec \verb*|\suitar{3}{5}[ est]| on compose \og \suitar{3}{5}[ % est]\fg, on fera attention � laisser un blanc devant le texte ici. % Avec \verb*|\suitar{3}{5}[,]| on compose \og \suitar{3}{5}[,]\fg. % % \medbreak % % \DescribeMacro{\suitgeo}\mlabel{suitgeo} La commande \cs{suitgeo} a % la m�me syntaxe que \cs{suitar} mais cette fois elle concerne les % suites g�om�triques. En codant |\suitgeo{3}{5}|, on compose \og % \suitgeo{3}{5}\fg et, avec |\suitgeo[w]{3}{5}|, on obtient \og % \suitgeo[w]{3}{5}\fg, enfin, avec |\suitgeo[w]{3}[2]{5}|, on obtient % \og \suitgeo[w]{3}[2]{5}\fg. % % \DescribeMacro{\suitar*}\mlabel{suitar*} % Les versions �toil�es, \cs{suitar*} et \cs{suitgeo*} ont la syntaxe % suivante: % % \noindent\cs{suitar}|*|\oarg{deco}\oarg{texte}\marg{raison}\oarg{rang}% % \marg{prem}\oarg{entre} % % \noindent o� on retrouve l'argument optionnel \meta{deco} de % \cs{suite*} avec la m�me signification, \Voir{suite*}. % % On a donc \og \suitar*[\N*][v]{3}[1]{9}\fg avec le code % |\suitar*[\N*][v]{3}[1]{9}|. On prendra garde au fait que la macro % ne cherche pas � assurer la coh�rence entre l'ensemble des indices % et le rang du premier terme \Sourire % % \bigbreak % % Ce que je viens de d�crire est le comportement par d�faut de ces % \DescribeOptionCle{suitedeco}\clabel{suitedeco} macros \cs{suite}, % \cs{suitar}, \cs{suitgeo}, \cs{suite*}, \cs{suitar*} et % \cs{suitgeo*}, comportement obtenu lorsque la cl� % \DescribeOptionVal{false}{suitedeco} \Optioncle{suitedeco} a la % valeur \Optionval{false}{suitedeco}, sa valeur d'origine. Lorsque % l'on passe la valeur \Optionval{true}{suitedeco}, sa valeur par % d�faut, � la cl� \Optioncle{suitedeco} le comportement des macros % avec et sans �toile est invers�. % % \medbreak % % Quitte � �tre un peu lourd, avec |suitedeco=false| on a \og % \suite\fg avec |\suite| et \og \suite*\fg avec |\suite*|. Avec % |suitedeco=true| \TO ou simplement |suitedeco|\TF on a \og % \suite*\fg avec |\suite| et \og \suite\fg avec |\suite*|. % % On fera attention que, si l'on a donn� explicitement les premiers % arguments optionnels de \cs{suitar}, \PX, dans le cas o� % |suitedeco=true| on ne pourra pas tout bonnement repasser � % |suitedeco=false| sans remplacer les formes sans �toiles par des % formes �toil�es et vice-versa en faisant, de plus, attention au % 2\ieme argument optionnel donnant le \og nom\fg de la suite. Bref, % on choisira une fois pour toute la forme de base et on s'y tiendra! % % %\section{R�capitulatif} %\label{SECrecapitulatif} % % \subsection{Extensions charg�es} % % L'appel de \texttt{tdsfrmath} avec \cs{usepackage} entraine le % chargement des extensions suivantes: % \texttt{ifthen}, % \texttt{xkeyval}, % \texttt{amsmath}, % \texttt{amssymb} \TO si \Optioncle{avecmathdesign} a la valeur % \Optionval{false}{avecmathdesign}\TF, % \texttt{xspace}, % \texttt{xargs}, % \texttt{suffix}, % \texttt{xstring} % et, si la cl� \Optioncle{taupe} a la valeur \Optionval{true}{taupe}, % \texttt{stmaryrd} . % % Il n'est donc pas n�cessaire de les appeler avec \cs{usepackage} % dans le pr�ambule d'un document chargeant \texttt{tdsfrmath}. % % \subsection{Options} % % Dans la table~\ref{TABcles}, page~\pageref{TABcles}, je note \og % texte \TeX\fg pour dire que la valeur pass�e � la cl� doit �tre une % chaine de \emph{lettres} au sens de \TeX, \CAD les minuscules et % majuscules non accentu�es de l'ASCII comme on le trouve pour le nom % des macros. Le \og texte\fg tout court est ce qui sert � �crire les % noms des extensions, on ne devrait donc pas y trouver de caract�res % \emph{bizarres} mais on peut y voir des chiffres. % %\begin{table}[h,t] % \centering % \renewcommand{\arraystretch}{1.1} % \caption{les cl�s de \Pkg{tdsfrmath}} % \label{TABcles} % \begin{tabular}{*{2}{l} *{2}{>{\ttfamily}l} l}\hline % cl� & type & \multicolumn{2}{c}{valeur}&\multicolumn{1}{l}{r�f�rence} \\ % \multicolumn{1}{l}{}&\multicolumn{1}{l}{}&d'origine&par d�faut&voir page\\ % \hline\hline % avecmathdesign & bool�en & false & true& \pageref{avecMD}\\ \hline % taupe & bool�en & false & true &\pageref{cletaupe} \\ % ArgArcMaj & bool�en & false & true & \pageref{cleArgArcMaj} \\ \hline % suite & bool�en & false & true &\pageref{clesuite} \\ % suitedeco & bool�en & false & true &\pageref{clesuitedeco} \\ \hline % SepDefEnsExt& bool�en & true & true &\pageref{cleSepDefEnsExt} \\ \hline % CharPoCal & bool�en & true& true &\pageref{cleCharPoCal} \\ % calpack & texte & mathrsfs& &\pageref{clecalpack} \\ % calcomd & texte \TeX & mathscr& &\pageref{clecalcomd} \\ % caloptn & texte \TeX & ***& &\pageref{clecaloptn} \\ \hline % CharPoGdT & bool�en & false& true &\pageref{cleCharPoGdT} \\ % gdtpack & texte & ***& &\pageref{clegdtpack} \\ % gdtcomd & texte \TeX & ***& &\pageref{clegdtcomd} \\ % gdtoptn & texte \TeX & ***& &\pageref{clegdtoptn} \\ \hline % placesigne & choix & haut& &\pageref{cleplacesigne} \\ % ensdeco & choix & ebsh& &\pageref{cleensdeco} \\ \hline % nupletsep & choix & virgule & &\pageref{clenupletsep}\\ \hline % \end{tabular} %\end{table} % % % % \StopEventually{\listoftables} % \section{Le code} % \label{secCode} % %\subsection{Options et macros de service} %\label{SSECoptions} % % \iffalse %<*package> % \fi % Je commence par charger une extension bien utile tout de suite. % \begin{macrocode} \RequirePackage{ifthen} % \end{macrocode} % et une autre qui ne l'est pas moins. % \begin{macrocode} \RequirePackage{xkeyval} % \end{macrocode} % % Depuis la version 1.3\SignalNouveau{1.3}, je charge aussi % \changes{v1.3}{2009/06/04}{Chargement de \Pkg{xstring}} % \begin{macrocode} \RequirePackage{xstring} % \end{macrocode} % % \Pkg{tdsfrmath} est la premi�re extension o� je fais usage de % \Pkg{xkeyval} et de sa gestion de cl�s pour les options de % l'extension. % %\subsubsection{S�parateur des n-uplets} % % \begin{macro}{\TdSM@separateur} % Cette macro, d�termin�e par la cl� \Optioncle{nupletsep}, fournit % le s�parateur utilis� dans l'�criture des \(n\)-uplets comme dans % \nuplet{a b}. % % J'en profite pour signaler que toutes les macros \og secr�tes\fg % de cette extension commence par \cs{TdSM@}. % % Pour que, plus bas, \cs{ExecuteOptionsX} ait le bon gout de % consid�rer les options de l'extension, il faut utiliser le 2\ieme % argument de \cs{define@choicekey} en lui passant le nom complet du % fichier contenant l'extension. % % Pour des raisons de tranquilit� je regroupe toutes les cl�s % d�finies au niveau de l'extension dans le \emph{trousseau} \TO la % documentation de \texttt{xkeyval} parle simplement d'un pr�fixe\TF % \texttt{TdSM}, c'est la raison du 1\ier argument. % % Le 3\ieme argument contient le nom de la cl�. Le 4\ieme contient % deux macros qui prendront pour la premi�re la valeur pass�e � la % clef si elle est valide et pour la deuxi�me un nombre valant % \(-1\) si la valeur est invalide sinon le num�ro de la valeur dans % la liste \TO aux valeurs s�par�es par des virgules\TF constituant % le 5\ieme argument. Les valeurs sont num�rot�es en partant de |0|. % % Le 6\ieme argument contient du code qui est ex�cut� quand la % valeur pass�e � la cl� est valide. Ici, je me sers de \cs{nr} dans % le \cs{ifcase} pour d�finir \cs{TdSM@separateur} congrument au % choix de l'utilisateur: le 0\ieme cas est celui de la % \OptionvalPresent{virgule}, \&c. % % Le 7\ieme argument contient le code ex�cut� quand la valeur est % invalide. Ici �a consiste en un avertissement \TO erreur non % fatale\TF inscrit � la console et dans le \texttt{.log}. % % Grace au \texttt{+} on peut utiliser un 7\ieme argument. Grace au % \texttt{*}, la v�rification de la validit� de la valeur pass�e � % la cl� est faite apr�s que l'entr�e et la liste ont �t� pass�e en % minuscules. L'utilisateur peut donc saisir |[nupletsep=Virgule]| % sans troubler l'extension. % % � la sortie du traitement, on met \cs{val} � \cs{relax} % pour �viter de le rendre inutilisable alors que l'on n'en a plus % besoin. On fera la m�me chose avec \cs{nr} apr�s l'ex�cution des % options. % \changes{v1.3}{2009/01/08}{R��criture du code pour l'option % nupletsep} % \begin{macrocode} \newcommand{\TdSM@separateur}{\string,\,} \define@choicekey*+[TdSM]{tdsfrmath.sty}{nupletsep}[\val\nr]% {virgule,pointvirgule}{% \ifcase\nr\relax \renewcommand{\TdSM@separateur}{\string,\,}\or \renewcommand{\TdSM@separateur}{\,\string;\,}\fi }{% \PackageWarningNoLine{tdsfrmath}{la clef <<nupletsep>> ne connait pas <<\val>>\MessageBreak <<nupletsep=virgule>> en vigueur} } \let\val\relax % \end{macrocode} % \end{macro} % % \subsubsection{De l'aspect des noms des ensembles classiques} % % \begin{macro}{\TdSM@Decoration} % Cette macro place la d�coration. Elle est r�gl�e par % \Optioncle{ensdeco}. C'est par la d�claration de cette cl� que je % commence. La macro \cs{TdSM@DecoChoix} sert � conserver la trace % de la valeur pass�e � la cl�. On s'en servira au moment de d�finir % la macro \cs{TdSM@Decoration} % \begin{macrocode} \define@choicekey*+[TdSM]{tdsfrmath.sty}{ensdeco}[\TdSM@DecoChoix\nr]% {ehsb,ebsb,ehsh,ebsh,sbeb,sheh}{% \PackageInfo{tdsfrmath}{Vous avez choisi \TdSM@DecoChoix\@gobble} }{% \PackageWarningNoLine{tdsfrmath}{la clef <<ensdeco>> ne connait pas <<\TdSM@DecoChoix>>\MessageBreak <<ensdeco=ehsb>> en vigueur}% \def\TdSM@DecoChoix{ehsb}} % \end{macrocode} % \end{macro} % % \begin{macro}{\TdSM@PlaceSigne} % Cette macro place le signe seul. Elle est r�gl�e par % \Optioncle{placesigne}. La macro \cs{TdSM@PlaSiChoix} sert � % conserver la trace de la valeur pass�e � la cl�. On s'en servira % au moment de d�finir la macro \cs{TdSM@PlaceSigne} % \begin{macrocode} \define@choicekey*+[TdSM]{tdsfrmath.sty}{placesigne}[\TdSM@PlaSiChoix\nr]% {haut,bas}{% \PackageInfo{tdsfrmath}{Vous avez choisi \TdSM@PlaSiChoix\@gobble} }{% \PackageWarningNoLine{tdsfrmath}{la clef <<placesigne>> ne connait pas <<\TdSM@PlaSiChoix>>\MessageBreak <<placesigne=haut>> en vigueur}% \def\TdSM@PlaSiChoix{haut}} % \end{macrocode} % \end{macro} % % \subsubsection{Du choix de la police calligraphique} % % Le m�canisme de \texttt{xkeyval} cr�e la macro \cs{ifTdSM@CharPoCal} % et ses s�urs \cs{TdSM@CharPoCaltrue} et \cs{TdSM@CharPoCalfalse}. % Le 5\ieme argument contient \TO depuis la version % 1.3\SignalNouveau{1.3} \TF la valeur par d�faut |true| ce qui permet % � l'utilisateur d'obtenir le m�me comportement de \Pkg{tdsfrmath} % avec |\usepackage|\BOP|[CharPoCal]|\BOP|{tdsfrmath}| qu'avec % |\usepackage|\BOP|[CharPoCal| |=| |true]|\BOP|{tdsfrmath}|. Il en % sera de m�me avec toutes les cl�s bool�ennes de cette extension. % \changes{v1.3}{2009/06/04}{Utilisation de la valeur par d�faut des % cl�s bool�ennes} % % On ne confondra pas cette valeur par d�faut avec la valeur que la % cl� poss�de � l'ex�cution des options, autrement dit, la valeur de % la cl� lorsque l'extension est appel�e avec un simple % |\usepackage|\BOP|{tdsfrmath}|. Je parlerai alors de valeur % \emph{d'origine}. % % \begin{macrocode} \define@boolkey+[TdSM]{tdsfrmath.sty}[TdSM@]{CharPoCal}[true]{}% {\PackageWarningNoLine{tdsfrmath}{CharPoCal attend la valeur << true >> ou << false >>}} % \end{macrocode} % % Avec % \cs{define@cmdkey}\BOP|[TdSM]|\BOP|{tdsfrmath.sty}|\BOP|[TdSM@]|% % \BOP|{calpack}|\BOP|[]|\BOP|{}| je d�finis la cl� % \Optioncle{calpack} et conjointement une macro \cs{TdSM@calpack} qui % contiendra la valeur pass�e � la cl�. Le pr�fixe de la commande est % le contenu du 3\ieme argument. La cl� est \emph{attach�e au trousseau} % \texttt{TdSM} grace au 1\ier argument et, une fois encore, la % famille est obligatoire pour le fonctionnement ult�rieur du % \cs{ExecuteOptionsX} et \cs{ProcessOptionsX}, c'est l'objet du % 2\ieme argument. % % Le dernier pourrait contenir du code mais je m'occupe de la valeur % pass�e � la cl� plus bas, \emph{� la main}! % \begin{macrocode} \define@cmdkey[TdSM]{tdsfrmath.sty}[TdSM@]{calpack}[]{} \define@cmdkey[TdSM]{tdsfrmath.sty}[TdSM@]{calcomd}[]{} \define@cmdkey[TdSM]{tdsfrmath.sty}[TdSM@]{caloptn}[]{} % \end{macrocode} % \begin{macrocode} % \end{macrocode} % % \subsubsection{Du choix du gras de tableau} % % \begin{macrocode} \define@boolkey[TdSM]{tdsfrmath.sty}[TdSM@]{CharPoGdT}[true]{} % \end{macrocode} % \begin{macrocode} \define@cmdkey[TdSM]{tdsfrmath.sty}[TdSM@]{gdtpack}[]{} \define@cmdkey[TdSM]{tdsfrmath.sty}[TdSM@]{gdtcomd}[]{} \define@cmdkey[TdSM]{tdsfrmath.sty}[TdSM@]{gdtoptn}[]{} % \end{macrocode} % % \subsubsection{Un peu plus pour les taupes} % % Avec la cl� bool�enne \Optioncle{taupe}, on charge le fichier % \texttt{taupe.sto}. Cela permet de garder l'extension assez mince % pour une utilisation dans le secondaire. % % Si la valeur pass�e � la cl� est \texttt{true} alors % \cs{ifTdSM@taupe} est d�finie comme valant \texttt{true} ce qui % entrainera plus bas le chargement de l'extension \Pkg{stmaryrd} qui % fournit des symboles math�matiques dont celui dont je me sers pour % �crire les intervalles de~\N. % \begin{macrocode} \define@boolkey[TdSM]{tdsfrmath.sty}[TdSM@]{taupe}[true]{} % \end{macrocode} % Cl� fixant l'aspect des fonctions circulaires et hyperboliques % r�ciproques. % \begin{macrocode} \define@boolkey[TdSM]{tdsfrmath.sty}[TdSM@]{ArgArcMaj}[true]{} % \end{macrocode} % % \subsubsection{Des macros pour les suites} % % Avec la cl� bool�enne \Optioncle{suite}, on charge le fichier % \texttt{suite.sto}. % \begin{macrocode} \define@boolkey[TdSM]{tdsfrmath.sty}[TdSM@]{suite}[true]{} % \end{macrocode} % % \begin{macrocode} \define@boolkey[TdSM]{tdsfrmath.sty}[TdSM@]{suitedeco}[true]{} % \end{macrocode} % % \subsubsection{S�parateur de d�finition dans les ensembles} % % La cl� bool�enne \Optioncle{SepDefEnsExt}. % \begin{macrocode} \define@boolkey[TdSM]{tdsfrmath.sty}[TdSM@]{SepDefEnsExt}[true]{} % \end{macrocode} % % \subsubsection{Pour les utilisateurs de \Pkg{mathdesign}} % % La cl� bool�enne \Optioncle{avecmathdesign}. % \begin{macrocode} \define@boolkey[TdSM]{tdsfrmath.sty}[TdSM@]{avecmathdesign}[true]{} % \end{macrocode} % % \subsubsection{Ex�cutons les options} % % Il est temps d'ex�cuter les options par d�faut. Puis de s'occuper de % celles fournies par l'utilisateur. Pour finir, on relache une macro % qui n'a plus d'usage. % \begin{macrocode} \ExecuteOptionsX[TdSM]{% avecmathdesign=false,% taupe=false,% ArgArcMaj=false,% suite=false,% suitedeco=false,% nupletsep=virgule,% SepDefEnsExt=true,% placesigne=haut,% ensdeco=ehsb,% CharPoCal=true,calpack=mathrsfs,calcomd=mathscr,caloptn=***,% CharPoGdT=false,gdtpack=***,gdtcomd=***,gdtoptn=***} \ProcessOptionsX[TdSM]\relax \let\nr\relax % \end{macrocode} % % On charge maintenant les extensions n�cessaires � cette % extension. La moins connue, car la plus r�cente, est peut-�tre % \Pkg{xargs} que l'on verra � l'�uvre plusieurs fois pour d�finir des % macros acceptant plusieurs arguments optionnels. % % \begin{macrocode} \RequirePackage{amsmath} % \end{macrocode} % On ne charge \Pkg{amssymb} que si on d�clare ne pas utiliser % \Pkg{mathdesign}, c'est le comportement par d�faut. % \begin{macrocode} \ifTdSM@avecmathdesign\else\RequirePackage{amssymb}\fi \RequirePackage{xspace} \RequirePackage{xargs} \RequirePackage{suffix} % \end{macrocode} % Si on a pass� |[taupe=true]|, on charge \Pkg{stmaryrd} % \begin{macrocode} \ifTdSM@taupe \RequirePackage{stmaryrd} % \end{macrocode} % puis, � la fin de l'extension, on inclut le fichier % \texttt{taupe.sto} si on le trouve, sinon on gromm�le. % \begin{macrocode} \AtEndOfPackage{% \InputIfFileExists{taupe.sto}{% \PackageInfo{tdsfrmath}{fichier taupe.sto inclus\@gobble}}{% \PackageWarningNoLine{tdsfrmath}{fichier taupe.sto introuvable}}} \fi % \end{macrocode} % % On traite la cl� \Optioncle{suite} de m�me : % \begin{macrocode} \ifTdSM@suite \AtEndOfPackage{% \InputIfFileExists{suite.sto}{% \PackageInfo{tdsfrmath}{fichier suite.sto inclus\@gobble}}{% \PackageWarningNoLine{tdsfrmath}{fichier suite.sto introuvable}}} \fi % \end{macrocode} % % On commence par d�finir \cs{TdSM@MathCalPol} dans le cas o� % \Optioncle{avecmathdesign} est \OptionvalPresent{true} % \begin{macrocode} \ifTdSM@avecmathdesign \def\TdSM@MathCalPol{\mathscr} \PackageInfo{tdsfrmath}{On compte sur mathdesign !\MessageBreak La police calligraphique est << mathscr >> \@gobble} \else % \end{macrocode} % dans le cas contraire on traite la cl� \Optioncle{CharPoCal}. % Si on a |CharPoCal=true|, on s'occupe de la police calligraphique % \begin{macrocode} \ifTdSM@CharPoCal \PackageInfo{tdsfrmath}{La clef CharPoCal est vraie \@gobble} % \end{macrocode} % on s'inqui�te de l'existence de l'extension r�clam�e, on la charge, % avec l'�ventuelle option, si on la trouve % \begin{macrocode} \IfFileExists{\TdSM@calpack.sty}{% \ifthenelse{\equal{\TdSM@caloptn}{***}}% {\RequirePackage{\TdSM@calpack}} {\RequirePackage[\TdSM@caloptn]{\TdSM@calpack}} \def\TdSM@MathCalPol{\csname\TdSM@calcomd\endcsname} % \end{macrocode} % et, une fois charg�e l'extension, on teste l'existence de la % commande demand�e % \begin{macrocode} \@ifundefined{TdSM@MathCalPol}% % \end{macrocode} % on gromm�le si la macro est inconnue % \begin{macrocode} {\PackageWarningNoLine{tdsfrmath}{La macro << \TdSM@calcomd\space >> n'est pas connue\MessageBreak par l'extension \TdSM@calpack\space!\MessageBreak Revoyez la valeur de la clef << calcomd >> SVP}}% % \end{macrocode} % ou on signale que tout s'est pass� correctement. % \begin{macrocode} {\PackageInfo{tdsfrmath}{La police calligraphique est obtenue via << \TdSM@calcomd\space >>\@gobble}}}% % \end{macrocode} % Vient le cas ou l'extension n'est pas pr�sente: on gromm�le et on % d�finit la police calligraphique par d�faut. % \begin{macrocode} {\PackageWarningNoLine{tdsfrmath} {Extension \TdSM@calpack\space pas vue sur la machine.\MessageBreak La police calligraphique est << mathcal >>} \def\TdSM@MathCalPol{\mathcal}} % \end{macrocode} % Cela dit, il faut bien d�finir \cs{TdSM@MathCalPol} dans le cas o� % on la veut sortie de boite \CAD �gale � \cs{mathcal}. % \begin{macrocode} \else \PackageInfo{tdsfrmath}{La clef CharPoCal est fausse.\MessageBreak La police calligraphique est << mathcal >> \@gobble} \def\TdSM@MathCalPol{\mathcal} \fi \fi % \end{macrocode} % Si on a |CharPoGdT=true|, on s'occupe de la police du gras de % tableau en employant la m�me m�thode \TO et le m�me code \Sourire\TF % avec la diff�rence qu'il faut tenir compte du fait que, par d�faut, % \cs{TdSM@gdtcomd} contient \texttt{***} et que l'on peut \TO depuis % la version 1.1\TF d�finir une commande sans charger une extension % suppl�mentaire. % % On commence avec deux macros auxiliaires pour raccourcir le code % suivant. % \begin{macrocode} \newcommand\TdSM@DefinirGrasDefaut{% \def\TdSM@MathGdTPol{\mathbb}% \PackageInfo{tdsfrmath}{Gras de tableau obtenu par mathbb\@gobble}} \newcommand\TdSM@SiDefaut[1]{\ifthenelse{\equal{#1}{***}}} % \end{macrocode} % % On profite lachement du fait que la commande par d�faut de % \Pkg{mathdesign} pour obtenir du gras de tableau est aussi % \cs{mathbb} ce qui fait que l'on n'a pas � traiter diff�remment ici % le cas avec \Pkg{mathdesign} du cas sans ladite extension. % % On teste la cl� bool�enne |CharPoGdT| % \begin{macrocode} \ifTdSM@CharPoGdT \PackageInfo{tdsfrmath}{La clef << CharPoGdT >> est vraie\@gobble} \TdSM@SiDefaut{\TdSM@gdtpack} % \end{macrocode} % Si on n'a pas pass� de valeur � la clef |gdtpack| on regarde ce qui % l'en est pour la clef |gdtcomd|: % \begin{macrocode} {\TdSM@SiDefaut{\TdSM@gdtcomd} % \end{macrocode} % et si cette derni�re cl� n'est pas d�finie on demande � % l'utilisateur de bien vouloir faire des choix coh�rents! % \begin{macrocode} {\PackageWarningNoLine{tdsfrmath} {Je ne comprends pas ce que vous voulez !\MessageBreak Vous demandez une autre police de gras de tableau\MessageBreak sans donner ni extension (clef gdtpack)\MessageBreak ni commande (clef gdtcomd).\MessageBreak Revoyez la documentation SVP} \TdSM@DefinirGrasDefaut} % \end{macrocode} % Sinon, on d�finit \cs{TdSM@MathGdTPol} % \begin{macrocode} {\def\TdSM@MathGdTPol{\csname\TdSM@gdtcomd\endcsname} % \end{macrocode} % et on teste la disponibilit� de cette commande. % \begin{macrocode} \@ifundefined{TdSM@MathGdTPol}% % \end{macrocode} % Si elle n'est pas d�finie, on rousp�te et on prend la valeur par % d�faut % \begin{macrocode} {\PackageWarningNoLine{tdsfrmath} {La macro << \TdSM@gdtcomd\space >> n'est pas connue !\MessageBreak Revoyez la valeur de la clef << gdtcomd >> SVP} \TdSM@DefinirGrasDefaut}% % \end{macrocode} % sinon on informe, dans le |.log|, du choix effectu�. % \begin{macrocode} {\PackageInfo{tdsfrmath} {Le gras de tableau est obtenu via << \TdSM@gdtcomd\space >>\@gobble}}}} % \end{macrocode} % On passe au cas o� la cl� |gdtpack| a re�u une valeur % \begin{macrocode} {\IfFileExists{\TdSM@gdtpack.sty} % \end{macrocode} % On teste la pr�sence de l'extension sur le syst�me. Si le syst�me % est pr�sent, on s'occupe de la cl� |gdtoptn|. % \begin{macrocode} {\TdSM@SiDefaut{\TdSM@gdtoptn} % \end{macrocode} % Si elle a la valeur par d�faut, on charge l'extension sans option % \begin{macrocode} {\RequirePackage{\TdSM@gdtpack}} % \end{macrocode} % sinon on passe l'option � l'extension. % \begin{macrocode} {\RequirePackage[\TdSM@gdtoptn]{\TdSM@gdtpack}} % \end{macrocode} % On regarde la cl� |gtdcomd| % \begin{macrocode} \TdSM@SiDefaut{\TdSM@gdtcomd} % \end{macrocode} % si elle n'a pas re�u de valeur, on retombe dans le cas par d�faut % \begin{macrocode} {\TdSM@DefinirGrasDefaut} % \end{macrocode} % sinon on s'assure de la disponibilit� de la commande demand�e comme % ci-dessus. % \begin{macrocode} {\def\TdSM@MathGdTPol{\csname\TdSM@gdtcomd\endcsname} \@ifundefined{TdSM@MathGdTPol} {\PackageWarningNoLine{tdsfrmath} {La macro << \TdSM@gdtcomd\space >> n'est pas connue\MessageBreak par l'extension \TdSM@gdtpack\space!\MessageBreak Revoyez la valeur de la clef << gdtcomd >> SVP.}} {\PackageInfo{tdsfrmath} {Le gras de tableau est obtenu via << \TdSM@gdtcomd\space >>\@gobble}}}} % \end{macrocode} % On traite le cas o� le fichier de style requis est introuvable. Dans % ce cas on revient � la d�finition par d�faut. % \begin{macrocode} {\PackageWarningNoLine{tdsfrmath} {Extension \TdSM@gdtpack\space pas vue sur la machine} \TdSM@DefinirGrasDefaut}} % \end{macrocode} % On en a fini avec la premi�re branche du si \TO cas o� la cl� % |CharPoGdT| est vraie\TF et on passe � la 2\ieme branche. % \begin{macrocode} \else \PackageInfo{tdsfrmath}{La clef << CharPoGdT >> est fausse\@gobble} \TdSM@DefinirGrasDefaut \fi % \end{macrocode} % % Les options �tant trait�es, \cs{TdSM@DecoChoix} contient la valeur % pass�e � la cl� \Optioncle{ensdeco}. On peut d�finir % \cs{TdSM@Decoration} congrument. % \begin{macrocode} \ifthenelse{\equal{\TdSM@DecoChoix}{ehsb}}% {\newcommand\TdSM@Decoration[2]{^{#1}_{#2}}}{% \ifthenelse{\equal{\TdSM@DecoChoix}{sheh}}% {\newcommand\TdSM@Decoration[2]{^{#2#1}}}{% \ifthenelse{\equal{\TdSM@DecoChoix}{ehsb}}% {\newcommand\TdSM@Decoration[2]{^{#1}_{#2}}}{% \ifthenelse{\equal{\TdSM@DecoChoix}{ebsb}}% {\newcommand\TdSM@Decoration[2]{_{#1#2}}}{% \ifthenelse{\equal{\TdSM@DecoChoix}{sbeb}}% {\newcommand\TdSM@Decoration[2]{_{#2#1}}}{% \ifthenelse{\equal{\TdSM@DecoChoix}{ebsh}}% {\newcommand\TdSM@Decoration[2]{^{#2}_{#1}}}{% }}}}}} \let\TdSM@DecoChoix=\relax % \end{macrocode} % % De m�me pour \cs{TdSM@PlaceSigne}: % % \begin{macrocode} \ifthenelse{\equal{\TdSM@PlaSiChoix}{haut}}% {\newcommand\TdSM@PlaceSigne[1]{^{#1}}}% {\newcommand\TdSM@PlaceSigne[1]{_{#1}}} \let\TdSM@PlaSiChoix=\relax % \end{macrocode} % %\subsection{Les noms des ensembles} %\label{SSECnomsensembles} % % Pour pouvoir �crire \cs{R} afin d'obtenir \R, il faut quelques % macros auxiliaires par lesquelles je commence. % % \begin{macro}{\EnsembleDeNombre} % \changes{v1.3}{2009/03/12}{Avec |0| en 1\ier argument, on obtient % l'ensemble des polyn�mes} % \changes{v1.3}{2009/06/04}{On analyse autrement le 1\ier argument, % en utilisant \Pkg{xstring}} % La suivante fait le boulot de composition. % \begin{macrocode} \newcommandx\EnsembleDeNombre[4]{% \ensuremath{% \grastab{#1}{% \edef\TdSM@arg{\@firstofone#2}% \ifthenelse{\equal{\TdSM@arg}{1}}{}{% \ifthenelse{\equal{\TdSM@arg}{0}}{\mspace{#4mu}\left[#3\right]}{% \ifthenelse{\equal{\TdSM@arg}{*}}{^{\ast}}{% \ifthenelse{\equal{\TdSM@arg}{+}}{\TdSM@PlaceSigne{+}}{% \ifthenelse{\equal{\TdSM@arg}{-}}{\TdSM@PlaceSigne{-}}{% \ifthenelse{\equal{\TdSM@arg}{+*}\or\equal{\TdSM@arg}{*+}}{% \TdSM@Decoration{\ast}{+}}{% \ifthenelse{\equal{\TdSM@arg}{-*}\or\equal{\TdSM@arg}{*-}}{% \TdSM@Decoration{\ast}{-}}{% \IfBeginWith{\TdSM@arg}{-}{% _{\StrBehind{\TdSM@arg}{-}}\mspace{#4mu}\left[#3\right]}{% ^{\TdSM@arg}}}}}}}}}}}\xspace} % \end{macrocode} % \end{macro} % % \begin{macrocode} \newcommandx\N[2][1=1,2=X]% {\EnsembleDeNombre{N}{#1}{#2}{\TdSMReculParenthese}} \newcommandx\Z[2][1=1,2=X]% {\EnsembleDeNombre{Z}{#1}{#2}{\TdSMReculParenthese}} \newcommandx\Q[2][1=1,2=X]% {\EnsembleDeNombre{Q}{#1}{#2}{\TdSMReculParenthese}} \newcommandx\R[2][1=1,2=X]% {\EnsembleDeNombre{R}{#1}{#2}{\TdSMReculParenthese}} \newcommandx\C[2][1=1,2=X]% {\EnsembleDeNombre{C}{#1}{#2}{\TdSMReculParenthese}} % \end{macrocode} % % David \textsc{Kastrup} ayant �crit r�cemment que la commande \LaTeX\ % \cs{@ifstar} qui teste la pr�sence d'une �toile |*| derri�re une % commande n'�tait pas des plus recommandables, j'utilise son % extension \Pkg{suffix} pour d�finir les commandes �toil�es et, tant % que j'y suis, les commandes pluss�es, moins�es et autres sur le m�me % mod�le.\phantomsection\label{suffixe} % \begin{macrocode} \WithSuffix\newcommand\N*{\N[*]} \WithSuffix\newcommand\Z*{\Z[*]} \WithSuffix\newcommand\Q*{\Q[*]} \WithSuffix\newcommand\R*{\R[*]} \WithSuffix\newcommand\C*{\C[*]} \WithSuffix\newcommand\Q+{\Q[+]} \WithSuffix\newcommand\R+{\R[+]} \WithSuffix\newcommand\Q-{\Q[-]} \WithSuffix\newcommand\R-{\R[-]} \WithSuffix\newcommand\R>{\R[+*]} \WithSuffix\newcommand\R<{\R[-*]} % \end{macrocode} % \begin{macro}{\R/} % \changes{v1.3}{2009/03/12}{Ajout des commandes \cs{R/} et \cs{R/+}} % \begin{macrocode} \DeclareRobustCommand{\TdSM@Rcomplet}{\ensuremath{\overline{\R}}} \WithSuffix\newcommand\TdSM@Rcomplet+{\ensuremath{\overline{\R+}}} \WithSuffix\newcommand\R/{\TdSM@Rcomplet} % \end{macrocode} % \end{macro} % % \iffalse %</package> % \fi % % \iffalse %<*taupe> % \fi % Commen�ons par nous pr�senter puisque c'est la premi�re fois que % l'on rencontre ce fichier auxiliaire: % \begin{macrocode} \ProvidesFile{taupe.sto}% [\filedate\space\fileversion\space Pour tdsfrmath -- option taupe] % \end{macrocode} % % \begin{macrocode} \newcommandx\K[2][1=1,2=X]% {\EnsembleDeNombre{K}{#1}{#2}{\TdSMReculParenthese}} \WithSuffix\newcommand\K*{\K[*]} % \end{macrocode} % \iffalse %</taupe> % \fi % %\subsection{Couples, paires, triplets etc.} %\label{SSECcouples} % % Il s'agit maintenant de d�finir les macros qui permettent d'obtenir, % \PX, \nuplet{a b c} avec \verb*|\nuplet{a b c}|. On aura not� que % la d�limitation des arguments est obtenue avec des espaces. % % L� encore, je commence par une macro auxiliaire. Elle a pour t�che % de r�cup�rer une liste d'arguments d�limit�s par des espaces et de % fournir une liste de ces m�mes arguments s�par�s par le s�parateur % fix� par \Optioncle{nupletsep}. Elle est bas�e sur une macro que % Manuel \textsc{P�gouri�-Gonnard}, l'auteur de \Pkg{xargs}, m'a, tr�s % aimablement, fourni en r�ponse � une mienne question sur \fctt. % % La seule \og astuce\fg est l'utilisation de \verb*|#1#2 #3|, ou % l'�quivalent ensuite, pour r�cup�rer ce que je veux. Comme |#1| est % imm�diatement suivi de |#2|, \TeX\ le consid�re comme non-d�limit� % et, quand on utilise la macro, il prendra le premier lex�me % \emph{diff�rent d'un espace}. Le |#2| se chargera de r�cup�rer alors % tout ce qui suit jusqu'� l'espace suivant. Et s'il n'y a rien � % r�cup�rer il restera vide. Avec cette man�uvre, je permets de coder % \verb*|\nuplet{ a b}| pour obtenir \nuplet{ a b}. % % \iffalse %<*package> % \fi % \begin{macrocode} \newcommand\TdSMnuplet[1]{\TdSM@nuplet #1 \@nil} % \end{macrocode} % % \begin{macrocode} \def\TdSM@nuplet #1#2 #3{% \ifx\@nil #3% #1#2% \else #1#2\TdSM@separateur% \TdSM@nupletaux #3\fi} % \end{macrocode} % \begin{macrocode} \def\TdSM@nupletaux#1\fi{ \fi\TdSM@nuplet#1} % \end{macrocode} % % \begin{macro}{\EncloreExtensible} % \changes{v1.3}{2008/11/26}{Ajout de \cs{mathopen} et % % \cs{mathclose} pour r�gler les distances ext�rieures.} % \changes{v1.3}{2009/06/03}{Changement de noms internes: % \cs{@v@nt} et \cs{@pr@s} deviennent \cs{TdS@v@nt} et \cs{TdS@pr@s}} % Pour \emph{passer} le mode � l'int�rieur de la macro, en vue de % prendre la bonne d�finition des d�limiteurs, j'ai besoin d'un % bool�en. % \begin{macrocode} \newboolean{TdSM@horstexterequis} \setboolean{TdSM@horstexterequis}{false} \newcommandx{\EncloreExtensible}[4][1=1]{% \ifthenelse{#1=0}% {\setboolean{TdSM@horstexterequis}{true}}% {\setboolean{TdSM@horstexterequis}{false}}% % \end{macrocode} % J'ai r�gl� le cas de l'argument optionnel. Il faut voir si on ne % serait pas en mode math�matique (\cs{ifmmode}) interne % (\cs{ifinner}) \CAD math�matique en ligne, ou, au contraire en mode % math�matique hors-texte o� il faut faire quelque chose: % \begin{macrocode} \ifmmode\ifinner\else \setboolean{TdSM@horstexterequis}{true}% \fi\else\fi % \end{macrocode} % On ouvre un groupe et on s'assure d'�tre en mode math�matique et on % agit en accord avec la valeur du bool�en % \texttt{TdSM@horstexterequis} qui contient le renseignement % n�cessaire: % \begin{macrocode} {\ensuremath{% \ifthenelse{\boolean{TdSM@horstexterequis}}% {\displaystyle\def\TdS@v@nt{\left #2}\def\TdS@pr@s{\right #3}}% % \end{macrocode} % En hors-texte \TO naturel ou forc�\TF on a des d�limiteurs % extensibles, % \begin{macrocode} {\ifthenelse{\equal{#2}{.}}% {\def\TdS@v@nt{\relax}}% {\def\TdS@v@nt{\mathopen#2}}% \ifthenelse{\equal{#3}{.}}% {\def\TdS@pr@s{\relax}} {\def\TdS@pr@s{\mathclose#3}}}% % \end{macrocode} % il n'en est rien en mode en ligne mais il faut tenir compte du % d�limiteur fantome donn� par le point. % % Et, pour finir, on compose le texte attendu. % \begin{macrocode} \TdS@v@nt #4 \TdS@pr@s}}} % \end{macrocode} % \end{macro} % % Avec \cs{EncloreExtensible}, je d�finis maintenant plusieurs macros % usuelles. % \begin{macrocode} \newcommandx{\parent}[2][1=1]{\EncloreExtensible[#1]{(}{)}{#2}} \newcommandx{\accol}[2][1=1]{\EncloreExtensible[#1]{\{}{\}}{#2}} \newcommandx{\crochet}[2][1=1]{\EncloreExtensible[#1]{[}{]}{#2}} \newcommandx{\varabs}[2][1=1]{% \EncloreExtensible[#1]{\lvert}{\rvert}{#2}} \newcommandx{\norme}[2][1=1]{\EncloreExtensible[#1]{\lVert}{\rVert}{#2}} \newcommand{\nuplet}[2][1]{\parent[#1]{\TdSMnuplet{#2}}} \newcommand{\anuplet}[2][1]{\accol[#1]{\TdSMnuplet{#2}}} % \end{macrocode} % % \begin{macro}{\TdSMReculParenthese} % \begin{macrocode} \newcommand\TdSMReculParenthese{-2} % \end{macrocode} % \end{macro} % \begin{macro}{\rnuplet} % \begin{macrocode} \newcommandx\rnuplet[3][1=1,3=\TdSMReculParenthese]{% \mspace{#3mu}\nuplet[#1]{#2}} % \end{macrocode} % \end{macro} % %\subsection{Vecteurs, bases et rep�res} %\label{SSECvecteurs} % % \begin{macro}{\definirvecteur} % \begin{macrocode} \newcommand{\definirvecteur}[4][***]{% \ifthenelse{\equal{#1}{***}}% {\@ifundefined{vect#2}% {\expandafter\def\csname vect#2\endcsname{% \TdSM@fairevecteur{#2}{#3}{#4}\xspace}}% {\PackageError{tdsfrmath}% {Erreur il y a un vecteur de nom << #2 >>}% {Vous pouvez utiliser la macro << redefinivecteur >> \MessageBreak si c'est bien le nom que vous vouliez}}}% {\@ifundefined{vect#1}% {\expandafter\def\csname vect#1\endcsname{% \TdSM@fairevecteur{#2}{#3}{#4}\xspace}}% {\PackageError{tdsfrmath}% {Erreur il y a un vecteur de nom << #1 >>}% {Vous pouvez utiliser la macro << redefinivecteur >> \MessageBreak si c'est bien le nom que vous vouliez}}}} \newcommand{\redefinirvecteur}[4][***]{% \ifthenelse{\equal{#1}{***}}% {\@ifundefined{vect#2}% {\PackageError{tdsfrmath}% {Erreur il n'y a pas de vecteur de nom << #2 >>}% {Vous pouvez utiliser la macro << definivecteur >> \MessageBreak si c'est bien le nom que vous vouliez}} {\expandafter\let\csname vect#1\endcsname=\relax% \definirvecteur[#1]{#2}{#3}{#4}}}% {\@ifundefined{vect#1}% {\PackageError{tdsfrmath}% {Erreur il n'y a pas de vecteur de nom << #1 >>}% {Vous pouvez utiliser la macro << definivecteur >> \MessageBreak si c'est bien le nom que vous vouliez}} {\expandafter\let\csname vect#1\endcsname=\relax% \definirvecteur[#1]{#2}{#3}{#4}}}} % \end{macrocode} % \end{macro} % \begin{macrocode} \definirvecteur[i]{\imath}{-1}{3} \definirvecteur[j]{\jmath}{0}{5} \definirvecteur{k}{-1}{1} \definirvecteur{u}{0}{3} \definirvecteur{v}{0}{3} % \end{macrocode} % La macro suivante fait le travail de % composition.\mlabel{TdSMAfairevecteur} % \begin{macrocode} \newcommand\TdSM@fairevecteur[3]{% \ensuremath{\overrightarrow{\mspace{#2mu}{#1}\mspace{#3mu}}}} % \end{macrocode} % % \begin{macro}{\vecteur} % J'utilise \Pkg{suffix} pour d�finir la commande \cs{vecteur*} % apr�s avoir d�fini \cs{vecteur}. % % \cs{vecteur} et \cs{vecteur*} b�n�ficient eux aussi de % \cs{newcommandx} qui permet l'utilisation de plusieurs arguments % optionnels. % \begin{macrocode} \newcommandx\vecteur[3][1=1,3=5]{\TdSM@fairevecteur{#2}{#1}{#3}} % \end{macrocode} % % Nous voyons que le code suivant est plac� sous l'�gide de % \textsc{Parmentier}: r�utilisation des restes \Sourire % % \begin{macrocode} \WithSuffix\newcommandx\vecteur*[3][1=1,3=5]{\vecteur{\text{#2}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\V} % \begin{macrocode} \newcommand{\V}{\vecteur} % \end{macrocode} % \end{macro} % % La macro suivante g�re les erreurs dans la macro d'apr�s. C'est en % fran�ais puisque cette extension est au bon gout de chez nous % \Sourire La seule difficult� c'est de ne pas mettre de lettre % accentu�e dans le message sinon �a donne des hy�roglyphes \TO enfin, % presque\TF lors de l'affichage tant dans le fichier \texttt{.log} % qu'� l'�cran. Petit exercice de style! % \begin{macrocode} \newcommand\TdSM@ErreurArgBase{% \PackageError{tdsfrmath}{Argument optionnel hors limites}{% L'argument optionnel vaut 2 par defaut\MessageBreak mais ne prend que les valeurs 1, 2 ou 3.}} % \end{macrocode} % % \begin{macro}{\base} % La macro \cs{base} admet un seul argument, s'il est nul ou s'il est % plus grand que \(3\) la macro se plaint � l'aide de la macro % pr�c�dente. % \begin{macrocode} \newcommand{\base}[1][2]{% \ifcase #1\TdSM@ErreurArgBase\or \nuplet{\vecti}\or \nuplet{\vecti{} \vectj}\or \nuplet{\vecti{} \vectj{} \vectk}\or \TdSM@ErreurArgBase\fi\xspace} % \end{macrocode} % \end{macro} % % \begin{macro}{\repere} % Reprend en le modifiant le code de \cs{base}. % \begin{macrocode} \newcommandx{\repere}[2][1=2,2=O]{% \ifcase #1\TdSM@ErreurArgBase\or \nuplet{#2 \vecti}\or \nuplet{#2 \vecti{} \vectj}\or \nuplet{#2 \vecti{} \vectj{} \vectk}\or \TdSM@ErreurArgBase\fi\xspace} % \end{macrocode} % \end{macro} % % Viennent maintenant des macros qui servent essentiellement % d'abr�viations. Comme je ne sais quel sera le codage choisi pour le % document final, je place les accents � la \TeX, ce qui assure la % \emph{portabilit�}. % \begin{macrocode} \newcommand{\rog}{rep\`ere orthogonal \repere} \newcommand{\ron}{rep\`ere orthonormal \repere} \newcommand{\rond}{rep\`ere orthonormal direct \repere} \newcommand{\repcom}{\nuplet{O \vectu{} \vectv}\xspace} \newcommand{\roncom}{rep\`ere orthonormal \repcom} \newcommand{\rondcom}{rep\`ere orthonormal direct \repcom} % \end{macrocode} % % \begin{macro}{\Repere} % Pour la forme �toil�e je reprends \cs{WithSuffix}. % \begin{macrocode} \newcommand{\Repere}{\nuplet{O I J}} \WithSuffix\newcommand\Repere*{\nuplet{\text{O} \text{I} \text{J}}} % \end{macrocode} % \end{macro} % \begin{macrocode} \newcommand{\Rog}{rep\`ere orthogonal \Repere} \newcommand{\Ron}{rep\`ere orthonormal \Repere} \newcommand{\Rond}{rep\`ere orthonormal direct \Repere} % \end{macrocode} % % \subsection{L'exponentielle} % \label{SSECfonctions} % \begin{macro}{\E} % On peut penser que un \cs{DeclareMathOperator} pourrait suffire ici % mais avec la d�finition choisie on peut utiliser la m�me macro dans % le texte autant qu'en mode math�matique, sans passer explicitement % en mode math, cela me semble suffisant pour justifier l'effort de % codage \TO si tant est que ce soit un effort \Sourire % \begin{macrocode} \newcommand*\E{\ensuremath{\textup{e}}\xspace} % \end{macrocode} % \end{macro} % \begin{macro}{\eu} % et la fonction % \begin{macrocode} \newcommand*\eu[1]{\ensuremath{\E^{#1}}} % \end{macrocode} % \end{macro} % % \subsection{Le nombre i} % \begin{macro}{\I} % M�me op�ration qu'avec \cs{E}. % \begin{macrocode} \newcommand\I{\ensuremath{\textup{i}}\xspace} % \end{macrocode} % \end{macro} % % \subsection{Int�grales} % \label{SSECintegrales} % % Je commence par d�finir des registres de dimensions math�matiques % \TO dont on ne peut pas dire qu'on en abuse dans les diff�rentes % extensions de \LaTeX\TF pour r�gler des distances � l'int�rieur des % int�grales. Leurs noms me semblent assez parlants. % \begin{macrocode} \newmuskip\TdSM@reculintegrande \newmuskip\TdSM@avancedx \TdSM@reculintegrande=6mu \TdSM@avancedx=4mu % \end{macrocode} % % Je donne � l'utilisateur de quoi les modifier globalement. % \begin{macrocode} \newcommand\FixeReculIntegrande[1]{\TdSM@reculintegrande=#1mu} \newcommand\FixeAvanceDx[1]{\TdSM@avancedx=#1mu} % \end{macrocode} % % Je fournis la macro \cs{D} avec un \cs{providecommand} \Voir{D} pour % la raison. % \begin{macrocode} \providecommand*\D{\textup{d}} % \end{macrocode} % % \begin{macro}{\intgen} % Vient ensuite la macro la plus g�n�rale. % \begin{macrocode} \newcommandx{\intgen}[5][1=1,2=\the\TdSM@reculintegrande]{% \ensuremath{% \ifnum #1=0\displaystyle\fi \int_{#3}^{#4}\mspace{-#2}{#5}}} % \end{macrocode} % \end{macro} % \begin{macro}{\integrer} % \begin{macrocode} \newcommandx{\integrer}[7]% [1=1,2=\the\TdSM@reculintegrande,7=\the\TdSM@avancedx]{% \ensuremath{% \ifnum #1=0\displaystyle\fi \int_{#3}^{#4}{\mspace{-#2}{#5}\mspace{#7}\D{#6}}}} % \end{macrocode} % \end{macro} % \begin{macrocode} \newcommandx{\integrale}[7]% [1=1,2=\the\TdSM@reculintegrande,7=\the\TdSM@avancedx]{% \integrer[#1][#2]{#3}{#4}{#5(#6)}{#6}[#7]} \newcommandx{\intabfx}[3]% [1=1,2=\the\TdSM@reculintegrande,3=\the\TdSM@avancedx]{% \integrale[#1][#2]{a}{b}{f}{x}[#3]\xspace} % \end{macrocode} % % \subsection{Au bonheur du math�maticien, bazar} % \label{SSECbazar} % % \begin{macrocode} \newcommand{\plusinf}{\ensuremath{+\infty}\xspace} \newcommand{\moinsinf}{\ensuremath{-\infty}\xspace} % \end{macrocode} % % La macro qui suit est une macro de service, elle place le texte � % l'int�rieur des d�limiteurs des intervalles et assimil�s. % \begin{macrocode} \newcommand{\TdSM@dedans}[3]{\mspace{#1mu}\TdSMnuplet{#2}\mspace{#3mu}} % \end{macrocode} % Je m'en sers dans les quatre macros suivantes. % % \begin{macro}{\interff} % La version pr�c�dente des macros \cs{inter..} �tait erron�e car la % valeur par d�faut du premier argument, optionnel, �tait fix�e � % |0|. Il faut |1| car, par d�faut, on ne veut pas forcer le style % hors texte. % \changes{v1.2}{2008/09/17}{Correction de la valeur par d�faut du % 1\ier argument.} % \begin{macrocode} \newcommandx{\interff}[4][1=1,2=1,4=0]% {\crochet[#1]{\TdSM@dedans{#2}{#3}{#4}}} % \end{macrocode} % \end{macro} % \begin{macrocode} \newcommandx{\interoo}[4][1=1,2=1,4=0]{% \EncloreExtensible[#1]{]}{[}{\TdSM@dedans{#2}{#3}{#4}}} \newcommandx{\interof}[4][1=1,2=1,4=0]{% \EncloreExtensible[#1]{]}{]}{\TdSM@dedans{#2}{#3}{#4}}} \newcommandx{\interfo}[4][1=1,2=1,4=0]{% \EncloreExtensible[#1]{[}{[}{\TdSM@dedans{#2}{#3}{#4}}} \newcommandx{\intferab}[2][1=1,2=0]{\interff[#1]{a b}[#2]} % \end{macrocode} % % Et maintenant quelque chose de compl�tement diff�rent: % \begin{macrocode} \newcommand{\mdfrac}[2]{\ensuremath{\dfrac{#1}{#2}}} \newcommand{\mfrac}[2]{\ensuremath{\frac{#1}{#2}}} % \end{macrocode} % % Les fameuses polices: % \begin{macrocode} \newcommand*{\manus}[1]{% \ensuremath{\TdSM@MathCalPol{\MakeUppercase{#1}}}} \newcommand*{\grastab}[1]{% \ensuremath{\TdSM@MathGdTPol{#1}}} % \end{macrocode} % Des abr�viations qu'elles sont utiles: % \begin{macrocode} \newcommand*{\cnp}[2]{\ensuremath{\binom{#1}{#2}}} \newcommand*{\dans}{\longrightarrow} \newcommand*{\donne}{\longmapsto} \newcommand*{\vide}{\ensuremath{\varnothing}\xspace} \newcommand*{\ppq}{\ensuremath{\leqslant}} \newcommand*{\pgq}{\ensuremath{\geqslant}} % \end{macrocode} % et pour �crire les d�finitions des ensembles % \begin{macrocode} \newcommand*{\TdSMsepdefens}{/} \ifTdSM@SepDefEnsExt \newcommandx*{\ensemble}[4][1=3,4=3]{% \accol{{#2}% \mspace{#1mu}% \ifthenelse{\boolean{TdSM@horstexterequis}}{\middle}{}% \TdSMsepdefens \mspace{#4mu}% {#3}}} \else \newcommandx*{\ensemble}[4]{% \accol{{#2}\mspace{#1mu}\TdSMsepdefens\mspace{#4mu}{#3}}} \fi % \end{macrocode} % \iffalse %</package> % \fi % % \subsection{Le fichier \texttt{taupe.sto}} % \label{SSECtaupesto} % % Ce qui suit n'est charg�, et donc d�fini, que si l'on a pass� % la valeur \Optionval{true}{taupe} � la cl� \Optioncle{taupe}. % \iffalse %<*taupe> % \fi % \begin{macrocode} \newcommandx{\prodscal}[4][1=1,2=1,4=1]{% \EncloreExtensible[#1]{\langle}{\rangle}{\TdSM@dedans{#2}{#3}{#4}}} % \end{macrocode} % % On pourra r�utiliser l'astuce: pour red�finir une macro cr��e avec % des moyens \LaTeX iens, il faut d'abord la rendre �quivalente \TO % par \cs{let}\TF � \cs{relax}. La red�finition devient alors possible % avec les moyens \LaTeX iens classiques. % % Ici, cependant, pour me faciliter la t�che, j'�cris une macro % auxiliaire \cs{TdSM}\BOP|@Re|\BOP|Declare|\BOP|Math|\BOP|Operator| % qui fait bien ce que je demande avec toutefois un l�ger d�savantage: % elle ne v�rifie pas que la macro \og red�finie\fg existe bien au % pr�alable. Du fait de ce fonctionnement pas tr�s canonique, elle % restera cach�e \Sourire % % \begin{macrocode} \newcommand{\TdSM@ReDeclareMathOperator}{% \@ifstar{\@redeclmathop m}{\@redeclmathop o}} \long\def\@redeclmathop#1#2#3{% \let#2=\relax% \DeclareRobustCommand{#2}{\qopname\newmcodes@#1{#3}}} % \end{macrocode} % et je m'en sers % \begin{macrocode} \TdSM@ReDeclareMathOperator{\cosh}{ch} \TdSM@ReDeclareMathOperator{\sinh}{sh} \TdSM@ReDeclareMathOperator{\tanh}{th} \TdSM@ReDeclareMathOperator{\cot}{cotan} % \end{macrocode} % et ensuite uniquement si \Optioncle{ArgArcMaj} vaut % \Optionval{true}{ArgArcMaj} % \begin{macrocode} \ifTdSM@ArgArcMaj \TdSM@ReDeclareMathOperator{\arccos}{Arccos} \TdSM@ReDeclareMathOperator{\arcsin}{Arcsin} \TdSM@ReDeclareMathOperator{\arctan}{Arctan} \fi % \end{macrocode} % et j'ajoute de nouvelles d�finitions. % \begin{macrocode} \ifTdSM@ArgArcMaj \DeclareMathOperator{\argch}{Argch} \DeclareMathOperator{\argsh}{Argsh} \DeclareMathOperator{\argth}{Argth} \else \DeclareMathOperator{\argch}{argch} \DeclareMathOperator{\argsh}{argsh} \DeclareMathOperator{\argth}{argth} \fi % \end{macrocode} % % \begin{macrocode} \DeclareMathOperator{\Ker}{Ker} \DeclareMathOperator{\Img}{Im} % \end{macrocode} % % \begin{macrocode} \newcommand*{\tendversen}[1]{\xrightarrow[#1]\relax} % \end{macrocode} % % \begin{macrocode} \newcommand*{\devlim}[2][0]{\ensuremath{\text{DL}_{#2}{\parent{#1}}}} % \end{macrocode} % % \begin{macrocode} \newcommand*{\parties}[2][-2]{% \ensuremath{\manus{p}\mspace{#1mu}\parent{{#2}}}} % \end{macrocode} % \begin{macro}{\drv} % \changes{v1.3}{2008/11/26}{R��criture avec un argument optionnel.} % \begin{macrocode} \newcommand{\drv}[3][***]{\ensuremath{% \frac{\D\ifthenelse{\equal{#1}{***}}{}{^{#1}}#2}% {\D#3\ifthenelse{\equal{#1}{***}}{}{^{#1}}}}} \newcommand{\ddrv}[3][***]{\ensuremath{\displaystyle\drv[#1]{#2}{#3}}} % \end{macrocode} % \end{macro} % \begin{macrocode} \newcommandx{\interent}[4][1=1,2=2,4=2]{% \EncloreExtensible[#1]{\llbracket}{\rrbracket}% {\TdSM@dedans{#2}{#3}{#4}}} \newcommandx{\interzn}[3][1=1,2=2,3=2]{\interent{0 n}\xspace} % \end{macrocode} % % \subsection{D�riv�es partielles} % \label{SSECderpart} % % \begin{macro}{\TdSMDerPartSepar} % Cette macro contient ce qui s�pare, \PX, un \(\partial x^{2}\) du % \(\partial y\) qui le suit. Par d�faut, elle est d�finie comme �tant % �gale � |\,| ce qui, � mon sens, am�liore le rendu. Mais on peut la % red�finir avec un coup de \cs{renewcommand}. % \begin{macrocode} \newcommand\TdSMDerPartSepar{\,} % \end{macrocode} % \end{macro} % % % % \begin{macro}{\derpart} % Je vais maintenant tenter d'expliquer clairement la construction de % la macro \cs{derpart}. % % \textsf{Attention}: je n'ai aucune pr�tention � fournir ici un code % optimis�. Je l'ai test�, il fait ce que je veux qu'il fasse et \og % sam suffi\fg. % % \textsf{Remarque}: ce code est bas� une fois encore sur celui % fourni par Manuel \textsc{P�gouri�-Gonnard} pour traiter les noms de % fichiers. % % Pour commencer, on notera que la d�finition de \cs{derpart} est % entour�e d'une double paire de parenth�ses |{{...}}|. Cela assure % que les macros d�finies � l'int�rieur resteront inconnues au niveau % du document et que les compteurs utilis�s retrouveront leur �tat % ant�rieur au sortir de la macro. Bref on utilise la capacit� de % \TeX\ � \og localiser\fg d�finitions et modifications de compteurs % et macros. % % J'utilise \cs{count@} et \cs{count0} parce qu'ils existent d�j� et % que �a m'�vite d'en cr�er deux expr�s. On pourra se reporter � la % documentation sur le noyau de \LaTeXe, \texttt{source2e.pdf} % disponible avec toutes les bonnes distributions de \TeX. % % \cs{count0} contient le nombre de lettres identiques successives % trouv�es � l'it�ration consid�r�e. \cs{count@} vaut � la fin le % nombre total de caract�res contenus dans la chaine constituant le % 2\ieme argument de la macro \cs{derpart}. % % La macro \cs{TdSM@sentinelle} a la valeur |@@| et la garde tout le % temps. La macro \cs{TdSM@precedent} commence l'aventure avec la m�me % valeur. Cela permet de tester le d�but de la lecture du 2\ieme % argument que j'appelerai d�sormais \emph{la chaine}. % % Au d�but du jeu, les macros \cs{TdSM@DenomAux} et \cs{TdSM@Denom} % sont vides. � la fin \cs{TdSM@Denom} contient le d�nominateur de la % d�riv�e partielle, pass� en 2\ieme argument de \cs{frac}. La macro % \cs{TdSM@DenomAux}, quant � elle, permet de construire % \cs{TdSM@Denom} en me facilitant la t�che � la fin de la chaine. % \begin{macrocode} \newcommand\derpart[2]{{% \count@=1 \def\TdSM@sentinelle{@@}% \def\TdSM@precedent{@@}% \def\TdSM@DenomAux{}% \def\TdSM@Denom{}% % \end{macrocode} % % \cs{TdSM@Puissance} place un exposant \TO il viendra derri�re le % caract�re\TF si cet exposant est sup�rieur �~\(1\). % \begin{macrocode} \def\TdSM@Puissance{% \ifnum\count0>1 ^{\the\count0}\fi}% % \end{macrocode} % % \cs{TdSM@FaireDenom} sert � cr�er le d�nominateur. Comme sa % d�finition est donn�e � l'int�rieur d'une d�finition \TO celle de % \cs{derpart}\TF il faut doubler les \emph{di�ses} |#| d�notant les % arguments. J'utilise \cs{edef} pour forcer le d�veloppement imm�diat % de \cs{TdSM@Denom} dans la d�finition m�me de % \cs{TdSM@Denom}. Supposons, pour faire simple, que \cs{TdSM@Denom} % contienne \texttt{tralala} au moment o� \TeX\ arrive sur % \cs{TdSM@FaireDenom}\BOP|{truc}|. Apr�s l'ex�cution de cette % commande, \cs{TdSM@Denom} se d�veloppe en % |tralala |\BOP|\mathchar"140 |\BOP|truc|. % % En utilisant un simple \cs{def} � la place du \cs{edef}, on partait % dans une de ces boucles infinies dont \TeX\ se sort en invoquant la % finitude de sa m�moire. % \begin{macrocode} \def\TdSM@FaireDenom##1{% \edef\TdSM@Denom{\TdSM@Denom \partial ##1}} % \end{macrocode} % % Voici maintenant la macro \cs{TdSM@derpartaux} qui fait la plus % grosse partie du boulot. % \begin{macrocode} \def\TdSM@derpartaux##1##2{% \ifx\@nil##2% % \end{macrocode} % Voici ce qui arrive lorsque le 2\ieme argument vaut \cs{@nil} \CAD % lorsque l'on arrive � la fin de la chaine: on place la valeur du % 1\ier argument |##1| dans \cs{TdSM@actuel}. % \begin{macrocode} \def\TdSM@actuel{##1}% % \end{macrocode} % On regarde s'il a la m�me valeur que le pr�c�dent, plac� dans % \cs{TdSM@precedent}. % \begin{macrocode} \ifx\TdSM@actuel\TdSM@precedent % \end{macrocode} % Si oui, on incr�mente le compteur \(0\) et on doit tenir compte de % la puissance % \begin{macrocode} \advance\count0 by 1 \TdSM@FaireDenom{\TdSM@precedent\TdSM@Puissance}% \else % \end{macrocode} % sinon on regarde si la valeur pr�c�dente est �gale � la sentinelle % \begin{macrocode} \ifx\TdSM@precedent\TdSM@sentinelle % \end{macrocode} % auquel cas \cs{TdSM@actuel} contient l'unique lettre de la chaine et % on peut �crire le d�nominateur. % \begin{macrocode} \TdSM@FaireDenom{\TdSM@actuel}% \else % \end{macrocode} % Si ce n'est pas le cas il faut placer la lettre pr�c�dente avec la % bonne puissance puis placer l'actuelle: % \begin{macrocode} \TdSM@FaireDenom{% \TdSM@precedent\TdSM@Puissance \TdSMDerPartSepar\partial\TdSM@actuel}% \fi \fi % \end{macrocode} % Dans le cas o� le 2\ieme argument ne vaut pas \cs{@nil} c'est que % l'on n'est pas encore au bout. % \begin{macrocode} \else \def\TdSM@actuel{##1}% % \end{macrocode} % On tient compte du cas o� le \cs{TdSM@precedent} est �gal � la % sentinelle, auquel cas on met le compteur � \(0\). % \begin{macrocode} \ifx\TdSM@precedent\TdSM@sentinelle \count0=1 \else % \end{macrocode} % Sinon, soit la lettre actuelle est �gale � la pr�c�dente et on % incr�mente le compteur~\(0\) % \begin{macrocode} \ifx\TdSM@actuel\TdSM@precedent \advance\count0 by 1 \else % \end{macrocode} % soit elle ne l'est pas et on place dans le d�nominateur la lettre % pr�c�dente � la bonne puissance et on remet le compteur~\(0\) � % z�ro. % \begin{macrocode} \TdSM@FaireDenom{% \TdSM@precedent\TdSM@Puissance\TdSMDerPartSepar}% \count0=1 \fi \fi % \end{macrocode} % Enfin, on incr�mente le compteur |@| g�n�ral, on place la lettre % actuelle dans \cs{TdSM@precedent} et on appelle la macro % \cs{TdSM@derpart@continue} sur le 2\ieme argument. L'astuce ici est % que le \cs{fi} ferme le premier \cs{if} et que, dans le m�me temps, % il d�limite l'argument de la macro \cs{TdSM@derpart@continue} % \begin{macrocode} \advance\count@ by 1 \let\TdSM@precedent\TdSM@actuel% \TdSM@derpart@continue##2% \fi}% % \end{macrocode} % comme on le voit dans sa d�finition qui consiste � replacer un % \cs{fi} et rappeler \cs{TdSM@derpartaux} sur ce qui suit: % \begin{macrocode} \def\TdSM@derpart@continue##1\fi{\fi\TdSM@derpartaux##1}% % \end{macrocode} % Maintenant que \cs{TdSM@derpartaux} est d�finie, on s'en sert sur le % 2\ieme argument de \cs{derpart} en pla�ant le \cs{@nil} qui signale % la fin de la chaine puis on compose la fraction en assurant le mode % math�matique. % \begin{macrocode} \TdSM@derpartaux#2\@nil% \ensuremath{\frac% {\partial\ifnum\count@>1^{\the\count@}\fi #1}% {\TdSM@Denom}}% }} % \end{macrocode} % \end{macro} % \iffalse %</taupe> % \fi % \iffalse %<*suite> % \fi % \begin{macrocode} \ProvidesFile{suite.sto}% [\filedate\space\fileversion\space Pour tdsfrmath -- option suite] % \end{macrocode} % \begin{macro}{\suite} % \changes{v1.3}{2009/01/07}{Ajout de \cs{xspace} dans le code de % \cs{suite} et \cs{suite*} pour �viter que la macro mange l'espace % derri�re} % \begin{macrocode} \ifTdSM@suitedeco \newcommandx\suite[2][1=\N,2=u]{\ensuremath{\parent{{#2}_{n}}_{#1}}\xspace} \newcommandx\suitar[6][1=\N,2=u,4=0,6={}]{% \suite[#1][#2]#6 la suite arithm\'etique de raison % $r = #3$ et de premier terme $#2_{#4}=#5$} \newcommandx\suitgeo[6][1=\N,2=u,4=0,6={}]{% \suite*[#1][#2]#6 la suite g\'eom\'etrique de raison % $q = #3$ et de premier terme $#2_{#4}=#5$} \WithSuffix\newcommand\suite*[1][u]{\parent{{#1}_{n}}\xspace} \WithSuffix\newcommandx\suitar*[5][1=u,3=0,5={}]{% \suite*[#1]#5 la suite arithm\'etique de raison % $r = #2$ et de premier terme $#1_{#3}=#4$} \WithSuffix\newcommandx\suitgeo*[5][1=u,3=0,5={}]{% \suite*[#1]#5 la suite g\'eom\'etrique de raison % $q = #2$ et de premier terme $#1_{#3}=#4$} \else \newcommand\suite[1][u]{\parent{{#1}_{n}}\xspace} \newcommandx\suitar[5][1=u,3=0,5={}]{% \suite[#1]#5 la suite arithm\'etique de raison % $r = #2$ et de premier terme $#1_{#3}=#4$} \newcommandx\suitgeo[5][1=u,3=0,5={}]{% \suite[#1]#5 la suite g\'eom\'etrique de raison % $q = #2$ et de premier terme $#1_{#3}=#4$} \WithSuffix\newcommandx\suite*[2][1=\N,2=u]{% \ensuremath{\suite[#2]_{#1}}\xspace} \WithSuffix\newcommandx\suitar*[6][1=\N,2=u,4=0,6={}]{% \suite*[#1][#2]#6 la suite arithm\'etique de raison % $r = #3$ et de premier terme $#2_{#4}=#5$} \WithSuffix\newcommandx\suitgeo*[6][1=\N,2=u,4=0,6={}]{% \suite*[#1][#2]#6 la suite g\'eom\'etrique de raison % $q = #3$ et de premier terme $#2_{#4}=#5$} \fi % \end{macrocode} % \end{macro} % % Et ici se termine l'extension \texttt{tdsfrmath}. % % Scripsit TdS. % \iffalse %</suite> % \fi % \vspace{2\baselineskip} % \begin{center} % \large Remerciements % \end{center} % Je tiens � remercier Maxime \textsc{Chupin} pour l'aide qu'il m'a % apport�e pour am�liorer \Pkg{tdsfrmath}. % % Je remercie �galement Manuel \textsc{P�gouri�-Gonnard} pour les % diverses r�ponses intelligentes et utiles � mes questions qui ne le % furent pas toujours et Christian \textsc{Tellechea} dont j'utilise % le \Pkg{xstring} et dont je n'oublie pas qu'il m'a envoy� du code % qui fera son apparition dans la prochaine version. % % \vspace{2\baselineskip} % % \Finale \PrintChanges\PrintIndex \endinput %%% Local Variables: %%% mode: doctex %%% coding: iso-8859-15 %%% fill-column: 70 %%% End: