%% fichier 'font.tex' \message{fonts,} \catcode `\@ = 11 \def \ComputerModern {% \font \fourtybf = cmbx10 at 40pt \font \thirtybf = cmbx10 at 30pt \font \twentyfivebf = cmbx10 at 24.88pt \font \twentytt = cmtt10 at 20.74pt \font \twentybf = cmbx10 at 20.74pt \font \twentysl = cmsl10 at 20.74pt \font \fourteenbf = cmbx10 scaled 1440 \font \fourteenrm = cmr10 scaled 1440 \font \fourteensc = cmcsc10 at 14.40pt \font \fourteensy = cmsy10 at 14.40pt \font \fourteenmsam = msam10 at 14.40pt \font \fourteenmsbm = msbm10 at 14.40pt \font \fourteenmi = cmmi10 at 14.40pt \font \fourteensl = cmsl10 at 14.40pt \font \fourteenit = cmti10 at 14.40pt \font \fourteentt = cmtt10 at 14.40pt \font \twelvemi = cmmi10 at 12pt \font \twelvebf = cmbx12 \font \twelveit = cmti12 \font \twelverm = cmr12 \font \twelvesl = cmsl12 \font \twelvett = cmtt12 \font \twelvesy = cmsy10 at 12pt \font \twelvemsam = msam10 at 12pt \font \twelvemsbm = msbm10 at 12pt \font \twelvesc = cmcsc10 at 12pt \font \tenrm = cmr10 \font \tensl = cmsl10 \font \tenslbf = cmbxsl10 \font \tenit = cmti10 %% jp \font \tenli = cmli10 \font \tenbf = cmbx10 \font \tentt = cmtt10 \font \tenmi = cmmi10 \font \tenex = cmex10 \font \tensy = cmsy10 \font \tensc = cmcsc10 \font \tenmsam = msam10 \font \tenmsbm = msbm10 \font \tenbfmi = cmmib10 \font \tenssit = cmssi10 \font \tenss = cmss10 \font \tenwncyr = wncyr10 \font \ninerm = cmr9 \font \ninemi = cmmi9 \font \nineex = cmex9 \font \ninesy = cmsy9 \font \ninebf = cmbx9 \font \nineit = cmti9 \font \ninesl = cmsl9 \font \ninett = cmtt9 %% \font \nineli = cmli9 \font \ninemsam = msam10 at 9pt \font \ninemsbm = msbm10 at 9pt \font \ninesc = cmcsc9 \font \eighttt = cmtt8 \font \eightrm = cmr8 \font \eightmi = cmmi8 \font \eightsy = cmsy8 \font \eightmsam = msam10 at 8pt \font \eightmsbm = msbm10 at 8pt \font \eightbf = cmbx8 \font \eightex = cmex10 at 8pt \font \eightit = cmti8 \font \eightsl = cmsl8 \font \sevenrm = cmr7 \font \sevenbf = cmbx7 \font \sevenmi = cmmi7 \font \sevenex = cmex7 \font \sevensy = cmsy7 \font \sevenmsam = msam10 at 7pt \font \sevenmsbm = msbm10 at 7pt %%\font \truesevenmi = cmmi7 at 7truept \font \fiverm = cmr5 \font \fivebf = cmbx5 \font \fivemi = cmmi5 \font \fivesy = cmsy5 \font \fivemsam = msam10 at 5pt \font \fivemsbm = msbm10 at 5pt \font \fivesl = cmsl10 at 5pt %%\font \truefivemi = cmmi5 at 5truept } %%Attention : ne jamais recharger ce fichier, car cela redefinit les numeros des %%familles suivantes, et le traitement des symboles de la famille \|\specialchar| %%s'en ressent, car ces symboles sont designes comme faisant partie de la famille %%8 (et non pas \|\specialchar|, qu'il n'est alors pas possible de designer %%formellement, voir le fichier SYMBOL.TEX) %% jp \newfam \itfam % \it is family 4 %% jp \newfam \slfam % \sl is family 5 %% jp \newfam \bffam % \bf is family 6 %% jp \newfam \ttfam % \tt is family 7 \newfam \specialchar % Family for blackboard bold symbols (family 8) \newfam \otherspecialchar % Family for others symbols (family 9) %%% la galere du jmath %%% \newbox \jmathbox \setbox \jmathbox \hbox {\bgroup \it j\egroup } \newdimen \tmpdimen \tmpdimen \ht \jmathbox \advance \tmpdimen by -2.1pt \ht \jmathbox \tmpdimen \def \putjmath {% {\copy \jmathbox }} %%%%%%%%%%%%%%%%%%%%%%%%% \def \Times {% %%% la galere du jmath %%% \let \jmath \putjmath %%%%%%%%%%%%%%%%%%%%%%%%% \font \fourtybf = ptmb at 40pt \font \thirtybf = ptmb at 30pt \font \twentyfivebf = ptmb at 24.88pt \font \twentymi = zptmcmrm at 24.88pt \font \twentytt = pcrb at 20.74pt \font \twentybf = ptmb at 20.74pt \font \twentysl = ptmro at 20.74pt \font \fourteenbf = ptmb scaled 1440 \font \fourteenrm = ptmr scaled 1440 %% \font \fourteensc = cmcsc10 at 14.40pt \font \fourteensy = zpzccmry at 14.40pt \font \fourteenmsam = msam10 at 14.40pt \font \fourteenmsbm = msbm10 at 14.40pt \font \fourteenmi = zptmcmrm at 14.40pt \font \fourteensl = ptmro at 14.40pt \font \fourteenit = ptmri at 14.40pt \font \fourteentt = pcrb at 14.40pt \font \twelvemi = zptmcmrm at 12pt \font \twelvebf = ptmb at 12pt \font \twelveit = ptmri at 12pt \font \twelverm = ptmr at 12pt \font \twelvesl = ptmro at 12pt \font \twelvett = pcrb at 12pt \font \twelvesy = zpzccmry at 12pt \font \twelvemsam = msam10 at 12pt \font \twelvemsbm = msbm10 at 12pt %% \font \twelvesc = cmcsc10 at 12pt \font \tenrm = ptmr \font \tensl = ptmro \font \tenslbf = cmbxsl10 \font \tenit = ptmri %% jp \font \tenli = cmli10 \font \tenbf = ptmb \font \tentt = pcrb %% \font \tenmi = zptmcm7m at 10pt %% \font \tenex = zpsycmrv at 10pt %% \font \tensy = zptmcm7y at 10pt \font \tenmi = zptmcmrm at 10pt \font \tenex = zpsycmrv at 10pt \font \tensy = zpzccmry at 10pt \font \tensc = cmcsc10 \font \tenmsam = msam10 \font \tenmsbm = msbm10 \font \tenbfmi = cmmib10 \font \tenssit = cmssi10 \font \tenss = cmss10 \font \tenwncyr = wncyr10 \font \ninerm = ptmr at 9pt \font \ninemi = zptmcmrm at 9pt \font \nineex = zpsycmrv at 9pt \font \ninesy = zpzccmry at 9pt \font \ninebf = ptmb at 9pt \font \nineit = ptmri at 9pt \font \ninesl = ptmro at 9pt \font \ninett = pcrb at 9pt %% \font \nineli = cmli9 \font \ninemsam = msam10 at 9pt \font \ninemsbm = msbm10 at 9pt \font \ninesc = cmcsc9 \font \eighttt = pcrb at 8pt \font \eightrm = ptmr at 8pt \font \eightmi = zptmcmrm at 8pt \font \eightsy = zpzccmry at 8pt \font \eightmsam = msam10 at 8pt \font \eightmsbm = msbm10 at 8pt \font \eightbf = cmbx8 \font \eightex = zpsycmrv at 8pt \font \eightit = ptmri at 8pt \font \eightsl = ptmro at 8pt \font \sevenrm = ptmr at 7pt \font \sevenbf = ptmb at 7pt \font \sevenmi = zptmcmrm at 7pt \font \sevenex = zpsycmrv at 7pt \font \sevensy = zpzccmry at 7pt \font \sevenmsam = msam10 at 7pt \font \sevenmsbm = msbm10 at 7pt %%\font \truesevenmi = cmmi7 at 7truept \font \fiverm = ptmr at 5pt \font \fivebf = ptmb at 5pt \font \fivemi = zptmcmrm at 5pt \font \fivesy = zpzccmry at 5pt \font \fivemsam = msam10 at 5pt \font \fivemsbm = msbm10 at 5pt \font \fivesl = cmsl10 at 5pt } \def \Palatino {% %%% la galere du jmath %%% \let \jmath \putjmath %%%%%%%%%%%%%%%%%%%%%%%%% \font \fourtybf = pplb at 40pt \font \thirtybf = pplb at 30pt \font \twentyfivebf = pplb at 24.88pt \font \twentytt = pcrb at 20.74pt \font \twentybf = pplb at 20.74pt \font \twentysl = pplro at 20.74pt \font \fourteenbf = pplb scaled 1440 \font \fourteenrm = pplr scaled 1440 %% \font \fourteensc = cmcsc10 at 14.40pt \font \fourteensy = zpzccmry at 14.40pt \font \fourteenmsam = msam10 at 14.40pt \font \fourteenmsbm = msbm10 at 14.40pt \font \fourteenmi = zptmcmrm at 14.40pt \font \fourteensl = pplro at 14.40pt \font \fourteenit = pplri at 14.40pt \font \fourteentt = pcrb at 14.40pt \font \twelvemi = zptmcmrm at 12pt \font \twelvebf = pplb at 12pt \font \twelveit = pplri at 12pt \font \twelverm = pplr at 12pt \font \twelvesl = pplro at 12pt \font \twelvett = pcrb at 12pt \font \twelvesy = zpzccmry at 12pt \font \twelvemsam = msam10 at 12pt \font \twelvemsbm = msbm10 at 12pt %% \font \twelvesc = cmcsc10 at 12pt \font \tenrm = pplr \font \tensl = pplro \font \tenslbf = cmbxsl10 \font \tenit = pplri %% jp \font \tenli = cmli10 \font \tenbf = pplb \font \tentt = pcrb \font \tenmi = zptmcmrm at 10pt \font \tenex = zpsycmrv at 10pt \font \tensy = zpzccmry at 10pt \font \tensc = cmcsc10 \font \tenmsam = msam10 \font \tenmsbm = msbm10 \font \tenbfmi = cmmib10 \font \tenssit = cmssi10 \font \tenss = cmss10 \font \tenwncyr = wncyr10 \font \ninerm = pplr at 9pt \font \ninemi = zptmcmrm at 9pt \font \nineex = zpsycmrv at 9pt \font \ninesy = zpzccmry at 9pt \font \ninebf = pplb at 9pt \font \nineit = pplri at 9pt \font \ninesl = pplro at 9pt \font \ninett = pcrb at 9pt %% \font \nineli = cmli9 \font \ninemsam = msam10 at 9pt \font \ninemsbm = msbm10 at 9pt \font \ninesc = cmcsc9 \font \eighttt = pcrb at 8pt \font \eightrm = pplr at 8pt \font \eightmi = zptmcmrm at 8pt \font \eightsy = zpzccmry at 8pt \font \eightmsam = msam10 at 8pt \font \eightmsbm = msbm10 at 8pt \font \eightbf = cmbx8 \font \eightex = zpsycmrv at 8pt \font \eightit = pplri at 8pt \font \eightsl = pplro at 8pt \font \sevenrm = pplr at 7pt \font \sevenbf = pplb at 7pt \font \sevenmi = zptmcmrm at 7pt \font \sevenex = zpsycmrv at 7pt \font \sevensy = zpzccmry at 7pt \font \sevenmsam = msam10 at 7pt \font \sevenmsbm = msbm10 at 7pt %%\font \truesevenmi = cmmi7 at 7truept \font \fiverm = pplr at 5pt \font \fivebf = pplb at 5pt \font \fivemi = pplri at 5pt \font \fivesy = zpzccmry at 5pt \font \fivemsam = msam10 at 5pt \font \fivemsbm = msbm10 at 5pt \font \fivesl = cmsl10 at 5pt } %% fichier 'symbol.tex' %%Les definitions suivantes permettent de gerer les symboles speciaux, par %%famille. Le premier chiffre hexadecimal designe la classe du symbole, ici %%ordinaire, le second la famille (designee en absolu), ici 8, les %%deux derniers la position du caractere dans la fonte. \mathchardef \aset = "0841 \mathchardef \bset = "0842 \mathchardef \cset = "0843 \mathchardef \dset = "0844 \mathchardef \eset = "0845 \mathchardef \fset = "0846 \mathchardef \gset = "0847 \mathchardef \hset = "0848 \mathchardef \iset = "0849 \mathchardef \jset = "084A \mathchardef \kset = "084B \mathchardef \lset = "084C \mathchardef \mset = "084D \mathchardef \nset = "084E \mathchardef \oset = "084F \mathchardef \pset = "0850 \mathchardef \qset = "0851 \mathchardef \rset = "0852 \mathchardef \sset = "0853 \mathchardef \tset = "0854 \mathchardef \uset = "0855 \mathchardef \vset = "0856 \mathchardef \wset = "0857 \mathchardef \xset = "0858 \mathchardef \yset = "0859 \mathchardef \zset = "085A \mathchardef \subsetneq = "3820 %% symbole d'inclusion stricte \def\zseti {\zset [i]} \def\qseti {\qset [i]} % ========= quelques operateurs mathematiques =========== \def \pgcd {\mathop {\rm pgcd}} \def \arctan {\mathop {\rm Arctan}} \def \cotan {\mathop {\rm cotan}} \def \ch {\mathop {\rm ch} \nolimits } \def \sh {\mathop {\rm sh} \nolimits } \def \th {\mathop {\rm th} \nolimits } \def \argch {\mathop {\rm Argch} \nolimits } \def \argsh {\mathop {\rm Argsh} \nolimits } \def \argth {\mathop {\rm Argth} \nolimits } \def \arcsin {\mathop {\rm Arcsin}} \def \arccos {\mathop {\rm Arccos}} \def \arg {\mathop {\rm Arg}} \def \Id {\mathop {\rm Id}} \def \id {\mathop {\rm Id}} \def \im {\mathop {\rm Im}} \def \tr {\mathop {\rm Tr} \nolimits } \def \card {\mathop {\rm Card} \nolimits } \def \true {\mathop {\rm true} \nolimits } \def \false {\mathop {\rm false} \nolimits } \def \signe {\mathop {\rm signe}} \def \cov {\mathop {\rm cov}} \def \mod {\mathop {\rm mod}} % =========== les dimensions ==================== \def \rd {\mathop {\rm rd} \nolimits } \def \mm {\mathop {\rm mm} \nolimits } \def \cm {\mathop {\rm cm} \nolimits } \def \dm {\mathop {\rm dm} \nolimits } \def \km {\mathop {\rm km} \nolimits } \def \m {\mathop {\rm m} \nolimits } \def \h {\mathop {\rm h} \nolimits } \def \mn {\mathop {\rm mn} \nolimits } \def \s {\mathop {\rm s} \nolimits } \def \ms {\mathop {\rm ms} \nolimits } \def \g {\mathop {\rm g} \nolimits } \def \kg {\mathop {\rm kg} \nolimits } \def \N {\mathop {\rm N} \nolimits } \def \l {\mathop {\rm l} \nolimits } \def \daN {\mathop {\rm danN} \nolimits } \def \Hz {\mathop {\rm Hz} \nolimits } \def \rem {\mathop {\rm rem} \nolimits } \def \mGy {\mathop {\rm mGy} \nolimits } \def \mSv {\mathop {\rm mSv} \nolimits } \def \mR {\mathop {\rm mR} \nolimits } \def \Ci {\mathop {\rm Ci} \nolimits } \def \Bq {\mathop {\rm Bq} \nolimits } \def \Me {\mathop {\rm Me} \nolimits } % ========= caracteres speciaux ==================== \def \bull{% le carre noir \vrule height .9ex width .8ex depth -.1ex} %% la macro suivante pose un probleme~: les guillemets sont %% toujours en 10 pts !!! \long \def \og#1\fg{% les guillemets francais \bgroup {\tenwncyr \char 60}~% \ignorespaces #1\unskip ~{\tenwncyr \char 62}% \egroup } %% on redefinit les signes de comparaisons >= et <= pour avoir les %% symboles francais \mathchardef\leq="3936 % code hexadecimal 36 de la famille 9, type relation (3) \mathchardef\geq="393E %%\def \brem {\mskip -\medmuskip\mkern5mu %% \mathbin{\rm rem} \penalty900 \mkern5mu \mskip -\medmuskip} %% %%\def \bmodulo {\mskip -\medmuskip\mkern5mu %% \mathbin{\bf mod} \penalty900 \mkern5mu \mskip -\medmuskip} \def\MyCancel#1#2{\ooalign{$\hfil#1\mkern-3.5mu\hbox{\it/}\hfil$\crcr$#1#2$}} \def\notmid{\mathrel{\mathpalette\MyCancel\mid}} %% fichier 'style.tex' \catcode `\@ = 11 \def \eightpoint {\textfont \z@ \eightrm \def \rm {\fam \z@ \eightrm }% \baselineskip 9pt \lineskip 0.833pt \lineskiplimit 0pt \textfont \@ne \eightmi \scriptfont \@ne \fivemi %% modif jp \sevenmi \scriptscriptfont \@ne \fivemi \def \mit {\fam \@ne }% \textfont \tw@ \eightsy \textfont3 \eightex \textfont \specialchar \eightmsbm \textfont \otherspecialchar \eightmsam \textfont \bffam \eightbf \def \bf {\fam \bffam \eightbf }% \textfont \itfam \eightit \def \it {\fam \itfam \eightit }% \textfont \ttfam \eighttt \def \tt {\fam \ttfam \eighttt }% \textfont \slfam \eightsl \def \sl {\fam \slfam \eightsl }% \setbox \strutbox \hbox {\vrule height 7pt depth 2pt width 0pt}% } \def \ninepoint {\textfont \z@ \ninerm \scriptfont \z@ \sevenrm \scriptscriptfont \z@ \fiverm \def \rm {\fam \z@ \ninerm }% \textfont \@ne \ninemi \scriptfont \@ne \sevenmi \scriptscriptfont \@ne \fivemi \def \mit {\fam \@ne }% \def \oldstyle {\fam \@ne \ninemi }% \textfont \tw@ \ninesy \scriptfont \tw@ \sevensy \scriptscriptfont \tw@ \fivesy \def \cal {\fam \tw@ }% \textfont3 \nineex \scriptfont3 \sevenex \scriptscriptfont3 \sevenex \textfont \bffam \ninebf \scriptfont \bffam \sevenbf \scriptscriptfont \bffam \fivebf \def \bf {\fam \bffam \ninebf }% \textfont \itfam \nineit \def \it {\fam \itfam \nineit }% \textfont \slfam \ninesl \def \sl {\fam \slfam \ninesl }% \textfont \ttfam \ninett \def \tt {\fam \ttfam \ninett }% \let \sc \ninesc \textfont \specialchar \ninemsbm \scriptfont \specialchar \sevenmsbm \textfont \otherspecialchar \ninemsam \scriptfont \otherspecialchar \sevenmsam \normalbaselineskip 10pt \abovedisplayskip 6pt plus 1pt minus 6pt \abovedisplayshortskip 0pt plus 2pt \belowdisplayskip 6pt plus 1pt minus 6pt \belowdisplayshortskip 4pt plus 1pt minus 3pt \setbox \strutbox \hbox {\vrule height 8pt depth 2pt width 0pt}% \normalbaselines } \def \tenpoint {\textfont \z@ \tenrm \scriptfont \z@ \sevenrm \scriptscriptfont \z@ \fiverm \def \rm {\fam \z@ \tenrm }% \textfont \@ne \tenmi \scriptfont \@ne \sevenmi \scriptscriptfont \@ne \fivemi \def \mit {\fam \@ne }% \def \oldstyle {\fam \@ne \tenmi }% \textfont \tw@ \tensy \scriptfont \tw@ \sevensy \scriptscriptfont \tw@ \fivesy \def \cal {\fam \tw@ }% \textfont3 \tenex \scriptfont3 \sevenex \scriptscriptfont3 \sevenex \textfont \bffam \tenbf \scriptfont \bffam \sevenbf \scriptscriptfont \bffam \fivebf \def \bf {\fam \bffam \tenbf }% \textfont \itfam \tenit \def \it {\fam \itfam \tenit }% \textfont \slfam \tensl \def \sl {\fam \slfam \tensl }% \textfont \ttfam \tentt \def \tt {\fam \ttfam \tentt }% \let \sc \tensc \textfont \specialchar \tenmsbm \scriptfont \specialchar \sevenmsbm \textfont \otherspecialchar \tenmsam \scriptfont \otherspecialchar \sevenmsam \scriptscriptfont \otherspecialchar \fivemsam \abovedisplayskip 9pt plus 2pt minus 6pt \abovedisplayshortskip 0pt plus 2pt \belowdisplayskip 9pt plus 2pt minus 6pt \belowdisplayshortskip 5pt plus 2pt minus 3pt %% \baselineskip 11pt \lineskip 1pt \baselineskip 12pt \lineskip 1pt \lineskiplimit 0pt %% change le 20-07-91 \setbox \strutbox \hbox {\vrule height 8.5pt depth 3.5pt width 0pt}% } \def \twelvepoint {\textfont \z@ \twelverm \scriptfont \z@ \tenrm \scriptscriptfont \z@ \sevenrm \def \rm {\fam \z@ \twelverm }% \textfont \@ne \twelvemi \scriptfont \@ne \tenmi \scriptscriptfont \@ne \sevenmi \def \mit {\fam \@ne }% \textfont \tw@ \twelvesy \textfont \specialchar \twelvemsbm \textfont \otherspecialchar \twelvemsam \textfont \bffam \twelvebf \scriptfont \bffam \tenbf \scriptscriptfont \bffam \sevenbf \def \bf {\fam \bffam \twelvebf }% \textfont \ttfam \twelvett \def \tt {\fam \ttfam \twelvett }% \let \sc \twelvesc \def \it {\twelveit }\def \sl {\twelvesl }\def \tt {\twelvett }% \baselineskip 14pt \lineskiplimit 2pt \lineskip 2pt } \def \fourteenpoint {\textfont \z@ \fourteenrm \scriptfont \z@ \twelverm \scriptscriptfont \z@ \tenrm \def \rm {\fam \z@ \fourteenrm }% \textfont \@ne \fourteenmi \scriptfont \@ne \twelvemi \scriptscriptfont \@ne \ninemi \def \mit {\fam \@ne }% \textfont \tw@ \fourteensy \textfont \specialchar \fourteenmsbm \textfont \otherspecialchar \fourteenmsam \textfont \bffam \fourteenbf \scriptfont \bffam \twelvebf \scriptscriptfont \bffam \tenbf \def \bf {\fam \bffam \fourteenbf }% \def \it {\fourteenit }\def \sl {\fourteensl }\def \tt {\fourteentt }% } \let \footnotestyle = \eightpoint %% jp \let \remarkstyle = \ninepoint %% jp \let \headlinestyle = \ninepoint \catcode `\@ = 12 %% fichier 'newplain.tex' % redef de certaines macros du format plain.tex \catcode`\@=11 \def\footnote#1{\let\@sf\empty % parameter #2 (the text) is read later \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi #1\@sf\vfootnote{#1}} \def\vfootnote#1{\insert\footins\bgroup \interlinepenalty\interfootnotelinepenalty \splittopskip\ht\strutbox % top baseline for broken footnotes \splitmaxdepth\dp\strutbox \floatingpenalty\@MM \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip \textindent{#1}\footstrut\futurelet\next\fo@t} \def\fo@t{\ifcat\bgroup\noexpand\next \let\next\f@@t \else\let\next\f@t\fi \next} \def\f@@t{\bgroup\aftergroup\@foot\let\next} \def\f@t#1{#1\@foot} \def\@foot{\strut\egroup} \def\footstrut{\vbox to\splittopskip{}} \skip\footins=\bigskipamount % space added when footnote is present \count\footins=1000 % footnote magnification factor (1 to 1) \dimen\footins=8in % maximum footnotes per page % redefinition de la macro \footnote (TeXbook p 416) \def \footnote#1{% \edef \@sf{% \spacefactor \the \spacefactor}% #1\@sf \insert \footins \bgroup \eightpoint \rm \interlinepenalty = 100 \let \par = \endgraf \leftskip = 0pt \rightskip = 0pt \splittopskip = 10pt plus 1pt minus 1pt \floatingpenalty = 20000 % \smallskip \item{#1} \bgroup \strut \aftergroup \@foot \let \next} % elimine l'accolade ouvrante qui suit \skip \footins = 12pt plus 2pt minus 4pt % space addes when footnote exists \dimen \footins = 30pc % maximum footnote per page % =================== redef de \do ================================== \def\dospecials{\do\ \do\\\do\{\do\}\do\$\do\&% \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~\do\|} % =================== redef de \item ================================= \newskip \itemindent \itemindent = \parindent \parindent = 0pt \def\hang{\hangindent\itemindent} \def\textindent#1{\hskip\itemindent\llap{#1\enspace}\ignorespaces} \def\item{\par\hang\textindent} \def\itemitem{\par\hskip\itemindent \hangindent2\itemindent \textindent} \def\narrower{\advance\leftskip\itemindent \advance\rightskip\itemindent} \catcode`\@=12 %% fichier 'fr-kbd.tex' % ======== adaptation au clavier accentue ================ \catcode `\é = \active \def é{\ifmmode \acute e\else \' e\fi } \catcode `\è = \active \def è{\ifmmode \grave e\else \` e\fi } \catcode `\à = \active \def à{\ifmmode \grave a\else \` a\fi } \catcode `\ù = \active \def ù{\ifmmode \grave u\else \` u\fi } \catcode `\ç = \active \def ç{\c c} \catcode `\â = \active \def â{\^ a} \catcode `\ê = \active \def ê{\^ e} \catcode `\î = \active \def î{\^ \i } \catcode `\ô = \active \def ô{\^ o} \catcode `\û = \active \def û{\^ u} \catcode `\ä = \active \def ä{\" a} \catcode `\ë = \active \def ë{\" e} \catcode `\ï = \active \def ï{\" \i } \catcode `\ö = \active \def ö{\" o} \catcode `\ü = \active \def ü{\" u} \catcode `\° = \active \def °{^\circ } %% fichier 'sections.tex' %% Ce fichier contient toutes les macros concernant les sections %% et leur mise en page \catcode`\@ = 11 % =============================== les parties ================================= \newskip \partieskip \partieskip = 5pt plus 2pt minus 1pt \newskip \partieskipafter \partieskipafter = 1pt plus 3pt \newskip \paragrapheskip \paragrapheskip = 5pt plus 2pt minus 1pt \newskip \paragrapheskipafter \paragrapheskipafter = 1pt plus 3pt %% encadre dans la marge, en gras \def \llappartie#1{% \par \noindent \setbox0 = \hbox {\boxit {2pt}{\hbox {\bf \tvi height8pt depth0pt #1}}}% \llap {\unhbox0\ }% \ignorespaces \initexo } %% centre sur la ligne, en gras \def \simplecenterpartie#1{% \vskip \partieskip \centerline {% \twelvepoint \bf #1 \unhbox \baremebox } \vskip \partieskipafter \initexo } %% idem, + elabore \def \centerpartie#1{% \par % \vskip 0pt plus 0,3\vsize \penalty -50 % \vskip 0pt plus -0,3\vsize % \bigbreak \vskip \partieskip \centerline{% \twelvepoint \bf -- Partie #1 -- % \unhbox \baremebox } \penalty 10000 \vskip \partieskipafter \initexo } %% idem, avec 2 arguments \def \doublecenterpartie#1#2{% \par % \vskip 0pt plus 0,3\vsize \penalty -50 % \vskip 0pt plus -0,3\vsize % \bigbreak \vskip \partieskip \centerline{% \twelvepoint \bf -- Partie #1 -- \unhbox \baremebox {\sl #2}} \penalty 10000 \vskip \partieskipafter \initexo } %% discret \def \discretpartie#1{% \initexo \par {\bf #1.}} %% la partie par defaut \let \partie \discretpartie % ============================================================================= % =============================== les titres ================================== %% aussi bizarre que cela puisse paraitre, je laisse la macro '\duree' %% associee au titre \newbox \dureebox \def \cleardureebox {% \setbox \dureebox = \box \dureebox } \cleardureebox \def \clearduree {% \setbox 100 \hbox {\unhbox \dureebox }} \def \duree#1{% \setbox \dureebox \hbox {\sevenrm \underbar {durée}~: #1}} \newskip \titreskip \titreskip = 10pt plus 10pt minus 10pt \newskip \titreskipafter \titreskipafter = 10pt plus 10pt minus 10pt \newskip \stitreskip \stitreskip = 5pt plus 5pt minus 5pt \newskip \stitreskipafter \stitreskipafter = 5pt plus 5pt minus 5pt \newtoks \titrestyle \titrestyle = {\fourteenpoint \bf } \def \titre#1{% \par \ifb@@kstyle \vskip \bookstyleskip \penalty -500 \vskip -\bookstyleskip \fi \bgroup % pour limiter la portee de la def de \\ \def \\{% % commande qui est utilisee pour passer a la ligne dans un titre \hss \egroup % ferme la \hbox to \hsize en cours \hbox to \hsize \bgroup % et rouvre la suivante \the \titrestyle \hss} \vskip 0pt plus 0,3\vsize \penalty -250 \vskip 0pt plus -0,3\vsize \vskip \titreskip \hbox to \hsize \bgroup \hss \the \titrestyle #1 \hss \egroup \egroup \par \writetocentry {chapter}{#1} \nobreak \ifvoid \dureebox \else \line{\hfill \unhcopy \dureebox } \fi \vskip \titreskipafter \nobreak } \def \titredate#1{% \par \ifb@@kstyle \vskip \bookstyleskip \penalty -500 \vskip -\bookstyleskip \fi \bgroup % pour limiter la portee de la def de \\ \def \\{% % commande qui est utilisee pour passer a la ligne dans un titre \hss \egroup % ferme la \hbox to \hsize en cours \hbox to \hsize \bgroup % et rouvre la suivante \the \titrestyle \hss} \vskip 0pt plus 0,3\vsize \penalty -250 \vskip 0pt plus -0,3\vsize \vskip \titreskip \llap {\box \datebox} \hbox to \hsize \bgroup \hss \the \titrestyle #1 \hss \egroup \egroup \par \writetocentry {chapter}{#1} \nobreak \ifvoid \dureebox \else \line{\hfill \unhcopy \dureebox } \fi \vskip \titreskipafter \nobreak } \def \stitre#1{% \vskip \stitreskip \centerline {\stitrestyle {#1}} \vskip \stitreskipafter }% % ============================================================================= % ========================== macros de numerotation =========================== %%%%% les variables et leurs initialisations %%%%% \newcount \numno \def \clearnumno{% \global\numno = 0} \clearnumno \newcount \alphno \def \clearalphno{% \global\alphno = `\a \global\advance \alphno by -1} \clearalphno \newskip \itemnumskip \itemnumskip = 0pt \newskip \itemalphskip \itemalphskip = 0pt \newskip \itemalphnumskip \itemalphnumskip = 0pt %%%%% reglage du style d'affichage %%%%% \def \numstyle#1{% {\bf #1.}} \def \alphstyle#1{% {\sl \char #1\/})} %%%%% les macros de numerotation %%%%% %% \def \initalphnum {% %% } \def \initalph {% } \def \initnum {% \clearalphno } \def \num {% \initnum \global \advance \numno by 1 \numstyle {\the \numno }}% %% \alph est en prévision du remaniement, ce n'est qu'une %% copie de \alphnum, mais elle permet de commencer à %% essayer de coder de facon plus cohérente ... %% jp 31-05-96 \def \alph {% \initalph \global \advance \alphno by 1 \alphstyle {\alphno }} \def \alphnum {% \num \ \alph } \def \itemnum {% \vskip \itemnumskip \item {\num }} \def \itemitemnum {% \vskip \itemnumskip \itemitem {\num }} \def \itemalph {% \vskip \itemalphskip \item {\alph }} \def \itemitemalph {% \vskip \itemalphskip \itemitem {\alph }} \def \itemalphnum {% \vskip \itemnumskip \item {\num } \alph \ } \def \itemitemalphnum {% \vskip \itemnumskip \itemitem {\num \quad \hskip .1 em \alph }} % ============================================================================= % =============================== les exercices =============================== % % ========= macros de section ============== % ========================= les exemples ====================================== \newcount \exempleno \def \clearexempleno{% \global\exempleno = 0} \clearexempleno \def \exemple#1{% \medbreak \advance \exempleno by 1 \noindent {\bf Exemple ({\oldstyle \the \exempleno }) . \sl #1} \par \nobreak \smallskip \begingroup \parskip = 4 pt } \def \finexemple {% \removelastskip \par \removelastskip \hfill \bull \endgroup \smallbreak } % ============================================================================= % ============================ le bookstyle =================================== % \newif \ifb@@kstyle % flag indiquant si on accepte les paragraphes % en bas de page \b@@kstylefalse % oui par defaut \newskip \bookstyleskip % le mini de bas de page autorise pour un % paragraphe \bookstyleskip = 0.3\vsize \def \bookstyle {% \footline = {\hss \tenrm \folio \hss } \b@@kstyletrue } \def \bookstylefalse {% \b@@kstylefalse } \def \onepagestyle {\b@@kstylefalse } % ============================================================================= % ============================== les paragraphes ============================== %%%%% les variables et leurs initialisations %%%%% \newcount \parno \def \clearparno {% \clearsparno \parno = 0} \newcount \sparno \def \clearsparno {% \clearssparno \sparno = 0} \newcount \ssparno \def \clearssparno{% \ssparno = 0} %%%%% reglage du style d'affichage %%%%% \def \paragraphestyle#1#2{% \noindent {\fourteenpoint \bf #1. #2}}% \def \sparagraphestyle#1#2#3{% \noindent {\twelvepoint \bf #1.#2 - #3}}% \def \ssparagraphestyle#1#2#3#4{% \noindent {\bf #1.#2.#3 - #4}}% %%%%% les macro de paragraphe %%%%% \def \paragraphe#1{% \par \ifb@@kstyle \vskip \bookstyleskip \penalty -500 \vskip -\bookstyleskip \fi \penalty -50 \vskip \paragrapheskip \clearsparno \advance \parno by 1 \paragraphestyle {\the \parno }{#1} \par \writetocentry {paragraf}{#1} \nobreak \vskip \paragrapheskipafter } \def \finparagraphe{% }% \def \sparagraphe#1{% \par \penalty -50 \medskip \clearssparno \advance \sparno by 1 \noindent \sparagraphestyle {\the \parno }{\the \sparno }{#1} \par \writetocentry {sparagraf}{#1} \nobreak \medskip } \def \finsparagraphe {% }% \def \ssparagraphe#1{% \par \penalty -50 \smallskip \advance \ssparno by 1 \noindent \ssparagraphestyle {\the \parno }{\the \sparno }{\the \ssparno }{#1} \par \writetocentry {ssparagraf}{#1} \nobreak \medskip } \def \ssfinparagraphe {% }% % ============================== les remarques ================================ \def \remarque {% \medskip \item {} \begingroup \narrower \narrower \eightpoint \rm {\bf Remarque} -- } \def \finremarque {% \par \endgroup \medskip } \catcode`\@ = 12 % EPSF.TEX macro file: % Written by Tomas Rokicki of Radical Eye Software, 29 Mar 1989. % Revised by Don Knuth, 3 Jan 1990. % Revised by Tomas Rokicki to accept bounding boxes with no % space after the colon, 18 Jul 1990. % % TeX macros to include an Encapsulated PostScript graphic. % Works by finding the bounding box comment, % calculating the correct scale values, and inserting a vbox % of the appropriate size at the current position in the TeX document. % % To use with the center environment of LaTeX, preface the \epsffile % call with a \leavevmode. (LaTeX should probably supply this itself % for the center environment.) % % To use, simply say % \input epsf % somewhere early on in your TeX file % \epsfbox{filename.ps} % where you want to insert a vbox for a figure % % Alternatively, you can type % % \epsfbox[0 0 30 50]{filename.ps} % to supply your own BB % % which will not read in the file, and will instead use the bounding % box you specify. % % The effect will be to typeset the figure as a TeX box, at the % point of your \epsfbox command. By default, the graphic will have its % `natural' width (namely the width of its bounding box, as described % in filename.ps). The TeX box will have depth zero. % % You can enlarge or reduce the figure by saying % \epsfxsize= \epsfbox{filename.ps} % (or % \epsfysize= \epsfbox{filename.ps}) % instead. Then the width of the TeX box will be \epsfxsize and its % height will be scaled proportionately (or the height will be % \epsfysize and its width will be scaled proportiontally). The % width (and height) is restored to zero after each use. % % A more general facility for sizing is available by defining the % \epsfsize macro. Normally you can redefine this macro % to do almost anything. The first parameter is the natural x size of % the PostScript graphic, the second parameter is the natural y size % of the PostScript graphic. It must return the xsize to use, or 0 if % natural scaling is to be used. Common uses include: % % \epsfxsize % just leave the old value alone % 0pt % use the natural sizes % #1 % use the natural sizes % \hsize % scale to full width % 0.5#1 % scale to 50% of natural size % \ifnum#1>\hsize\hsize\else#1\fi % smaller of natural, hsize % % If you want TeX to report the size of the figure (as a message % on your terminal when it processes each figure), say `\epsfverbosetrue'. % \newread\epsffilein % file to \read \newif\ifepsffileok % continue looking for the bounding box? \newif\ifepsfbbfound % success? \newif\ifepsfverbose % report what you're making? \newif\ifepsfdraft % use draft mode? \newdimen\epsfxsize % horizontal size after scaling \newdimen\epsfysize % vertical size after scaling \newdimen\epsftsize % horizontal size before scaling \newdimen\epsfrsize % vertical size before scaling \newdimen\epsftmp % register for arithmetic manipulation \newdimen\pspoints % conversion factor % \pspoints=1bp % Adobe points are `big' \epsfxsize=0pt % Default value, means `use natural size' \epsfysize=0pt % ditto % \def\epsfbox#1{\global\def\epsfllx{72}\global\def\epsflly{72}% \global\def\epsfurx{540}\global\def\epsfury{720}% \def\lbracket{[}\def\testit{#1}\ifx\testit\lbracket \let\next=\epsfgetlitbb\else\let\next=\epsfnormal\fi\next{#1}}% % \def\epsfgetlitbb#1#2 #3 #4 #5]#6{\epsfgrab #2 #3 #4 #5 .\\% \epsfsetgraph{#6}}% % \def\epsfnormal#1{\epsfgetbb{#1}\epsfsetgraph{#1}}% % \def\epsfgetbb#1{% % % The first thing we need to do is to open the % PostScript file, if possible. % \openin\epsffilein=#1 \ifeof\epsffilein\errmessage{I couldn't open #1, will ignore it}\else % % Okay, we got it. Now we'll scan lines until we find one that doesn't % start with %. We're looking for the bounding box comment. % {\epsffileoktrue \chardef\other=12 \def\do##1{\catcode`##1=\other}\dospecials \catcode`\ =10 \loop \read\epsffilein to \epsffileline \ifeof\epsffilein\epsffileokfalse\else % % We check to see if the first character is a % sign; % if not, we stop reading (unless the line was entirely blank); % if so, we look further and stop only if the line begins with % `%%BoundingBox:'. % \expandafter\epsfaux\epsffileline:. \\% \fi \ifepsffileok\repeat \ifepsfbbfound\else \ifepsfverbose\message{No bounding box comment in #1; using defaults}\fi\fi }\closein\epsffilein\fi}% % % Now we have to calculate the scale and offset values to use. % First we compute the natural sizes. % \def\epsfclipon{\def\epsfclipstring{ clip}}% \def\epsfclipoff{\def\epsfclipstring{\ifepsfdraft\space clip\fi}}% \epsfclipoff % \def\epsfsetgraph#1{% \epsfrsize=\epsfury\pspoints \advance\epsfrsize by-\epsflly\pspoints \epsftsize=\epsfurx\pspoints \advance\epsftsize by-\epsfllx\pspoints % % If `epsfxsize' is 0, we default to the natural size of the picture. % Otherwise we scale the graph to be \epsfxsize wide. % \epsfxsize\epsfsize\epsftsize\epsfrsize \ifnum\epsfxsize=0 \ifnum\epsfysize=0 \epsfxsize=\epsftsize \epsfysize=\epsfrsize \epsfrsize=0pt % % We have a sticky problem here: TeX doesn't do floating point arithmetic! % Our goal is to compute y = rx/t. The following loop does this reasonably % fast, with an error of at most about 16 sp (about 1/4000 pt). % \else\epsftmp=\epsftsize \divide\epsftmp\epsfrsize \epsfxsize=\epsfysize \multiply\epsfxsize\epsftmp \multiply\epsftmp\epsfrsize \advance\epsftsize-\epsftmp \epsftmp=\epsfysize \loop \advance\epsftsize\epsftsize \divide\epsftmp 2 \ifnum\epsftmp>0 \ifnum\epsftsize<\epsfrsize\else \advance\epsftsize-\epsfrsize \advance\epsfxsize\epsftmp \fi \repeat \epsfrsize=0pt \fi \else \ifnum\epsfysize=0 \epsftmp=\epsfrsize \divide\epsftmp\epsftsize \epsfysize=\epsfxsize \multiply\epsfysize\epsftmp \multiply\epsftmp\epsftsize \advance\epsfrsize-\epsftmp \epsftmp=\epsfxsize \loop \advance\epsfrsize\epsfrsize \divide\epsftmp 2 \ifnum\epsftmp>0 \ifnum\epsfrsize<\epsftsize\else \advance\epsfrsize-\epsftsize \advance\epsfysize\epsftmp \fi \repeat \epsfrsize=0pt \else \epsfrsize=\epsfysize \fi \fi % % Finally, we make the vbox and stick in a \special that dvips can parse. % \ifepsfverbose\message{#1: width=\the\epsfxsize, height=\the\epsfysize}\fi \epsftmp=10\epsfxsize \divide\epsftmp\pspoints \vbox to\epsfysize{\vfil\hbox to\epsfxsize{% \ifnum\epsfrsize=0\relax \special{PSfile=\ifepsfdraft psdraft.ps\else#1\fi\space llx=\epsfllx\space lly=\epsflly\space urx=\epsfurx\space ury=\epsfury\space rwi=\number\epsftmp \epsfclipstring}% \else \epsfrsize=10\epsfysize \divide\epsfrsize\pspoints \special{PSfile=\ifepsfdraft psdraft.ps\else#1\fi\space llx=\epsfllx\space lly=\epsflly\space urx=\epsfurx\space ury=\epsfury\space rwi=\number\epsftmp\space rhi=\number\epsfrsize \epsfclipstring}% \fi \hfil}}% \global\epsfxsize=0pt\global\epsfysize=0pt}% % % We still need to define the tricky \epsfaux macro. This requires % a couple of magic constants for comparison purposes. % {\catcode`\%=12 \global\let\epsfpercent=%\global\def\epsfbblit{%BoundingBox}}% % % So we're ready to check for `%BoundingBox:' and to grab the % values if they are found. % \long\def\epsfaux#1#2:#3\\{\ifx#1\epsfpercent \def\testit{#2}\ifx\testit\epsfbblit \epsfgrab #3 . . . \\% \epsffileokfalse \global\epsfbbfoundtrue \fi\else\ifx#1\par\else\epsffileokfalse\fi\fi}% % % Here we grab the values and stuff them in the appropriate definitions. % \def\epsfempty{}% \def\epsfgrab #1 #2 #3 #4 #5\\{% \global\def\epsfllx{#1}\ifx\epsfllx\epsfempty \epsfgrab #2 #3 #4 #5 .\\\else \global\def\epsflly{#2}% \global\def\epsfurx{#3}\global\def\epsfury{#4}\fi}% % % We default the epsfsize macro. % \def\epsfsize#1#2{\epsfxsize} % % Finally, another definition for compatibility with older macros. % \let\epsffile=\epsfbox %% fichier 'illustr.tex' %% essais pour la creation d'une macro \illustrate %% version 1 (22/12/96) \catcode`\@ = 11 \newbox \illustrateb@x \def \bmppath{} % ============== commandes de base ======================= % affichage d'une \hbox de la taille desiree, cette hbox % contenant un ordre \special pour charger un fichier .bmp % ATTENTION : on utilise la macro \bmppath, initialisee au % vide pour commencer % la routine commnue aux suivantes \def \bmpillustr@te#1#2#3{% #1 = file, #2 = width, #3 = height \setbox \illustrateb@x = \hbox{% \special{bmp: \bmppath/#1 x=#2 y=#3}} \dp \illustrateb@x = 0cm \ht \illustrateb@x = #3 \wd \illustrateb@x = #2 } % la commande de base \def \bmpillustrate#1#2#3{% #1 = file, #2 = width, #3 = height \bmpillustr@te{#1}{#2}{#3} \box \illustrateb@x } % ici, on a en plus un \boxit \def \boxbmpillustrate#1#2#3{% #1 = file, #2 = width, #3 = height \bmpillustr@te{#1}{#2}{#3} \boxit{0.5pt}{\box \illustrateb@x }} % ici, on a en plus un \superboxit \def \superboxbmpillustrate#1#2#3{% #1 = file, #2 = width, #3 = height \bmpillustr@te{#1}{#2}{#3} \superboxit{0.5pt}{\box \illustrateb@x }} \newbox \illustrateb@x \newdimen \xsizeillustrateb@x \newdimen \ysizeillustrateb@x \def \epspath{} \newbox \legendb@x \def \legende#1{% \setbox \legendb@x = \hbox{#1\tvi }} % la routine commune aux suivantes \def \epsillustr@te#1{% #1 = file \setbox \illustrateb@x = \hbox{\epsfbox{#1}} \xsizeillustrateb@x = \wd \illustrateb@x \ysizeillustrateb@x = \ht \illustrateb@x } % la commande de base \def \epsillustrate#1{% #1 = file \epsillustr@te{\epspath #1} \box \illustrateb@x} % ici, on a en plus un \boxit \def \boxepsillustrate#1{% #1 = file \epsillustr@te{\epspath #1} \boxit{0.5pt}{\box \illustrateb@x}} % ici, on a en plus un \superboxit \def \boxepsillustrate#1{% #1 = file \epsillustr@te{\epspath #1} \vbox{% \superboxit{0.5pt}{\box \illustrateb@x} \hbox to \xsizeillustrateb@x {% \hss \box \legendb@x \hss } }} % ici, on a en plus un \superboxit \def \superboxepsillustrate#1{% #1 = file \epsillustr@te{\epspath #1} \vbox{% \superboxit{0.5pt}{\box \illustrateb@x} \hbox to \xsizeillustrateb@x {% \hfil \box \legendb@x \hfil} }} % ============== affichage en bordure du texte ========================= % la macro modifiée de l'exercice 14.24 du TeXbook \let \savepar \par \def \hangcarryover{% \edef \next{% %% sauvegarde les valeurs \hangafter \the \hangafter %% courantes (qui sont remises \hangindent \the \hangindent} %% à 0 à la fin du paragraphe) \savepar \next %% restore \hangindent et \hangafter \edef \next{% \prevgraf \the \prevgraf} %% sauvegarde le nb de lignes déjà composées %%%%%%%%%%%%%%%% modif 26/11/96 \indent \noindent \next} %% et les restore % =============================== la figure a droite === % ma tentative de \rightillustrate~: la commande de base, qui % permet d'afficher du 'vertical material' a droite du texte \def \rightillustrate#1#2{% % #1 = vertical material, #2 = nb lines \setbox\tmpbox \vbox{\unvbox#1} % on stocke le materiel en box10, \ht\tmpbox = 0pt % dont on annule ht et dp \dp\tmpbox = 0pt \line{% % on affiche dans une ligne de \hfill % hauteur nulle {\copy \tmpbox }} \vskip-\baselineskip % on rectif le saut interligne \hangindent = -1.1 \wd\tmpbox % et on prepare le decalage de droite \hangafter = #2 \def \par{% %% on redéfinit le \par \ifnum \prevgraf > -\hangafter %% qui reste actif tant que l'on \let \par \savepar %% a pas composé suffisamment de lignes \par \else \hangcarryover \fi}} % les commandes annexes \def \rightbmpillustrate#1#2#3#4{% #1 = file, #2 = width, #3 = height, #4 = nb lines \setbox \tmpbox \vbox{% \bmpillustrate{#1}{#2}{#3}} \rightillustrate{\tmpbox}{#4}} \def \rightboxbmpillustrate#1#2#3#4{% #1 = file, #2 = width, #3 = height, #4 = nb lines \setbox \tmpbox \vbox{% \boxbmpillustrate{#1}{#2}{#3}} \rightillustrate{\tmpbox}{#4}} \def \rightsuperboxbmpillustrate#1#2#3#4{% #1 = file, #2 = width, #3 = height, #4 = nb lines \setbox \tmpbox \vbox{% \superboxbmpillustrate{#1}{#2}{#3}} \rightillustrate{\tmpbox}{#4}} % les commandes annexes \def \rightepsillustrate#1#2{% #1 = file, #2 nb lines \setbox \tmpbox \vbox{% \epsillustrate{#1}} \rightillustrate{\tmpbox}{#2}} \def \rightboxepsillustrate#1#2{% #1 = file, #2 = nb lines \setbox \tmpbox \vbox{% \boxepsillustrate{#1}} \rightillustrate{\tmpbox}{#2}} \def \rightsuperboxepsillustrate#1#2{% #1 = file, #2 = nb lines \setbox \tmpbox \vbox{% \superboxepsillustrate{#1}} \rightillustrate{\tmpbox}{#2}} % === la figure a gauche =============================== % ma tentative de \leftillustrate~: la commande de base, qui % permet d'afficher du 'vertical material' a gauche du texte \def \leftillustrate#1#2{% % #1 = vertical material, #2 = nb lines \setbox10 \vbox{#1} % on stocke le materiel en box10, \ht 10 = 0pt % dont on annule ht et dp \dp 10 = 0pt \line{% % on affiche dans une ligne de {\copy 10 } % hauteur nulle \hfill} \vskip-\baselineskip % on rectif le saut interligne \hangindent = 1.1 \wd10 % et on prepare le decalage de droite \hangafter = #2 \def \par{% %% on redéfinit le \par \ifnum \prevgraf > -\hangafter %% qui reste actif tant que l'on \let \par \savepar %% a pas composé suffisamment de lignes \par \else \hangcarryover \fi}} % les commandes annexes \def \leftbmpillustrate#1#2#3#4{% #1 = vertical material, #2 = width \leftillustrate{% % #3 = height, #4 = nb lines \vbox{\bmpillustrate{#1}{#2}{#3}}}% {#4}} \def \leftboxbmpillustrate#1#2#3#4{% #1 = vertical material, #2 = width \leftillustrate{% % #3 = height, #4 = nb lines \vbox{\boxbmpillustrate{#1}{#2}{#3}}}% {#4}} \def \leftsuperboxbmpillustrate#1#2#3#4{% #1 = vertical material, #2 = width \leftillustrate{% % #3 = height, #4 = nb lines \vbox{\superboxbmpillustrate{#1}{#2}{#3}}}% {#4}} % les commandes annexes \def \leftepsillustrate#1#2{% % #1 = vertical material, #2 = nb lines \leftillustrate{% \vbox{\epsillustrate{#1}}}% {#2}} \def \leftboxepsillustrate#1#2{% #1 = vertical material, #2 = nb lines \leftillustrate{% \vbox{\boxepsillustrate{#1}}}% {#2}} \def \leftsuperboxepsillustrate#1#2{% #1 = vertical material, #2 = nb lines \leftillustrate{% \vbox{\superboxepsillustrate{#1}}}% {#2}} \catcode`\@ = 12 %% test des macros \hangafter et \hangindent %% Ici, on reprend juste le test3, et on essaye %% de faire un peu plus propre %% fichier 'listing.tex' % cinquième etape de construction de la macro "listing"~: % la routine de sortie est modifiee (09/09/96), on reecrit totalement % le \input, on stocke dans des \vbox, et on donne le choix du % type de listing pour les coupures de page. % En plus, on reorganise tout ca, de facon a permettre une % macro \partiallisting. \catcode`\@ = 11 % ===== numerotation des lignes \newif \ifwithlinen@ % avec numerotation des lignes~? \withlinen@true % oui par defaut \def \withlineno{% % selection de l'option de numerotation \withlinen@true} % par des macros "visibles" \def \withoutlineno{% \withlinen@false} \def \n@mline{% % affichage du no de ligne \indent \llap{\sevenrm \the\lineno~: \hskip .5em}} \newcount \lineno % no de la ligne courante \newcount \listingno % no de version de la macro (0 = coupure n'importe ou, % 1 = coupure sur ligne vide) \newcount \beginlineno % no de la premiere ligne a afficher \newcount \endlineno % no de la derniere ligne a afficher \def \listingpath{% % le chemin d'acces, vide par defaut } % ===== affectation des caracteres actifs {\obeylines \global \def \temoin{^^M}} % la ligne suivante pose probleme : elle rajoute un caractere dans le % .dvi (?). A noter que c'est pourtant la solution proposee dans le % Lachand-Robert... %%{\obeyspaces\global\let =\ }% % solution de Knuth : voir le fichier info.tex, ligne 41 % ===== la boite pour encadrer le listing ligne par ligne \newbox \encadrbox \def \initencadrbox{% \setbox \encadrbox =\hbox to \hsize{% \vrule height 9pt depth 3pt \hfil \vrule height 9pt depth 3pt} \ht \encadrbox = 0pt \dp \encadrbox = 0pt \wd \encadrbox = 0pt} \newbox \box@ % le titre du listing \newtoks \listingtoks \newread \currentfile % ===== passe en mode verbatim \def \verb@tim{% \def \do##1{% % on prepare le verbatim \catcode`##1=12 }% \def°{% % pas tres propre ca, il s'agit \char23} % d'un truc provisoire pour le "degre" \dospecials \obeyspaces \def \par{% \leavevmode \endgraf}% \obeylines \eightpoint \tt} % style de fonte \def \writelistingline#1{% % #1 contient la ligne a traiter \ifnum \lineno < \beginlineno % qu'on affiche seulement si \else % le no de ligne courante \ifnum \lineno > \endlineno % est dans l'intervalle convenable \else #1 \fi \fi} % ===== traitement d'une ligne du fichier \def \traite@ne{% \ifx \temoin \next % si le 1er caractere est RET \writelistingline{\next} % c'est que la ligne est vide => on l'affiche \ifeof \currentfile % si le fichier n'est pas fini \else % alors on sauvegarde le no de ligne \global \edef \rest@renum{\lineno \the \lineno} \vss \egroup % puis on ferme la boite \mark{\the \listingtoks} \immediate \wlog{*************** \the \listingtoks ******** } \vbox\bgroup % on en ouvre une nouvelle \rest@renum % et on restaure le no de ligne \verb@tim \fi \else % la ligne n'est pas vide \writelistingline{\next} % et on l'affiche telle que \fi} % ===== lecture d'une ligne du fichier \def \read@ne{% % lit la ligne suivante et la \read \currentfile to \next % stocke dans \next \global \advance \lineno by 1 \ifnum \listingno = 1 % suivant le no de version \traite@ne % on fait un traitement adequat \else \writelistingline{\next} % ou on affiche tel que \fi \ifeof \currentfile % si c'est fini, \closein \currentfile % on ferme le fichier \let \next \relax % et on arrete, \else % sinon \let \next \read@ne % on recommence \fi \next} \def \listing#1#2#3{% #1 = version number #2 = file name, #3 = title \partiallisting{#1}{#2}{#3}{0}{10000}} % rque~: 10 000 en attendant mieux . . . \def \partiallisting#1#2#3#4#5{% #1 = version number #2 = file name, #3 = title \bigbreak % #4 = no de la 1ere ligne, #5 = no de la derniere ligne \vskip 2\baselineskip \penalty -200 \vskip -2\baselineskip \listingno = #1 \beginlineno = #4 \endlineno = #5 \immediate \wlog{Beginning listing of \listingpath #2} \initencadrbox \begingroup % DEBUT \offinterlineskip \listingtoks = {\tensl #3} \everypar = {% \hskip -\parindent \copy \encadrbox \strut \ifwithlinen@ \n@mline \else \indent \fi} \parskip = 0pt \lineno = 0 \ifwithlinen@ \parindent = 30pt \else \parindent = 20pt \fi \mark{\the\listingtoks} \ifnum \listingno = 1 % si version 1, on met dans des \vbox \vbox \fi \bgroup % debut du groupe listing \setbox\box@ = \hbox{\tensl #3} % recupere le titre pour en calculer la profondeur \line{% % la 1ere ligne du cadre \vrule height 0.4pt depth \dp\box@ \hrulefill \quad \the \listingtoks \quad \hrulefill \vrule height 0.4pt depth \dp\box@} \hbox to \hsize{% % la ligne vide qui suit \vrule height 9pt depth 3pt \hfil \vrule height 9pt depth 3pt} \verb@tim \openin \currentfile = \listingpath #2 % ici on change le \input \read@ne % et c'est \read@ne qui va lire le fichier \endgraf \nobreak \hbox to \hsize{% % la ligne vide finale \vrule height 9pt depth 0pt \hfil \vrule height 9pt depth 0pt} \hrule % la \hrule de fin de listing \egroup % fin du groupe listing \endgroup % FIN \mark{} % on restaure la marque \immediate \wlog{End listing of #2} \bigbreak}% % puis on modifie la routine de sortie \output = {% \expandafter \listingchek \botmark \end} % c'est une astuce pour lire % la \botmark en argument \def \listingchek#1\end{% \def \next{#1} % % #1 contient la \botmark \ifx \next \empty % % vide => pas de coupure \else % % sinon \setbox255 = \vbox to \vsize{% % on rajoute la ligne \unvbox255 % correspondante a la page \nointerlineskip % deja composee \line{\copy \encadrbox \hfil \strut} \nointerlineskip \hbox to \hsize{% \vsize = 0pt \dotfill}} % \advance \dimen0 by -\prevdepth % % \kern \dimen0 % \line{% \vrule height 0pt depth 2.5pt \dotfill \quad \sl \next % et la ligne (suite) a la \hskip 1em (suite)\quad \dotfill % page suivante \vrule height 0pt depth 2.5pt} \line{\copy \encadrbox \strut \hfill} % avec une ligne vide \fi \plainoutput} % final~: on appelle la routine % % habituelle \catcode`\@ = 12 %% fichier 'misenpge.tex' %% les differentes macros de mise en page % ============ macros de mises a jour ========= \def \today {% $\number \day $ \space \ifcase \month \or Janvier \or Février \or Mars \or Avril \or Mai \or Juin \or Juillet \or Août \or Septembre \or Octobre \or Novembre \or Décembre \fi $\number \year $} % ====================== referencage des documents =========================== %%%%% la date %%%%% \newbox \datebox \def \cleardatebox {% \setbox \datebox = \box \datebox } \cleardatebox \def \date#1{% \setbox \datebox \hbox {\eightpoint \rm #1}} %%%%% la classe %%%%% \newbox \classebox \def \clearclassebox {% \setbox \classebox = \box \classebox } \def \classe#1{% \setbox \classebox \hbox {\sevenrm #1}} %%%%% les references du document %%%%% \newbox \classificationbox \def \clearclassificationbox {% \setbox \classificationbox = \box \classificationbox } \clearclassificationbox \def \classification#1#2{% \setbox \classificationbox = \hbox {\eightpoint \rm {\bf #1} #2 \hfill }} % ============================================================================= %% \def \duree#1{% %% \setbox \dureebox %% \hbox {\sevenrm \underbar {durée}~: #1}}% %% \def \bareme#1{% %% \setbox \baremebox = % %% \hbox {({\sl #1 points\/}) }}% %% =============================================== % la définition suivante est destinée à être supprimée % (mauvaise conception) jp, 15-08-96 %\def \entete{% % \vskip \enteteskip % \line{\unhbox \classificationbox % \unhbox \classebox % \hfil % \quad % \unhbox \datebox} % \vskip \enteteskipafter}% %%%%%%%%% REMARQUE~: du coup, les variables \entete... sont inutiles % ============================ gestion de la headline ========================= \newtoks \lyceeheadline \newtoks \firstheadline \newtoks \oddheadline \newtoks \evenheadline \lyceeheadline = {% \unhcopy \classificationbox \unhcopy \classebox \hfil \quad \unhcopy \datebox } \headline = {% \ifnum \pageno = 1 \the\firstheadline \else \ifodd \pageno \the\oddheadline \else \the\evenheadline \fi \fi} \firstheadline = \lyceeheadline \oddheadline = \lyceeheadline \evenheadline = \lyceeheadline % ============================ gestion de la footline ========================= \newtoks \firstfootline \newtoks \oddfootline \newtoks \evenfootline \newtoks \lyceefootline \footline = {% \ifnum \pageno = 1 \the\firstfootline \else \ifodd \pageno \the\oddfootline \else \the\evenfootline \fi \fi } \lyceefootline = {\hss} \firstfootline = \lyceefootline \oddfootline = \lyceefootline \evenfootline = \lyceefootline % ============================================================================= %% fichier 'info.tex' %% macros pour décrire des programmes. ref pp 420--422 du TeXbook %% \def \|{\leavevmode \hbox{\tt \char`\|}} % vertical line \def \°{\leavevmode \hbox{\tt \char23}} % ??? \newskip \ttglue \ttglue = .5em plus.25em minus .15em \outer \def \begindisplay{% \obeylines \startdisplay} {\obeylines \gdef \startdisplay#1 {\catcode`\^^M=5% $$#1 % \halign\bgroup % \indent ## \hfil && \qquad ## \hfil \cr}} \outer \def \enddisplay{% \crcr \egroup $$} \chardef \other = 12 \def \ttverbatim{% \begingroup \catcode`\\=\other \catcode`\{=\other \catcode`\}=\other \catcode`\$=\other \catcode`\&=\other \catcode`\#=\other \catcode`\%=\other \catcode`\~=\other \catcode`\_=\other \catcode`\^=\other \obeyspaces \obeylines % \tt} {\obeyspaces \gdef {\ }} % \obeyspaces now gives \ , not \space \outer \def \begintt{% $$ \let \par = \endgraf \ttverbatim % \parskip = 0pt % \catcode`\|=0 % \rightskip = -5pc % \ttfinish} {\catcode`\| = 0 \catcode`\\=\other % | is temporary escape character |obeylines % |gdef |ttfinish#1^^M#2\endtt{% #1 % |vbox{#2} % |endgroup % $$}} % ci-dessous une astuce remarquable pour permettre d'écrire '|something|' et % d'avoir la phrase 'something' en ttverbatim. \catcode`\@ = 11 \def \specialbar{% \ifmmode \def \next{|} \else \let \next = \speci@lbar \fi \next} \catcode`\|=\active \let| = \specialbar {\obeylines \gdef \speci@lbar{% \ttverbatim % \spaceskip = \ttglue % \let^^M=\ % \let|=\endgroup}} \catcode`\@ = 12 \Times