diff options
Diffstat (limited to 'Master/texmf-dist/doc/generic/pst-solides3d/doc/format-jpv.tex')
-rw-r--r-- | Master/texmf-dist/doc/generic/pst-solides3d/doc/format-jpv.tex | 1871 |
1 files changed, 1871 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/pst-solides3d/doc/format-jpv.tex b/Master/texmf-dist/doc/generic/pst-solides3d/doc/format-jpv.tex new file mode 100644 index 00000000000..6c1930dd53f --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-solides3d/doc/format-jpv.tex @@ -0,0 +1,1871 @@ +%% 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=<dimen> \epsfbox{filename.ps} +% (or +% \epsfysize=<dimen> \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 |