5 \def \ComputerModern {%
7 \font \fourtybf = cmbx10 at
40pt
9 \font \thirtybf = cmbx10 at
30pt
11 \font \twentyfivebf = cmbx10 at
24.88pt
13 \font \twentytt = cmtt10 at
20.74pt
14 \font \twentybf = cmbx10 at
20.74pt
15 \font \twentysl = cmsl10 at
20.74pt
17 \font \fourteenbf = cmbx10 scaled
1440
18 \font \fourteenrm = cmr10 scaled
1440
19 \font \fourteensc = cmcsc10 at
14.40pt
20 \font \fourteensy = cmsy10 at
14.40pt
21 \font \fourteenmsam = msam10 at
14.40pt
22 \font \fourteenmsbm = msbm10 at
14.40pt
23 \font \fourteenmi = cmmi10 at
14.40pt
24 \font \fourteensl = cmsl10 at
14.40pt
25 \font \fourteenit = cmti10 at
14.40pt
26 \font \fourteentt = cmtt10 at
14.40pt
28 \font \twelvemi = cmmi10 at
12pt
29 \font \twelvebf = cmbx12
30 \font \twelveit = cmti12
31 \font \twelverm = cmr12
32 \font \twelvesl = cmsl12
33 \font \twelvett = cmtt12
34 \font \twelvesy = cmsy10 at
12pt
35 \font \twelvemsam = msam10 at
12pt
36 \font \twelvemsbm = msbm10 at
12pt
37 \font \twelvesc = cmcsc10 at
12pt
41 \font \tenslbf = cmbxsl10
43 %% jp \font \tenli = cmli10
49 \font \tensc = cmcsc10
50 \font \tenmsam = msam10
51 \font \tenmsbm = msbm10
52 \font \tenbfmi = cmmib10
53 \font \tenssit = cmssi10
55 \font \tenwncyr = wncyr10
65 %% \font \nineli = cmli9
66 \font \ninemsam = msam10 at
9pt
67 \font \ninemsbm = msbm10 at
9pt
68 \font \ninesc = cmcsc9
70 \font \eighttt = cmtt8
72 \font \eightmi = cmmi8
73 \font \eightsy = cmsy8
74 \font \eightmsam = msam10 at
8pt
75 \font \eightmsbm = msbm10 at
8pt
76 \font \eightbf = cmbx8
77 \font \eightex = cmex10 at
8pt
78 \font \eightit = cmti8
79 \font \eightsl = cmsl8
82 \font \sevenbf = cmbx7
83 \font \sevenmi = cmmi7
84 \font \sevenex = cmex7
85 \font \sevensy = cmsy7
86 \font \sevenmsam = msam10 at
7pt
87 \font \sevenmsbm = msbm10 at
7pt
89 %%\font \truesevenmi = cmmi7 at 7truept
95 \font \fivemsam = msam10 at
5pt
96 \font \fivemsbm = msbm10 at
5pt
97 \font \fivesl = cmsl10 at
5pt
99 %%\font \truefivemi = cmmi5 at 5truept
103 %%Attention : ne jamais recharger ce fichier, car cela redefinit les numeros des
104 %%familles suivantes, et le traitement des symboles de la famille \|\specialchar|
105 %%s'en ressent, car ces symboles sont designes comme faisant partie de la famille
106 %%8 (et non pas \|\specialchar|, qu'il n'est alors pas possible de designer
107 %%formellement, voir le fichier SYMBOL.TEX)
109 %% jp \newfam \itfam % \it is family 4
110 %% jp \newfam \slfam % \sl is family 5
111 %% jp \newfam \bffam % \bf is family 6
112 %% jp \newfam \ttfam % \tt is family 7
113 \newfam \specialchar % Family for blackboard bold symbols (family 8)
114 \newfam \otherspecialchar % Family for others symbols (family 9)
116 %%% la galere du jmath %%%
118 \setbox \jmathbox \hbox {\bgroup \it j
\egroup }
120 \tmpdimen \ht \jmathbox
121 \advance \tmpdimen by -
2.1pt
122 \ht \jmathbox \tmpdimen
126 %%%%%%%%%%%%%%%%%%%%%%%%%
131 %%% la galere du jmath %%%
132 \let \jmath \putjmath
133 %%%%%%%%%%%%%%%%%%%%%%%%%
135 \font \fourtybf = ptmb at
40pt
137 \font \thirtybf = ptmb at
30pt
139 \font \twentyfivebf = ptmb at
24.88pt
140 \font \twentymi = zptmcmrm at
24.88pt
142 \font \twentytt = pcrb at
20.74pt
143 \font \twentybf = ptmb at
20.74pt
144 \font \twentysl = ptmro at
20.74pt
146 \font \fourteenbf = ptmb scaled
1440
147 \font \fourteenrm = ptmr scaled
1440
148 %% \font \fourteensc = cmcsc10 at 14.40pt
149 \font \fourteensy = zpzccmry at
14.40pt
150 \font \fourteenmsam = msam10 at
14.40pt
151 \font \fourteenmsbm = msbm10 at
14.40pt
152 \font \fourteenmi = zptmcmrm at
14.40pt
153 \font \fourteensl = ptmro at
14.40pt
154 \font \fourteenit = ptmri at
14.40pt
155 \font \fourteentt = pcrb at
14.40pt
157 \font \twelvemi = zptmcmrm at
12pt
158 \font \twelvebf = ptmb at
12pt
159 \font \twelveit = ptmri at
12pt
160 \font \twelverm = ptmr at
12pt
161 \font \twelvesl = ptmro at
12pt
162 \font \twelvett = pcrb at
12pt
163 \font \twelvesy = zpzccmry at
12pt
164 \font \twelvemsam = msam10 at
12pt
165 \font \twelvemsbm = msbm10 at
12pt
166 %% \font \twelvesc = cmcsc10 at 12pt
170 \font \tenslbf = cmbxsl10
172 %% jp \font \tenli = cmli10
175 %% \font \tenmi = zptmcm7m at 10pt
176 %% \font \tenex = zpsycmrv at 10pt
177 %% \font \tensy = zptmcm7y at 10pt
178 \font \tenmi = zptmcmrm at
10pt
179 \font \tenex = zpsycmrv at
10pt
180 \font \tensy = zpzccmry at
10pt
181 \font \tensc = cmcsc10
182 \font \tenmsam = msam10
183 \font \tenmsbm = msbm10
184 \font \tenbfmi = cmmib10
185 \font \tenssit = cmssi10
186 \font \tenss = cmss10
187 \font \tenwncyr = wncyr10
189 \font \ninerm = ptmr at
9pt
190 \font \ninemi = zptmcmrm at
9pt
191 \font \nineex = zpsycmrv at
9pt
192 \font \ninesy = zpzccmry at
9pt
193 \font \ninebf = ptmb at
9pt
194 \font \nineit = ptmri at
9pt
195 \font \ninesl = ptmro at
9pt
196 \font \ninett = pcrb at
9pt
197 %% \font \nineli = cmli9
198 \font \ninemsam = msam10 at
9pt
199 \font \ninemsbm = msbm10 at
9pt
200 \font \ninesc = cmcsc9
202 \font \eighttt = pcrb at
8pt
203 \font \eightrm = ptmr at
8pt
204 \font \eightmi = zptmcmrm at
8pt
205 \font \eightsy = zpzccmry at
8pt
206 \font \eightmsam = msam10 at
8pt
207 \font \eightmsbm = msbm10 at
8pt
208 \font \eightbf = cmbx8
209 \font \eightex = zpsycmrv at
8pt
210 \font \eightit = ptmri at
8pt
211 \font \eightsl = ptmro at
8pt
213 \font \sevenrm = ptmr at
7pt
214 \font \sevenbf = ptmb at
7pt
215 \font \sevenmi = zptmcmrm at
7pt
216 \font \sevenex = zpsycmrv at
7pt
217 \font \sevensy = zpzccmry at
7pt
218 \font \sevenmsam = msam10 at
7pt
219 \font \sevenmsbm = msbm10 at
7pt
221 %%\font \truesevenmi = cmmi7 at 7truept
223 \font \fiverm = ptmr at
5pt
224 \font \fivebf = ptmb at
5pt
225 \font \fivemi = zptmcmrm at
5pt
226 \font \fivesy = zpzccmry at
5pt
227 \font \fivemsam = msam10 at
5pt
228 \font \fivemsbm = msbm10 at
5pt
229 \font \fivesl = cmsl10 at
5pt
234 %%% la galere du jmath %%%
235 \let \jmath \putjmath
236 %%%%%%%%%%%%%%%%%%%%%%%%%
238 \font \fourtybf = pplb at
40pt
240 \font \thirtybf = pplb at
30pt
242 \font \twentyfivebf = pplb at
24.88pt
244 \font \twentytt = pcrb at
20.74pt
245 \font \twentybf = pplb at
20.74pt
246 \font \twentysl = pplro at
20.74pt
248 \font \fourteenbf = pplb scaled
1440
249 \font \fourteenrm = pplr scaled
1440
250 %% \font \fourteensc = cmcsc10 at 14.40pt
251 \font \fourteensy = zpzccmry at
14.40pt
252 \font \fourteenmsam = msam10 at
14.40pt
253 \font \fourteenmsbm = msbm10 at
14.40pt
254 \font \fourteenmi = zptmcmrm at
14.40pt
255 \font \fourteensl = pplro at
14.40pt
256 \font \fourteenit = pplri at
14.40pt
257 \font \fourteentt = pcrb at
14.40pt
259 \font \twelvemi = zptmcmrm at
12pt
260 \font \twelvebf = pplb at
12pt
261 \font \twelveit = pplri at
12pt
262 \font \twelverm = pplr at
12pt
263 \font \twelvesl = pplro at
12pt
264 \font \twelvett = pcrb at
12pt
265 \font \twelvesy = zpzccmry at
12pt
266 \font \twelvemsam = msam10 at
12pt
267 \font \twelvemsbm = msbm10 at
12pt
268 %% \font \twelvesc = cmcsc10 at 12pt
272 \font \tenslbf = cmbxsl10
274 %% jp \font \tenli = cmli10
277 \font \tenmi = zptmcmrm at
10pt
278 \font \tenex = zpsycmrv at
10pt
279 \font \tensy = zpzccmry at
10pt
280 \font \tensc = cmcsc10
281 \font \tenmsam = msam10
282 \font \tenmsbm = msbm10
283 \font \tenbfmi = cmmib10
284 \font \tenssit = cmssi10
285 \font \tenss = cmss10
286 \font \tenwncyr = wncyr10
288 \font \ninerm = pplr at
9pt
289 \font \ninemi = zptmcmrm at
9pt
290 \font \nineex = zpsycmrv at
9pt
291 \font \ninesy = zpzccmry at
9pt
292 \font \ninebf = pplb at
9pt
293 \font \nineit = pplri at
9pt
294 \font \ninesl = pplro at
9pt
295 \font \ninett = pcrb at
9pt
296 %% \font \nineli = cmli9
297 \font \ninemsam = msam10 at
9pt
298 \font \ninemsbm = msbm10 at
9pt
299 \font \ninesc = cmcsc9
301 \font \eighttt = pcrb at
8pt
302 \font \eightrm = pplr at
8pt
303 \font \eightmi = zptmcmrm at
8pt
304 \font \eightsy = zpzccmry at
8pt
305 \font \eightmsam = msam10 at
8pt
306 \font \eightmsbm = msbm10 at
8pt
307 \font \eightbf = cmbx8
308 \font \eightex = zpsycmrv at
8pt
309 \font \eightit = pplri at
8pt
310 \font \eightsl = pplro at
8pt
312 \font \sevenrm = pplr at
7pt
313 \font \sevenbf = pplb at
7pt
314 \font \sevenmi = zptmcmrm at
7pt
315 \font \sevenex = zpsycmrv at
7pt
316 \font \sevensy = zpzccmry at
7pt
317 \font \sevenmsam = msam10 at
7pt
318 \font \sevenmsbm = msbm10 at
7pt
320 %%\font \truesevenmi = cmmi7 at 7truept
322 \font \fiverm = pplr at
5pt
323 \font \fivebf = pplb at
5pt
324 \font \fivemi = pplri at
5pt
325 \font \fivesy = zpzccmry at
5pt
326 \font \fivemsam = msam10 at
5pt
327 \font \fivemsbm = msbm10 at
5pt
328 \font \fivesl = cmsl10 at
5pt
331 %% fichier 'symbol.tex'
332 %%Les definitions suivantes permettent de gerer les symboles speciaux, par
333 %%famille. Le premier chiffre hexadecimal designe la classe du symbole, ici
334 %%ordinaire, le second la famille (designee en absolu), ici 8, les
335 %%deux derniers la position du caractere dans la fonte.
337 \mathchardef \aset = "
0841
338 \mathchardef \bset = "
0842
339 \mathchardef \cset = "
0843
340 \mathchardef \dset = "
0844
341 \mathchardef \eset = "
0845
342 \mathchardef \fset = "
0846
343 \mathchardef \gset = "
0847
344 \mathchardef \hset = "
0848
345 \mathchardef \iset = "
0849
346 \mathchardef \jset = "
084A
347 \mathchardef \kset = "
084B
348 \mathchardef \lset = "
084C
349 \mathchardef \mset = "
084D
350 \mathchardef \nset = "
084E
351 \mathchardef \oset = "
084F
352 \mathchardef \pset = "
0850
353 \mathchardef \qset = "
0851
354 \mathchardef \rset = "
0852
355 \mathchardef \sset = "
0853
356 \mathchardef \tset = "
0854
357 \mathchardef \uset = "
0855
358 \mathchardef \vset = "
0856
359 \mathchardef \wset = "
0857
360 \mathchardef \xset = "
0858
361 \mathchardef \yset = "
0859
362 \mathchardef \zset = "
085A
364 \mathchardef \subsetneq = "
3820 %% symbole d'inclusion stricte
366 \def\zseti {\zset [i
]}
367 \def\qseti {\qset [i
]}
369 % ========= quelques operateurs mathematiques ===========
370 \def \pgcd {\mathop {\rm pgcd
}}
371 \def \arctan {\mathop {\rm Arctan
}}
372 \def \cotan {\mathop {\rm cotan
}}
373 \def \ch {\mathop {\rm ch
} \nolimits }
374 \def \sh {\mathop {\rm sh
} \nolimits }
375 \def \th {\mathop {\rm th
} \nolimits }
376 \def \argch {\mathop {\rm Argch
} \nolimits }
377 \def \argsh {\mathop {\rm Argsh
} \nolimits }
378 \def \argth {\mathop {\rm Argth
} \nolimits }
379 \def \arcsin {\mathop {\rm Arcsin
}}
380 \def \arccos {\mathop {\rm Arccos
}}
381 \def \arg {\mathop {\rm Arg
}}
382 \def \Id {\mathop {\rm Id
}}
383 \def \id {\mathop {\rm Id
}}
384 \def \im {\mathop {\rm Im
}}
385 \def \tr {\mathop {\rm Tr
} \nolimits }
386 \def \card {\mathop {\rm Card
} \nolimits }
387 \def \true {\mathop {\rm true
} \nolimits }
388 \def \false {\mathop {\rm false
} \nolimits }
389 \def \signe {\mathop {\rm signe
}}
390 \def \cov {\mathop {\rm cov
}}
391 \def \mod {\mathop {\rm mod
}}
392 % =========== les dimensions ====================
393 \def \rd {\mathop {\rm rd
} \nolimits }
394 \def \mm {\mathop {\rm mm
} \nolimits }
395 \def \cm {\mathop {\rm cm
} \nolimits }
396 \def \dm {\mathop {\rm dm
} \nolimits }
397 \def \km {\mathop {\rm km
} \nolimits }
398 \def \m {\mathop {\rm m
} \nolimits }
399 \def \h {\mathop {\rm h
} \nolimits }
400 \def \mn {\mathop {\rm mn
} \nolimits }
401 \def \s {\mathop {\rm s
} \nolimits }
402 \def \ms {\mathop {\rm ms
} \nolimits }
403 \def \g {\mathop {\rm g
} \nolimits }
404 \def \kg {\mathop {\rm kg
} \nolimits }
405 \def \N {\mathop {\rm N
} \nolimits }
406 \def \l {\mathop {\rm l
} \nolimits }
407 \def \daN {\mathop {\rm danN
} \nolimits }
408 \def \Hz {\mathop {\rm Hz
} \nolimits }
410 \def \rem {\mathop {\rm rem
} \nolimits }
411 \def \mGy {\mathop {\rm mGy
} \nolimits }
412 \def \mSv {\mathop {\rm mSv
} \nolimits }
413 \def \mR {\mathop {\rm mR
} \nolimits }
414 \def \Ci {\mathop {\rm Ci
} \nolimits }
415 \def \Bq {\mathop {\rm Bq
} \nolimits }
417 \def \Me {\mathop {\rm Me
} \nolimits }
418 % ========= caracteres speciaux ====================
419 \def \bull{% le carre noir
420 \vrule height
.9ex width
.8ex depth -
.1ex
}
421 %% la macro suivante pose un probleme~: les guillemets sont
422 %% toujours en 10 pts !!!
423 \long \def \og#1\fg{% les guillemets francais
425 {\tenwncyr \char 60}~
%
428 ~
{\tenwncyr \char 62}%
430 %% on redefinit les signes de comparaisons >= et <= pour avoir les
432 \mathchardef\leq="
3936 % code hexadecimal 36 de la famille 9, type relation (3)
433 \mathchardef\geq="
393E
436 %%\def \brem {\mskip -\medmuskip\mkern5mu
437 %% \mathbin{\rm rem} \penalty900 \mkern5mu \mskip -\medmuskip}
439 %%\def \bmodulo {\mskip -\medmuskip\mkern5mu
440 %% \mathbin{\bf mod} \penalty900 \mkern5mu \mskip -\medmuskip}
443 \def\MyCancel#1#2{\ooalign{$
\hfil#1\mkern-
3.5mu
\hbox{\it/
}\hfil$
\crcr$
#1#2$
}}
444 \def\notmid{\mathrel{\mathpalette\MyCancel\mid}}
446 %% fichier 'style.tex'
450 {\textfont \z@
\eightrm \def \rm {\fam \z@
\eightrm }%
451 \baselineskip 9pt
\lineskip 0.833pt
\lineskiplimit 0pt
452 \textfont \@ne
\eightmi \scriptfont \@ne
\fivemi %% modif jp \sevenmi
453 \scriptscriptfont \@ne
\fivemi \def \mit {\fam \@ne
}%
454 \textfont \tw@
\eightsy
456 \textfont \specialchar \eightmsbm
457 \textfont \otherspecialchar \eightmsam
458 \textfont \bffam \eightbf \def \bf {\fam \bffam \eightbf }%
459 \textfont \itfam \eightit \def \it {\fam \itfam \eightit }%
460 \textfont \ttfam \eighttt \def \tt {\fam \ttfam \eighttt }%
461 \textfont \slfam \eightsl \def \sl {\fam \slfam \eightsl }%
462 \setbox \strutbox \hbox {\vrule height
7pt depth
2pt width
0pt
}%
466 {\textfont \z@
\ninerm \scriptfont \z@
\sevenrm
467 \scriptscriptfont \z@
\fiverm \def \rm {\fam \z@
\ninerm }%
468 \textfont \@ne
\ninemi \scriptfont \@ne
\sevenmi
469 \scriptscriptfont \@ne
\fivemi \def \mit {\fam \@ne
}%
470 \def \oldstyle {\fam \@ne
\ninemi }%
471 \textfont \tw@
\ninesy \scriptfont \tw@
\sevensy
472 \scriptscriptfont \tw@
\fivesy \def \cal {\fam \tw@
}%
473 \textfont3 \nineex \scriptfont3 \sevenex
474 \scriptscriptfont3 \sevenex
475 \textfont \bffam \ninebf \scriptfont \bffam \sevenbf
476 \scriptscriptfont \bffam \fivebf \def \bf {\fam \bffam \ninebf }%
477 \textfont \itfam \nineit \def \it {\fam \itfam \nineit }%
478 \textfont \slfam \ninesl \def \sl {\fam \slfam \ninesl }%
479 \textfont \ttfam \ninett \def \tt {\fam \ttfam \ninett }%
481 \textfont \specialchar \ninemsbm \scriptfont \specialchar \sevenmsbm
482 \textfont \otherspecialchar \ninemsam
483 \scriptfont \otherspecialchar \sevenmsam
484 \normalbaselineskip 10pt
485 \abovedisplayskip 6pt plus
1pt minus
6pt
486 \abovedisplayshortskip 0pt plus
2pt
487 \belowdisplayskip 6pt plus
1pt minus
6pt
488 \belowdisplayshortskip 4pt plus
1pt minus
3pt
489 \setbox \strutbox \hbox {\vrule height
8pt depth
2pt width
0pt
}%
494 {\textfont \z@
\tenrm \scriptfont \z@
\sevenrm
495 \scriptscriptfont \z@
\fiverm \def \rm {\fam \z@
\tenrm }%
496 \textfont \@ne
\tenmi \scriptfont \@ne
\sevenmi
497 \scriptscriptfont \@ne
\fivemi \def \mit {\fam \@ne
}%
498 \def \oldstyle {\fam \@ne
\tenmi }%
499 \textfont \tw@
\tensy \scriptfont \tw@
\sevensy
500 \scriptscriptfont \tw@
\fivesy \def \cal {\fam \tw@
}%
501 \textfont3 \tenex \scriptfont3 \sevenex
502 \scriptscriptfont3 \sevenex
503 \textfont \bffam \tenbf \scriptfont \bffam \sevenbf
504 \scriptscriptfont \bffam \fivebf \def \bf {\fam \bffam \tenbf }%
505 \textfont \itfam \tenit \def \it {\fam \itfam \tenit }%
506 \textfont \slfam \tensl \def \sl {\fam \slfam \tensl }%
507 \textfont \ttfam \tentt \def \tt {\fam \ttfam \tentt }%
509 \textfont \specialchar \tenmsbm
510 \scriptfont \specialchar \sevenmsbm
511 \textfont \otherspecialchar \tenmsam
512 \scriptfont \otherspecialchar \sevenmsam
513 \scriptscriptfont \otherspecialchar \fivemsam
514 \abovedisplayskip 9pt plus
2pt minus
6pt
515 \abovedisplayshortskip 0pt plus
2pt
516 \belowdisplayskip 9pt plus
2pt minus
6pt
517 \belowdisplayshortskip 5pt plus
2pt minus
3pt
518 %% \baselineskip 11pt \lineskip 1pt
519 \baselineskip 12pt
\lineskip 1pt
520 \lineskiplimit 0pt
%% change le 20-07-91
521 \setbox \strutbox \hbox {\vrule height
8.5pt depth
3.5pt width
0pt
}%
525 {\textfont \z@
\twelverm \scriptfont \z@
\tenrm
526 \scriptscriptfont \z@
\sevenrm \def \rm {\fam \z@
\twelverm }%
527 \textfont \@ne
\twelvemi \scriptfont \@ne
\tenmi
528 \scriptscriptfont \@ne
\sevenmi \def \mit {\fam \@ne
}%
529 \textfont \tw@
\twelvesy
530 \textfont \specialchar \twelvemsbm
531 \textfont \otherspecialchar \twelvemsam
532 \textfont \bffam \twelvebf \scriptfont \bffam \tenbf
533 \scriptscriptfont \bffam \sevenbf \def \bf {\fam \bffam \twelvebf }%
534 \textfont \ttfam \twelvett \def \tt {\fam \ttfam \twelvett }%
536 \def \it {\twelveit }\def \sl {\twelvesl }\def \tt {\twelvett }%
537 \baselineskip 14pt
\lineskiplimit 2pt
\lineskip 2pt
541 {\textfont \z@
\fourteenrm \scriptfont \z@
\twelverm
542 \scriptscriptfont \z@
\tenrm \def \rm {\fam \z@
\fourteenrm }%
543 \textfont \@ne
\fourteenmi \scriptfont \@ne
\twelvemi
544 \scriptscriptfont \@ne
\ninemi \def \mit {\fam \@ne
}%
545 \textfont \tw@
\fourteensy
546 \textfont \specialchar \fourteenmsbm
547 \textfont \otherspecialchar \fourteenmsam
548 \textfont \bffam \fourteenbf \scriptfont \bffam \twelvebf
549 \scriptscriptfont \bffam \tenbf \def \bf {\fam \bffam \fourteenbf }%
550 \def \it {\fourteenit }\def \sl {\fourteensl }\def \tt {\fourteentt }%
553 \let \footnotestyle =
\eightpoint
554 %% jp \let \remarkstyle = \ninepoint
555 %% jp \let \headlinestyle = \ninepoint
558 %% fichier 'newplain.tex'
559 % redef de certaines macros du format plain.tex
563 \def\footnote#1{\let\@sf
\empty % parameter #2 (the text) is read later
564 \ifhmode\edef\@sf
{\spacefactor\the\spacefactor}\/
\fi
565 #1\@sf
\vfootnote{#1}}
566 \def\vfootnote#1{\insert\footins\bgroup
567 \interlinepenalty\interfootnotelinepenalty
568 \splittopskip\ht\strutbox % top baseline for broken footnotes
569 \splitmaxdepth\dp\strutbox \floatingpenalty\@MM
570 \leftskip\z@skip
\rightskip\z@skip
\spaceskip\z@skip
\xspaceskip\z@skip
571 \textindent{#1}\footstrut\futurelet\next\fo@t
}
572 \def\fo@t
{\ifcat\bgroup\noexpand\next \let\next\f@@t
573 \else\let\next\f@t
\fi \next}
574 \def\f@@t
{\bgroup\aftergroup\@foot
\let\next}
576 \def\@foot
{\strut\egroup}
577 \def\footstrut{\vbox to
\splittopskip{}}
578 \skip\footins=
\bigskipamount % space added when footnote is present
579 \count\footins=
1000 % footnote magnification factor (1 to 1)
580 \dimen\footins=
8in
% maximum footnotes per page
584 % redefinition de la macro \footnote (TeXbook p 416)
587 \spacefactor \the \spacefactor}%
589 \insert \footins \bgroup
591 \interlinepenalty =
100
595 \splittopskip =
10pt plus
1pt minus
1pt
596 \floatingpenalty =
20000
602 \let \next} % elimine l'accolade ouvrante qui suit
603 \skip \footins =
12pt plus
2pt minus
4pt
% space addes when footnote exists
604 \dimen \footins =
30pc
% maximum footnote per page
606 % =================== redef de \do ==================================
608 \def\dospecials{\do\
\do\\
\do\
{\do\
}\do\$
\do\&
%
609 \do\#
\do\^
\do\^^K
\do\_\do\^^A
\do\%
\do\~
\do\|
}
611 % =================== redef de \item =================================
613 \newskip \itemindent \itemindent =
\parindent
617 \def\hang{\hangindent\itemindent}
618 \def\textindent#1{\hskip\itemindent\llap{#1\enspace}\ignorespaces}
619 \def\item{\par\hang\textindent}
620 \def\itemitem{\par\hskip\itemindent \hangindent2\itemindent \textindent}
621 \def\narrower{\advance\leftskip\itemindent
622 \advance\rightskip\itemindent}
625 %% fichier 'fr-kbd.tex'
626 % ======== adaptation au clavier accentue ================
627 \catcode `\é =
\active \def é
{\ifmmode \acute e
\else \' e
\fi }
628 \catcode `\è =
\active \def è
{\ifmmode \grave e
\else \` e
\fi }
629 \catcode `\à =
\active \def à
{\ifmmode \grave a
\else \` a
\fi }
630 \catcode `\ù =
\active \def ù
{\ifmmode \grave u
\else \` u
\fi }
631 \catcode `\ç =
\active \def ç
{\c c
}
632 \catcode `\â =
\active \def â
{\^ a
}
633 \catcode `\ê =
\active \def ê
{\^ e
}
634 \catcode `\î =
\active \def î
{\^
\i }
635 \catcode `\ô =
\active \def ô
{\^ o
}
636 \catcode `\û =
\active \def û
{\^ u
}
637 \catcode `\ä =
\active \def ä
{\" a
}
638 \catcode `\ë =
\active \def ë
{\" e
}
639 \catcode `\ï =
\active \def ï
{\"
\i }
640 \catcode `\ö =
\active \def ö
{\" o
}
641 \catcode `\ü =
\active \def ü
{\" u
}
642 \catcode `\° =
\active \def °
{^
\circ }
643 %% fichier 'sections.tex'
644 %% Ce fichier contient toutes les macros concernant les sections
645 %% et leur mise en page
649 % =============================== les parties =================================
651 \newskip \partieskip \partieskip =
5pt plus
2pt minus
1pt
652 \newskip \partieskipafter \partieskipafter =
1pt plus
3pt
653 \newskip \paragrapheskip \paragrapheskip =
5pt plus
2pt minus
1pt
654 \newskip \paragrapheskipafter \paragrapheskipafter =
1pt plus
3pt
656 %% encadre dans la marge, en gras
659 \setbox0 =
\hbox {\boxit {2pt
}{\hbox {\bf \tvi height8pt depth0pt
#1}}}%
664 %% centre sur la ligne, en gras
665 \def \simplecenterpartie#1{%
672 \vskip \partieskipafter
676 \def \centerpartie#1{%
678 % \vskip 0pt plus 0,3\vsize
680 % \vskip 0pt plus -0,3\vsize
690 \vskip \partieskipafter
693 %% idem, avec 2 arguments
694 \def \doublecenterpartie#1#2{%
696 % \vskip 0pt plus 0,3\vsize
698 % \vskip 0pt plus -0,3\vsize
708 \vskip \partieskipafter
712 \def \discretpartie#1{%
717 %% la partie par defaut
718 \let \partie \discretpartie
720 % =============================================================================
722 % =============================== les titres ==================================
724 %% aussi bizarre que cela puisse paraitre, je laisse la macro '\duree'
727 \def \cleardureebox {%
728 \setbox \dureebox =
\box \dureebox }
731 \setbox 100 \hbox {\unhbox \dureebox }}
734 \setbox \dureebox \hbox {\sevenrm \underbar {durée
}~:
#1}}
736 \newskip \titreskip \titreskip =
10pt plus
10pt minus
10pt
737 \newskip \titreskipafter \titreskipafter =
10pt plus
10pt minus
10pt
738 \newskip \stitreskip \stitreskip =
5pt plus
5pt minus
5pt
739 \newskip \stitreskipafter \stitreskipafter =
5pt plus
5pt minus
5pt
740 \newtoks \titrestyle \titrestyle =
{\fourteenpoint \bf }
745 \vskip \bookstyleskip
747 \vskip -
\bookstyleskip
749 \bgroup % pour limiter la portee de la def de \\
750 \def \\
{% % commande qui est utilisee pour passer a la ligne dans un titre
752 \egroup % ferme la \hbox to \hsize en cours
753 \hbox to
\hsize \bgroup % et rouvre la suivante
756 \vskip 0pt plus
0,
3\vsize
758 \vskip 0pt plus -
0,
3\vsize
760 \hbox to
\hsize \bgroup \hss \the \titrestyle #1 \hss \egroup
763 \writetocentry {chapter
}{#1}
766 \else \line{\hfill \unhcopy \dureebox }
768 \vskip \titreskipafter
774 \vskip \bookstyleskip
776 \vskip -
\bookstyleskip
778 \bgroup % pour limiter la portee de la def de \\
779 \def \\
{% % commande qui est utilisee pour passer a la ligne dans un titre
781 \egroup % ferme la \hbox to \hsize en cours
782 \hbox to
\hsize \bgroup % et rouvre la suivante
785 \vskip 0pt plus
0,
3\vsize
787 \vskip 0pt plus -
0,
3\vsize
789 \llap {\box \datebox}
790 \hbox to
\hsize \bgroup \hss \the \titrestyle #1 \hss \egroup
793 \writetocentry {chapter
}{#1}
796 \else \line{\hfill \unhcopy \dureebox }
798 \vskip \titreskipafter
803 \centerline {\stitrestyle {#1}}
804 \vskip \stitreskipafter }%
806 % =============================================================================
808 % ========================== macros de numerotation ===========================
810 %%%%% les variables et leurs initialisations %%%%%
820 \global\advance \alphno by -
1}
823 \newskip \itemnumskip \itemnumskip =
0pt
824 \newskip \itemalphskip \itemalphskip =
0pt
825 \newskip \itemalphnumskip \itemalphnumskip =
0pt
827 %%%%% reglage du style d'affichage %%%%%
834 %%%%% les macros de numerotation %%%%%
835 %% \def \initalphnum {%
844 \global \advance \numno by
1
845 \numstyle {\the \numno }}%
846 %% \alph est en prévision du remaniement, ce n'est qu'une
847 %% copie de \alphnum, mais elle permet de commencer à
848 %% essayer de coder de facon plus cohérente ...
852 \global \advance \alphno by
1
853 \alphstyle {\alphno }}
866 \def \itemitemalph {%
871 \item {\num } \alph \
}
872 \def \itemitemalphnum {%
874 \itemitem {\num \quad \hskip .1 em
\alph }}
875 % =============================================================================
878 % =============================== les exercices ===============================
880 % ========= macros de section ==============
881 % ========================= les exemples ======================================
884 \def \clearexempleno{%
885 \global\exempleno =
0}
890 \advance \exempleno by
1
892 {\bf Exemple (
{\oldstyle \the \exempleno }) .
\sl #1}
908 % =============================================================================
910 % ============================ le bookstyle ===================================
912 \newif \ifb@@kstyle
% flag indiquant si on accepte les paragraphes
914 \b@@kstylefalse
% oui par defaut
915 \newskip \bookstyleskip % le mini de bas de page autorise pour un
917 \bookstyleskip =
0.3\vsize
919 \footline =
{\hss \tenrm \folio \hss }
921 \def \bookstylefalse {%
923 \def \onepagestyle {\b@@kstylefalse
}
925 % =============================================================================
927 % ============================== les paragraphes ==============================
929 %%%%% les variables et leurs initialisations %%%%%
945 %%%%% reglage du style d'affichage %%%%%
947 \def \paragraphestyle#1#2{%
952 \def \sparagraphestyle#1#2#3{%
957 \def \ssparagraphestyle#1#2#3#4{%
962 %%%%% les macro de paragraphe %%%%%
967 \vskip \bookstyleskip
969 \vskip -
\bookstyleskip
972 \vskip \paragrapheskip
975 \paragraphestyle {\the \parno }{#1}
977 \writetocentry {paragraf
}{#1}
979 \vskip \paragrapheskipafter }
981 \def \finparagraphe{%
984 \def \sparagraphe#1{%
989 \advance \sparno by
1
991 \sparagraphestyle {\the \parno }{\the \sparno }{#1}
993 \writetocentry {sparagraf
}{#1}
996 \def \finsparagraphe {%
998 \def \ssparagraphe#1{%
1002 \advance \ssparno by
1
1004 \ssparagraphestyle {\the \parno }{\the \sparno }{\the \ssparno }{#1}
1006 \writetocentry {ssparagraf
}{#1}
1009 \def \ssfinparagraphe {%
1012 % ============================== les remarques ================================
1023 \def \finremarque {%
1030 % EPSF.TEX macro file:
1031 % Written by Tomas Rokicki of Radical Eye Software, 29 Mar 1989.
1032 % Revised by Don Knuth, 3 Jan 1990.
1033 % Revised by Tomas Rokicki to accept bounding boxes with no
1034 % space after the colon, 18 Jul 1990.
1036 % TeX macros to include an Encapsulated PostScript graphic.
1037 % Works by finding the bounding box comment,
1038 % calculating the correct scale values, and inserting a vbox
1039 % of the appropriate size at the current position in the TeX document.
1041 % To use with the center environment of LaTeX, preface the \epsffile
1042 % call with a \leavevmode. (LaTeX should probably supply this itself
1043 % for the center environment.)
1045 % To use, simply say
1046 % \input epsf % somewhere early on in your TeX file
1047 % \epsfbox{filename.ps} % where you want to insert a vbox for a figure
1049 % Alternatively, you can type
1051 % \epsfbox[0 0 30 50]{filename.ps} % to supply your own BB
1053 % which will not read in the file, and will instead use the bounding
1056 % The effect will be to typeset the figure as a TeX box, at the
1057 % point of your \epsfbox command. By default, the graphic will have its
1058 % `natural' width (namely the width of its bounding box, as described
1059 % in filename.ps). The TeX box will have depth zero.
1061 % You can enlarge or reduce the figure by saying
1062 % \epsfxsize=<dimen> \epsfbox{filename.ps}
1064 % \epsfysize=<dimen> \epsfbox{filename.ps})
1065 % instead. Then the width of the TeX box will be \epsfxsize and its
1066 % height will be scaled proportionately (or the height will be
1067 % \epsfysize and its width will be scaled proportiontally). The
1068 % width (and height) is restored to zero after each use.
1070 % A more general facility for sizing is available by defining the
1071 % \epsfsize macro. Normally you can redefine this macro
1072 % to do almost anything. The first parameter is the natural x size of
1073 % the PostScript graphic, the second parameter is the natural y size
1074 % of the PostScript graphic. It must return the xsize to use, or 0 if
1075 % natural scaling is to be used. Common uses include:
1077 % \epsfxsize % just leave the old value alone
1078 % 0pt % use the natural sizes
1079 % #1 % use the natural sizes
1080 % \hsize % scale to full width
1081 % 0.5#1 % scale to 50% of natural size
1082 % \ifnum#1>\hsize\hsize\else#1\fi % smaller of natural, hsize
1084 % If you want TeX to report the size of the figure (as a message
1085 % on your terminal when it processes each figure), say `\epsfverbosetrue'.
1087 \newread\epsffilein % file to \read
1088 \newif\ifepsffileok % continue looking for the bounding box?
1089 \newif\ifepsfbbfound % success?
1090 \newif\ifepsfverbose % report what you're making?
1091 \newif\ifepsfdraft % use draft mode?
1092 \newdimen\epsfxsize % horizontal size after scaling
1093 \newdimen\epsfysize % vertical size after scaling
1094 \newdimen\epsftsize % horizontal size before scaling
1095 \newdimen\epsfrsize % vertical size before scaling
1096 \newdimen\epsftmp % register for arithmetic manipulation
1097 \newdimen\pspoints % conversion factor
1099 \pspoints=
1bp
% Adobe points are `big'
1100 \epsfxsize=
0pt
% Default value, means `use natural size'
1101 \epsfysize=
0pt
% ditto
1103 \def\epsfbox#1{\global\def\epsfllx{72}\global\def\epsflly{72}%
1104 \global\def\epsfurx{540}\global\def\epsfury{720}%
1105 \def\lbracket{[}\def\testit{#1}\ifx\testit\lbracket
1106 \let\next=
\epsfgetlitbb\else\let\next=
\epsfnormal\fi\next{#1}}%
1108 \def\epsfgetlitbb#1#2 #3 #4 #5]#6{\epsfgrab #2 #3 #4 #5 .\\%
1111 \def\epsfnormal#1{\epsfgetbb{#1}\epsfsetgraph{#1}}%
1115 % The first thing we need to do is to open the
1116 % PostScript file, if possible.
1118 \openin\epsffilein=
#1
1119 \ifeof\epsffilein\errmessage{I couldn't open
#1, will ignore it
}\else
1121 % Okay, we got it. Now we'll scan lines until we find one that doesn't
1122 % start with %. We're looking for the bounding box comment.
1124 {\epsffileoktrue \chardef\other=
12
1125 \def\do#
#1{\catcode`#
#1=
\other}\dospecials \catcode`\ =
10
1127 \read\epsffilein to
\epsffileline
1128 \ifeof\epsffilein\epsffileokfalse\else
1130 % We check to see if the first character is a % sign;
1131 % if not, we stop reading (unless the line was entirely blank);
1132 % if so, we look further and stop only if the line begins with
1135 \expandafter\epsfaux\epsffileline:. \\%
1137 \ifepsffileok\repeat
1139 \ifepsfverbose\message{No bounding box comment in
#1; using defaults
}\fi\fi
1140 }\closein\epsffilein\fi}%
1142 % Now we have to calculate the scale and offset values to use.
1143 % First we compute the natural sizes.
1145 \def\epsfclipon{\def\epsfclipstring{ clip
}}%
1146 \def\epsfclipoff{\def\epsfclipstring{\ifepsfdraft\space clip
\fi}}%
1149 \def\epsfsetgraph#1{%
1150 \epsfrsize=
\epsfury\pspoints
1151 \advance\epsfrsize by-
\epsflly\pspoints
1152 \epsftsize=
\epsfurx\pspoints
1153 \advance\epsftsize by-
\epsfllx\pspoints
1155 % If `epsfxsize' is 0, we default to the natural size of the picture.
1156 % Otherwise we scale the graph to be \epsfxsize wide.
1158 \epsfxsize\epsfsize\epsftsize\epsfrsize
1159 \ifnum\epsfxsize=
0 \ifnum\epsfysize=
0
1160 \epsfxsize=
\epsftsize \epsfysize=
\epsfrsize
1163 % We have a sticky problem here: TeX doesn't do floating point arithmetic!
1164 % Our goal is to compute y = rx/t. The following loop does this reasonably
1165 % fast, with an error of at most about 16 sp (about 1/4000 pt).
1167 \else\epsftmp=
\epsftsize \divide\epsftmp\epsfrsize
1168 \epsfxsize=
\epsfysize \multiply\epsfxsize\epsftmp
1169 \multiply\epsftmp\epsfrsize \advance\epsftsize-
\epsftmp
1171 \loop \advance\epsftsize\epsftsize \divide\epsftmp 2
1173 \ifnum\epsftsize<
\epsfrsize\else
1174 \advance\epsftsize-
\epsfrsize \advance\epsfxsize\epsftmp \fi
1178 \else \ifnum\epsfysize=
0
1179 \epsftmp=
\epsfrsize \divide\epsftmp\epsftsize
1180 \epsfysize=
\epsfxsize \multiply\epsfysize\epsftmp
1181 \multiply\epsftmp\epsftsize \advance\epsfrsize-
\epsftmp
1183 \loop \advance\epsfrsize\epsfrsize \divide\epsftmp 2
1185 \ifnum\epsfrsize<
\epsftsize\else
1186 \advance\epsfrsize-
\epsftsize \advance\epsfysize\epsftmp \fi
1190 \epsfrsize=
\epsfysize
1194 % Finally, we make the vbox and stick in a \special that dvips can parse.
1196 \ifepsfverbose\message{#1: width=
\the\epsfxsize, height=
\the\epsfysize}\fi
1197 \epsftmp=
10\epsfxsize \divide\epsftmp\pspoints
1198 \vbox to
\epsfysize{\vfil\hbox to
\epsfxsize{%
1199 \ifnum\epsfrsize=
0\relax
1200 \special{PSfile=
\ifepsfdraft psdraft.ps
\else#1\fi\space
1201 llx=
\epsfllx\space lly=
\epsflly\space
1202 urx=
\epsfurx\space ury=
\epsfury\space rwi=
\number\epsftmp
1205 \epsfrsize=
10\epsfysize \divide\epsfrsize\pspoints
1206 \special{PSfile=
\ifepsfdraft psdraft.ps
\else#1\fi\space
1207 llx=
\epsfllx\space lly=
\epsflly\space
1208 urx=
\epsfurx\space ury=
\epsfury\space rwi=
\number\epsftmp\space
1209 rhi=
\number\epsfrsize \epsfclipstring}%
1212 \global\epsfxsize=
0pt
\global\epsfysize=
0pt
}%
1214 % We still need to define the tricky \epsfaux macro. This requires
1215 % a couple of magic constants for comparison purposes.
1217 {\catcode`\%=
12 \global\let\epsfpercent=
%\global\def\epsfbblit{%BoundingBox}}%
1219 % So we're ready to check for `%BoundingBox:' and to grab the
1220 % values if they are found.
1222 \long\def\epsfaux#1#2:
#3\\
{\ifx#1\epsfpercent
1223 \def\testit{#2}\ifx\testit\epsfbblit
1224 \epsfgrab #3 . . . \\%
1226 \global\epsfbbfoundtrue
1227 \fi\else\ifx#1\par\else\epsffileokfalse\fi\fi}%
1229 % Here we grab the values and stuff them in the appropriate definitions.
1232 \def\epsfgrab #1 #2 #3 #4 #5\\
{%
1233 \global\def\epsfllx{#1}\ifx\epsfllx\epsfempty
1234 \epsfgrab #2 #3 #4 #5 .\\
\else
1235 \global\def\epsflly{#2}%
1236 \global\def\epsfurx{#3}\global\def\epsfury{#4}\fi}%
1238 % We default the epsfsize macro.
1240 \def\epsfsize#1#2{\epsfxsize}
1242 % Finally, another definition for compatibility with older macros.
1244 \let\epsffile=
\epsfbox
1245 %% fichier 'illustr.tex'
1246 %% essais pour la creation d'une macro \illustrate
1247 %% version 1 (22/12/96)
1251 \newbox \illustrateb@x
1255 % ============== commandes de base =======================
1256 % affichage d'une \hbox de la taille desiree, cette hbox
1257 % contenant un ordre \special pour charger un fichier .bmp
1258 % ATTENTION : on utilise la macro \bmppath, initialisee au
1259 % vide pour commencer
1261 % la routine commnue aux suivantes
1262 \def \bmpillustr@te
#1#2#3{% #1 = file, #2 = width, #3 = height
1263 \setbox \illustrateb@x =
\hbox{%
1264 \special{bmp:
\bmppath/
#1
1267 \dp \illustrateb@x =
0cm
1268 \ht \illustrateb@x =
#3
1269 \wd \illustrateb@x =
#2 }
1271 % la commande de base
1272 \def \bmpillustrate#1#2#3{% #1 = file, #2 = width, #3 = height
1273 \bmpillustr@te
{#1}{#2}{#3}
1274 \box \illustrateb@x
}
1276 % ici, on a en plus un \boxit
1277 \def \boxbmpillustrate#1#2#3{% #1 = file, #2 = width, #3 = height
1278 \bmpillustr@te
{#1}{#2}{#3}
1279 \boxit{0.5pt
}{\box \illustrateb@x
}}
1281 % ici, on a en plus un \superboxit
1282 \def \superboxbmpillustrate#1#2#3{% #1 = file, #2 = width, #3 = height
1283 \bmpillustr@te
{#1}{#2}{#3}
1284 \superboxit{0.5pt
}{\box \illustrateb@x
}}
1286 \newbox \illustrateb@x
1287 \newdimen \xsizeillustrateb@x
1288 \newdimen \ysizeillustrateb@x
1294 \setbox \legendb@x =
\hbox{#1\tvi }}
1296 % la routine commune aux suivantes
1297 \def \epsillustr@te
#1{% #1 = file
1298 \setbox \illustrateb@x =
\hbox{\epsfbox{#1}}
1299 \xsizeillustrateb@x =
\wd \illustrateb@x
1300 \ysizeillustrateb@x =
\ht \illustrateb@x
1303 % la commande de base
1304 \def \epsillustrate#1{% #1 = file
1305 \epsillustr@te
{\epspath #1}
1306 \box \illustrateb@x
}
1308 % ici, on a en plus un \boxit
1309 \def \boxepsillustrate#1{% #1 = file
1310 \epsillustr@te
{\epspath #1}
1311 \boxit{0.5pt
}{\box \illustrateb@x
}}
1313 % ici, on a en plus un \superboxit
1314 \def \boxepsillustrate#1{% #1 = file
1315 \epsillustr@te
{\epspath #1}
1317 \superboxit{0.5pt
}{\box \illustrateb@x
}
1318 \hbox to
\xsizeillustrateb@x
{%
1324 % ici, on a en plus un \superboxit
1325 \def \superboxepsillustrate#1{% #1 = file
1326 \epsillustr@te
{\epspath #1}
1328 \superboxit{0.5pt
}{\box \illustrateb@x
}
1329 \hbox to
\xsizeillustrateb@x
{%
1335 % ============== affichage en bordure du texte =========================
1337 % la macro modifiée de l'exercice 14.24 du TeXbook
1339 \def \hangcarryover{%
1340 \edef \next{% %% sauvegarde les valeurs
1341 \hangafter \the \hangafter %% courantes (qui sont remises
1342 \hangindent \the \hangindent} %% à 0 à la fin du paragraphe)
1344 \next %% restore \hangindent et \hangafter
1346 \prevgraf \the \prevgraf} %% sauvegarde le nb de lignes déjà composées
1347 %%%%%%%%%%%%%%%% modif 26/11/96 \indent
1349 \next} %% et les restore
1351 % =============================== la figure a droite ===
1353 % ma tentative de \rightillustrate~: la commande de base, qui
1354 % permet d'afficher du 'vertical material' a droite du texte
1356 \def \rightillustrate#1#2{% % #1 = vertical material, #2 = nb lines
1357 \setbox\tmpbox \vbox{\unvbox#1} % on stocke le materiel en box10,
1358 \ht\tmpbox =
0pt
% dont on annule ht et dp
1360 \line{% % on affiche dans une ligne de
1361 \hfill % hauteur nulle
1363 \vskip-
\baselineskip % on rectif le saut interligne
1364 \hangindent = -
1.1 \wd\tmpbox % et on prepare le decalage de droite
1366 \def \par{% %% on redéfinit le \par
1367 \ifnum \prevgraf > -
\hangafter %% qui reste actif tant que l'on
1368 \let \par \savepar %% a pas composé suffisamment de lignes
1374 % les commandes annexes
1375 \def \rightbmpillustrate#1#2#3#4{% #1 = file, #2 = width, #3 = height, #4 = nb lines
1376 \setbox \tmpbox \vbox{%
1377 \bmpillustrate{#1}{#2}{#3}}
1378 \rightillustrate{\tmpbox}{#4}}
1380 \def \rightboxbmpillustrate#1#2#3#4{% #1 = file, #2 = width, #3 = height, #4 = nb lines
1381 \setbox \tmpbox \vbox{%
1382 \boxbmpillustrate{#1}{#2}{#3}}
1383 \rightillustrate{\tmpbox}{#4}}
1385 \def \rightsuperboxbmpillustrate#1#2#3#4{% #1 = file, #2 = width, #3 = height, #4 = nb lines
1386 \setbox \tmpbox \vbox{%
1387 \superboxbmpillustrate{#1}{#2}{#3}}
1388 \rightillustrate{\tmpbox}{#4}}
1390 % les commandes annexes
1391 \def \rightepsillustrate#1#2{% #1 = file, #2 nb lines
1392 \setbox \tmpbox \vbox{%
1394 \rightillustrate{\tmpbox}{#2}}
1396 \def \rightboxepsillustrate#1#2{% #1 = file, #2 = nb lines
1397 \setbox \tmpbox \vbox{%
1398 \boxepsillustrate{#1}}
1399 \rightillustrate{\tmpbox}{#2}}
1401 \def \rightsuperboxepsillustrate#1#2{% #1 = file, #2 = nb lines
1402 \setbox \tmpbox \vbox{%
1403 \superboxepsillustrate{#1}}
1404 \rightillustrate{\tmpbox}{#2}}
1406 % === la figure a gauche ===============================
1408 % ma tentative de \leftillustrate~: la commande de base, qui
1409 % permet d'afficher du 'vertical material' a gauche du texte
1411 \def \leftillustrate#1#2{% % #1 = vertical material, #2 = nb lines
1412 \setbox10 \vbox{#1} % on stocke le materiel en box10,
1413 \ht 10 =
0pt
% dont on annule ht et dp
1415 \line{% % on affiche dans une ligne de
1416 {\copy 10 } % hauteur nulle
1418 \vskip-
\baselineskip % on rectif le saut interligne
1419 \hangindent =
1.1 \wd10 % et on prepare le decalage de droite
1421 \def \par{% %% on redéfinit le \par
1422 \ifnum \prevgraf > -
\hangafter %% qui reste actif tant que l'on
1423 \let \par \savepar %% a pas composé suffisamment de lignes
1429 % les commandes annexes
1430 \def \leftbmpillustrate#1#2#3#4{% #1 = vertical material, #2 = width
1431 \leftillustrate{% % #3 = height, #4 = nb lines
1432 \vbox{\bmpillustrate{#1}{#2}{#3}}}%
1435 \def \leftboxbmpillustrate#1#2#3#4{% #1 = vertical material, #2 = width
1436 \leftillustrate{% % #3 = height, #4 = nb lines
1437 \vbox{\boxbmpillustrate{#1}{#2}{#3}}}%
1440 \def \leftsuperboxbmpillustrate#1#2#3#4{% #1 = vertical material, #2 = width
1441 \leftillustrate{% % #3 = height, #4 = nb lines
1442 \vbox{\superboxbmpillustrate{#1}{#2}{#3}}}%
1445 % les commandes annexes
1446 \def \leftepsillustrate#1#2{% % #1 = vertical material, #2 = nb lines
1448 \vbox{\epsillustrate{#1}}}%
1451 \def \leftboxepsillustrate#1#2{% #1 = vertical material, #2 = nb lines
1453 \vbox{\boxepsillustrate{#1}}}%
1456 \def \leftsuperboxepsillustrate#1#2{% #1 = vertical material, #2 = nb lines
1458 \vbox{\superboxepsillustrate{#1}}}%
1463 %% test des macros \hangafter et \hangindent
1464 %% Ici, on reprend juste le test3, et on essaye
1465 %% de faire un peu plus propre
1467 %% fichier 'listing.tex'
1468 % cinquième etape de construction de la macro "listing"~:
1469 % la routine de sortie est modifiee (09/09/96), on reecrit totalement
1470 % le \input, on stocke dans des \vbox, et on donne le choix du
1471 % type de listing pour les coupures de page.
1472 % En plus, on reorganise tout ca, de facon a permettre une
1473 % macro \partiallisting.
1478 % ===== numerotation des lignes
1479 \newif \ifwithlinen@
% avec numerotation des lignes~?
1480 \withlinen@true
% oui par defaut
1482 \def \withlineno{% % selection de l'option de numerotation
1483 \withlinen@true
} % par des macros "visibles"
1484 \def \withoutlineno{%
1487 \def \n@mline
{% % affichage du no de ligne
1489 \llap{\sevenrm \the\lineno~:
\hskip .5em
}}
1491 \newcount \lineno % no de la ligne courante
1492 \newcount \listingno % no de version de la macro (0 = coupure n'importe ou,
1493 % 1 = coupure sur ligne vide)
1494 \newcount \beginlineno % no de la premiere ligne a afficher
1495 \newcount \endlineno % no de la derniere ligne a afficher
1497 \def \listingpath{% % le chemin d'acces, vide par defaut
1500 % ===== affectation des caracteres actifs
1501 {\obeylines \global \def \temoin{^^M
}}
1502 % la ligne suivante pose probleme : elle rajoute un caractere dans le
1503 % .dvi (?). A noter que c'est pourtant la solution proposee dans le
1505 %%{\obeyspaces\global\let =\ }%
1506 % solution de Knuth : voir le fichier info.tex, ligne 41
1507 % ===== la boite pour encadrer le listing ligne par ligne
1509 \def \initencadrbox{%
1510 \setbox \encadrbox =
\hbox to
\hsize{%
1511 \vrule height
9pt depth
3pt
1513 \vrule height
9pt depth
3pt
}
1514 \ht \encadrbox =
0pt
1515 \dp \encadrbox =
0pt
1516 \wd \encadrbox =
0pt
}
1518 \newbox \box@
% le titre du listing
1519 \newtoks \listingtoks
1520 \newread \currentfile
1522 % ===== passe en mode verbatim
1524 \def \do#
#1{% % on prepare le verbatim
1526 \def°
{% % pas tres propre ca, il s'agit
1527 \char23} % d'un truc provisoire pour le "degre"
1534 \eightpoint \tt} % style de fonte
1536 \def \writelistingline#1{% % #1 contient la ligne a traiter
1537 \ifnum \lineno <
\beginlineno % qu'on affiche seulement si
1538 \else % le no de ligne courante
1539 \ifnum \lineno >
\endlineno % est dans l'intervalle convenable
1545 % ===== traitement d'une ligne du fichier
1547 \ifx \temoin \next % si le 1er caractere est RET
1548 \writelistingline{\next} % c'est que la ligne est vide => on l'affiche
1549 \ifeof \currentfile % si le fichier n'est pas fini
1550 \else % alors on sauvegarde le no de ligne
1551 \global \edef \rest@renum
{\lineno \the \lineno}
1553 \egroup % puis on ferme la boite
1554 \mark{\the \listingtoks}
1555 \immediate \wlog{***************
\the \listingtoks ********
}
1556 \vbox\bgroup % on en ouvre une nouvelle
1557 \rest@renum
% et on restaure le no de ligne
1560 \else % la ligne n'est pas vide
1561 \writelistingline{\next} % et on l'affiche telle que
1564 % ===== lecture d'une ligne du fichier
1565 \def \read@ne
{% % lit la ligne suivante et la
1566 \read \currentfile to
\next % stocke dans \next
1567 \global \advance \lineno by
1
1568 \ifnum \listingno =
1 % suivant le no de version
1569 \traite@ne
% on fait un traitement adequat
1571 \writelistingline{\next} % ou on affiche tel que
1573 \ifeof \currentfile % si c'est fini,
1574 \closein \currentfile % on ferme le fichier
1575 \let \next \relax % et on arrete,
1577 \let \next \read@ne
% on recommence
1581 \def \listing#1#2#3{% #1 = version number #2 = file name, #3 = title
1582 \partiallisting{#1}{#2}{#3}{0}{10000}} % rque~: 10 000 en attendant mieux . . .
1584 \def \partiallisting#1#2#3#4#5{% #1 = version number #2 = file name, #3 = title
1585 \bigbreak % #4 = no de la 1ere ligne, #5 = no de la derniere ligne
1586 \vskip 2\baselineskip
1588 \vskip -
2\baselineskip
1592 \immediate \wlog{Beginning listing of
\listingpath #2}
1596 \listingtoks =
{\tensl #3}
1613 \mark{\the\listingtoks}
1614 \ifnum \listingno =
1 % si version 1, on met dans des \vbox
1617 \bgroup % debut du groupe listing
1618 \setbox\box@ =
\hbox{\tensl #3} % recupere le titre pour en calculer la profondeur
1619 \line{% % la 1ere ligne du cadre
1620 \vrule height
0.4pt depth
\dp\box@
1622 \quad \the \listingtoks \quad
1624 \vrule height
0.4pt depth
\dp\box@
}
1625 \hbox to
\hsize{% % la ligne vide qui suit
1626 \vrule height
9pt depth
3pt
1628 \vrule height
9pt depth
3pt
}
1630 \openin \currentfile =
\listingpath #2 % ici on change le \input
1631 \read@ne
% et c'est \read@ne qui va lire le fichier
1634 \hbox to
\hsize{% % la ligne vide finale
1635 \vrule height
9pt depth
0pt
1637 \vrule height
9pt depth
0pt
}
1638 \hrule % la \hrule de fin de listing
1639 \egroup % fin du groupe listing
1641 \mark{} % on restaure la marque
1642 \immediate \wlog{End listing of
#2}
1645 % puis on modifie la routine de sortie
1647 \expandafter \listingchek \botmark \end} % c'est une astuce pour lire
1648 % la \botmark en argument
1649 \def \listingchek#1\end{%
1650 \def \next{#1} % % #1 contient la \botmark
1651 \ifx \next \empty % % vide => pas de coupure
1653 \setbox255 =
\vbox to
\vsize{% % on rajoute la ligne
1654 \unvbox255 % correspondante a la page
1655 \nointerlineskip % deja composee
1656 \line{\copy \encadrbox \hfil \strut}
1661 % \advance \dimen0 by -\prevdepth %
1664 \vrule height
0pt depth
2.5pt
1665 \dotfill \quad \sl \next % et la ligne (suite) a la
1666 \hskip 1em (suite)
\quad \dotfill % page suivante
1667 \vrule height
0pt depth
2.5pt
}
1668 \line{\copy \encadrbox \strut \hfill} % avec une ligne vide
1670 \plainoutput} % final~: on appelle la routine
1674 %% fichier 'misenpge.tex'
1675 %% les differentes macros de mise en page
1677 % ============ macros de mises a jour =========
1679 $
\number \day $
\space
1681 Janvier
\or Février
\or Mars
\or Avril
\or Mai
\or Juin
\or
1682 Juillet
\or Août
\or Septembre
\or Octobre
\or Novembre
\or
1687 % ====================== referencage des documents ===========================
1692 \def \cleardatebox {%
1693 \setbox \datebox =
\box \datebox }
1696 \setbox \datebox \hbox {\eightpoint \rm #1}}
1698 %%%%% la classe %%%%%
1701 \def \clearclassebox {%
1702 \setbox \classebox =
\box \classebox }
1704 \setbox \classebox \hbox {\sevenrm #1}}
1706 %%%%% les references du document %%%%%
1708 \newbox \classificationbox
1709 \def \clearclassificationbox {%
1710 \setbox \classificationbox =
\box \classificationbox }
1711 \clearclassificationbox
1712 \def \classification#1#2{%
1713 \setbox \classificationbox =
\hbox {\eightpoint \rm {\bf #1} #2 \hfill }}
1715 % =============================================================================
1717 %% \setbox \dureebox
1718 %% \hbox {\sevenrm \underbar {durée}~: #1}}%
1720 %% \setbox \baremebox = %
1721 %% \hbox {({\sl #1 points\/}) }}%
1722 %% ===============================================
1723 % la définition suivante est destinée à être supprimée
1724 % (mauvaise conception) jp, 15-08-96
1726 % \vskip \enteteskip
1727 % \line{\unhbox \classificationbox
1728 % \unhbox \classebox
1732 % \vskip \enteteskipafter}%
1734 %%%%%%%%% REMARQUE~: du coup, les variables \entete... sont inutiles
1736 % ============================ gestion de la headline =========================
1738 \newtoks \lyceeheadline
1739 \newtoks \firstheadline
1740 \newtoks \oddheadline
1741 \newtoks \evenheadline
1744 \unhcopy \classificationbox
1760 \firstheadline =
\lyceeheadline
1761 \oddheadline =
\lyceeheadline
1762 \evenheadline =
\lyceeheadline
1764 % ============================ gestion de la footline =========================
1766 \newtoks \firstfootline
1767 \newtoks \oddfootline
1768 \newtoks \evenfootline
1769 \newtoks \lyceefootline
1782 \lyceefootline =
{\hss}
1783 \firstfootline =
\lyceefootline
1784 \oddfootline =
\lyceefootline
1785 \evenfootline =
\lyceefootline
1787 % =============================================================================
1789 %% fichier 'info.tex'
1790 %% macros pour décrire des programmes. ref pp 420--422 du TeXbook
1794 \def \|
{\leavevmode \hbox{\tt \char`\|
}} % vertical line
1795 \def \°
{\leavevmode \hbox{\tt \char23}} % ???
1797 \newskip \ttglue \ttglue =
.5em plus
.25em minus
.15em
1799 \outer \def \begindisplay{%
1802 {\obeylines \gdef \startdisplay#1
1806 \indent ##
\hfil &&
\qquad ##
\hfil \cr}}
1807 \outer \def \enddisplay{%
1812 \chardef \other =
12
1830 {\obeyspaces \gdef {\
}} % \obeyspaces now gives \ , not \space
1832 \outer \def \begintt{%
1834 \let \par =
\endgraf
1841 {\catcode`\| =
0 \catcode`\\=
\other % | is temporary escape character
1843 |gdef |ttfinish
#1^^M
#2\endtt{%
1849 % ci-dessous une astuce remarquable pour permettre d'écrire '|something|' et
1850 % d'avoir la phrase 'something' en ttverbatim.
1858 \let \next =
\speci@lbar
1861 \catcode`\|=
\active \let| =
\specialbar
1862 {\obeylines \gdef \speci@lbar
{%
1864 \spaceskip =
\ttglue %