÷ƒ’À;è TeX output 2001.10.31:1000‹ÿÿÿÿ y ý£ ? þ þÀ‘\jóUªsÉG®G®ecrm1728ºPros†duction–hçde“cšŒyhes“de“solutions“a˜v˜ec“LŸü]b‘ú'ÊóÓ·å ecrm1200ÁAŽŽ‘†ÇºT‘ýK*Ÿ·òEŽ‘OÂX‘oe2Ÿ—Œó·ág£G® cmmi12½"ŽŽ‘ACEŸùº¯ó!",š cmsy10ÀŽŽŽŸÿ’ yÁCop•¬wyrigh“t–êl(C)“1994,1995“par“Mik¬we“PiŽŽŽŽŽŸvV’Úßà31–êloSˆctobre“2001ŽŸ5:<‘Ró &Lt$ffffecbx1440ËT‘þ®(able–G\des“mati€èresŽ¤ÿ`‘Ró!]fŒ ecbx1000Ì1Ž‘`ÿIn®>troQÂduction’Þ&1ŽŽ¡‘R2Ž‘`ÿLe–Õcš®>hier“du“gestionnaire“de“doQÂcumen˜tation‘pt$2ŽŽ¡‘R3Ž‘`ÿIn®>terface‘Õutilisateur’êœ2ŽŽ¡‘R4Ž‘`ÿUn–Õexemple“simple’î(º4ŽŽ¡‘R5Ž‘`ÿUn–Õexemple“complexe’ß±4ŽŽ¡‘R6Ž‘`ÿUn–Õexemple“suppl€émen®>taire’Áû}6ŽŽ¡‘R7Ž‘`ÿIden®>tication’ žZ7ŽŽ¡‘R8Ž‘`ÿOptions’&å.7ŽŽ¡‘R9Ž‘`ÿManipulation–Õde“c®>hiers’Ô1v7ŽŽ¡‘R10Ž‘`ÿL'in•®>terface‘Õc“hier’öU9ŽŽ¡‘R11Ž‘`ÿL'in®>terface‘Õsolution’ç®w11ŽŽŸ!Ö‘RË1Ž‘iÁInctropœductionŽŸæ~‘aó 1ê± ecrm1000¹Ce–ì:ó"½HЃ ecti1000Íp‘ÿ}/ackage‘¬‰¹est“une“moGdication“de“l'ancienne“option“de“st¸èyle“ó#qLË ectt1000Îanswers“¹de“l'au-Ž¤ ‘Rteur,–‰³qui“a“€ét€é“utilis€ée“pšGendan¸èt“quelques“ann€ées,“bas€ée“sur“l'id€ée“du“T‘þUYŸ&úEŽ‘ã9XBo˜ok“deŽ¡‘Rlier–Ãsolutions“et“exercices.“J'ai“saisi“l'oppšGortunit€é“de“cette“r€évision“p˜our“mo˜dierŽ¡‘Rle– ,format“des“solutions,“an“qu'elles“soienš¸èt“main˜tenan˜t“pr€ésen˜t€ées“comme“un“en˜vi-Ž¡‘Rronnemen¸èt–—LŸýï‘üf ó$TÆ2‚ecrm0700ÏAŽŽ‘Íz¹T‘þUYŸ&úEŽ‘ã9X“plut€ôt“que“d€ébut€ées“par“une“commande“et“termin€ées“par“la“nŽ¡‘Rde›U l'en•¸èvironnemen“t˜en“vironnan“t,˜une˜mani€ère˜fort˜pGeu˜en˜accord˜a“v“ec˜LŸýï‘üf ÏAŽŽ‘Íz¹T‘þUYŸ&úEŽ‘ã9X‘ª“!Ž‘RŸff‰ffÿrŸ @‘ ö…Ÿý-:óq¡% cmsy6ÇŽŽ‘KÙó¦÷²"ecrm0800ÈT‘ÿJ¶raduit–€Ben“fran€çais“par“Jean-Pierre“Drucb cmmi10µ"ŽŽ‘*ýϹp˜our“pro˜duire“la“do˜cumen¸ètation.ŽŸq‘UüàÏ1Ž‘\ª®ó)©±Ê cmsy9Ôhó*ÒoÇw cmss9ÕdriverŽ‘oÔiŽ¤ ‘UüàÏ2Ž‘\ª®ó%qLË ectt0900Ð\documentclass{ltxdoc}Ž¡‘UüàÏ3Ž‘\ª®Ð\usepackage[T1]{fontenc}‘!"%–¹Najout€é“par“le“traducteurŽ¡‘UüàÏ4Ž‘\ª®Ð\usepackage[latin1]{inputenc}‘ rœ%–¹Najout€é“par“le“traducteurŽ¡‘UüàÏ5Ž‘\ª®Ð\usepackage[frenchb]{babel}‘å8%–¹Najout€é“par“le“traducteurŽ¡‘UüàÏ6Ž‘\ª®Ð\RecordChangesŽ¡‘UüàÏ7Ž‘\ª®Ð\begin{document}Ž¡‘UüàÏ8Ž‘fJÐ\DocInput{f-answers.dtx}Ž¡‘UüàÏ9Ž‘fJÐ\PrintIndexŽ¡‘R®Ï10Ž‘fJÐ\PrintChangesŽ¡‘R®Ï11Ž‘\ª®Ð\end{document}Ž¡‘R®Ï12Ž‘\ª®Ôhó(5ùž" cmmi9Ó=ÕdriverŽ‘oÔiŽ¦‘RË3Ž‘iÁIncterface‘G\utilisateurŽŸæ~‘a¹Le–U Íp‘ÿ}/ackage‘o¹doit“€être“inclus“a•¸èv“ec–U la“commande“:Ž©q‘s"Ð\usepackage[nosolutionfiles]{answers}Ž¡Ÿq‘R¹Si–%Ãl'argumenš¸èt“optionnel“est“spG€éci€é,“les“solutions“apparaissen˜t“directemen˜t“dansŽ¤ ‘Rle–¢`texte“au“lieu“d'€être“€écrites“dans“un“autre“c¸èhier.“Cela“pšGermet“de“pro˜duire“uneŽ¡‘Rv¸èersion–U de“d€émonstration.Ž¡‘aApr€ès–U cela,“il“doit“y“a•¸èv“oir–U plusieurs“d€éclarations“de“la“forme“:Ž$nÐ\NewassociationŽŽŽŽ¦‘s"\Newassociation{xxx}{yyy}{zzz}ŽŸ Ÿq‘R¹o€ù–[EÎxxx“¹est“un“en•¸èvironnemen“t–[Edans“le“doGcumenš¸èt“et“Îyyy“¹un“en˜vironnemen˜t“qui“en˜tou-Ž¡‘Rrera–T¥le“con•¸èten“u–T¥de“Îxxx“¹lorsqu'il“est“€écrit“dans“le“descripteur“de“cš¸èhier“sym˜bGoliqueŽŽŸ’(2ŽŽŒ‹­ y ý£ ? ýä‘RÎzzz¹.–ŠÉLes“noms“Îxxx¹,“Îyyy“¹and“Îzzz“¹doiv•¸èen“t›ŠÉcon“tenir˜uniquemen“t˜des˜lettres,˜pas˜deŽ¤ ‘Rc¸èhire,–U de“signe“de“pGonctuation“ou“d'espaces.Ž¡‘aPš¸èar–’Nd€éfaut,“la“sortie“se“fait“dans“Îzzz.tex“¹si“Îzzz“¹est“ouv˜ert.“La“commandeŽ‘ñø„Ð\solutionextensionŽŽŽŽ¡‘RÎ\solutionextension–¥¹pšGeut“€être“red€éni“p˜our“remplacer“l'extension“Îtex“¹par“uneŽ¡‘Rautre.›¥ÕAlternativ•¸èemen“t,˜le˜c“hier˜de˜sortie˜p•Geut˜€être˜mo“di€é˜en˜tan¸èt˜que˜param€ètreŽ¡‘Rde–3gÎ\Opensolutionfile“¹et“c¸èhaque“Î\Opensolutionfile“¹sur“le“m€ême“descripteurŽ¡‘RpGeut–+úutiliser“un“cš¸èhier“ph˜ysique“di€éren˜t.“P˜ar“d€éfaut,“Î\solutionpoint“¹est“a‘Ž0jout€éŽ¡‘Ra•¸èv›ÿqÐan“t–§IÎ\solutionextension¹.“P¸èour“le“supprimer,“il“faut“le“red€énir“(la“v˜aleur“parŽ¡‘Rd€éfaut–U est“€évidemmenš¸èt“un“pGoin˜t).Ž¡‘a€À–U un“certain“pšGoin¸èt,“l'utilisateur“tap˜e“:Ž‘ö±ÒÐ\OpensolutionfileŽŽŽŽ¡‘ñø„\ClosesolutionfileŽŽŽŽ©q‘s"\Opensolutionfile{zzz}Ž¤ ‘s"...Ž¡‘s"\Closesolutionfile{zzz}Ž¡Ÿq‘R¹pGour–Iñcr€éer“un“cš¸èhier“de“solution“€écrit“par“les“en˜vironnemen˜ts“Îxxx“¹jusqu'aux“en˜vi-Ž¤ ‘Rronnemenš¸èts–€”Îyyy¹.“Si“cette“construction“est“utilis€ée“plusieurs“fois,“plusieurs“c˜hiersŽ¡‘Rde–Msolutions“v•¸èon“t–M€être“cr€é€és.“L'utilisateur“pGeut“souhait€ér“que“ces“cš¸èhiers“aien˜t“desŽ¡‘Rnoms–rŸdi€éren¸èts.“S'il“utilise“Î\Opensolutionfile{zzz}[www]¹,“alors“Îwww.tex“¹est“uti-Ž¡‘Rlis€é–1comme“nom“de“c¸èhier“de“sortie“actuel“au“lieu“de“Îzzz.tex¹.“Cela“pGermet“auŽ¡‘Rdescripteur–Ð}de“cš¸èhier“Îzzz“¹de“cr€éer“plusieurs“c˜hiers“Îwww.tex¹,“par“exemple“un“pGourŽ¡‘Rc•¸èhaque›¦1c“hapitre˜d'un˜livre˜ou˜pGour˜c“haque˜feuille˜de˜probl€ème.˜Ensuite,˜on˜pGeut˜lesŽ¡‘Rutiliser–Lgr€âce“€à“la“commande“Î\include¹.“La“m€ême“v‘ÿqÐaleur“de“Î\solutionextensionŽ¡‘R¹est–þ£utilis€é“pšGour“les“argumen¸èts“principal“et“optionnel.“Le“nom“Îwww“¹doit“resp˜ecterŽ¡‘Rles›U con•¸èv“en“tions˜habituelles˜sur˜les˜noms˜de˜c“hier.Ž¡‘aDe–±šplus,“des“donn€ées“pGeuv•¸èen“t–±š€être“€écrites“directemenš¸èt“dans“un“c˜hier“au“mo˜y˜enŽ‘PXÐ\WritetofileŽŽŽŽ¡‘R¹de–K Î\Writetofile¹.“Son“premier“argumenš¸èt“est“le“descripteur“de“c˜hier“et“le“secondŽ¡‘Rla–“cligne“de“texte“€à“€écrire.“Il“est“tr€ès“impGortanš¸èt“de“se“souv˜enir“que“c˜haque“mot“deŽ¡‘Rconš¸ètr€ôle–òDdans“la“ligne“doit“€être“pr€éc€éd€é“par“Î\protect¹,“autremen˜t“la“primitiv˜e“T‘þUYŸ&úEŽ‘ã9XŽ¡‘RÎ\write–0w¹v‘ÿqÐa“les“d€évš¸èeloppGer.“Aussi,“comme“l'argumen˜t“est“lu“€à“la“mani€ère“habituelleŽ¡‘Rde–}OT‘þUYŸ&úEŽ‘ã9X,“tout“espace“suiv‘ÿqÐanš¸èt“un“mot“de“con˜tr€ôle“dispara€îtra“€à“moins“que“des“pr€é-Ž¡‘Rcautions–FWsoienš¸èt“prises.“Donc,“pGour“€écrire“Î\xx‘?¬yyy“¹dans“le“c˜hier,“l'utilisateur“doitŽ¡‘RtapGer‘U Î\protect\xx\space‘?¬yyy¹.Ž¡‘aUn–U blošGc“de“texte“p˜eut“€être“sauvš¸è€é“dans“un“descripteur“de“c˜hier“gr€âce“€à“:Ž‘!5ÐFilesaveŽŽŽŽ¦‘s"\begin{Filesave}{zzz}Ž¤ ‘|ƒ¾....Ž¡‘s"\end{Filesave}Ž¡Ÿq‘R¹autour–¤–de“celui-l€à,“d€ès“que“Îzzz“¹a“€ét€é“ouvš¸èert.“Les“restrictions“pr€éc€éden˜tes“s'appli-Ž¤ ‘Rquanš¸èt–U €à“Î\Writetofile“¹n'existen˜t“pas“pGour“cet“en˜vironnemen˜t.Ž¡‘aL'un–U des“c¸èhiers“g€én€ér€és“pGeut“€être“lu“gr€âce“€à“:Ž‘ö±ÒÐ\ReadsolutionfileŽŽŽŽ¦‘s"\Readsolutionfile{zzz}ŽŸ Ÿq‘R¹€à–¨hcondition“que“le“cš¸èhier“n'ait“pas“€ét€é“ferm€é“sans“€être“rouv˜ert.“On“pGeut“aussiŽ¡‘Rutiliser–U simplemenš¸èt“Î\input“¹ou“Î\include“¹au“c˜hoix.ŽŽŸ’(3ŽŽŒ‹o y ý£ ? ýä‘a¹Aucune–}—de“ces“opG€érations“E/S‘}n'onš¸èt“d'eet“si“le“descripteur“de“c˜hier“n'a“pasŽŸ ‘R€ét€é–U ouv¸èert“ou“si“le“param€ètre“Înosolutionsfiles“¹est“spG€éci€é.Ž©!Ö‘RË4Ž‘iÁUn–G\exemple“simpleŽŸæ~‘a¹V‘ÿ*¸oici–U un“exemple“direct“pšGour“illustrer“commen¸èt“on“p˜eut“utiliser“ces“macros.ŽŸq‘R®Ï13Ž‘\ª®ÔhÕex1Ž‘ŸøÔiŽ¤ ‘R®Ï14Ž‘\ª®Ð\documentclass[12pt,a4paper]{article}Ž¡‘R®Ï15Ž‘\ª®Ð\usepackage{answers}Ž¡‘R®Ï16Ž‘\ª®Ð\Newassociation{sol}{Solution}{ans}Ž¡‘R®Ï17Ž‘\ª®Ð\newtheorem{ex}{Exercice}Ž¡‘R®Ï18Ž‘\ª®Ð\begin{document}Ž¡‘R®Ï19Ž‘\ª®Ð\Opensolutionfile{ans}[ans1]Ž¡‘R®Ï20Ž‘\ª®Ð\section{Probl€èmes}Ž¡‘R®Ï21Ž‘\ª®Ð\begin{ex}Ž¡‘R®Ï22Ž‘\ª®ÐPremier‘¹NexerciceŽ¡‘R®Ï23Ž‘\ª®Ð\begin{sol}Ž¡‘R®Ï24Ž‘fJÐPremi€ère‘¹Nsolution.Ž¡‘R®Ï25Ž‘\ª®Ð\end{sol}Ž¡‘R®Ï26Ž‘\ª®Ð\end{ex}Ž¡‘R®Ï27Ž‘\ª®Ð\begin{ex}Ž¡‘R®Ï28Ž‘\ª®ÐDeuxi€ème‘¹NexerciceŽ¡‘R®Ï29Ž‘\ª®Ð\begin{sol}Ž¡‘R®Ï30Ž‘fJÐDeuxi€ème‘¹Nsolution.Ž¡‘R®Ï31Ž‘\ª®Ð\end{sol}Ž¡‘R®Ï32Ž‘\ª®Ð\end{ex}Ž¡‘R®Ï33Ž‘\ª®Ð\Closesolutionfile{ans}Ž¡‘R®Ï34Ž‘\ª®Ð\section{Solutions}Ž¡‘R®Ï35Ž‘\ª®Ð\input{ans1}Ž¡‘R®Ï36Ž‘\ª®Ð\end{document}Ž¡‘R®Ï37Ž‘\ª®ÔhÓ=Õex1Ž‘ŸøÔiŽ¦‘RË5Ž‘iÁUn–G\exemple“complexeŽŸæ~‘a¹Ce–zHqui“suit“est“un“exemple“(tr€ès“complexe)“de“l'usage“du“Íp‘ÿ}/ackage‘:—Îanswers¹.“IlŽ© ‘Rutilise–U certains“des“ranemen¸èts“d€écrits“plus“haut.ŽŸq‘R®Ï38Ž‘\ª®ÔhÕex2Ž‘ŸøÔiŽ¡‘R®Ï39Ž‘\ª®Ð\documentclass[12pt,a4paper]{article}Ž¡‘R®Ï40Ž‘\ª®Ð\usepackage{answers}%\usepackage[nosolutionfiles]{answers}ŽŸq‘R¹D'abGord,–Fúun“en•¸èvironnemen“t–Fúqui“con•¸ètien“t–Fúdes“probl€èmes“et“qui“les“n¸èum€érote.“Il“estŽ¦‘Rbas€é–÷Lsur“un“Îtheorem“¹de“LŸýï‘üf ÏAŽŽ‘Íz¹T‘þUYŸ&úEŽ‘ã9X‘¡ßmais“a•¸èv“ec–÷Lun“corps“en“roman“plut€ôt“qu'en“italique.ŽŸq‘R®Ï41Ž‘\ª®Ð\newtheorem{Exc}{Exercice}Ž¡‘R®Ï42Ž‘\ª®Ð\newenvironment{Ex}{\begin{Exc}\normalfont}{\end{Exc}}ŽŸq‘R¹T‘ÿ*¸rois–°tš¸èypGes“de“solutions“son˜t“€écrites“dans“deux“c˜hiers“di€éren˜ts.“Le“descripteur“deŽ¦‘Rcš¸èhier––žÎtest“¹con˜tiendra“les“solutions“et“indications“que“l'€étudian˜t“v˜erra‘ª“;“ÎtesttwoŽŽŸ’(¹4ŽŽŒ‹"… y ý£ ? ýä‘R¹con•¸ètien“t– Åpar“Martin“OsbGorne.“Ici,“les“exercices“et“solutions“ne“sonš¸èt“pas“n˜um€érot€és‘ª“;“ilsŽ¦‘Rson¸èt‘U Íd€é‘ÿ}/crits¹.ŽŸ É‘R®Ï91Ž‘\ª®ÔhÕex3Ž‘ŸøÔiŽ¡‘R®Ï92Ž‘\ª®Ð\documentclass[12pt,a4paper]{article}Ž¡‘R®Ï93Ž‘\ª®Ð\usepackage{answers}Ž¡‘R®Ï94Ž‘\ª®Ð\newenvironment{Ex}[1]{\begin{trivlist}\item–¹N\emph{#1}“%Ž¡‘R®Ï95Ž‘\ª®Ð\renewcommand{\Currentlabel}{#1}}{\end{trivlist}}Ž¡‘R®Ï96Ž‘\ª®Ð\Newassociation{solution}{Soln}{solutions}Ž¡‘R®Ï97ŽŽ¡‘R®98Ž‘\ª®Ð\renewenvironment{Soln}[1]{\begin{trivlist}\itemŽ¡‘R®Ï99Ž‘\ª®ÐSolution–¹N€à“\emph{#1}“}{\end{trivlist}}Ž¡‘N|Ï100ŽŽ¡‘N|101Ž‘\ª®Ð\begin{document}Ž¡‘N|Ï102Ž‘\ª®Ð\section*{Probl€èmes}Ž¡‘N|Ï103Ž‘\ª®Ð\Opensolutionfile{solutions}[ans3]Ž¡‘N|Ï104Ž‘\ª®Ð\begin{Ex}{Premier‘¹Nexercice}Ž¡‘N|Ï105Ž‘fJÐUn–¹Nexercice“avec“une“solution.Ž¡‘N|Ï106Ž‘fJÐ\begin{solution}Ž¡‘N|Ï107Ž‘fJÐVoici–¹Nla“solution.Ž¡‘N|Ï108Ž‘fJÐ\relax{}Ž¡‘N|Ï109Ž‘fJÐ\end{solution}Ž¡‘N|Ï110Ž‘\ª®Ð\end{Ex}Ž¡‘N|Ï111Ž‘\ª®Ð\begin{Ex}{Second‘¹Nexercice}Ž¡‘N|Ï112Ž‘fJÐUn–¹Nsecond“exercice“avec“une“solution.ŽŽŸ’(¹6ŽŽŒ‹5 y ý£ ? ýä‘N|Ï113Ž‘fJÐ\begin{solution}Ž¤ ‘N|Ï114Ž‘fJÐVoici–¹Nune“autre“solution.Ž¡‘N|Ï115Ž‘fJÐ\end{solution}Ž¡‘N|Ï116Ž‘\ª®Ð\end{Ex}Ž¡‘N|Ï117Ž‘\ª®Ð\Closesolutionfile{solutions}Ž¡‘N|Ï118Ž‘\ª®Ð\section*{Solutions}Ž¡‘N|Ï119Ž‘\ª®Ð\Readsolutionfile{solutions}Ž¡‘N|Ï120Ž‘\ª®Ð\end{document}Ž¡‘N|Ï121Ž‘\ª®ÔhÓ=Õex3Ž‘ŸøÔiŽŸ!Ö‘RË7Ž‘iÁIdencticationŽŸæ~‘a¹Ce–fªÍp‘ÿ}/ackage‘&ù¹pGeut“€être“utilis€é“uniquemenš¸èt“a˜v˜ec“LŸýï‘üf ÏAŽŽ‘Íz¹T‘þUYŸ&úEŽ‘ã9X‘ä2Ÿÿµ"ŽŽ‘(¸K¹,“un“message“idoine“estŽŸ ‘Rdonc–U ac¸èh€é“quand“un“autre“format“est“utilis€é.Ž©q‘N|Ï122Ž‘\ª®ÔhÕansw¾9ersŽ‘"EŸÔiŽ¡‘N|Ï123Ž‘\ª®Ð\NeedsTeXFormat{LaTeX2e}[1996/06/01]Ž¤q‘a¹On–U d€éclare“le“nom“du“Íp‘ÿ}/ackage‘o¹et“sa“v¸èersion“:Ž¦‘N|Ï124Ž‘\ª®Ð\ProvidesPackage{answers}[1996/07/10]Ž¡‘a¹et–U on“l'acš¸èhe“sur“le“terminal“(et“le“c˜hier“log)“:Ž¦‘N|Ï125Ž‘\ª®Ð\typeout{Package–¹N`answers'“<\filedate>.}Ž¤ ‘N|Ï126Ž‘\ª®Ð\typeout{\Copyright}ŽŸ!Ö‘RË8Ž‘iÁOptionsŽŸæ~‘a¹Il–Ióy“a“une“seul“option“Înosolutionfiles“¹qui“bascule“dans“le“moGde“o€ù“les“solu-Ž© ‘Rtions–U ne“sonš¸èt“pas“€écrites“dans“des“c˜hiers“mais“proGduites“imm€édiatemen˜t.ŽŸ*V‘N|Ï127Ž‘\ª®Ð\newif\ifanswerfiles‘¹N\answerfilestrueŽ¡‘N|Ï128Ž‘\ª®Ð\DeclareOption{nosolutionfiles}{\answerfilesfalseŽ¡‘N|Ï129Ž‘\ª®Ð\typeout{No–¹Nanswer“files“being“produced}}%Ž¡‘N|Ï130Ž‘\ª®Ð\ProcessOptionsŽŸ*V‘a¹Comme–ožce“Íp›ÿ}/ackage‘/í¹utilise“fortemen¸èt“le“Íp˜ackage‘/íÎverbatim¹,“on“s'assure“que“celui-Ž¦‘Rci–U est“c¸èharg€é.Ž¤q‘N|Ï131Ž‘\ª®Ð\RequirePackage{verbatim}ŽŸ!Ö‘RË9Ž‘iÁManipulation–G\de“cchiersŽŸæ~‘ó?6Ð\solutionextensionŽŽŽ‘R¹L'extension–U par“d€éfaut“des“c¸èhiers“solution“est“d€énie“ici.Ž¡‘N|Ï132Ž‘\ª®Ð\newcommand{\solutionpoint}{.}ŽŸ ‘N|Ï133Ž‘\ª®Ð\newcommand{\solutionextension}{tex}ŽŸq‘R¹Elle–U pGeut“€être“c¸èhang€ée“par“Î\renewcommand¹.ŽŽŸ’(7ŽŽŒ‹=Ì y ý£ ? ýä‘"|BÐFilesaveŽŽŽ‘R¹On–A;d€énit“un“en•¸èvironnemen“t–A;ÎFilesave“¹a•¸èv“ec–A;un“param€ètre,“le“descripteur“de“c¸èhier.Ž© ‘RIl–U est“similaire“€à“l'exemple“de“Sc¸èh€öpf“dans“la“description“de“Îverbatim¹.ŽŸ/Ú‘N|Ï134Ž‘\ª®Ð\newenvironment{Filesave}[1]{%Ž¤ ‘N|Ï135Ž‘\ª®Ð\@bsphackŽ¡‘N|Ï136Ž‘\ª®Ð\def\verbatim@processline{}%Ž¡‘N|Ï137Ž‘\ª®Ð\Iffileundefined{#1}{}{%Ž¡‘N|Ï138Ž‘fJÐ\Ifopen{#1}{%Ž¡‘N|Ï139Ž‘fJÐ\def\verbatim@processline{%Ž¡‘N|Ï140Ž‘acüÐ\Ifanswerfiles{%Ž¡‘N|Ï141Ž‘\ª®Ð\immediate\write\@nameuse{#1@file}%Ž¡‘N|Ï142Ž‘\ª®Ð{\the\verbatim@line}%Ž¡‘N|Ï143Ž‘acüÐ}{}%Ž¡‘N|Ï144Ž‘fJÐ}%Ž¡‘N|Ï145Ž‘fJÐ}{}%Ž¡‘N|Ï146Ž‘\ª®Ð}%Ž¡‘N|Ï147Ž‘\ª®Ð\let\do\@makeother\dospecialsŽ¡‘N|Ï148Ž‘\ª®Ð\catcode`\^^M\active‘¹N\catcode`\^^I=12\relaxŽ¡‘N|Ï149Ž‘\ª®Ð\verbatim@startŽ¡‘N|Ï150Ž‘\ª®Ð}{\@esphack}ŽŸÇÅ‘— \WritetofileŽŽŽ‘R¹Il–ßPest“aussi“utile“d'a•¸èv“oir–ßPune“macro“pGour“€écrire“dans“un“c¸èhier.“Dans“celle-ci,“onŽ¦‘Ra–’ÐbGesoin“de“placer“Î\protect“¹dev‘ÿqÐanš¸èt“c˜haque“mot“de“con˜tr€ôle“dans“l'argumen˜t“quiŽ¦‘RpšGourrait–U €être“d€év¸èelopp˜€é“pr€ématur€émenš¸èt“et“ainsi“pro˜v˜oGqu€é“des“probl€èmes.Ž©/Ú‘N|Ï151Ž‘\ª®Ð\newcommand{\Writetofile}[2]{%Ž¡‘N|Ï152Ž‘\ª®Ð\@bsphackŽ¡‘N|Ï153Ž‘\ª®Ð\Iffileundefined{#1}{}{%Ž¡‘N|Ï154Ž‘fJÐ\Ifopen{#1}{%Ž¡‘N|Ï155Ž‘fJÐ{%Ž¡‘N|Ï156Ž‘acüÐ\let\protect\stringŽ¡‘N|Ï157Ž‘acüÐ\Ifanswerfiles{%Ž¡‘N|Ï158Ž‘\ª®Ð\immediate\write\@nameuse{#1@file}{#2}%Ž¡‘N|Ï159Ž‘acüÐ}{}%Ž¡‘N|Ï160Ž‘fJÐ}%Ž¡‘N|Ï161Ž‘fJÐ}{}%Ž¡‘N|Ï162Ž‘\ª®Ð}%Ž¡‘N|Ï163Ž‘\ª®Ð\@esphackŽ¡‘N|Ï164Ž‘\ª®Ð}ŽŸÇÅ‘'5\IfopenŽŽŽ‘R¹On–U a“bGesoin“de“tester“si“un“cš¸èhier“est“d€éj€à“ouv˜ert“ou“non.Ž¦‘N|Ï165Ž‘\ª®Ð\newcommand{\Ifopen}[3]{%Ž¡‘N|Ï166Ž‘\ª®Ð\csname‘¹Nif#1open\endcsname#2\else#3\fi}%ŽŸÇÅ‘ü±Ò\IffileundefinedŽŽŽ‘R¹On–[a“aussi“bšGesoin“de“tester“si“une“v‘ÿqÐariable“de“c¸èhier“a“d€éj€à“€ét€é“d€énie“p˜our“unŽŸ ‘Rdescripteur–U de“c¸èhier“donn€é.Ž¦‘N|Ï167Ž‘\ª®Ð\newcommand{\Iffileundefined}[3]{%Ž¡‘N|Ï168Ž‘\ª®Ð\csname‘¹Nifx\expandafter\endcsnameŽ¡‘N|Ï169Ž‘fJÐ\csname‘¹N#1@file\endcsname\relaxŽ¡‘N|Ï170Ž‘fJÐ#2\else#3\fi}ŽŸÇÅ‘R¹Enn,–U on“a“bGesoin“de“tester“si“on“doit“faire“la“sortie“sur“un“c¸èhier“ou“non.ŽŽŸ’(8ŽŽŒ‹ E§ y ý£ ? ýä‘N|Ï171Ž‘\ª®Ð\newcommand{\Ifanswerfiles}[2]{%Ž© ‘N|Ï172Ž‘\ª®Ð\ifanswerfiles–¹N#1\else“#2\fi}ŽŸ!Ö‘RË10Ž‘q¬%L'in•cterface‘G\c“hierŽŸæ~‘÷ø„Ð\OpensolutionfileŽŽŽ‘R¹A‘þã v‘ÿqÐanš¸èt–ûýde“pGouv˜oir“€écrire“des“solutions,“nous“dev˜ons“ouvrir“un“(ou“des)“c˜hier“deŽ¤ ‘Rsolutions.–¼HLa“commande“pGour“faire“cela“prend“un“seul“param€ètre,“qui“est“d'ordi-Ž¡‘Rnaire–4un“nom“de“cš¸èhier“sans“extension.“Ainsi,“ce“sera“sans“doute“une“c˜ha€îne“deŽ¡‘R8–Ø!caract€ères“pšGour“la“p˜ortabilit€é.“Cette“op˜€ération“ne“tronquera“pas“un“c¸èhier“ou-Ž¡‘Rv•¸èert›?;existan“t.˜N€éanmoins,˜si˜le˜second˜param€ètre˜optionnel˜est˜spG€éci€é,˜ce˜dernierŽ¡‘Rrepr€ésenš¸ète–üBle“nom“de“c˜hier“actuel“et“le“premier“param€ètre“est“alors“un“nom“deŽ¡‘Rdescripteur–U symš¸èbGolique“de“c˜hier“arbitraire.ŽŸ*V‘N|Ï173Ž‘\ª®Ð\def\Opensolutionfile#1{%Ž¦‘N|Ï174Ž‘\ª®Ð\@ifnextchar[{\define@filename{#1}}%Ž¦‘N|Ï175Ž‘fJÐ{\define@filename{#1}[#1]}}%Ž¦‘N|Ï176Ž‘\ª®Ð\def\define@filename#1[#2]{%Ž¦‘N|Ï177Ž‘\ª®Ð\global\@namedef{#1@filename}{#2\solutionpoint\solutionextension}%Ž¦‘N|Ï178Ž‘\ª®Ð\Ifanswerfiles{%Ž¦‘N|Ï179Ž‘fJÐ\typeout{Output–¹Nfrom“handle“#1“goingŽ¦‘N|Ï180Ž‘fJÐto‘¹N#2.\solutionextension}%Ž¦‘N|Ï181Ž‘\ª®Ð}{}%Ž¦‘N|Ï182Ž‘\ª®Ð\Iffileundefined{#1}{%Ž¦‘N|Ï183Ž‘fJÐ\expandafter\newwrite\csname‘¹N#1@file\endcsnameŽ¦‘N|Ï184Ž‘fJÐ\csname‘¹Nnewif\expandafter\endcsnameŽ¦‘N|Ï185Ž‘fJÐ\csname‘¹Nif#1open\endcsnameŽ¦‘N|Ï186Ž‘fJÐ\global\csname‘¹N#1openfalse\endcsnameŽ¦‘N|Ï187Ž‘fJÐ\expandafter\ifx\csname‘¹NOpen#1hook\endcsname\relaxŽ¦‘N|Ï188Ž‘fJÐ\global\@namedef{Open#1hook}##1{}%Ž¦‘N|Ï189Ž‘fJÐ\fiŽ¦‘N|Ï190Ž‘fJÐ\expandafter\ifx\csname‘¹NClose#1hook\endcsname\relaxŽ¦‘N|Ï191Ž‘fJÐ\global\@namedef{Close#1hook}##1{}%Ž¦‘N|Ï192Ž‘fJÐ\fiŽ¦‘N|Ï193Ž‘\ª®Ð}{}%Ž¦‘N|Ï194Ž‘\ª®Ð\let\Tmp\relaxŽ¦‘N|Ï195Ž‘\ª®Ð\Ifopen{#1}{\typeout{File–¹N#1“already“open}}{%Ž¦‘N|Ï196Ž‘fJÐ\Ifanswerfiles{%Ž¦‘N|Ï197Ž‘fJÐ\immediate\openout\@nameuse{#1@file}=%Ž¦‘N|Ï198Ž‘fJÐ\@nameuse{#1@filename}%Ž¦‘N|Ï199Ž‘fJÐ}{}%Ž¦‘N|Ï200Ž‘fJÐ\global\csname#1opentrue\endcsnameŽ¦‘N|Ï201Ž‘fJÐ\def\Tmp{\@nameuse{Open#1hook}{#1}}%Ž¦‘N|Ï202Ž‘\ª®Ð}%Ž¦‘N|Ï203Ž‘\ª®Ð\TmpŽ¦‘N|Ï204Ž‘\ª®Ð}ŽŸ*V‘ó?6\ClosesolutionfileŽŽŽ‘R¹Nous›U a•¸èv“ons˜aussi˜une˜commande˜pGour˜fermer˜un˜c“hier˜pr€éalablemen“t˜ouv“ert.ŽŸq‘N|Ï205Ž‘\ª®Ð\def\Closesolutionfile#1{%Ž¦‘N|Ï206Ž‘\ª®Ð\let\Tmp\relaxŽŽŸ’(¹9ŽŽŒ‹ Nä y ý£ ? ýä‘N|Ï207Ž‘\ª®Ð\Iffileundefined{#1}{}{%Ž¤ ‘N|Ï208Ž‘fJÐ\Ifopen{#1}{%Ž¡‘N|Ï209Ž‘fJÐ\Ifanswerfiles{%Ž¡‘N|Ï210Ž‘acüÐ\immediate\closeout\@nameuse{#1@file}%Ž¡‘N|Ï211Ž‘fJÐ}{}%Ž¡‘N|Ï212Ž‘fJÐ\global\csname‘¹N#1openfalse\endcsnameŽ¡‘N|Ï213Ž‘fJÐ\def\Tmp{\@nameuse{Close#1hook}{#1}}%Ž¡‘N|Ï214Ž‘fJÐ}{}%Ž¡‘N|Ï215Ž‘\ª®Ð}%Ž¡‘N|Ï216Ž‘\ª®Ð\TmpŽ¡‘N|Ï217Ž‘\ª®Ð}Ž©‘a¹On–öTnotera“que“ces“deux“commandes“fournissenš¸èt“un“pGoin˜t“d'en˜tr€ée“qui“leur“pGer-Ž¤ ‘Rmet–¬çde“r€éaliser“des“t€âcš¸èhes“suppl€émen˜taires.“P˜ar“exemple,“l'opG€ération“d'ouv˜ertureŽ¡‘RpGeut–Ü<€écrire“des“informations“suppl€émenš¸ètaires“en“red€énissan˜t“le“pGoin˜t“d'en˜tr€éeŽ¡‘Ridoine.–cnL'opšG€ération“de“fermeture“p˜eut,“si“n€écessaire,“r€éaliser“un“Î\input“¹imm€édiatŽ¡‘Rdu›U con•¸èten“u˜du˜c“hier˜de˜solutions.˜P“ar˜exemple˜:ŽŸ‘wÊpÐ\newcommand{\Openxxxhook}[2]{%Ž¤ ’= \Writetofile{#1}{\protect\section{#2}}%Ž¡‘wÊp}%Ž¡‘wÊp\newcommand{\Closexxxhook}[1]{%Ž¡’= \Readsolutionfile{#1}%Ž¡‘wÊp}Ž¡¦‘R¹et–U ensuite“:ŽŸ‘wÊpÐ\Opensolutionfile{xxx}{R€éponses–¹Naux“probl€èmes“s€électionn€és}Ž¡‘wÊp...Ž¡‘wÊp\Closesolutionfile{xxx}Ž¡¦‘R¹Le–ÏNcompGortemenš¸èt“par“d€éfaut“est“d'ignorer“le“premier“param€ètre.“Notez“que“si“v˜ousŽ¤ ‘Rle–Ÿ‘moGdier,“vš¸èous“dev˜ez“garder“€à“l'esprit“que“le“premier“param€ètre“est“toujours“leŽ¡‘Rdescripteur–U de“c¸èhier.ŽŸ™˜‘÷ø„Ð\ReadsolutionfileŽŽŽ‘R¹L'opšG€ération–>¿de“lecture“du“c¸èhier“de“solutions“p˜eut“€être“accomplie“a•¸èv“ec–>¿la“commandeŽ¡‘Rsuiv‘ÿqÐan¸ète.ŽŸ‘N|Ï218Ž‘\ª®Ð\def\Readsolutionfile#1{%Ž¤ ‘N|Ï219Ž‘\ª®Ð\Ifanswerfiles{%Ž¡‘N|Ï220Ž‘fJÐ\Iffileundefined{#1}{}{%Ž¡‘N|Ï221Ž‘fJÐ\Ifopen{#1}{%Ž¡‘N|Ï222Ž‘acüÐ\typeout{WARNING:–¹Nattempt“to“read“open“file“#1}%Ž¡‘N|Ï223Ž‘fJÐ}{%Ž¡‘N|Ï224Ž‘acüÐ\edef\Tmp{%Ž¡‘N|Ï225Ž‘\ª®Ð\noexpand\InputIfFileExistsŽ¡‘N|Ï226Ž‘\ª®Ð{\@nameuse{#1@filename}}{}%Ž¡‘N|Ï227Ž‘\ª®Ð{\noexpand\message{FileŽ¡‘N|Ï228Ž‘\ª®Ð\@nameuse{#1@filename}%Ž¡‘N|Ï229Ž‘fJÐ\space–¹Nnot“found}}%Ž¡‘N|Ï230Ž‘acüÐ}%Ž¡‘N|Ï231Ž‘acüÐ\TmpŽŽŸ’þ€P¹10ŽŽŒ‹ XÞ y ý£ ? ýä‘N|Ï232Ž‘fJÐ}%Ž¤ ‘N|Ï233Ž‘fJÐ}%Ž¡‘N|Ï234Ž‘\ª®Ð}{}%Ž¡‘N|Ï235Ž‘\ª®Ð}Ž¡‘N|Ï236ŽŽŸ!Ö‘RË11Ž‘q¬%L'incterface‘G\solutionŽŸæ~‘k Ð\NewassociationŽŽŽ‘R¹Plusieurs–ƒdescripteurs“de“cš¸èhier“de“solutions“pGeuv˜en˜t“€être“d€énis.“V‘ÿ*¸ous“€êtes“seule-Ž¤ ‘Rmenš¸èt–¤limit€és“par“le“nom˜bre“que“T‘þUYŸ&úEŽ‘ã9X“met“€à“v˜otre“dispGosition.“Chaque“en˜vironne-Ž¡‘Rmen¸èt–¾de“solution,“pGour“€écrire“dans“l'un“de“ces“descripteurs,“doit“conna€ître“dansŽ¡‘Rquel– descripteur“il“doit“€écrire“ainsi“que“les“informations“€à“a‘Ž0jouter“au“c¸èhier,“in-Ž¡‘Rd€épGendammenš¸èt–eòde“son“con˜ten˜u.“On“r€éalise“ceci“en“cr€éan˜t“une“assoGciation“en˜treŽ¡‘Rl'en•¸èvironnemen“t–U source,“l'en•¸èvironnemen“t–U destination“et“le“descripteur“de“c¸èhier.ŽŸq‘N|Ï237Ž‘\ª®Ð\newcommand{\Newassociation}[3]{%Ž¤ ‘N|Ï238Ž‘\ª®Ð\newsolution{#2}%Ž¡‘N|Ï239Ž‘\ª®Ð\expandafter\ifx\csname‘¹N#3opentrue\endcsname\relaxŽ¡‘N|Ï240Ž‘fJÐ\expandafter\newif\csname‘¹Nif#3open\endcsnameŽ¡‘N|Ï241Ž‘\ª®Ð\fiŽ¡‘N|Ï242Ž‘\ª®Ð\newenvironment{#1}{%Ž¡‘N|Ï243Ž‘fJÐ\Ifanswerfiles{%Ž¡‘N|Ï244Ž‘fJÐ\let\Tmp\relaxŽ¡‘N|Ï245Ž‘fJÐ\Iffileundefined{#3}{}{%Ž¡‘N|Ï246Ž‘acüÐ\Ifopen{#3}{%Ž¡‘N|Ï247Ž‘\ª®Ð\immediate\write\@nameuse{#3@file}%Ž¡‘N|Ï248Ž‘\ª®Ð{\string\begin{#2}\@nameuse{#2params}}%Ž¡‘N|Ï249Ž‘acüÐ\def\Tmp{\Filesave{#3}}%Ž¡‘N|Ï250Ž‘acüÐ}{}%Ž¡‘N|Ï251Ž‘fJÐ}%Ž¡‘N|Ï252Ž‘fJÐ}{%Ž¡‘N|Ï253Ž‘fJÐ\edef\Tmp{\noexpand\begin{#2}\@nameuse{#2params}}%Ž¡‘N|Ï254Ž‘fJÐ}%Ž¡‘N|Ï255Ž‘fJÐ\csname‘¹Npre#1\endcsnameŽ¡‘N|Ï256Ž‘fJÐ\TmpŽ¡‘N|Ï257Ž‘\ª®Ð}%Ž¡‘N|Ï258Ž‘\ª®Ð{%Ž¡‘N|Ï259Ž‘fJÐ\Ifanswerfiles{%Ž¡‘N|Ï260Ž‘fJÐ\Iffileundefined{#3}{}{%Ž¡‘N|Ï261Ž‘acüÐ\Ifopen{#3}{%Ž¡‘N|Ï262Ž‘\ª®Ð\endFilesave%Ž¡‘N|Ï263Ž‘\ª®Ð\immediate\write\@nameuse{#3@file}%Ž¡‘N|Ï264Ž‘\ª®Ð{\string\end{#2}}%Ž¡‘N|Ï265Ž‘\ª®Ð\csname‘¹Npost#1\endcsnameŽ¡‘N|Ï266Ž‘acüÐ}{}%Ž¡‘N|Ï267Ž‘fJÐ}%Ž¡‘N|Ï268Ž‘fJÐ}{%Ž¡‘N|Ï269Ž‘fJÐ\end{#2}%Ž¡‘N|Ï270Ž‘fJÐ}%ŽŽŸ’þ€P¹11ŽŽŒ‹ am y ý£ ? ýä‘N|Ï271Ž‘\ª®Ð}%Ž© ‘N|Ï272Ž‘\ª®Ð}ŽŸ*V‘— \newsolutionŽŽŽ‘R¹L'en•¸èvironnemen“t–×Òdestination“par“d€éfaut,“dans“le“c¸èhier“de“solution,“est“d€éni“pGourŽ¤ ‘Rprendre–_un“unique“param€ètre,“un“nomš¸èbre“de“r€éf€érence“re€çu“de“l'en˜vironnemen˜tŽ¡‘Rsource.– ÂIl“est“ins€ér€é“a•¸èv“ec– Âle“stš¸èyle“Î\solutionstyle¹,“v‘ÿqÐalan˜t“par“d€éfaut“Î\textbf¹.Ž¡‘REn–;*plus,“on“pšGeut“a‘Ž0jouter“au“t¸èyp˜e“de“solution“Îyyy“¹des“balises“a•¸èv‘ÿqÐan“t–;*et“apr€èsŽ¡‘Ren–¿d€énissanš¸èt“respGectiv˜emen˜t“Î\preyyy“¹et“Î\postyyy¹,“par“exemple“pGour“a‘Ž0jouterŽ¡‘Rune–Bligne“de“la“largeur“de“la“page“ou“un“symš¸èbGole.“Si“quelque“c˜hose“de“plus“so-Ž¡‘Rphistiqu€é–test“d€ésir€é,“il“est“probablemenš¸èt“mieux“de“red€énir“l'en˜vironnemen˜t“parŽ¡‘RÎ\renewenvironment{yyy}¹.Ž¤q‘ ݼÐ\CurrentlabelŽŽŽŽŸq‘N|Ï273Ž‘\ª®Ð\newcommand{\newsolution}[1]{%Ž¦‘N|Ï274Ž‘\ª®Ð\@ifundefined{#1}{%Ž¦‘N|Ï275Ž‘fJÐ\global\@namedef{#1params}{{\Currentlabel}}%Ž¦‘N|Ï276Ž‘fJÐ\newenvironment{#1}[1]%Ž¦‘N|Ï277Ž‘fJÐ{%Ž¦‘N|Ï278Ž‘fJÐ\csname‘¹Npre#1\endcsnameŽ¦‘N|Ï279Ž‘fJÐ\trivlistŽ¦‘N|Ï280Ž‘fJÐ\item[\hskip\itemsep{\@nameuse{#1label}{##1}}]}%Ž¦‘N|Ï281Ž‘fJÐ{\csname‘¹Npost#1\endcsname\endtrivlist}%Ž¦‘N|Ï282Ž‘fJÐ\global\@namedef{#1label}##1{\solutionstyle{##1}}%Ž¦‘N|Ï283Ž‘\ª®Ð}{\typeout{WARNING:–¹Nenvironment“#1“already“in“use}}%Ž¦‘N|Ï284Ž‘\ª®Ð}Ž¦‘N|Ï285Ž‘\ª®Ð\newcommand{\solutionstyle}[1]{\textbf{#1}}Ž¦‘N|Ï286Ž‘\ª®Ð\newcommand{\Currentlabel}{\@currentlabel}Ž¡‘R¹Le–n¬format“de“l'€étiquette“pGour“l'en•¸èvironnemen“t–n¬solution“Îxxx“¹est“d€éni“par“la“com-Ž¤ ‘Rmande–s”Î\xxxlabel¹,“qui,“par“d€éfaut,“prend“un“argumenš¸èt.“L'argumen˜t“lui“est“pass€éŽ¡‘Rpar–w0la“commande“Î\xxxparams¹,“qui“se“d€évš¸èeloppGe“en“Î{\Currentlabel}¹,“synon˜ymeŽ¡‘Rde–ŠÎ{\@currentlabel}‘ª“¹;“cette“argumenš¸èt“est“€écrit“automatiquemen˜t“par“l'en˜viron-Ž¡‘Rnemenš¸èt–`–source.“L'€étiquette“appara€ît“en“gras“par“d€éfaut.“Nous“pGouv˜ons“facilemen˜tŽ¡‘Rcš¸èhanger–’jle“compGortemen˜t“de“cet“en˜vironnemen˜t“en“moGdian˜t“ces“deux“commandes.Ž¡‘RP¸èar–U exemple“:ŽŸq‘wÊpÐ\renewcommand{\xxxlabel}[1]{\emph{Solution–¹Nto“#1}}Ž¦‘wÊp\renewcommand{\xxxparams}{{\Currentlabel(p.\thepage)}}Ž¦Ÿq‘R¹fournironš¸èt–U un“nom˜bre“et“une“r€éf€érence“de“page“en“italique.Ž¡‘aDes–˜ScompšGortemen¸èts“plus“compliqu€és“p˜euv•¸èen“t–˜S€être“obtenš¸èus“en“red€énissan˜t“l'en-Ž¡‘Rvironnemenš¸èt–Ü\Îxxx“¹lui-m€ême,“pGour“qu'il“accepte“di€éren˜ts“param€ètres.“Notez“cepGen-Ž¡‘Rdan¸èt–U que“Î\xxxparams“¹doit“€être“red€énit“pGour“fournir“ces“param€ètres.ŽŸ*V‘aV‘ÿ*¸oil€à–U qui“nous“am€ène“€à“la“n“du“Íp‘ÿ}/ackage‘oÎanswers¹.ŽŸq‘N|Ï287Ž‘\ª®ÔhÓ=Õansw¾9ersŽ‘"EŸÔiŽŽŸ’þ€P¹12ŽŽŒ‹ i£ y ý£ ? ýä‘RËHistorique–G\des“c•changemen“tsŽ Ü³ ÿF‘Ró&Ù.œŒ ecrm0900Ñ2.0Ž¤ ‘aG€én€éral–Zc:“Premi€ère“v¾suppl€émen¾ cmmi10ù}—ßßßßßßß