% Fichier VIDIANI.MAC version 06 10 95 %+----------------------------------------------------------------------------+ %| | %| Macros TeX pour VIDIANI | %| | %+----------------------------------------------------------------------------+ %------------------------------------------------------------------ Sécurité % Le code qui suit permet de ne charger les macros que la première fois % en cas d'appels multiples : \ifx\vidianicharge\undefined\let\next\relax\else\let\next\endinput\fi\next \def\vidianicharge{Vidiani chargé} \input carnotps.mac \def\trait{\vskip 2mm\hrule\vskip 2mm} \def\num#1{\sv\leavevmode\llap{\bf#1) }} % numéro dans la marge \def\cadrerelief{\let\fincadreinterne=\fincadrerelief\cadreinterne} \def\fincadrerelief{{% \setbox0=\hbox{\fincadredouble}% % texte à encadrer \offinterlineskip % empilement exact \setbox1=\vtop to 6pt{% % motif à répéter \vskip-1pt % \ tenu par le bout \hbox to 3pt{\hskip-0.5pt$\backslash$\hss}\vss}% % supérieur \setbox2=\vtop{\vskip-1.3pt\hbox{\hskip-1.7pt$\backslash$}}% % \ de référence \dimen0=\dp2\advance\dimen0-\dp1 % correction de profondeur \setbox0=\vtop{% % assemblage vertical \copy0 % texte \hbox to\wd0{\xleaders\copy1\hfil}% % hachures horizontales \vskip\dimen0 % corrige la profondeur \hbox to\wd0{\hskip\wd2\hrulefill\hskip-\wd2}}% % trait inférieur \dimen1=\ht0\advance\dimen1\dp0\advance\dimen1-\dimen0 % mesure hauteur totale \hbox{% % assemblage horizontal \copy0 % texte et hachures H \raise\ht0\vtop to\dimen1{\null\xleaders\copy1\vfil}% % hachures verticales \hskip-\wd1\hskip\wd2 % corrige la largeur \advance\dimen1\dimen0 % hauteur trait vertical \raise\ht0\vtop to\dimen1{\vskip\dp2\xleaders\vrule\vfil}}}} % trait droit % Cette macro m'a donné du fil à retordre ! Les \vskip et \hskip figurant % dans \box1 et \box2 ont été déterminées expérimentalement de sorte que % les traits obliques,horizontaux et verticaux se raccordent bien. Il est % possible que ça ne marche pas avec une \magnification différente de 1000. %----------------------------------------- tableau d'intégration par parties % % \IPP{u=... &du=... \cr dv=... &v=... \cr} produit le tableau : % % Ú u = ... ³ du = ... % ´ ³ % À dv = ... ³ v = ... % % Se placer en mode mathématique avant d'appeler la macro. \def\IPP#1{ \left\{\, % accolade ouvrante \vcenter{ % centrer ce qui suit \offinterlineskip % lignes collées pour le trait vertical \def\d##1{\ifx##1dd\else\phantom d##1\fi} % macro d'alignement : % si le 1er caractère n'est pas d, insère '\phantom d'. \halign{\strut$\d##$\hfil\quad\vrule\quad&$\d##$\hfil\cr#1}}% alignement \,\right.} % fausse accolade fermante %--------------------------------------------- Liste de termes et opérateurs % \liste a b(c,d,...,z) % a = macro fonction d'un paramètre % b = opérateur % c,d,...,z = paramètres pour la macro a ou \dots % résultat -> a{c} b a{d} b ... b a{z} % délimiteurs : a s'étend jusqu'au prochain espace % b s'étend jusqu'à la parenthèse ouvrante % exemples : \liste x_{#1} + (0,1,\dots,n) -> x_0 + x_1 + \dots + x_n % a \liste (a-#1) (1,\dots,n+1) -> a (a-1) \dots (a-n+1) \def\liste#1 #2(#3){% \def\elementliste##1{#1}% % enregistre la macro a \def\operateurliste{#2}% % enregistre l'opérateur b \suiteliste#3,)} % traite les indices \def\suiteliste#1,#2{% % #1 = indice suivant \ifx#1\dots\dots\else\elementliste{#1}\fi % \dots ou a{#1} \ifx#2)\let\next\relax % fin de liste ? \else\operateurliste % sinon place b \def\next{\suiteliste#2}\fi % et boucle \next} % \relax ou \suiteliste#2 %-------------------------------------------------- Fontes et symboles spéciaux \def\carre{{\tenmsa\char3}} % carré vide \def\Carre{{\tenmsa\char4}} % carré plein \def\perpg{\hbox{\tenmsa\char121}} % Ù \def\perpd{\hbox{\tenmsa\char120}} % À \def\liong{\ps{lion,,20pt,-1 0 0 1}} % petit lion tourné à gauche \def\liond{\ps{lion,,20pt}} % petit lion tourné à droite \def\Liong{\ps{lion,,40pt,-1 0 0 1}} % grand lion tourné à gauche \def\Liond{\ps{lion,,40pt}} % grand lion tourné à droite \def\vache{\ps{vache,,20pt}} % tête de vache \def\idee{\ps{idee,,20pt}} % ampoule électrique \def\danger{\ps{danger,,20pt}} % panneau de danger \def\Gliong{\ps{lion,,80pt,-1 0 0 1}} % petit lion tourné à gauche \def\Gliond{\ps{lion,,80pt}} % petit lion tourné à droite \def\GLiong{\ps{lion,,160pt,-1 0 0 1}} % grand lion tourné à gauche \def\GLiond{\ps{lion,,160pt}} % grand lion tourné à droite \def\Gvache{\ps{vache,,60pt}} % tête de vache \def\Gidee{\ps{idee,,40pt}} % ampoule électrique \def\Gdanger{\ps{danger,,40pt}} % panneau de danger %------------------------------ Portrait de Carnot ---------------------------- %\def\carnot#1#2{\leavevmode\hbox{% %\ifx h#1\font\temp=carnot scaled\magstephalf %\else\font\temp=carnot scaled \magstep#1\fi %\temp\char#2}} % ne marche plus : utiliser carnotg et ses confrères \def\carnotg{\ps{carnot,, 80pt}} \def\carnotd{\ps{carnot,, 80pt,-1 0 0 1}} \def\Gcarnotg{\ps{carnot,,160pt}} \def\Gcarnotd{\ps{carnot,,160pt,-1 0 0 1}} \def\tvi{\vrule height 12pt depth 5pt width 0pt}\def\tv{\tvi\vrule} %------------------------------- Fin du fichier -------------------------------