Initialisation du projet pst-solides3d.git (SVN revision 142)
[pst-solides3d.git] / doc / format-jpv.tex
1 %% fichier 'font.tex'
2 \message{fonts,}
3
4 \catcode `\@ = 11
5 \def \ComputerModern {%
6
7 \font \fourtybf = cmbx10 at 40pt
8
9 \font \thirtybf = cmbx10 at 30pt
10
11 \font \twentyfivebf = cmbx10 at 24.88pt
12
13 \font \twentytt = cmtt10 at 20.74pt
14 \font \twentybf = cmbx10 at 20.74pt
15 \font \twentysl = cmsl10 at 20.74pt
16
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
27
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
38
39 \font \tenrm = cmr10
40 \font \tensl = cmsl10
41 \font \tenslbf = cmbxsl10
42 \font \tenit = cmti10
43 %% jp \font \tenli = cmli10
44 \font \tenbf = cmbx10
45 \font \tentt = cmtt10
46 \font \tenmi = cmmi10
47 \font \tenex = cmex10
48 \font \tensy = cmsy10
49 \font \tensc = cmcsc10
50 \font \tenmsam = msam10
51 \font \tenmsbm = msbm10
52 \font \tenbfmi = cmmib10
53 \font \tenssit = cmssi10
54 \font \tenss = cmss10
55 \font \tenwncyr = wncyr10
56
57 \font \ninerm = cmr9
58 \font \ninemi = cmmi9
59 \font \nineex = cmex9
60 \font \ninesy = cmsy9
61 \font \ninebf = cmbx9
62 \font \nineit = cmti9
63 \font \ninesl = cmsl9
64 \font \ninett = cmtt9
65 %% \font \nineli = cmli9
66 \font \ninemsam = msam10 at 9pt
67 \font \ninemsbm = msbm10 at 9pt
68 \font \ninesc = cmcsc9
69
70 \font \eighttt = cmtt8
71 \font \eightrm = cmr8
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
80
81 \font \sevenrm = cmr7
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
88
89 %%\font \truesevenmi = cmmi7 at 7truept
90
91 \font \fiverm = cmr5
92 \font \fivebf = cmbx5
93 \font \fivemi = cmmi5
94 \font \fivesy = cmsy5
95 \font \fivemsam = msam10 at 5pt
96 \font \fivemsbm = msbm10 at 5pt
97 \font \fivesl = cmsl10 at 5pt
98
99 %%\font \truefivemi = cmmi5 at 5truept
100 }
101
102
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)
108
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)
115
116 %%% la galere du jmath %%%
117 \newbox \jmathbox
118 \setbox \jmathbox \hbox {\bgroup \it j\egroup }
119 \newdimen \tmpdimen
120 \tmpdimen \ht \jmathbox
121 \advance \tmpdimen by -2.1pt
122 \ht \jmathbox \tmpdimen
123
124 \def \putjmath {%
125 {\copy \jmathbox }}
126 %%%%%%%%%%%%%%%%%%%%%%%%%
127
128
129 \def \Times {%
130
131 %%% la galere du jmath %%%
132 \let \jmath \putjmath
133 %%%%%%%%%%%%%%%%%%%%%%%%%
134
135 \font \fourtybf = ptmb at 40pt
136
137 \font \thirtybf = ptmb at 30pt
138
139 \font \twentyfivebf = ptmb at 24.88pt
140 \font \twentymi = zptmcmrm at 24.88pt
141
142 \font \twentytt = pcrb at 20.74pt
143 \font \twentybf = ptmb at 20.74pt
144 \font \twentysl = ptmro at 20.74pt
145
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
156
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
167
168 \font \tenrm = ptmr
169 \font \tensl = ptmro
170 \font \tenslbf = cmbxsl10
171 \font \tenit = ptmri
172 %% jp \font \tenli = cmli10
173 \font \tenbf = ptmb
174 \font \tentt = pcrb
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
188
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
201
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
212
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
220
221 %%\font \truesevenmi = cmmi7 at 7truept
222
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
230 }
231
232 \def \Palatino {%
233
234 %%% la galere du jmath %%%
235 \let \jmath \putjmath
236 %%%%%%%%%%%%%%%%%%%%%%%%%
237
238 \font \fourtybf = pplb at 40pt
239
240 \font \thirtybf = pplb at 30pt
241
242 \font \twentyfivebf = pplb at 24.88pt
243
244 \font \twentytt = pcrb at 20.74pt
245 \font \twentybf = pplb at 20.74pt
246 \font \twentysl = pplro at 20.74pt
247
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
258
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
269
270 \font \tenrm = pplr
271 \font \tensl = pplro
272 \font \tenslbf = cmbxsl10
273 \font \tenit = pplri
274 %% jp \font \tenli = cmli10
275 \font \tenbf = pplb
276 \font \tentt = pcrb
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
287
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
300
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
311
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
319
320 %%\font \truesevenmi = cmmi7 at 7truept
321
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
329 }
330
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.
336
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
363
364 \mathchardef \subsetneq = "3820 %% symbole d'inclusion stricte
365
366 \def\zseti {\zset [i]}
367 \def\qseti {\qset [i]}
368
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 }
409
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 }
416
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
424 \bgroup
425 {\tenwncyr \char 60}~%
426 \ignorespaces
427 #1\unskip
428 ~{\tenwncyr \char 62}%
429 \egroup }
430 %% on redefinit les signes de comparaisons >= et <= pour avoir les
431 %% symboles francais
432 \mathchardef\leq="3936 % code hexadecimal 36 de la famille 9, type relation (3)
433 \mathchardef\geq="393E
434
435
436 %%\def \brem {\mskip -\medmuskip\mkern5mu
437 %% \mathbin{\rm rem} \penalty900 \mkern5mu \mskip -\medmuskip}
438 %%
439 %%\def \bmodulo {\mskip -\medmuskip\mkern5mu
440 %% \mathbin{\bf mod} \penalty900 \mkern5mu \mskip -\medmuskip}
441
442
443 \def\MyCancel#1#2{\ooalign{$\hfil#1\mkern-3.5mu\hbox{\it/}\hfil$\crcr$#1#2$}}
444 \def\notmid{\mathrel{\mathpalette\MyCancel\mid}}
445
446 %% fichier 'style.tex'
447 \catcode `\@ = 11
448
449 \def \eightpoint
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
455 \textfont3 \eightex
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}%
463 }
464
465 \def \ninepoint
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 }%
480 \let \sc \ninesc
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}%
490 \normalbaselines
491 }
492
493 \def \tenpoint
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 }%
508 \let \sc \tensc
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}%
522 }
523
524 \def \twelvepoint
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 }%
535 \let \sc \twelvesc
536 \def \it {\twelveit }\def \sl {\twelvesl }\def \tt {\twelvett }%
537 \baselineskip 14pt \lineskiplimit 2pt \lineskip 2pt
538 }
539
540 \def \fourteenpoint
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 }%
551 }
552
553 \let \footnotestyle = \eightpoint
554 %% jp \let \remarkstyle = \ninepoint
555 %% jp \let \headlinestyle = \ninepoint
556
557 \catcode `\@ = 12
558 %% fichier 'newplain.tex'
559 % redef de certaines macros du format plain.tex
560
561 \catcode`\@=11
562
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}
575 \def\f@t#1{#1\@foot}
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
581
582
583
584 % redefinition de la macro \footnote (TeXbook p 416)
585 \def \footnote#1{%
586 \edef \@sf{%
587 \spacefactor \the \spacefactor}%
588 #1\@sf
589 \insert \footins \bgroup
590 \eightpoint \rm
591 \interlinepenalty = 100
592 \let \par = \endgraf
593 \leftskip = 0pt
594 \rightskip = 0pt
595 \splittopskip = 10pt plus 1pt minus 1pt
596 \floatingpenalty = 20000
597 % \smallskip
598 \item{#1}
599 \bgroup
600 \strut
601 \aftergroup \@foot
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
605
606 % =================== redef de \do ==================================
607
608 \def\dospecials{\do\ \do\\\do\{\do\}\do\$\do\&%
609 \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~\do\|}
610
611 % =================== redef de \item =================================
612
613 \newskip \itemindent \itemindent = \parindent
614
615 \parindent = 0pt
616
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}
623
624 \catcode`\@=12
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
646
647 \catcode`\@ = 11
648
649 % =============================== les parties =================================
650
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
655
656 %% encadre dans la marge, en gras
657 \def \llappartie#1{%
658 \par \noindent
659 \setbox0 = \hbox {\boxit {2pt}{\hbox {\bf \tvi height8pt depth0pt #1}}}%
660 \llap {\unhbox0\ }%
661 \ignorespaces
662 \initexo }
663
664 %% centre sur la ligne, en gras
665 \def \simplecenterpartie#1{%
666 \vskip \partieskip
667 \centerline {%
668 \twelvepoint
669 \bf
670 #1
671 \unhbox \baremebox }
672 \vskip \partieskipafter
673 \initexo }
674
675 %% idem, + elabore
676 \def \centerpartie#1{%
677 \par
678 % \vskip 0pt plus 0,3\vsize
679 \penalty -50
680 % \vskip 0pt plus -0,3\vsize
681 % \bigbreak
682 \vskip \partieskip
683 \centerline{%
684 \twelvepoint
685 \bf
686 -- Partie #1 --
687 % \unhbox \baremebox
688 }
689 \penalty 10000
690 \vskip \partieskipafter
691 \initexo }
692
693 %% idem, avec 2 arguments
694 \def \doublecenterpartie#1#2{%
695 \par
696 % \vskip 0pt plus 0,3\vsize
697 \penalty -50
698 % \vskip 0pt plus -0,3\vsize
699 % \bigbreak
700 \vskip \partieskip
701 \centerline{%
702 \twelvepoint
703 \bf
704 -- Partie #1 --
705 \unhbox \baremebox
706 {\sl #2}}
707 \penalty 10000
708 \vskip \partieskipafter
709 \initexo }
710
711 %% discret
712 \def \discretpartie#1{%
713 \initexo
714 \par
715 {\bf #1.}}
716
717 %% la partie par defaut
718 \let \partie \discretpartie
719
720 % =============================================================================
721
722 % =============================== les titres ==================================
723
724 %% aussi bizarre que cela puisse paraitre, je laisse la macro '\duree'
725 %% associee au titre
726 \newbox \dureebox
727 \def \cleardureebox {%
728 \setbox \dureebox = \box \dureebox }
729 \cleardureebox
730 \def \clearduree {%
731 \setbox 100 \hbox {\unhbox \dureebox }}
732
733 \def \duree#1{%
734 \setbox \dureebox \hbox {\sevenrm \underbar {durée}~: #1}}
735
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 }
741
742 \def \titre#1{%
743 \par
744 \ifb@@kstyle
745 \vskip \bookstyleskip
746 \penalty -500
747 \vskip -\bookstyleskip
748 \fi
749 \bgroup % pour limiter la portee de la def de \\
750 \def \\{% % commande qui est utilisee pour passer a la ligne dans un titre
751 \hss
752 \egroup % ferme la \hbox to \hsize en cours
753 \hbox to \hsize \bgroup % et rouvre la suivante
754 \the \titrestyle
755 \hss}
756 \vskip 0pt plus 0,3\vsize
757 \penalty -250
758 \vskip 0pt plus -0,3\vsize
759 \vskip \titreskip
760 \hbox to \hsize \bgroup \hss \the \titrestyle #1 \hss \egroup
761 \egroup
762 \par
763 \writetocentry {chapter}{#1}
764 \nobreak
765 \ifvoid \dureebox
766 \else \line{\hfill \unhcopy \dureebox }
767 \fi
768 \vskip \titreskipafter
769 \nobreak }
770
771 \def \titredate#1{%
772 \par
773 \ifb@@kstyle
774 \vskip \bookstyleskip
775 \penalty -500
776 \vskip -\bookstyleskip
777 \fi
778 \bgroup % pour limiter la portee de la def de \\
779 \def \\{% % commande qui est utilisee pour passer a la ligne dans un titre
780 \hss
781 \egroup % ferme la \hbox to \hsize en cours
782 \hbox to \hsize \bgroup % et rouvre la suivante
783 \the \titrestyle
784 \hss}
785 \vskip 0pt plus 0,3\vsize
786 \penalty -250
787 \vskip 0pt plus -0,3\vsize
788 \vskip \titreskip
789 \llap {\box \datebox}
790 \hbox to \hsize \bgroup \hss \the \titrestyle #1 \hss \egroup
791 \egroup
792 \par
793 \writetocentry {chapter}{#1}
794 \nobreak
795 \ifvoid \dureebox
796 \else \line{\hfill \unhcopy \dureebox }
797 \fi
798 \vskip \titreskipafter
799 \nobreak }
800
801 \def \stitre#1{%
802 \vskip \stitreskip
803 \centerline {\stitrestyle {#1}}
804 \vskip \stitreskipafter }%
805
806 % =============================================================================
807
808 % ========================== macros de numerotation ===========================
809
810 %%%%% les variables et leurs initialisations %%%%%
811
812 \newcount \numno
813 \def \clearnumno{%
814 \global\numno = 0}
815 \clearnumno
816
817 \newcount \alphno
818 \def \clearalphno{%
819 \global\alphno = `\a
820 \global\advance \alphno by -1}
821 \clearalphno
822
823 \newskip \itemnumskip \itemnumskip = 0pt
824 \newskip \itemalphskip \itemalphskip = 0pt
825 \newskip \itemalphnumskip \itemalphnumskip = 0pt
826
827 %%%%% reglage du style d'affichage %%%%%
828
829 \def \numstyle#1{%
830 {\bf #1.}}
831 \def \alphstyle#1{%
832 {\sl \char #1\/})}
833
834 %%%%% les macros de numerotation %%%%%
835 %% \def \initalphnum {%
836 %% }
837 \def \initalph {%
838 }
839 \def \initnum {%
840 \clearalphno }
841
842 \def \num {%
843 \initnum
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 ...
849 %% jp 31-05-96
850 \def \alph {%
851 \initalph
852 \global \advance \alphno by 1
853 \alphstyle {\alphno }}
854 \def \alphnum {%
855 \num \
856 \alph }
857 \def \itemnum {%
858 \vskip \itemnumskip
859 \item {\num }}
860 \def \itemitemnum {%
861 \vskip \itemnumskip
862 \itemitem {\num }}
863 \def \itemalph {%
864 \vskip \itemalphskip
865 \item {\alph }}
866 \def \itemitemalph {%
867 \vskip \itemalphskip
868 \itemitem {\alph }}
869 \def \itemalphnum {%
870 \vskip \itemnumskip
871 \item {\num } \alph \ }
872 \def \itemitemalphnum {%
873 \vskip \itemnumskip
874 \itemitem {\num \quad \hskip .1 em \alph }}
875 % =============================================================================
876
877
878 % =============================== les exercices ===============================
879 %
880 % ========= macros de section ==============
881 % ========================= les exemples ======================================
882
883 \newcount \exempleno
884 \def \clearexempleno{%
885 \global\exempleno = 0}
886 \clearexempleno
887
888 \def \exemple#1{%
889 \medbreak
890 \advance \exempleno by 1
891 \noindent
892 {\bf Exemple ({\oldstyle \the \exempleno }) . \sl #1}
893 \par
894 \nobreak
895 \smallskip
896 \begingroup
897 \parskip = 4 pt }
898
899 \def \finexemple {%
900 \removelastskip
901 \par
902 \removelastskip
903 \hfill
904 \bull
905 \endgroup
906 \smallbreak }
907
908 % =============================================================================
909
910 % ============================ le bookstyle ===================================
911 %
912 \newif \ifb@@kstyle % flag indiquant si on accepte les paragraphes
913 % en bas de page
914 \b@@kstylefalse % oui par defaut
915 \newskip \bookstyleskip % le mini de bas de page autorise pour un
916 % paragraphe
917 \bookstyleskip = 0.3\vsize
918 \def \bookstyle {%
919 \footline = {\hss \tenrm \folio \hss }
920 \b@@kstyletrue }
921 \def \bookstylefalse {%
922 \b@@kstylefalse }
923 \def \onepagestyle {\b@@kstylefalse }
924
925 % =============================================================================
926
927 % ============================== les paragraphes ==============================
928
929 %%%%% les variables et leurs initialisations %%%%%
930
931 \newcount \parno
932 \def \clearparno {%
933 \clearsparno
934 \parno = 0}
935
936 \newcount \sparno
937 \def \clearsparno {%
938 \clearssparno
939 \sparno = 0}
940
941 \newcount \ssparno
942 \def \clearssparno{%
943 \ssparno = 0}
944
945 %%%%% reglage du style d'affichage %%%%%
946
947 \def \paragraphestyle#1#2{%
948 \noindent
949 {\fourteenpoint
950 \bf #1.
951 #2}}%
952 \def \sparagraphestyle#1#2#3{%
953 \noindent
954 {\twelvepoint
955 \bf #1.#2 -
956 #3}}%
957 \def \ssparagraphestyle#1#2#3#4{%
958 \noindent
959 {\bf #1.#2.#3 -
960 #4}}%
961
962 %%%%% les macro de paragraphe %%%%%
963
964 \def \paragraphe#1{%
965 \par
966 \ifb@@kstyle
967 \vskip \bookstyleskip
968 \penalty -500
969 \vskip -\bookstyleskip
970 \fi
971 \penalty -50
972 \vskip \paragrapheskip
973 \clearsparno
974 \advance \parno by 1
975 \paragraphestyle {\the \parno }{#1}
976 \par
977 \writetocentry {paragraf}{#1}
978 \nobreak
979 \vskip \paragrapheskipafter }
980
981 \def \finparagraphe{%
982 }%
983
984 \def \sparagraphe#1{%
985 \par
986 \penalty -50
987 \medskip
988 \clearssparno
989 \advance \sparno by 1
990 \noindent
991 \sparagraphestyle {\the \parno }{\the \sparno }{#1}
992 \par
993 \writetocentry {sparagraf}{#1}
994 \nobreak
995 \medskip }
996 \def \finsparagraphe {%
997 }%
998 \def \ssparagraphe#1{%
999 \par
1000 \penalty -50
1001 \smallskip
1002 \advance \ssparno by 1
1003 \noindent
1004 \ssparagraphestyle {\the \parno }{\the \sparno }{\the \ssparno }{#1}
1005 \par
1006 \writetocentry {ssparagraf}{#1}
1007 \nobreak
1008 \medskip }
1009 \def \ssfinparagraphe {%
1010 }%
1011
1012 % ============================== les remarques ================================
1013
1014 \def \remarque {%
1015 \medskip
1016 \item {}
1017 \begingroup
1018 \narrower
1019 \narrower
1020 \eightpoint \rm
1021 {\bf Remarque}
1022 -- }
1023 \def \finremarque {%
1024 \par
1025 \endgroup
1026 \medskip }
1027
1028 \catcode`\@ = 12
1029
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.
1035 %
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.
1040 %
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.)
1044 %
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
1048 %
1049 % Alternatively, you can type
1050 %
1051 % \epsfbox[0 0 30 50]{filename.ps} % to supply your own BB
1052 %
1053 % which will not read in the file, and will instead use the bounding
1054 % box you specify.
1055 %
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.
1060 %
1061 % You can enlarge or reduce the figure by saying
1062 % \epsfxsize=<dimen> \epsfbox{filename.ps}
1063 % (or
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.
1069 %
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:
1076 %
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
1083 %
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'.
1086 %
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
1098 %
1099 \pspoints=1bp % Adobe points are `big'
1100 \epsfxsize=0pt % Default value, means `use natural size'
1101 \epsfysize=0pt % ditto
1102 %
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}}%
1107 %
1108 \def\epsfgetlitbb#1#2 #3 #4 #5]#6{\epsfgrab #2 #3 #4 #5 .\\%
1109 \epsfsetgraph{#6}}%
1110 %
1111 \def\epsfnormal#1{\epsfgetbb{#1}\epsfsetgraph{#1}}%
1112 %
1113 \def\epsfgetbb#1{%
1114 %
1115 % The first thing we need to do is to open the
1116 % PostScript file, if possible.
1117 %
1118 \openin\epsffilein=#1
1119 \ifeof\epsffilein\errmessage{I couldn't open #1, will ignore it}\else
1120 %
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.
1123 %
1124 {\epsffileoktrue \chardef\other=12
1125 \def\do##1{\catcode`##1=\other}\dospecials \catcode`\ =10
1126 \loop
1127 \read\epsffilein to \epsffileline
1128 \ifeof\epsffilein\epsffileokfalse\else
1129 %
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
1133 % `%%BoundingBox:'.
1134 %
1135 \expandafter\epsfaux\epsffileline:. \\%
1136 \fi
1137 \ifepsffileok\repeat
1138 \ifepsfbbfound\else
1139 \ifepsfverbose\message{No bounding box comment in #1; using defaults}\fi\fi
1140 }\closein\epsffilein\fi}%
1141 %
1142 % Now we have to calculate the scale and offset values to use.
1143 % First we compute the natural sizes.
1144 %
1145 \def\epsfclipon{\def\epsfclipstring{ clip}}%
1146 \def\epsfclipoff{\def\epsfclipstring{\ifepsfdraft\space clip\fi}}%
1147 \epsfclipoff
1148 %
1149 \def\epsfsetgraph#1{%
1150 \epsfrsize=\epsfury\pspoints
1151 \advance\epsfrsize by-\epsflly\pspoints
1152 \epsftsize=\epsfurx\pspoints
1153 \advance\epsftsize by-\epsfllx\pspoints
1154 %
1155 % If `epsfxsize' is 0, we default to the natural size of the picture.
1156 % Otherwise we scale the graph to be \epsfxsize wide.
1157 %
1158 \epsfxsize\epsfsize\epsftsize\epsfrsize
1159 \ifnum\epsfxsize=0 \ifnum\epsfysize=0
1160 \epsfxsize=\epsftsize \epsfysize=\epsfrsize
1161 \epsfrsize=0pt
1162 %
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).
1166 %
1167 \else\epsftmp=\epsftsize \divide\epsftmp\epsfrsize
1168 \epsfxsize=\epsfysize \multiply\epsfxsize\epsftmp
1169 \multiply\epsftmp\epsfrsize \advance\epsftsize-\epsftmp
1170 \epsftmp=\epsfysize
1171 \loop \advance\epsftsize\epsftsize \divide\epsftmp 2
1172 \ifnum\epsftmp>0
1173 \ifnum\epsftsize<\epsfrsize\else
1174 \advance\epsftsize-\epsfrsize \advance\epsfxsize\epsftmp \fi
1175 \repeat
1176 \epsfrsize=0pt
1177 \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
1182 \epsftmp=\epsfxsize
1183 \loop \advance\epsfrsize\epsfrsize \divide\epsftmp 2
1184 \ifnum\epsftmp>0
1185 \ifnum\epsfrsize<\epsftsize\else
1186 \advance\epsfrsize-\epsftsize \advance\epsfysize\epsftmp \fi
1187 \repeat
1188 \epsfrsize=0pt
1189 \else
1190 \epsfrsize=\epsfysize
1191 \fi
1192 \fi
1193 %
1194 % Finally, we make the vbox and stick in a \special that dvips can parse.
1195 %
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
1203 \epsfclipstring}%
1204 \else
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}%
1210 \fi
1211 \hfil}}%
1212 \global\epsfxsize=0pt\global\epsfysize=0pt}%
1213 %
1214 % We still need to define the tricky \epsfaux macro. This requires
1215 % a couple of magic constants for comparison purposes.
1216 %
1217 {\catcode`\%=12 \global\let\epsfpercent=%\global\def\epsfbblit{%BoundingBox}}%
1218 %
1219 % So we're ready to check for `%BoundingBox:' and to grab the
1220 % values if they are found.
1221 %
1222 \long\def\epsfaux#1#2:#3\\{\ifx#1\epsfpercent
1223 \def\testit{#2}\ifx\testit\epsfbblit
1224 \epsfgrab #3 . . . \\%
1225 \epsffileokfalse
1226 \global\epsfbbfoundtrue
1227 \fi\else\ifx#1\par\else\epsffileokfalse\fi\fi}%
1228 %
1229 % Here we grab the values and stuff them in the appropriate definitions.
1230 %
1231 \def\epsfempty{}%
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}%
1237 %
1238 % We default the epsfsize macro.
1239 %
1240 \def\epsfsize#1#2{\epsfxsize}
1241 %
1242 % Finally, another definition for compatibility with older macros.
1243 %
1244 \let\epsffile=\epsfbox
1245 %% fichier 'illustr.tex'
1246 %% essais pour la creation d'une macro \illustrate
1247 %% version 1 (22/12/96)
1248
1249 \catcode`\@ = 11
1250
1251 \newbox \illustrateb@x
1252
1253 \def \bmppath{}
1254
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
1260
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
1265 x=#2
1266 y=#3}}
1267 \dp \illustrateb@x = 0cm
1268 \ht \illustrateb@x = #3
1269 \wd \illustrateb@x = #2 }
1270
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 }
1275
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 }}
1280
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 }}
1285
1286 \newbox \illustrateb@x
1287 \newdimen \xsizeillustrateb@x
1288 \newdimen \ysizeillustrateb@x
1289
1290 \def \epspath{}
1291
1292 \newbox \legendb@x
1293 \def \legende#1{%
1294 \setbox \legendb@x = \hbox{#1\tvi }}
1295
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
1301 }
1302
1303 % la commande de base
1304 \def \epsillustrate#1{% #1 = file
1305 \epsillustr@te{\epspath #1}
1306 \box \illustrateb@x}
1307
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}}
1312
1313 % ici, on a en plus un \superboxit
1314 \def \boxepsillustrate#1{% #1 = file
1315 \epsillustr@te{\epspath #1}
1316 \vbox{%
1317 \superboxit{0.5pt}{\box \illustrateb@x}
1318 \hbox to \xsizeillustrateb@x {%
1319 \hss
1320 \box \legendb@x
1321 \hss }
1322 }}
1323
1324 % ici, on a en plus un \superboxit
1325 \def \superboxepsillustrate#1{% #1 = file
1326 \epsillustr@te{\epspath #1}
1327 \vbox{%
1328 \superboxit{0.5pt}{\box \illustrateb@x}
1329 \hbox to \xsizeillustrateb@x {%
1330 \hfil
1331 \box \legendb@x
1332 \hfil}
1333 }}
1334
1335 % ============== affichage en bordure du texte =========================
1336
1337 % la macro modifiée de l'exercice 14.24 du TeXbook
1338 \let \savepar \par
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)
1343 \savepar
1344 \next %% restore \hangindent et \hangafter
1345 \edef \next{%
1346 \prevgraf \the \prevgraf} %% sauvegarde le nb de lignes déjà composées
1347 %%%%%%%%%%%%%%%% modif 26/11/96 \indent
1348 \noindent
1349 \next} %% et les restore
1350
1351 % =============================== la figure a droite ===
1352
1353 % ma tentative de \rightillustrate~: la commande de base, qui
1354 % permet d'afficher du 'vertical material' a droite du texte
1355
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
1359 \dp\tmpbox = 0pt
1360 \line{% % on affiche dans une ligne de
1361 \hfill % hauteur nulle
1362 {\copy \tmpbox }}
1363 \vskip-\baselineskip % on rectif le saut interligne
1364 \hangindent = -1.1 \wd\tmpbox % et on prepare le decalage de droite
1365 \hangafter = #2
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
1369 \par
1370 \else
1371 \hangcarryover
1372 \fi}}
1373
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}}
1379
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}}
1384
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}}
1389
1390 % les commandes annexes
1391 \def \rightepsillustrate#1#2{% #1 = file, #2 nb lines
1392 \setbox \tmpbox \vbox{%
1393 \epsillustrate{#1}}
1394 \rightillustrate{\tmpbox}{#2}}
1395
1396 \def \rightboxepsillustrate#1#2{% #1 = file, #2 = nb lines
1397 \setbox \tmpbox \vbox{%
1398 \boxepsillustrate{#1}}
1399 \rightillustrate{\tmpbox}{#2}}
1400
1401 \def \rightsuperboxepsillustrate#1#2{% #1 = file, #2 = nb lines
1402 \setbox \tmpbox \vbox{%
1403 \superboxepsillustrate{#1}}
1404 \rightillustrate{\tmpbox}{#2}}
1405
1406 % === la figure a gauche ===============================
1407
1408 % ma tentative de \leftillustrate~: la commande de base, qui
1409 % permet d'afficher du 'vertical material' a gauche du texte
1410
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
1414 \dp 10 = 0pt
1415 \line{% % on affiche dans une ligne de
1416 {\copy 10 } % hauteur nulle
1417 \hfill}
1418 \vskip-\baselineskip % on rectif le saut interligne
1419 \hangindent = 1.1 \wd10 % et on prepare le decalage de droite
1420 \hangafter = #2
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
1424 \par
1425 \else
1426 \hangcarryover
1427 \fi}}
1428
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}}}%
1433 {#4}}
1434
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}}}%
1438 {#4}}
1439
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}}}%
1443 {#4}}
1444
1445 % les commandes annexes
1446 \def \leftepsillustrate#1#2{% % #1 = vertical material, #2 = nb lines
1447 \leftillustrate{%
1448 \vbox{\epsillustrate{#1}}}%
1449 {#2}}
1450
1451 \def \leftboxepsillustrate#1#2{% #1 = vertical material, #2 = nb lines
1452 \leftillustrate{%
1453 \vbox{\boxepsillustrate{#1}}}%
1454 {#2}}
1455
1456 \def \leftsuperboxepsillustrate#1#2{% #1 = vertical material, #2 = nb lines
1457 \leftillustrate{%
1458 \vbox{\superboxepsillustrate{#1}}}%
1459 {#2}}
1460
1461 \catcode`\@ = 12
1462
1463 %% test des macros \hangafter et \hangindent
1464 %% Ici, on reprend juste le test3, et on essaye
1465 %% de faire un peu plus propre
1466
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.
1474
1475
1476 \catcode`\@ = 11
1477
1478 % ===== numerotation des lignes
1479 \newif \ifwithlinen@ % avec numerotation des lignes~?
1480 \withlinen@true % oui par defaut
1481
1482 \def \withlineno{% % selection de l'option de numerotation
1483 \withlinen@true} % par des macros "visibles"
1484 \def \withoutlineno{%
1485 \withlinen@false}
1486
1487 \def \n@mline{% % affichage du no de ligne
1488 \indent
1489 \llap{\sevenrm \the\lineno~: \hskip .5em}}
1490
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
1496
1497 \def \listingpath{% % le chemin d'acces, vide par defaut
1498 }
1499
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
1504 % Lachand-Robert...
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
1508 \newbox \encadrbox
1509 \def \initencadrbox{%
1510 \setbox \encadrbox =\hbox to \hsize{%
1511 \vrule height 9pt depth 3pt
1512 \hfil
1513 \vrule height 9pt depth 3pt}
1514 \ht \encadrbox = 0pt
1515 \dp \encadrbox = 0pt
1516 \wd \encadrbox = 0pt}
1517
1518 \newbox \box@ % le titre du listing
1519 \newtoks \listingtoks
1520 \newread \currentfile
1521
1522 % ===== passe en mode verbatim
1523 \def \verb@tim{%
1524 \def \do##1{% % on prepare le verbatim
1525 \catcode`##1=12 }%
1526 \def°{% % pas tres propre ca, il s'agit
1527 \char23} % d'un truc provisoire pour le "degre"
1528 \dospecials
1529 \obeyspaces
1530 \def \par{%
1531 \leavevmode
1532 \endgraf}%
1533 \obeylines
1534 \eightpoint \tt} % style de fonte
1535
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
1540 \else
1541 #1
1542 \fi
1543 \fi}
1544
1545 % ===== traitement d'une ligne du fichier
1546 \def \traite@ne{%
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}
1552 \vss
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
1558 \verb@tim
1559 \fi
1560 \else % la ligne n'est pas vide
1561 \writelistingline{\next} % et on l'affiche telle que
1562 \fi}
1563
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
1570 \else
1571 \writelistingline{\next} % ou on affiche tel que
1572 \fi
1573 \ifeof \currentfile % si c'est fini,
1574 \closein \currentfile % on ferme le fichier
1575 \let \next \relax % et on arrete,
1576 \else % sinon
1577 \let \next \read@ne % on recommence
1578 \fi
1579 \next}
1580
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 . . .
1583
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
1587 \penalty -200
1588 \vskip -2\baselineskip
1589 \listingno = #1
1590 \beginlineno = #4
1591 \endlineno = #5
1592 \immediate \wlog{Beginning listing of \listingpath #2}
1593 \initencadrbox
1594 \begingroup % DEBUT
1595 \offinterlineskip
1596 \listingtoks = {\tensl #3}
1597 \everypar = {%
1598 \hskip -\parindent
1599 \copy \encadrbox
1600 \strut
1601 \ifwithlinen@
1602 \n@mline
1603 \else
1604 \indent
1605 \fi}
1606 \parskip = 0pt
1607 \lineno = 0
1608 \ifwithlinen@
1609 \parindent = 30pt
1610 \else
1611 \parindent = 20pt
1612 \fi
1613 \mark{\the\listingtoks}
1614 \ifnum \listingno = 1 % si version 1, on met dans des \vbox
1615 \vbox
1616 \fi
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@
1621 \hrulefill
1622 \quad \the \listingtoks \quad
1623 \hrulefill
1624 \vrule height 0.4pt depth \dp\box@}
1625 \hbox to \hsize{% % la ligne vide qui suit
1626 \vrule height 9pt depth 3pt
1627 \hfil
1628 \vrule height 9pt depth 3pt}
1629 \verb@tim
1630 \openin \currentfile = \listingpath #2 % ici on change le \input
1631 \read@ne % et c'est \read@ne qui va lire le fichier
1632 \endgraf
1633 \nobreak
1634 \hbox to \hsize{% % la ligne vide finale
1635 \vrule height 9pt depth 0pt
1636 \hfil
1637 \vrule height 9pt depth 0pt}
1638 \hrule % la \hrule de fin de listing
1639 \egroup % fin du groupe listing
1640 \endgroup % FIN
1641 \mark{} % on restaure la marque
1642 \immediate \wlog{End listing of #2}
1643 \bigbreak}%
1644
1645 % puis on modifie la routine de sortie
1646 \output = {%
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
1652 \else % % sinon
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}
1657 \nointerlineskip
1658 \hbox to \hsize{%
1659 \vsize = 0pt
1660 \dotfill}}
1661 % \advance \dimen0 by -\prevdepth %
1662 % \kern \dimen0 %
1663 \line{%
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
1669 \fi
1670 \plainoutput} % final~: on appelle la routine
1671 % % habituelle
1672 \catcode`\@ = 12
1673
1674 %% fichier 'misenpge.tex'
1675 %% les differentes macros de mise en page
1676
1677 % ============ macros de mises a jour =========
1678 \def \today {%
1679 $\number \day $ \space
1680 \ifcase \month \or
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
1683 Décembre
1684 \fi
1685 $\number \year $}
1686
1687 % ====================== referencage des documents ===========================
1688
1689 %%%%% la date %%%%%
1690
1691 \newbox \datebox
1692 \def \cleardatebox {%
1693 \setbox \datebox = \box \datebox }
1694 \cleardatebox
1695 \def \date#1{%
1696 \setbox \datebox \hbox {\eightpoint \rm #1}}
1697
1698 %%%%% la classe %%%%%
1699
1700 \newbox \classebox
1701 \def \clearclassebox {%
1702 \setbox \classebox = \box \classebox }
1703 \def \classe#1{%
1704 \setbox \classebox \hbox {\sevenrm #1}}
1705
1706 %%%%% les references du document %%%%%
1707
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 }}
1714
1715 % =============================================================================
1716 %% \def \duree#1{%
1717 %% \setbox \dureebox
1718 %% \hbox {\sevenrm \underbar {durée}~: #1}}%
1719 %% \def \bareme#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
1725 %\def \entete{%
1726 % \vskip \enteteskip
1727 % \line{\unhbox \classificationbox
1728 % \unhbox \classebox
1729 % \hfil
1730 % \quad
1731 % \unhbox \datebox}
1732 % \vskip \enteteskipafter}%
1733
1734 %%%%%%%%% REMARQUE~: du coup, les variables \entete... sont inutiles
1735
1736 % ============================ gestion de la headline =========================
1737
1738 \newtoks \lyceeheadline
1739 \newtoks \firstheadline
1740 \newtoks \oddheadline
1741 \newtoks \evenheadline
1742
1743 \lyceeheadline = {%
1744 \unhcopy \classificationbox
1745 \unhcopy \classebox
1746 \hfil \quad
1747 \unhcopy \datebox }
1748
1749 \headline = {%
1750 \ifnum \pageno = 1
1751 \the\firstheadline
1752 \else
1753 \ifodd \pageno
1754 \the\oddheadline
1755 \else
1756 \the\evenheadline
1757 \fi
1758 \fi}
1759
1760 \firstheadline = \lyceeheadline
1761 \oddheadline = \lyceeheadline
1762 \evenheadline = \lyceeheadline
1763
1764 % ============================ gestion de la footline =========================
1765
1766 \newtoks \firstfootline
1767 \newtoks \oddfootline
1768 \newtoks \evenfootline
1769 \newtoks \lyceefootline
1770
1771 \footline = {%
1772 \ifnum \pageno = 1
1773 \the\firstfootline
1774 \else
1775 \ifodd \pageno
1776 \the\oddfootline
1777 \else
1778 \the\evenfootline
1779 \fi
1780 \fi }
1781
1782 \lyceefootline = {\hss}
1783 \firstfootline = \lyceefootline
1784 \oddfootline = \lyceefootline
1785 \evenfootline = \lyceefootline
1786
1787 % =============================================================================
1788
1789 %% fichier 'info.tex'
1790 %% macros pour décrire des programmes. ref pp 420--422 du TeXbook
1791 %%
1792
1793
1794 \def \|{\leavevmode \hbox{\tt \char`\|}} % vertical line
1795 \def{\leavevmode \hbox{\tt \char23}} % ???
1796
1797 \newskip \ttglue \ttglue = .5em plus.25em minus .15em
1798
1799 \outer \def \begindisplay{%
1800 \obeylines
1801 \startdisplay}
1802 {\obeylines \gdef \startdisplay#1
1803 {\catcode`\^^M=5%
1804 $$#1 %
1805 \halign\bgroup %
1806 \indent ## \hfil && \qquad ## \hfil \cr}}
1807 \outer \def \enddisplay{%
1808 \crcr
1809 \egroup
1810 $$}
1811
1812 \chardef \other = 12
1813
1814 \def \ttverbatim{%
1815 \begingroup
1816 \catcode`\\=\other
1817 \catcode`\{=\other
1818 \catcode`\}=\other
1819 \catcode`\$=\other
1820 \catcode`\&=\other
1821 \catcode`\#=\other
1822 \catcode`\%=\other
1823 \catcode`\~=\other
1824 \catcode`\_=\other
1825 \catcode`\^=\other
1826 \obeyspaces
1827 \obeylines %
1828 \tt}
1829
1830 {\obeyspaces \gdef {\ }} % \obeyspaces now gives \ , not \space
1831
1832 \outer \def \begintt{%
1833 $$
1834 \let \par = \endgraf
1835 \ttverbatim %
1836 \parskip = 0pt %
1837 \catcode`\|=0 %
1838 \rightskip = -5pc %
1839 \ttfinish}
1840
1841 {\catcode`\| = 0 \catcode`\\=\other % | is temporary escape character
1842 |obeylines %
1843 |gdef |ttfinish#1^^M#2\endtt{%
1844 #1 %
1845 |vbox{#2} %
1846 |endgroup %
1847 $$}}
1848
1849 % ci-dessous une astuce remarquable pour permettre d'écrire '|something|' et
1850 % d'avoir la phrase 'something' en ttverbatim.
1851
1852 \catcode`\@ = 11
1853
1854 \def \specialbar{%
1855 \ifmmode
1856 \def \next{|}
1857 \else
1858 \let \next = \speci@lbar
1859 \fi
1860 \next}
1861 \catcode`\|=\active \let| = \specialbar
1862 {\obeylines \gdef \speci@lbar{%
1863 \ttverbatim %
1864 \spaceskip = \ttglue %
1865 \let^^M=\ %
1866 \let|=\endgroup}}
1867
1868
1869 \catcode`\@ = 12
1870
1871 \Times

Licence Creative Commons Les fichiers de Syracuse sont mis à disposition (sauf mention contraire) selon les termes de la
Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.