From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- info/formation-latex-ul/CONTRIBUTING.md | 47 + info/formation-latex-ul/LICENSE | 427 ++++ info/formation-latex-ul/NEWS | 112 ++ info/formation-latex-ul/README.md | 71 + info/formation-latex-ul/doc/b-a-ba-math.tex | 57 + info/formation-latex-ul/doc/console-screenshot.pdf | Bin 0 -> 85081 bytes info/formation-latex-ul/doc/emacs.tex | 49 + .../doc/exercice_classe+paquetages.tex | 31 + info/formation-latex-ul/doc/exercice_commandes.tex | 24 + info/formation-latex-ul/doc/exercice_complet.tex | 143 ++ info/formation-latex-ul/doc/exercice_demo.tex | 1319 +++++++++++++ info/formation-latex-ul/doc/exercice_gabarit.tex | 14 + info/formation-latex-ul/doc/exercice_include.tex | 28 + .../doc/exercice_mathematiques.tex | 76 + info/formation-latex-ul/doc/exercice_minimal.tex | 19 + info/formation-latex-ul/doc/exercice_parties.tex | 150 ++ info/formation-latex-ul/doc/exercice_renvois.tex | 45 + .../formation-latex-ul/doc/exercice_subcaption.tex | 47 + info/formation-latex-ul/doc/exercice_trucs.tex | 102 + info/formation-latex-ul/doc/exercice_ulthese.tex | 69 + .../doc/formation-latex-ul-diapos.pdf | Bin 0 -> 1325892 bytes info/formation-latex-ul/doc/formation-latex-ul.bib | 1 + info/formation-latex-ul/doc/formation-latex-ul.pdf | Bin 0 -> 1616874 bytes info/formation-latex-ul/doc/pagetitre.tex | 13 + info/formation-latex-ul/doc/rpresentation.tex | 78 + info/formation-latex-ul/doc/ul_p.pdf | 1 + .../formation-latex-ul/source/apparence-diapos.tex | 151 ++ info/formation-latex-ul/source/apparence.tex | 576 ++++++ .../source/auxdoc/exemple-classe-article.pdf | Bin 0 -> 15346 bytes .../source/auxdoc/exemple-classe-article.tex | 23 + .../source/auxdoc/exemple-classe-book.pdf | Bin 0 -> 16639 bytes .../source/auxdoc/exemple-classe-book.tex | 23 + .../source/auxdoc/exemple-classe-report.pdf | Bin 0 -> 13752 bytes .../source/auxdoc/exemple-classe-report.tex | 23 + .../source/auxdoc/exemple-renvoi-autoref.pdf | Bin 0 -> 8053 bytes .../source/auxdoc/exemple-renvoi-autoref.tex | 24 + .../source/auxdoc/exemple-renvoi-hyperref.pdf | Bin 0 -> 8057 bytes .../source/auxdoc/exemple-renvoi-hyperref.tex | 24 + .../source/auxdoc/exemple-renvoi.pdf | Bin 0 -> 7712 bytes .../source/auxdoc/exemple-renvoi.tex | 23 + .../source/auxdoc/exemple-titre.pdf | Bin 0 -> 19624 bytes .../source/auxdoc/exemple-titre.tex | 26 + .../source/auxdoc/exercice_commandes-solution.pdf | Bin 0 -> 12597 bytes .../source/auxdoc/exercice_commandes-solution.tex | 31 + info/formation-latex-ul/source/bases-diapos.tex | 169 ++ info/formation-latex-ul/source/bases.tex | 1260 ++++++++++++ info/formation-latex-ul/source/bibliographie.tex | 879 +++++++++ info/formation-latex-ul/source/boites.tex | 496 +++++ info/formation-latex-ul/source/colophon-diapos.tex | 27 + info/formation-latex-ul/source/colophon.tex | 36 + info/formation-latex-ul/source/commandes.tex | 400 ++++ .../source/couverture-arriere-diapos.tex | 35 + .../source/couverture-arriere.tex | 34 + .../source/couverture-avant-diapos.tex | 142 ++ .../formation-latex-ul/source/couverture-avant.tex | 130 ++ .../source/formation-latex-ul-diapos.tex | 250 +++ .../source/formation-latex-ul.bib | 551 ++++++ .../source/formation-latex-ul.tex | 493 +++++ info/formation-latex-ul/source/francais.bst | 1739 +++++++++++++++++ .../source/images/Meerkat_stare-diapos.jpg | Bin 0 -> 452385 bytes .../source/images/Meerkat_stare.jpg | Bin 0 -> 548678 bytes .../source/images/bibtex-texmaker.png | Bin 0 -> 25287 bytes .../source/images/bibtex-texshop.png | Bin 0 -> 20088 bytes info/formation-latex-ul/source/images/by-sa.pdf | Bin 0 -> 6761 bytes info/formation-latex-ul/source/images/by.pdf | Bin 0 -> 1605 bytes .../images/exemple-bibliographie-cropped-1.pdf | Bin 0 -> 9441 bytes .../images/exemple-bibliographie-cropped-2.pdf | Bin 0 -> 22292 bytes .../images/exemple-bibliographie-cropped-3.pdf | Bin 0 -> 20997 bytes .../source/images/exercice_commandes-solution.pdf | Bin 0 -> 12548 bytes .../source/images/formation-latex-ul.png | Bin 0 -> 778458 bytes info/formation-latex-ul/source/images/knuth.jpg | Bin 0 -> 50188 bytes .../source/images/ponctuation.pdf | Bin 0 -> 13102 bytes info/formation-latex-ul/source/images/sa.pdf | Bin 0 -> 1732 bytes .../source/images/section-non-num.pdf | Bin 0 -> 4788 bytes .../source/images/section-num.pdf | Bin 0 -> 5124 bytes .../source/images/tdm-dans-pdf.pdf | Bin 0 -> 167063 bytes info/formation-latex-ul/source/images/ul_p.pdf | Bin 0 -> 32140 bytes info/formation-latex-ul/source/images/xyz-emph.pdf | Bin 0 -> 4118 bytes info/formation-latex-ul/source/images/xyz-math.pdf | Bin 0 -> 3302 bytes info/formation-latex-ul/source/introduction.tex | 170 ++ .../source/listings/exemple-bibliographie.bib | 16 + .../source/listings/exemple-bibliographie.tex | 20 + .../source/mathematiques-diapos.tex | 178 ++ info/formation-latex-ul/source/mathematiques.tex | 2041 ++++++++++++++++++++ info/formation-latex-ul/source/notices-diapos.tex | 76 + info/formation-latex-ul/source/notices.tex | 77 + .../source/organisation-diapos.tex | 154 ++ info/formation-latex-ul/source/organisation.tex | 982 ++++++++++ .../formation-latex-ul/source/prerequis-diapos.tex | 59 + .../source/presentation-diapos.tex | 182 ++ info/formation-latex-ul/source/presentation.tex | 359 ++++ info/formation-latex-ul/source/solutions.tex | 30 + info/formation-latex-ul/source/suite-diapos.tex | 42 + info/formation-latex-ul/source/sweave-diapos.tex | 63 + .../formation-latex-ul/source/tableaux+figures.tex | 1183 ++++++++++++ info/formation-latex-ul/source/tableaux-diapos.tex | 105 + info/formation-latex-ul/source/trucs+astuces.tex | 989 ++++++++++ info/formation-latex-ul/source/ulthese-diapos.tex | 57 + info/formation-latex-ul/source/ulthese.tex | 59 + 99 files changed, 17330 insertions(+) create mode 100644 info/formation-latex-ul/CONTRIBUTING.md create mode 100644 info/formation-latex-ul/LICENSE create mode 100644 info/formation-latex-ul/NEWS create mode 100644 info/formation-latex-ul/README.md create mode 100644 info/formation-latex-ul/doc/b-a-ba-math.tex create mode 100644 info/formation-latex-ul/doc/console-screenshot.pdf create mode 100644 info/formation-latex-ul/doc/emacs.tex create mode 100644 info/formation-latex-ul/doc/exercice_classe+paquetages.tex create mode 100644 info/formation-latex-ul/doc/exercice_commandes.tex create mode 100644 info/formation-latex-ul/doc/exercice_complet.tex create mode 100644 info/formation-latex-ul/doc/exercice_demo.tex create mode 100644 info/formation-latex-ul/doc/exercice_gabarit.tex create mode 100644 info/formation-latex-ul/doc/exercice_include.tex create mode 100644 info/formation-latex-ul/doc/exercice_mathematiques.tex create mode 100644 info/formation-latex-ul/doc/exercice_minimal.tex create mode 100644 info/formation-latex-ul/doc/exercice_parties.tex create mode 100644 info/formation-latex-ul/doc/exercice_renvois.tex create mode 100644 info/formation-latex-ul/doc/exercice_subcaption.tex create mode 100644 info/formation-latex-ul/doc/exercice_trucs.tex create mode 100644 info/formation-latex-ul/doc/exercice_ulthese.tex create mode 100644 info/formation-latex-ul/doc/formation-latex-ul-diapos.pdf create mode 120000 info/formation-latex-ul/doc/formation-latex-ul.bib create mode 100644 info/formation-latex-ul/doc/formation-latex-ul.pdf create mode 100644 info/formation-latex-ul/doc/pagetitre.tex create mode 100644 info/formation-latex-ul/doc/rpresentation.tex create mode 120000 info/formation-latex-ul/doc/ul_p.pdf create mode 100644 info/formation-latex-ul/source/apparence-diapos.tex create mode 100644 info/formation-latex-ul/source/apparence.tex create mode 100644 info/formation-latex-ul/source/auxdoc/exemple-classe-article.pdf create mode 100644 info/formation-latex-ul/source/auxdoc/exemple-classe-article.tex create mode 100644 info/formation-latex-ul/source/auxdoc/exemple-classe-book.pdf create mode 100644 info/formation-latex-ul/source/auxdoc/exemple-classe-book.tex create mode 100644 info/formation-latex-ul/source/auxdoc/exemple-classe-report.pdf create mode 100644 info/formation-latex-ul/source/auxdoc/exemple-classe-report.tex create mode 100644 info/formation-latex-ul/source/auxdoc/exemple-renvoi-autoref.pdf create mode 100644 info/formation-latex-ul/source/auxdoc/exemple-renvoi-autoref.tex create mode 100644 info/formation-latex-ul/source/auxdoc/exemple-renvoi-hyperref.pdf create mode 100644 info/formation-latex-ul/source/auxdoc/exemple-renvoi-hyperref.tex create mode 100644 info/formation-latex-ul/source/auxdoc/exemple-renvoi.pdf create mode 100644 info/formation-latex-ul/source/auxdoc/exemple-renvoi.tex create mode 100644 info/formation-latex-ul/source/auxdoc/exemple-titre.pdf create mode 100644 info/formation-latex-ul/source/auxdoc/exemple-titre.tex create mode 100644 info/formation-latex-ul/source/auxdoc/exercice_commandes-solution.pdf create mode 100644 info/formation-latex-ul/source/auxdoc/exercice_commandes-solution.tex create mode 100644 info/formation-latex-ul/source/bases-diapos.tex create mode 100644 info/formation-latex-ul/source/bases.tex create mode 100644 info/formation-latex-ul/source/bibliographie.tex create mode 100644 info/formation-latex-ul/source/boites.tex create mode 100644 info/formation-latex-ul/source/colophon-diapos.tex create mode 100644 info/formation-latex-ul/source/colophon.tex create mode 100644 info/formation-latex-ul/source/commandes.tex create mode 100644 info/formation-latex-ul/source/couverture-arriere-diapos.tex create mode 100644 info/formation-latex-ul/source/couverture-arriere.tex create mode 100644 info/formation-latex-ul/source/couverture-avant-diapos.tex create mode 100644 info/formation-latex-ul/source/couverture-avant.tex create mode 100644 info/formation-latex-ul/source/formation-latex-ul-diapos.tex create mode 100644 info/formation-latex-ul/source/formation-latex-ul.bib create mode 100644 info/formation-latex-ul/source/formation-latex-ul.tex create mode 100644 info/formation-latex-ul/source/francais.bst create mode 100644 info/formation-latex-ul/source/images/Meerkat_stare-diapos.jpg create mode 100644 info/formation-latex-ul/source/images/Meerkat_stare.jpg create mode 100644 info/formation-latex-ul/source/images/bibtex-texmaker.png create mode 100644 info/formation-latex-ul/source/images/bibtex-texshop.png create mode 100644 info/formation-latex-ul/source/images/by-sa.pdf create mode 100644 info/formation-latex-ul/source/images/by.pdf create mode 100644 info/formation-latex-ul/source/images/exemple-bibliographie-cropped-1.pdf create mode 100644 info/formation-latex-ul/source/images/exemple-bibliographie-cropped-2.pdf create mode 100644 info/formation-latex-ul/source/images/exemple-bibliographie-cropped-3.pdf create mode 100644 info/formation-latex-ul/source/images/exercice_commandes-solution.pdf create mode 100644 info/formation-latex-ul/source/images/formation-latex-ul.png create mode 100644 info/formation-latex-ul/source/images/knuth.jpg create mode 100644 info/formation-latex-ul/source/images/ponctuation.pdf create mode 100644 info/formation-latex-ul/source/images/sa.pdf create mode 100644 info/formation-latex-ul/source/images/section-non-num.pdf create mode 100644 info/formation-latex-ul/source/images/section-num.pdf create mode 100644 info/formation-latex-ul/source/images/tdm-dans-pdf.pdf create mode 100644 info/formation-latex-ul/source/images/ul_p.pdf create mode 100644 info/formation-latex-ul/source/images/xyz-emph.pdf create mode 100644 info/formation-latex-ul/source/images/xyz-math.pdf create mode 100644 info/formation-latex-ul/source/introduction.tex create mode 100644 info/formation-latex-ul/source/listings/exemple-bibliographie.bib create mode 100644 info/formation-latex-ul/source/listings/exemple-bibliographie.tex create mode 100644 info/formation-latex-ul/source/mathematiques-diapos.tex create mode 100644 info/formation-latex-ul/source/mathematiques.tex create mode 100644 info/formation-latex-ul/source/notices-diapos.tex create mode 100644 info/formation-latex-ul/source/notices.tex create mode 100644 info/formation-latex-ul/source/organisation-diapos.tex create mode 100644 info/formation-latex-ul/source/organisation.tex create mode 100644 info/formation-latex-ul/source/prerequis-diapos.tex create mode 100644 info/formation-latex-ul/source/presentation-diapos.tex create mode 100644 info/formation-latex-ul/source/presentation.tex create mode 100644 info/formation-latex-ul/source/solutions.tex create mode 100644 info/formation-latex-ul/source/suite-diapos.tex create mode 100644 info/formation-latex-ul/source/sweave-diapos.tex create mode 100644 info/formation-latex-ul/source/tableaux+figures.tex create mode 100644 info/formation-latex-ul/source/tableaux-diapos.tex create mode 100644 info/formation-latex-ul/source/trucs+astuces.tex create mode 100644 info/formation-latex-ul/source/ulthese-diapos.tex create mode 100644 info/formation-latex-ul/source/ulthese.tex (limited to 'info/formation-latex-ul') diff --git a/info/formation-latex-ul/CONTRIBUTING.md b/info/formation-latex-ul/CONTRIBUTING.md new file mode 100644 index 0000000000..65baca10ac --- /dev/null +++ b/info/formation-latex-ul/CONTRIBUTING.md @@ -0,0 +1,47 @@ + + +# Collaborer au projet *Rédaction avec LaTeX* + +Le projet [Rédaction avec LaTeX](https://vigou3.gitlab.io/formation-latex-ul) est hébergé dans un [dépôt public GitLab](https://gitlab.com/vigou3/formation-latex-ul). + +La branche `master` du dépôt est réservée en écriture au gestionnaire du projet. + +Pour collaborer au projet, vous devez publier vos modifications dans une nouvelle branche et effectuer une demande de tirage (*pull request*) vers la branche `master`. La procédure à suivre à partir d'une interface en invite de commande (Git Bash sous Windows ou Terminal sous macOS) est la suivante. + +1. Si vous travaillez sur le code source pour la première fois, déplacez-vous avec la commande `cd` dans le répertoire dans lequel vous voulez enregistrer le code source du projet (le répertoire `formation-latex-ul` sera créé automatiquement), clonez le dépôt et déplacez-vous ensuite dans le dossier du code source. + +``` +git clone https://gitlab.com/vigou3/formation-latex-ul.git +cd formation-latex-ul +``` + +**OU** + +1. Si vous avez déjà cloné le dépôt dans le passé et que vous voulez reprendre le travail sur le code source, déplacez-vous avec la commande `cd` dans le répertoire du code source, puis mettez à jour votre copie locale du dépôt depuis la branche `master`. + +``` +git checkout master +git pull +``` + +2. Créez une branche (locale) pour vos modifications. + +``` +git checkout -b +``` + +3. Effectuez maintenant vos modifications. Il y a un fichier par chapitre et son nom, avec une extension `.tex`, a un lien évident avec le titre du chapitre. N'effectuez des modifications que dans un seul fichier à la fois! Lorsque les modifications sont terminées, publiez le fichier modifié dans votre dépôt local avec un commentaire utile, mais bref, sur la nature des modifications. + +``` +git status +git add +git commit -m "" +``` + +4. Créez un compte dans GitLab si vous n'en avez pas déjà un. Publiez ensuite la branche avec les modifications dans le dépôt GitLab. + +``` +git push -u origin +``` + +5. Finalement, [connectez-vous](https://gitlab.com/users/sign_in) à l'interface graphique de GitLab et effectuez une demande de fusion (*Merge Request*) vers la branche `master` en sélectionnant l'option correspondante dans la barre latérale. diff --git a/info/formation-latex-ul/LICENSE b/info/formation-latex-ul/LICENSE new file mode 100644 index 0000000000..2e72ca1121 --- /dev/null +++ b/info/formation-latex-ul/LICENSE @@ -0,0 +1,427 @@ +Attribution-ShareAlike 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More_considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution-ShareAlike 4.0 International Public +License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution-ShareAlike 4.0 International Public License ("Public +License"). To the extent this Public License may be interpreted as a +contract, You are granted the Licensed Rights in consideration of Your +acceptance of these terms and conditions, and the Licensor grants You +such rights in consideration of benefits the Licensor receives from +making the Licensed Material available under these terms and +conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. BY-SA Compatible License means a license listed at + creativecommons.org/compatiblelicenses, approved by Creative + Commons as essentially the equivalent of this Public License. + + d. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + e. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + f. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + g. License Elements means the license attributes listed in the name + of a Creative Commons Public License. The License Elements of this + Public License are Attribution and ShareAlike. + + h. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + i. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + j. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + k. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + l. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + m. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part; and + + b. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. Additional offer from the Licensor -- Adapted Material. + Every recipient of Adapted Material from You + automatically receives an offer from the Licensor to + exercise the Licensed Rights in the Adapted Material + under the conditions of the Adapter's License You apply. + + c. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + b. ShareAlike. + + In addition to the conditions in Section 3(a), if You Share + Adapted Material You produce, the following conditions also apply. + + 1. The Adapter's License You apply must be a Creative Commons + license with the same License Elements, this version or + later, or a BY-SA Compatible License. + + 2. You must include the text of, or the URI or hyperlink to, the + Adapter's License You apply. You may satisfy this condition + in any reasonable manner based on the medium, means, and + context in which You Share Adapted Material. + + 3. You may not offer or impose any additional or different terms + or conditions on, or apply any Effective Technological + Measures to, Adapted Material that restrict exercise of the + rights granted under the Adapter's License You apply. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material, + + including for purposes of Section 3(b); and + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + + +======================================================================= + +Creative Commons is not a party to its public +licenses. Notwithstanding, Creative Commons may elect to apply one of +its public licenses to material it publishes and in those instances +will be considered the “Licensor.” The text of the Creative Commons +public licenses is dedicated to the public domain under the CC0 Public +Domain Dedication. Except for the limited purpose of indicating that +material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the +public licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/info/formation-latex-ul/NEWS b/info/formation-latex-ul/NEWS new file mode 100644 index 0000000000..f9e65f47b8 --- /dev/null +++ b/info/formation-latex-ul/NEWS @@ -0,0 +1,112 @@ +=== +=== Rédaction avec LaTeX (paquetage formation-latex-ul) +=== + +# 2019.03 + +## Document de référence + +- Ajout de la liste des tableaux et de la liste des figures dans les + pages liminaires. Celles-ci ainsi que la table des matières + apparaissent dans la table des matières afin de faciliter l'accès + par la table des matières logique du document PDF. +- L'introduction a été révisée et bonifiée pour mieux présenter les + fonctionnalités interactives du document, expliquer l'utilisation + des couleurs et présenter la signification de chacun des blocs + signalétiques. +- Ajout de références vers *Paul à la campagne* (Rabagliati, 1999) et + le film *The Post* (2017) dans l'introduction du chapitre 1 pour de + bonnes illustrations du processus de création d'un document. +- Sections 1.2 et 1.3 inversées. +- Correction de la ligature des tirets dans le premier paragraphe de + la section 10.2. +- Nouvelle façon de présenter les liens vers des vidéos à l'aide d'un + bloc signalétique. +- Utilisation de Fira Sans comme police sans empattements. Il est plus + simple de se procurer cette police libre que Myriad Pro. En plus, + elle convient mieux à la police Lucida du texte principal. +- Nouvelle image de couverture. +- Vérification de la validé de tous les hyperliens du document. + +## Diapositives + +- Diapositives complètement révisées en vue d'une formation de 120 + minutes plutôt que 180. +- Diapositives dans le thème Metropolis et en format 16 x 9. +- Nouvelles diapositives sur les tableaux. +- Nouvelles diapositives sur la programmation lettrée avec Sweave. +- Exercice sur les mathématiques. +- Nouvelle image de couverture. + +## Général + +- L'historique des versions se trouve maintenant dans le fichier + `NEWS`. +- Des instructions pour collaborer à l'amélioration du paquetage se + trouvent maintenant dans le fichier `CONTRIBUTING.md`. + + +# 2016.11-3 + +- Liens vers le code source modifiés suite au déplacement du projet + vers [Github](https://github.com/vigou3/formation-latex-ul). +- Correction du numéro de version dans les documents PDF. + + +# 2016.11-2 + +- Incorporation des sources du document principal et des diapositives + dans la distribution tel que requis par TeX Live. +- Retouches au fichier `README`. + + +# 2016.11-1 + +- Mise à jour des URL vers les vidéos dans YouTube. Celles-ci ont été + refaites avec le nouveau visuel de couverture. +- Ajout d'un exercice au chapitre 1 tiré des pré-requis de la + formation, soit composer un document simple de type «Hello, World!». + Liens vers les vidéos explicatives dans YouTube. + + +# 2016.11 + +- Importante refonte de la documentation en un document unique. Les + diapositives ne sont plus qu'un support visuel pour la formation qui + couvre grosso modo les quatre premiers chapitre de l'ouvrage de + référence. +- Nouveau visuel des couvertures. Trop cuuuute. +- Nouveau mode de numérotation des versions. + + +# 2016-04-04 + +- Fichier `exercice_demo.tex`: utilisation du style de bibliographie + `plainnat` puisque le paquetage **francais-bst** ne fait pas partie de la + distribution standard de TeX Live 2015. +- Fichiers d'exercices: utilisation systématique des options `og` et + `fg` dans `\frenchbsetup`. + + +# 2016-03-24 + +- Partie I: révision des diapositives pour baser davantage la + présentation sur des exemples de code source. +- Partie I: ajout d'images dans les diapos. +- Partie I: correction du fichier `exemple_demo.tex` qui ne compilait + pas correctement. +- Partie II: ajout d'une introduction au chapitre 7 (tous les autres + en avaient une) ainsi qu'une nouvelle section 7.1 sur le contrôle + des sauts de ligne, sauts de page et coupures de mots. +- Partie II: corrections mineures à l'index. +- Fichiers d'exercices et gabarits: langue déclarée comme `french` + plutôt que `francais` et dans `\documentclass` plutôt que dans + `\usepackage`. +- Fichiers d'exercices et gabarits: chargement du paquetage icomma + déplacé vers la fin de la liste, plus particulièrement après + fontspec. + + +# 2015-03-18 + +- Première publication sur CTAN. diff --git a/info/formation-latex-ul/README.md b/info/formation-latex-ul/README.md new file mode 100644 index 0000000000..727763684d --- /dev/null +++ b/info/formation-latex-ul/README.md @@ -0,0 +1,71 @@ +# formation-latex-ul + +Package **formation-latex-ul** contains the supporting documentation, +slides, exercise files and templates for an introductory LaTeX course +(in French) prepared for Université Laval, Québec, Canada. + +## License + +Creative Commons Attribution-ShareAlike 4.0 International. + +## Version + +2019.03 + +## Author + +Vincent Goulet + +> The rest of this file is in French for the target audience. + +# formation-latex-ul + +Le paquetage **formation-latex-ul** propose une formation à +l'utilisation de LaTeX développée à l'origine pour la Bibliothèque de +l'[Université Laval](https://www.ulaval.ca). + +La formation est formée des éléments suivants: + +1. *Rédaction avec LaTeX*, un document de référence de près de + 200 pages; voir le fichier `doc/formation-latex-ul.pdf`; + +2. des diapositives pour une formation en classe couvrant grosso modo + les quatre premiers chapitres du document de référence; voir le + fichier `doc/formation-latex-ul-diapos.pdf`; + +3. les fichiers nécessaires pour compléter certains exercices, ainsi + qu'un gabarit pour composer les solutions des autres exercices; voir + le dossier `doc/`. + +Les quatre premiers chapitres du document de référence couverts par +les diapositives traitent des concepts de base pour un nouvel +utilisateur de LaTeX: processus d'édition, compilation, visualisation; +séparation du contenu et de l'apparence du texte; mise en forme du +texte; séparation du document en parties; rudiments du mode +mathématique. + +Les six autres chapitres du document de référence visent à rendre +l'utilisateur de LaTeX débutant ou intermédiaire autonome dans la +rédaction de documents relativement complexes comportant des tableaux, +des figures, des équations mathématiques élaborées, une bibliographie, +etc. + +## Composition des documents + +Le dossier `source/` contient tous les fichiers nécessaires pour +composer le document principal et les diapositives avec XeLaTeX. La +compilation du document requiert les polices de caractères suivantes: + +- [Lucida Bright OT, Lucida Math OT et Lucida Mono DK](https://tug.org/store/lucida/). + Ces polices de très grande qualité sont payantes. La Bibliothèque de + l'Université Laval détient une licence d'utilisation de cette + police. Les étudiants et le personnel de l'Université peuvent s'en + procurer une copie gratuitement en écrivant à + [mailto:lucida@bibl.ulaval.ca]. +- [Fira Sans](https://www.fontsquirrel.com/fonts/fira-sans) (les + versions OpenType de Mozilla) en graisses *Book*, *Semi Bold*, *Book + Italic* et *Semi Bold Italic*. +- [Font Awesome](https://fontawesome.com/). Cette police fournit une + multitude d'icônes et de symboles. Télécharger la plus récente + version de la distribution et installer la police + `fontawesome-webfont.ttf` du dossier `fonts`. diff --git a/info/formation-latex-ul/doc/b-a-ba-math.tex b/info/formation-latex-ul/doc/b-a-ba-math.tex new file mode 100644 index 0000000000..25e0f930ce --- /dev/null +++ b/info/formation-latex-ul/doc/b-a-ba-math.tex @@ -0,0 +1,57 @@ +\chapter{B.a.-ba du mode mathématique} + +De manière générale, soit $x$ un nombre (entier pour le moment) dans +la base de numération $b$ composé de $m$ chiffres ou symboles, c'est-à-dire +\begin{equation*} + x = x_{m-1}x_{m-2} \cdots x_1x_0, +\end{equation*} +où $0 \leq x_i \leq b - 1$. On a donc +\begin{equation} + \label{eq:ordinateurs:def_base} + x = \sum_{i = 0}^{m - 1} x_i b^i. +\end{equation} + +Lorsque le contexte ne permet pas de déterminer avec certitude la base +d'un nombre, celle-ci est identifiée en indice du nombre par un nombre +décimal. Par exemple, $10011_2$ est le nombre binaire $10011$. + +Soit le nombre décimal $348$. Selon la notation ci-dessus, on a $x_0 = +8$, $x_1 = 4$, $x_2 = 3$ et $b = 10$. En effet, et en conformité avec +\eqref{eq:ordinateurs:def_base}, +\begin{displaymath} + 348 = 3 \times 10^2 + 4 \times 10^1 + 8 \times 10^0. +\end{displaymath} +Ce nombre a les représentations suivantes dans d'autres bases. En binaire: +\begin{align*} + 101011100_{2} + &= 1 \times 2^8 + 0 \times 2^7 + 1 \times 2^6 \\ + &\phantom{=} + 0 \times 2^5 + 1 \times 2^4 + 1 \times 2^3 \\ + &\phantom{=} + 1 \times 2^2 + 0 \times 2^1 + 0 \times 2^0. +\end{align*} +En octal: +\begin{equation*} + 534_{8} = 5 \times 8^2 + 3 \times 8^1 + 4 \times 8^0. +\end{equation*} +En hexadécimal: +\begin{equation*} + 15\mathrm{C}_{16} = 1 \times 16^2 + 5 \times 16^1 + 12 \times 16^0. +\end{equation*} +Des représentations ci-dessus, l'hexadécimale est la plus compacte: +elle permet de représenter avec un seul symbole un nombre binaire +comptant jusqu'à quatre chiffres. C'est, entre autres, pourquoi +c'est une représentation populaire en informatique.% + +Dans un ordinateur réel (par opposition à théorique), l'espace +disponible pour stocker un nombre est fini, c'est-à-dire que $m < +\infty$. Le plus grand nombre que l'on peut représenter avec $m$ +chiffres ou symboles en base $b$ est +\begin{align*} + x_{\text{max}} + &= \sum_{i = 0}^{m - 1} (b - 1) b^i \\ + &= (b - 1) \sum_{i = 0}^{m - 1} b^i \\ + &= (b - 1) + \left( + \frac{b^m - 1}{b - 1} + \right) \\ + &= b^m - 1. +\end{align*} diff --git a/info/formation-latex-ul/doc/console-screenshot.pdf b/info/formation-latex-ul/doc/console-screenshot.pdf new file mode 100644 index 0000000000..12af29c73a Binary files /dev/null and b/info/formation-latex-ul/doc/console-screenshot.pdf differ diff --git a/info/formation-latex-ul/doc/emacs.tex b/info/formation-latex-ul/doc/emacs.tex new file mode 100644 index 0000000000..68e1c2331e --- /dev/null +++ b/info/formation-latex-ul/doc/emacs.tex @@ -0,0 +1,49 @@ +\chapter{GNU Emacs} +\label{chap:emacs} + +Emacs est l'Éditeur de texte des éditeurs de texte. À l'origine un +éditeur pour les programmeurs (avec des modes spéciaux pour une +multitude de langages différents), Emacs est devenu au fil du temps un +environnement logiciel en soi dans lequel on peut réaliser une foule +de tâches différentes: rédiger des documents {\LaTeX}, interagir avec R, +SAS ou un logiciel de base de données, consulter son courrier +électronique, gérer son calendrier ou même jouer à Tetris! + +Cette annexe passe en revue les quelques commandes essentielles à +connaître pour commencer à travailler avec GNU Emacs et le mode ESS. + +\section{Mise en contexte} +\label{sec:emacs:contexte} + +Emacs est le logiciel étendard du projet GNU («\emph{GNU is not + Unix}»), dont le principal commanditaire est la \emph{Free Software + Foundation} (FSF) à l'origine de tout le mouvement du logiciel +libre. +\begin{itemize} +\item Richard M.\ Stallman, président de la FSF et grand apôtre du + libre, a écrit la première version de Emacs et il continue à ce jour + à contribuer au projet. +\item Les origines de Emacs remontent au début des années 1980, une + époque où les interfaces graphiques n'existaient pas, le parc + informatique était beaucoup plus hétérogène qu'aujourd'hui (les + claviers n'étaient pas les mêmes d'une marque d'ordinateur à une + autre) et les modes de communication entre les ordinateurs + demeuraient rudimentaires. +\item L'âge vénérable de Emacs transparaît à plusieurs endroits, + notamment dans la terminologie inhabituelle, les raccourcis clavier + non conformes aux standards d'aujourd'hui ou la manipulation des + fenêtres qui ne se fait pas avec une souris. +\end{itemize} + +Emacs s'adapte à différentes tâches par l'entremise de \emph{modes} +qui modifient son comportement ou lui ajoutent des fonctionnalités. +L'un de ces modes est ESS (\emph{Emacs Speaks Statistics}). +\begin{itemize} +\item ESS permet d'interagir avec des logiciels statistiques (en + particulier R, S+ et SAS) directement depuis Emacs. +\item Quelques-uns des développeurs de ESS sont aussi des développeurs + de R, d'où la grande compatibilité entre les deux logiciels. +\item Lorsque ESS est installé, le mode est activé automatiquement en + ouvrant dans Emacs un fichier dont le nom se termine par l'extension + \texttt{.R}. +\end{itemize} diff --git a/info/formation-latex-ul/doc/exercice_classe+paquetages.tex b/info/formation-latex-ul/doc/exercice_classe+paquetages.tex new file mode 100644 index 0000000000..9a34f0f011 --- /dev/null +++ b/info/formation-latex-ul/doc/exercice_classe+paquetages.tex @@ -0,0 +1,31 @@ +\documentclass[10pt,french]{article} + \usepackage{babel} + %% Activer les lignes appropriées selon le moteur utilisé + \usepackage[utf8]{inputenc} % LaTeX + \usepackage[T1]{fontenc} % LaTeX + % \usepackage{fontspec} % XeLaTeX + % \usepackage{icomma} % charger vers la fin + +\begin{document} + +La longueur des lignes en {\LaTeX} est ajustée automatiquement en +fonction de la taille de la police de manière à ce que le nombre de +caractères par ligne demeure à peu près constant. Cela a pour but +d'améliorer la lisibilité: lorsqu'une ligne de texte est trop longue, +notre œil a plus de difficulté à suivre celle-ci de gauche à droite. + +En passant à une classe de document recto verso, vous remarquerez que +les marges gauche et droite ne sont pas identiques. C'est afin de +tenir compte de la marge de reliure. + +Le paquetage \textbf{babel} fournit les commandes \verb=\ier=, +\verb=\iere=, \verb=\ieme= pour écrire «premier», «première», +«deuxième» en chiffres: 1{\ier}, 1{\iere}, 36{\ieme}. + +En typographie française, on doit utiliser la virgule comme séparateur +décimal et l'espace fine comme séparateur des milliers. +\begin{displaymath} + y = 1,2x + 5, \quad x = 0, 1, \dots, 10 000. +\end{displaymath} + +\end{document} diff --git a/info/formation-latex-ul/doc/exercice_commandes.tex b/info/formation-latex-ul/doc/exercice_commandes.tex new file mode 100644 index 0000000000..7ff973ecc0 --- /dev/null +++ b/info/formation-latex-ul/doc/exercice_commandes.tex @@ -0,0 +1,24 @@ +\documentclass[12pt,french]{article} + \usepackage{babel} + %% Activer les lignes appropriées selon le moteur utilisé + \usepackage[utf8]{inputenc} % LaTeX + \usepackage[T1]{fontenc} % LaTeX + % \usepackage{fontspec} % XeLaTeX + +\begin{document} + +Les commandes \LaTeX débutent par le symbole \verb=\= et se +terminent par le premier caractère autre qu'une lettre, y compris +l'espace. Cela a pour conséquence qu'une espace immédiatement après +une commande sans argument sera \emph{avalée} par la commande. + +La portée d'une commande est \bfseries limitée à la zone entre accolades. + +\begin{itemize} +\item L'environnement \texttt{enumerate} permet de créer une liste + numérotée. +\item Les environnements de listes sont parmi les plus utilisés en + \LaTeX. +\end{itemize} + +\end{document} diff --git a/info/formation-latex-ul/doc/exercice_complet.tex b/info/formation-latex-ul/doc/exercice_complet.tex new file mode 100644 index 0000000000..09b0c9a75e --- /dev/null +++ b/info/formation-latex-ul/doc/exercice_complet.tex @@ -0,0 +1,143 @@ +\documentclass[11pt,article,french]{memoir} + \usepackage{babel} + %% Activer les lignes appropriées selon le moteur utilisé + \usepackage[utf8]{inputenc} % LaTeX + \usepackage[T1]{fontenc} % LaTeX + % \usepackage{fontspec} % XeLaTeX + \usepackage[colorlinks]{hyperref} + + \frenchbsetup{og=«,fg=»} % caractères « et » sont les guillemets + % \frenchbsetup{ItemLabeli=} + +\begin{document} + +\chapter{Présentation du langage R} +\label{chap:rpresentation} + +\section{Bref historique} +\label{sec:rpresentation:historique} + +À l'origine fut le S, un langage pour «programmer avec des données» +développé chez Bell Laboratories à partir du milieu des années 1970 +par une équipe de chercheurs menée par John~M.\ Chambers. Au fil du +temps, le S a connu quatre principales versions communément +identifiées par la couleur du livre dans lequel elles étaient +présentées: % +version «originale», % +version 2, % +version 3 et % +version 4; % +voir aussi et pour plus de détails. + +Dès la fin des années 1980 et pendant près de vingt ans, le S a +principalement été popularisé par une mise en {\oe}uvre commerciale +nommée S-PLUS. En 2008, Lucent Technologies a vendu le langage S à +Insightful Corporation, ce qui a effectivement stoppé le développement +du langage par ses auteurs originaux. Aujourd'hui, le S est +commercialisé de manière relativement confidentielle sous le nom +Spotfire S$+$ par TIBCO Software. + +Ce qui a fortement contribué à la perte d'influence de S-PLUS, c'est +une nouvelle mise en {\oe}uvre du langage développée au milieu des +années 1990. Inspirés à la fois par le S et par Scheme (un dérivé du +Lisp), Ross Ihaka et Robert Gentleman proposent un langage pour +l'analyse de données et les graphiques qu'ils nomment R. À la +suggestion de Martin Maechler de l'ETH de Zurich, les auteurs décident +d'intégrer leur nouveau langage au projet GNU\footnote{% + \url{http://www.gnu.org}}, % +faisant de R un logiciel libre. + +Ainsi disponible gratuitement et ouvert aux contributions de tous, +R gagne rapidement en popularité là même où S-PLUS avait acquis ses +lettres de noblesse, soit dans les milieux académiques. De simple +dérivé «\emph{not unlike S}», R devient un concurrent sérieux à +S-PLUS, puis le surpasse lorsque les efforts de développement se +rangent massivement derrière le projet libre. D'ailleurs John Chambers +place aujourd'hui ses efforts de réflexion et de développement dans le +projet R. + + +\section{Description sommaire de R} +\label{sec:rpresentation:description} + +R est un environnement intégré de manipulation de données, de calcul +et de préparation de graphiques. Toutefois, ce n'est pas seulement un +«autre» environnement statistique (comme SPSS ou SAS, par exemple), +mais aussi un langage de programmation complet et autonome. + +Tel que mentionné précédemment, le R est un langage principalement +inspiré du S et de Scheme. Le S était à son tour inspiré de plusieurs +langages, dont l'APL (autrefois un langage très prisé par les +actuaires) et le Lisp. Comme tous ces langages, le R est +\emph{interprété}, c'est-à-dire qu'il requiert un autre programme --- +l'\emph{interprète} --- pour que ses commandes soient exécutées. Par +opposition, les programmes de langages \emph{compilés}, comme le C ou +le C++, sont d'abord convertis en code machine par le compilateur puis +directement exécutés par l'ordinateur. + +Cela signifie donc que lorsque l'on programme en R, il n'est pas +possible de plaider l'attente de la fin de la phase de compilation +pour perdre son temps au travail. Désolé! + +Le programme que l'on lance lorsque l'on exécute R est en fait +l'interprète. Celui-ci attend que l'on lui soumette des commandes dans +le langage R, commandes qu'il exécutera immédiatement, une à une et +en séquence. + +Par analogie, Excel est certes un logiciel de manipulation de données, +de mise en forme et de préparation de graphiques, mais c'est aussi au +sens large un langage de programmation interprété. On utilise le +langage de programmation lorsque l'on entre des commandes dans une +cellule d'une feuille de calcul. L'interprète exécute les commandes et +affiche les résultats dans la cellule. + +Le R est un langage particulièrement puissant pour les applications +mathématiques et statistiques (et donc actuarielles) puisque +précisément développé dans ce but. Parmi ses caractéristiques +particulièrement intéressantes, on note: +\begin{itemize} +\item langage basé sur la notion de vecteur, ce qui simplifie les + calculs mathématiques et réduit considérablement le recours aux + structures itératives (boucles \texttt{for}, \texttt{while}, etc.); +\item pas de typage ni de déclaration obligatoire des variables; +\item programmes courts, en général quelques lignes de code seulement; +\item temps de développement très court. +\end{itemize} + + + +\section{Interfaces} +\label{sec:rpresentation:interfaces} + +R est d'abord et avant tout une application n'offrant qu'une invite de +commande du type de celle présentée à la +\autoref{fig:rpresentation:console}. En soi, cela n'est pas si +différent d'un tableur tel que Excel: la zone d'entrée de texte dans +une cellule n'est rien d'autre qu'une invite de commande\footnote{% + Merci à Markus Gesmann pour cette observation.}, par ailleurs aux +capacités d'édition plutôt réduites. + +\begin{figure} + \centering + \fbox{image} + \caption{Fenêtre de la console sous macOS au démarrage de R} + \label{fig:rpresentation:console} +\end{figure} + +\begin{itemize} +\item Sous Unix et Linux, R n'est accessible que depuis la ligne de + commande du système d'exploitation (terminal). Aucune interface + graphique n'est offerte avec la distribution de base de R. +\item Sous Windows, une interface graphique plutôt rudimentaire est + disponible. Elle facilite certaines opérations tel que + l'installation de packages externes, mais elle offre autrement peu + de fonctionnalités additionnelles pour l'édition de code R. +\item L'interface graphique de R sous macOS est la plus élaborée. + Outre la console présentée à la + \autoref{fig:rpresentation:console}, l'application \texttt{R.app} + comporte de nombreuses fonctionnalités, dont un éditeur de code + assez complet. +\end{itemize} + + +\end{document} diff --git a/info/formation-latex-ul/doc/exercice_demo.tex b/info/formation-latex-ul/doc/exercice_demo.tex new file mode 100644 index 0000000000..16f36674e6 --- /dev/null +++ b/info/formation-latex-ul/doc/exercice_demo.tex @@ -0,0 +1,1319 @@ +\documentclass[letterpaper,11pt,english,french]{memoir} + \usepackage[utf8]{inputenc} + \usepackage{natbib,url} + \usepackage{babel} + \usepackage[autolanguage]{numprint} + \usepackage{amsmath,amsthm,amsfonts} + \usepackage{icomma} + \usepackage{fancyvrb} + \usepackage{soul} + + %% Police de caractères + \usepackage{mathpazo} % texte et mathématiques en Palatino + + %% Couleurs + \usepackage{xcolor} + \definecolor{comments}{rgb}{0.7,0,0} + \definecolor{shadecolor}{gray}{0} + \definecolor{link}{rgb}{0,0.4,0.6} % ~RoyalBlue de dvips + \definecolor{url}{rgb}{0.6,0,0} % rouge-brun + \definecolor{citation}{rgb}{0,0.5,0} % vert foncé + + %% Hyperliens + \usepackage{hyperref} + \hypersetup{colorlinks, linktocpage, + urlcolor=url, linkcolor=link, citecolor=citation, + bookmarksopen, bookmarksnumbered, bookmarksdepth=subsubsection, + pdfauthor={Vincent Goulet}} + \renewcommand{\figureautorefname}{figure} + \renewcommand{\tableautorefname}{tableau} + \newcommand{\subtableautorefname}{tableau} + \newcommand{\exempleautorefname}{exemple} + \newcommand{\algorithmeautorefname}{algorithme} + + \frenchbsetup{% + CompactItemize=false, % ne pas compacter les listes + ThinSpaceInFrenchNumbers=true, % espace fine dans les nombres + og=«, fg=» % guillemets français + } + + %% Environnements d'exemples et al. + \theoremstyle{plain} + \newtheorem{algorithme}{Algorithme}[chapter] + \newtheorem{thm}{Théorème}[chapter] + + \theoremstyle{definition} + \newtheorem{exemple}{Exemple}[chapter] + \newtheorem{definition}{Définition}[chapter] + \newtheorem*{astuce}{Astuce} + + \theoremstyle{remark} + \newtheorem*{remarque}{Remarque} + \newenvironment{rem}{\begin{remarque} \mbox{}}{\end{remarque}} + + %% Nouveaux environnements pour le code informatique R + \DefineVerbatimEnvironment{Sinput}{Verbatim}{fontshape=sl} + \DefineVerbatimEnvironment{Soutput}{Verbatim}{} + \DefineVerbatimEnvironment{Scode}{Verbatim}{fontshape=sl} + \newenvironment{Schunk}{}{} + + %% Nouvelles commandes + \newcommand{\code}[1]{\texttt{#1}} + \newcommand{\ieee}[3]{\fbox{$#1$}\hspace{2pt}\fbox{$#2$}\hspace{2pt}\fbox{$#3$}} + \newcommand{\fl}{\mathrm{fl}} + + %% Numéroter les sous-sections + \maxsecnumdepth{subsection} + + %% Sous-tableaux et figures + \newsubfloat{table} + + %% Style de la bibliographie. + \bibliographystyle{plainnat} + + \title{Exemple de document élaboré} + \author{Vincent Goulet} + +\begin{document} + +\frontmatter % pages liminaires + +\maketitle % production de la page titre + +\tableofcontents % production de la TdM +\cleardoublepage + +\mainmatter % corps du document + +\chapter{Arithmétique des ordinateurs} +\label{chap:ordinateurs} + +\section{Les ordinateurs ne savent pas compter} +\label{sec:ordinateurs:introduction} + +Le type de bogue le plus fréquemment rapporté dans les forums de +discussion de R a trait au fait que le logiciel ne retourne +pas le bon résultat lors d'opérations arithmétiques simples. + +On devine que les créateurs de R n'ont pas négligé une fonctionnalité +aussi fondamentale pour un langage mathématique que le calcul +arithmétique. Les supposées erreurs ci-dessus relèvent toutes de la +représentation interne des nombres dans un ordinateur et d'erreurs +d'arrondi inhérentes aux opérations arithmétiques avec ces nombres. En +effet, un des plus célèbres principes de programmation proposés par +\cite{Kernighan:style:1978} est: +\begin{center} + \label{programming_principle} + $10,0$ fois $0,1$ ne donne jamais vraiment $1,0$. +\end{center} +D'ailleurs, les auteurs des faux rapports de bogues dans +\texttt{r-help} sont invariablement renvoyés à l'\href{http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-doesn_0027t-R-think-these-numbers-are-equal_003f}{entrée 7.31} de la +foire aux questions\footnote{% + \url{http://cran.r-project.org/doc/FAQ/R-FAQ.html}} % +de R. + +Pour quiconque travaille régulièrement avec un ordinateur pour faire +du calcul scientifique, connaitre globalement le fonctionnement +interne d'un ordinateur peut s'avérer précieux pour les raisons +suivantes, entre autres: +\begin{itemize} +\item éviter les erreurs d'arrondi et de troncature; +\item éviter les dépassements et soupassements de capacité + (\emph{overflow} et \emph{underflow}); +\item optimiser le code informatique. +\end{itemize} + +Ce chapitre se penche sur les grands principes de l'arithmétique des +ordinateurs. En fait, les ordinateurs ne savent pas faire +d'arithmétique à proprement parler. Ils ne connaissent que deux états: +ouvert (1) et fermé (0). Nous en profiterons donc d'abord pour réviser +la conversion des nombres décimaux vers, et de, n'importe quelle base. +Après avoir, à la \autoref{sec:ordinateurs:unites}, introduit les +principales unités de mesure en informatique, nous expliquerons la +représentation interne des nombres dans un ordinateur en nous +concentrant sur la double précision. Nous pourrons ainsi justifier que +les ordinateurs ne peuvent représenter qu'un sous-ensemble des nombres +réels, d'où les erreurs d'arrondi et de troncature. La +\autoref{sec:ordinateurs:arithmetique} explique comment ces erreurs +surviennent. On y donne également quelques pistes pour éviter ou pour +diminuer l'impact de ces erreurs. Enfin, le chapitre se clôt par un +survol d'un sujet quelque peu périphérique: la représentation interne +des caractères. + + +\section{Conversion de base} +\label{sec:ordinateurs:conversion} + +La \emph{base}, dans un système de numération, est le nombre de +symboles (habituellement les chiffres) qui pourront servir à exprimer +des nombres. L'humain s'est habitué à compter en base $10$, le système +\emph{décimal}, où les symboles sont $0, 1, \dots, 9$. De nos jours, +la grande majorité des ordinateurs travaillent toutefois en base $2$, le +système \emph{binaire}. Les autres système d'usage courant, +principalement en informatique, sont l'\emph{octal} (base $8$) et +l'\emph{hexadécimal} (base $16$). Dans ce dernier système, les symboles +utilisés pour les nombres $10$--$15$ sont généralement les lettres A--F. +(C'est pourquoi l'on retrouve ces six lettres sur le pavé des +calculatrices scientifiques). + +Cette section étudie la conversion des nombres entre la base $10$ et une +autre base quelconque. + +\subsection{Notation et définitions} +\label{sec:ordinateurs:conversion:notation} + +De manière générale, soit $x$ un nombre (entier pour le moment) dans +la base de numération $b$ composé de $m$ chiffres ou symboles, c'est-à-dire +\begin{equation*} + x = x_{m-1}x_{m-2} \cdots x_1x_0, +\end{equation*} +où $0 \leq x_i \leq b - 1$. On a donc +\begin{equation} + \label{eq:ordinateurs:def_base} + x = \sum_{i = 0}^{m - 1} x_i b^i. +\end{equation} + +Lorsque le contexte ne permet pas de déterminer avec certitude la base +d'un nombre, celle-ci est identifiée en indice du nombre par un nombre +décimal. Par exemple, $10011_2$ est le nombre binaire $10011$. + +\begin{exemple} + Soit le nombre décimal $348$. Selon la notation ci-dessus, on a $x_0 = + 8$, $x_1 = 4$, $x_2 = 3$ et $b = 10$. En effet, + \begin{displaymath} + 348 = 3 \times 10^2 + 4 \times 10^1 + 8 \times 10^0. + \end{displaymath} + Ce nombre a les représentations suivantes dans d'autres bases. En binaire: + \begin{align*} + 101011100_{2} + &= 1 \times 2^8 + 0 \times 2^7 + 1 \times 2^6 \\ + &\phantom{=} + 0 \times 2^5 + 1 \times 2^4 + 1 \times 2^3 \\ + &\phantom{=} + 1 \times 2^2 + 0 \times 2^1 + 0 \times 2^0. + \end{align*} + En octal: + \begin{equation*} + 534_{8} = 5 \times 8^2 + 3 \times 8^1 + 4 \times 8^0. + \end{equation*} + En hexadécimal: + \begin{equation*} + 15\mathrm{C}_{16} = 1 \times 16^2 + 5 \times 16^1 + 12 \times 16^0. + \end{equation*} + Des représentations ci-dessus, l'hexadécimale est la plus compacte: + elle permet de représenter avec un seul symbole un nombre binaire + comptant jusqu'à quatre chiffres. C'est, entre autres, pourquoi + c'est une représentation populaire en informatique.% + \qed +\end{exemple} + +Dans un ordinateur réel (par opposition à théorique), l'espace +disponible pour stocker un nombre est fini, c'est-à-dire que $m < +\infty$. Le plus grand nombre que l'on peut représenter avec $m$ +chiffres ou symboles en base $b$ est +\begin{align*} + x_{\text{max}} + &= \sum_{i = 0}^{m - 1} (b - 1) b^i \\ + &= (b - 1) \sum_{i = 0}^{m - 1} b^i \\ + &= (b - 1) + \left( + \frac{b^m - 1}{b - 1} + \right) \\ + &= b^m - 1. +\end{align*} + +Par exemple, le plus grand nombre décimal représentable avec $m = 4$ +symboles est +\begin{equation*} + x_{\text{max}} = \nombre{9999} = \nombre{10000} - 1 = 10^4 - 1, +\end{equation*} +alors que le plus grand nombre binaire est seulement +\begin{equation*} + x_{\text{max}} = 1111 = 10000 - 1 = 2^4 - 1 = 15_{10}. +\end{equation*} + +Par une extension naturelle de ce qui précède, un nombre composé de $m +\geq 0$ symboles dans sa partie entière et $n \geq 0$ symboles dans sa +partie fractionnaire est représenté en base $b$ comme +\begin{align*} + x + &= x_{m-1}x_{m-2} \cdots x_1x_0,x_{-1}x_{-2} \cdots x_{-n} \\ + &= \sum_{i = -n}^{m - 1} x_i b^i. +\end{align*} +Le symbole qui sépare les parties entière et fractionnaire du nombre +est la \emph{séparation fractionnaire} (une virgule en français, un +point en anglais). + + +\subsection{Conversion vers une base quelconque} +\label{sec:ordinateurs:conversion:10_vers_b} + +Avant de discuter de la conversion de nombres décimaux vers une base +quelconque, il convient de définir les notions de \emph{quotient} et +de \emph{reste} d'une division. + +Le quotient est la partie entière de la division de deux entiers $a$ +et $d$; sa représentation mathématique habituelle est +\begin{equation} + \label{eq:ordinateurs:quotient} + q = \left\lfloor \frac{a}{d} \right\rfloor, +\end{equation} +où $\lfloor x \rfloor$ est la fonction qui retourne le plus grand +entier inférieur ou égal à $x$. Le reste de la division est simplement +la valeur +\begin{equation} + \label{eq:ordinateurs:remainder} + r = a - d \left\lfloor \frac{a}{d} \right\rfloor. +\end{equation} +Évidemment, on a $r \in \{0, 1, \dots, d - 1\}$. Le reste est le +résultat de l'opération modulo, notée $r = a \bmod d$. + +On remarquera que le premier chiffre en partant de la droite d'un +entier décimal est le reste de la division de ce nombre par $10$, que le +second chiffre est le reste de la division par $10$ du quotient de la +division précédente, et ainsi de suite. La conversion d'un nombre +décimal en une base $b$ implique simplement de diviser par $b$ plutôt +que par $10$ et de déterminer le symbole dans la base $b$ correspondant +au reste de chaque division. + +L'algorithme suivant reprend ses idées sous forme plus formelle et en +ajoutant le traitement de la partie fractionnaire. Nous démontrerons +plus loin qu'il n'est pas réellement nécessaire de savoir effectuer la +conversion de la partie fractionnaire d'un nombre réel. + +\begin{algorithme}[Conversion de la base $10$ vers la base $b$] + \label{algo:ordinateurs:10_vers_b} + Soit $x$ un nombre réel en base $10$. + \begin{enumerate} + \item Poser $i \leftarrow 0$ et $v \leftarrow \lfloor x \rfloor$. + \item Répéter les étapes suivantes jusqu'à ce que $v = 0$: + \begin{enumerate} + \item Poser $d_i \leftarrow v \bmod b$ et trouver $x_i$, le + symbole dans la base $b$ correspondant à $d_i$; + \item Poser $v \leftarrow \lfloor v/b \rfloor$; + \item Poser $i \leftarrow i + 1$. + \end{enumerate} + \item Poser $i \leftarrow 1$ et $v \leftarrow x - \lfloor x + \rfloor$. + \item Répéter les étapes suivantes jusqu'à ce que $v = 0$ ou que $i + = n$ (le nombre voulu ou maximal de chiffres après la séparation + fractionnaire): + \begin{enumerate} + \item Poser $d_{-i} \leftarrow \lfloor bv \rfloor$ et trouver $x_{-i}$, le + symbole dans la base $b$ correspondant à $d_{-i}$; + \item Poser $v \leftarrow bv - d_{-i}$; + \item Poser $i \leftarrow i + 1$. + \end{enumerate} + \item Retourner + \begin{displaymath} + x_b = x_{m-1}x_{m-2} \cdots x_1x_0,x_{-1}x_{-2} \cdots x_{-n}. + \end{displaymath} + \end{enumerate} +\end{algorithme} + +\begin{exemple} + \label{ex:ordinateurs:10_vers_b} + Soit le nombre décimal $23,31$ que l'on convertit en binaire (base + $2$) avec un maximum de cinq chiffres après la séparation + fractionnaire ($n = 5$). Le \autoref{tab:ordinateurs:10_vers_b} + montre le processus en suivant les étapes de + l'\autoref{algo:ordinateurs:10_vers_b}. On obtient le + résultat final en combinant la dernière colonne du + \autoref{tab:ordinateurs:10_vers_b:a} lue de bas en haut avec la + dernière colonne du \autoref{tab:ordinateurs:10_vers_b:b} lue de + haut en bas. Ainsi, la représentation binaire du $23,31$ limitée à + cinq chiffres après la virgule est $10111,01001$. + + \begin{table} + \caption{Conversion du nombre décimal $23,31$ en binaire.} + \label{tab:ordinateurs:10_vers_b} + \begin{minipage}[t]{0.45\linewidth} + \subcaption{partie entière} + \label{tab:ordinateurs:10_vers_b:a} + \begin{tabular*}{\linewidth}{crrcc} + \toprule + $i$ & \multicolumn{1}{c}{$v$} & $\lfloor v/2 \rfloor$ & $v \bmod 2$ & $x_i$ \\ + \midrule + $0$ & $23$ & $11$ & $1$ & $1$ \\ + $1$ & $11$ & $5$ & $1$ & $1$ \\ + $2$ & $5$ & $2$ & $1$ & $1$ \\ + $3$ & $2$ & $1$ & $0$ & $0$ \\ + $4$ & $1$ & $0$ & $1$ & $1$ \\ + \bottomrule + \end{tabular*} + \end{minipage} + \hfill + \begin{minipage}[t]{0.45\linewidth} + \subcaption{partie fractionnaire} + \label{tab:ordinateurs:10_vers_b:b} + \begin{tabular*}{\linewidth}{ccccc} + \toprule + $i$ & $v$ & $2v$ & $\lfloor 2v \rfloor$ & $x_{-i}$ \\ + \midrule + $1$ & $0,31$ & $0,62$ & $0$ & $0$ \\ + $2$ & $0,62$ & $1,24$ & $1$ & $1$ \\ + $3$ & $0,24$ & $0,48$ & $0$ & $0$ \\ + $4$ & $0,48$ & $0,96$ & $0$ & $0$ \\ + $5$ & $0,96$ & $1,92$ & $1$ & $1$ \\ + \bottomrule + \end{tabular*} + \end{minipage} + \end{table} + \qed +\end{exemple} + +\begin{exemple} + \label{ex:ordinateurs:10_vers_b:bis} + Soit de nouveau la conversion de $23,31$ en binaire avec une partie + fractionnaire d'au plus cinq chiffres. En suivant les étapes de la + remarque ci-dessus, on a: + \begin{enumerate} + \item $23,31 \times 2^5 = 23,31 \times 32 = 745,92$; + \item la représentation binaire de $745 = 2^9 + 2^7 + 2^6 + 2^5 + + 2^3 + 1$ est $1011101001$; + \item enfin, en déplaçant la virgule de cinq positions vers la + gauche, on obtient $10111,01001$, comme à + l'\autoref{ex:ordinateurs:10_vers_b}. + \end{enumerate} + \qed +\end{exemple} + +On tire une conclusion intéressante de la procédure ci-dessus. S'il +existe un entier $k \leq n$ tel que la partie fractionnaire de $x$ est +un multiple de $1/b^k$, alors la multiplication de $x$ par $b^k$ +résultera en un entier. Par conséquent, la représentation de $x$ en +base $b$ aura une partie fractionnaire de longueur finie. Ainsi, pour +obtenir une représentation binaire finie, la partie fractionnaire d'un +nombre réel doit être un multiple de $\frac{1}{2}, \frac{1}{4}, +\frac{1}{8}, \dots$ Ce n'était pas le cas à +l'\autoref{ex:ordinateurs:10_vers_b:bis} (la partie fractionnaire +étant $0,31$), d'où la nécessité de limiter le nombre de chiffres +après la virgule. + +\subsection{Conversion en décimal} +\label{sec:ordinateurs:conversion:b_vers_10} + +La conversion d'un nombre en base $b$ vers la base $10$ repose +essentiellement sur la définition \eqref{eq:ordinateurs:def_base}, +mais avec chaque symbole $x_i$ remplacé pour son équivalent décimal. +Un algorithme de conversion est le suivant. + +\begin{algorithme}[Conversion de la base $b$ vers la base $10$] + \label{algo:ordinateurs:b_vers_10} + Soit $x$ + \begin{displaymath} + x_b = x_{m-1}x_{m-2} \cdots x_1x_0,x_{-1}x_{-2} \cdots x_{-n} + \end{displaymath} + un nombre réel en base $b$. + \begin{enumerate} + \item Poser $x \leftarrow 0$ et $y \leftarrow 0$. + \item Pour $i = m - 1, m - 2, \dots, 0$, faire les étapes suivantes: + \begin{enumerate} + \item Trouver $d_i$, le nombre décimal correspondant au symbole + $x_i$; + \item Poser $x \leftarrow x b + d_i$. + \end{enumerate} + \item Pour $i = -n, -n + 1, \dots, -1$, faire les étapes suivantes: + \begin{enumerate} + \item Trouver $d_i$, le nombre décimal correspondant au symbole + $x_i$; + \item Poser $y \leftarrow (y + d_i)/b$. + \end{enumerate} + \item Retourner $x + y$. + \end{enumerate} +\end{algorithme} + +On peut, ici aussi, aisément éviter de devoir convertir la partie +fractionnaire. Il suffit de déplacer la virgule de $n$ positions vers +la droite dans le nombre $x_b$ de manière à obtenir un entier, de +convertir ce nombre en décimal avec les étapes 1 et 2 de +l'\autoref{algo:ordinateurs:b_vers_10} et, finalement, de +diviser le nombre obtenu par $b^n$. + +\begin{exemple} + \label{ex:ordinateurs:b_vers_10} + On convertit le nombre binaire $101011,011$ en décimal. Le + \autoref{tab:ordinateurs:b_vers_10} illustre le processus de + conversion selon l'\autoref{algo:ordinateurs:b_vers_10} (le chiffre + en surbrillance est celui traité lors de chaque étape de + l'algorithme). Le résultat final est $43,375$. + + De manière équivalente, mais plus simple, on peut déplacer la + virgule de trois positions vers la droite pour obtenir l'entier + binaire $101011011$. Ce nombre est $2^8 + 2^6 + 2^4 + 2^3 + 2 + 1 = + 347$ en décimal. Enfin, $347 \div 2^3 = 43,375$.% + \qed + + \begin{table} + \caption{Conversion du nombre binaire $101011,011$ en décimal} + \label{tab:ordinateurs:b_vers_10} + \begin{minipage}[t]{0.45\linewidth} + \subcaption{partie entière} + \begin{tabular*}{\linewidth}{@{\extracolsep{\fill}}ccr} + \toprule + $i$ & $d_i$ & $x$ \\ + \midrule + $5$ & \texthl{$1$}$01011,011$ & $ 1$ \\ + $4$ & $1$\texthl{$0$}$1011,011$ & $ 2$ \\ + $3$ & $10$\texthl{$1$}$011,011$ & $ 5$ \\ + $2$ & $101$\texthl{$0$}$11,011$ & $10$ \\ + $1$ & $1010$\texthl{$1$}$1,011$ & $21$ \\ + $0$ & $10101$\texthl{$1$}$,011$ & $43$ \\ + \bottomrule + \end{tabular*} + \end{minipage} + \hfill + \begin{minipage}[t]{0.45\linewidth} + \subcaption{partie fractionnaire} + \begin{tabular*}{\linewidth}{@{\extracolsep{\fill}}ccD{.}{,}{1.3}} + \toprule + $i$ & $d_{-i}$ & y \\ + \midrule + $3$ & $101011,01$\texthl{$1$} & 0.5 \\ + $2$ & $101011,0$\texthl{$1$}$1$ & 0.75 \\ + $1$ & $101011,$\texthl{$0$}$11$ & 0.375 \\ + \bottomrule + \end{tabular*} + \end{minipage} + \end{table} +\end{exemple} + + +\begin{exemple} + Soit le nombre hexadécimal $\mathrm{AC}2,3\mathrm{D}8$. On peut le + convertir en base $10$ à partir de la définition: + \begin{align*} + \mathrm{AC}2,3\mathrm{D}8 + &= 10 \times 16^2 + 12 \times 16 + 2 + 3 \times 16^{-1} + 13 + \times 16^{-2} + 8 \times 16^{-3} \\ + &= \nombre{2754,240234375}. + \end{align*} + \qed +\end{exemple} + + +\subsection{Conversion avec des bases générales} +\label{sec:ordinateurs:conversion:bases_generales} + +Il existe de nombreuses bases de numération d'usage courant où chaque +symbole est (potentiellement) exprimé dans une base différente. On a +qu'à penser à l'heure ou à l'ensemble du système de mesure impérial. +Or, il peut s'avérer utile de savoir convertir de et vers une base +quelconque. Le matériel de cette section se retrouve dans très peu +d'ouvrages d'analyse numérique ou de statistique numérique. Pourtant, +il existe quelques applications intéressantes de la conversion de et +vers des bases générales, comme nous le verrons. + +On peut généraliser la notion de nombre présentée dans les sections +précédentes à une collection de «symboles», chacun dans une base +différente. On restreint la discussion aux entiers sans perte de +généralité. On a donc +\begin{displaymath} + x = x_{m-1}x_{m-2} \cdots x_1x_0, +\end{displaymath} +où $x_{m - 1}$ est un nombre en base $b_{m - 1}$, $x_{m - 2}$ est un +nombre en base $b_{m - 2}$, etc. Nous dirons que le nombre $x$ est +exprimé en base $[b_{m - 1}\; b_{m - 2}\; \dots\; b_0]$. On a alors +\begin{equation} + \label{eq:ordinateurs:def_base_gen} + x = \sum_{i = 0}^{m - 1} x_i \prod_{j = -1}^{i - 1} b_j, +\end{equation} +avec $b_{-1} = 1$. + +Les algorithmes de conversion \ref{algo:ordinateurs:10_vers_b} et +\ref{algo:ordinateurs:b_vers_10} demeurent essentiellement valides +ici. Il suffit de remplacer chaque mention de $b$ par $b_i$. + +\begin{exemple} + Le jour de l'année et l'heure du jour est un «nombre» exprimé en + base $[365\; 24\; 60\; 60]$. En utilisant directement + l'équation~\eqref{eq:ordinateurs:def_base_gen}, le nombre de + secondes correspondant à 1~jour, 2~heures, 33~minutes et 20~secondes + est: + \begin{align*} + 1 \text{ j } 2 \text{ h } 33 \text{ min } 20 \text{ sec} + &= 1 \times (24)(60)(60) + 2 \times (60)(60) + 33 \times 60 + 20 \\ + &= \nombre{95600} \text{ secondes}. + \end{align*} + Si l'on fait la conversion en sens inverse, le nombre de jours, + heures, minutes et secondes correspondant à \nombre{91492} secondes + est, en utilisant l'\autoref{algo:ordinateurs:10_vers_b} avec la + base $[365\; 24\; 60\; 60]$: 1~jour, 1~heure, 24~minutes et + 52~secondes (voir le \autoref{tab:ordinateurs:10_vers_generale} pour + les calculs). + \begin{table} + \caption{Conversion du nombre décimal $\nombre{91492}$ dans la + base générale $[365\; 24\; 60\; 60]$.} + \label{tab:ordinateurs:10_vers_generale} + \centering + \begin{tabular}{>{$}c<{$}>{$}r<{$}>{$}r<{$}>{$}r<{$}>{$}c<{$}>{$}c<{$}} + \toprule + i & + \multicolumn{1}{c}{$v$} & + \multicolumn{1}{c}{$b_i$} & + \lfloor v/b_i \rfloor & v \bmod b_i & x_i \\ + \midrule + 0 & \nombre{91492} & 60 & \nombre{1524} & 52 & 52 \\ + 1 & \nombre{1524} & 60 & 25 & 24 & 24 \\ + 2 & 25 & 24 & 1 & 1 & 1 \\ + 3 & 1 & 365 & 0 & 1 & 1 \\ + \bottomrule + \end{tabular} + \end{table} + \qed +\end{exemple} + +Les bases générales sont particulièrement utiles pour assigner ou +extraire les éléments d'une matrice ou d'un tableau dans un ordre non +séquentiel. Typiquement, l'index de l'élément à traiter est le +résultat d'un calcul. L'exemple suivant illustre cette idée. + +\begin{exemple} + \label{ex:ordinateurs:position_dans_matrice} + Soit $\mathbf{A}$ une matrice $4 \times 5$ que l'on suppose remplie en + ordre lexicographique (par ligne). Il est simple de déterminer, ici, + que le 14{\ieme} élément est $a_{34}$. Or, on observe que la + conversion du nombre $14 - 1 = 13$ dans la base $[4\; 5]$ donne : + \begin{align*} + 13 \div 5 &= 2 \text{ reste } 3 \quad\Rightarrow\quad x_0 = 3 \\ + 2 \div 4 &= 0 \text{ reste } 2 \quad\Rightarrow\quad x_1 = 2, + \end{align*} + soit le «nombre» $(2, 3)$. En additionnant $1$ à ce résultat, on + obtient précisément la position du 14{\ieme} élément dans la + matrice. Les opérations $-1$ et $+1$ sont rendues nécessaires par + le fait que les lignes et les colonnes sont numérotées à partir de + $1$, alors que les systèmes de numération débutent à $0$.% + \qed +\end{exemple} + + + +\section{Unités de mesure} +\label{sec:ordinateurs:unites} + +Les ordinateurs que nous utilisons couramment fonctionnent en base $2$. +La plus petite quantité d'information qu'un ordinateur peut traiter +est un \emph{bit} (compression de l'anglais \emph{binary digit}). En +informatique, un bit est égal à \fbox{$0$} ou à \fbox{$1$}. Le symbole du +bit est b. + +Un \emph{octet} (\emph{byte}) est un groupe de huit bits. Son symbole +est o ou B. L'octet est l'unité de mesure la plus fréquemment utilisée +en informatique, en grande partie parce que le codage d'un caractère +dans la plupart des langues occidentales requiert un octet; voir la +\autoref{sec:ordinateurs:codage}. Les termes pour de plus grandes +quantités de bits ou d'octets utilisent généralement les préfixes +usuels du système international d'unités. Par exemple: +\begin{itemize} +\item $1$ kilooctet (ko) est $2^{10} = \nombre{1 024}$ octets; +\item $1$ mégaoctet (Mo) est $2^{20} = \nombre{1 048 576}$ octets; +\item $1$ gigaoctet (Go) est $2^{30} = \nombre{1 073 741 824}$ octets. +\end{itemize} +On voit que cette pratique fort répandue entraine des distorsions par +rapport aux définitions usuelles de kilo, méga, giga, etc., et que +cette distorsion s'amplifie au fur et à mesure que l'on grimpe dans +l'échelle des tailles d'objets. Pour cette raison, on a défini les +préfixes kibi, mébi, gibi, etc., mais ceux-ci demeurent peu utilisés à +ce jour. + +Dans l'industrie de l'informatique, on joue beaucoup avec les unités +pour montrer son produit sous un jour favorable. Deux exemples: +\begin{enumerate} +\item Les fournisseurs d'accès Internet expriment la vitesse de + téléchargement en Mb/sec, alors que la taille des fichiers est + généralement affichée en octets. Il faut donc diviser par 8 la + vitesse annoncée pour avoir une idée plus juste du temps requis pour + télécharger un fichier. +\item Les fabricants de disques durs divisent la capacité réelle de + leurs disques par $10^9$ pour l'exprimer en gigaoctets. Ainsi, un + disque dont la capacité annoncée est de $100$~Go ne peut contenir, en + fait, que $100 \times 10^9 \div 2^{30} = 93,132$~Go de données. + Cette confusion serait éliminée si les fabricants affichaient plutôt + une capacité de $93,132$ gibioctets. Moins vendeur\dots +\end{enumerate} + + + +\section{Représentation en virgule flottante} +\label{sec:ordinateurs:ieee} + +Cette section décrit la manière standard de représenter les nombres +réels dans les ordinateurs d'usage courant. Il est utile de +connaitre les grandes lignes afin de comprendre pourquoi les nombres +réels n'ont pas tous une représentation exacte dans un ordinateur et +comment surviennent et se propagent les erreurs d'arrondi. L'étude du +sujet est également intéressante en soi pour constater comment les +ingénieurs et les informaticiens sont parvenus à stocker un maximum +d'information dans un espace limité. + +Tel que mentionné précédemment, la capacité de stockage d'un +ordinateur, bien que vaste de nos jours, n'en demeure pas moins +limitée. Par conséquent, les nombres y sont représentés par un +ensemble de $m$ bits. Habituellement, $m$ est un multiple de $2$ et sa +valeur détermine le type de nombre. Par exemple, des définitions +usuelles sont $m = 2^4 = 16$ pour un entier, $m = 2^5 = 32$ pour un +nombre réel en simple précision (\emph{float} dans plusieurs langages +de programmation) et $m = 2^6 = 64$ pour un nombre réel en double +précision (\emph{double}). + +Il existe deux grandes façons de représenter les nombres (réels) à +l'aide de $m$ bits. +\begin{description} +\item[Virgule fixe] Dans cette représentation, la position de la + virgule dans le nombre est prédéterminée et, par conséquent, n'a pas + besoin d'être conservée en mémoire. On réserve alors $m_e$ positions + pour la partie entière et $m_f$ pour la partie fractionnaire (avec + $m = m_e + m_f$). La représentation en virgule fixe est + particulièrement utile dans les applications financières. +\item[Virgule flottante] Dans la représentation des nombres en virgule + flottante, celle-ci peut être placée n'importe où dans le nombre. + L'étendue de cette représentation est beaucoup plus grande que la + virgule fixe, mais ceci au détriment de la précision puisque + quelques bits doivent être réservés pour stocker la position de la + virgule dans le nombre. +\end{description} +La représentation en virgule flottante est celle utilisée dans les +applications scientifiques et celle sur laquelle nous nous concentrons +dans la suite. + +La représentation en virgule flottante est analogue à la notation +scientifique. Le nombre réel $x$ est entièrement défini par un bit de +signe $S$, un exposant positif $E$ et une mantisse $M$ tel que +\begin{equation} + \label{eq:ordinateurs:def_floating-point} + x = (-1)^S \times B^{E - e} \times M, +\end{equation} +où $B$ est la base de la représentation et $e$ est un entier +prédéterminé appelé le décalage, ou le biais, de l'exposant. Le +recours au décalage facilite les calculs internes et évite de devoir +réserver un autre bit pour le signe de l'exposant en le stockant sous +forme non signée (c'est-à-dire sous forme d'entier positif). + +La norme IEEE~754 définit la manière standard de représenter les +nombres en virgule flottante dans les ordinateurs \citep[][pour une +excellente présentation]{IEEE:754,Wikipedia:IEEE754}. En premier lieu, +la norme stipule que la base dans la représentation est $B = 2$. Ceci +est implicite et n'est pas stocké où que ce soit dans l'ordinateur. En +second lieu, la norme suppose que, pour les nombres dits +\emph{normalisés}, la mantisse est toujours de la forme $M = 1,F$, où +$F$ est un entier binaire. Le bit à gauche de la virgule est appelé le +\emph{bit caché} puisqu'il est lui aussi implicite et non stocké dans +l'ordinateur. + +Nous décrivons plus en détail la norme pour les nombres réels en +\emph{double précision} puisque c'est le type avec lequel R travaille +toujours\footnote{% + \label{pg:arithmetique:entiers} Il est possible de créer des vrais + entiers dans R en ajoutant un suffixe \code{L} à un nombre entier. + Ainsi, \code{1L} est un nombre entier dans le sens où + \code{is.integer(1L)} est \code{TRUE}. Cela est relativement peu + utilisé en programmation normale.}. % +Tout d'abord, un nombre en double précision est stocké dans un mot de +$m = 64$~bits (8~octets) divisé ainsi de gauche à droite: $m_S = 1$ bit +pour le signe, $m_E = 11$ bits pour l'exposant et $m_F = 52$ bits pour +la partie fractionnaire de la mantisse. Le premier bit du mot utilisé +pour le signe est appelé le \emph{bit fort}. Voir la +\autoref{fig:ordinateurs:double} pour une représentation +schématique. + +\begin{figure} + \centering + \begin{equation*} + \underbrace{ + \underbrace{\fbox{\hspace{0.5pt} $S$ \hspace{0.5pt}}}_{m_S = 1} + \hspace{1pt} + \underbrace{\fbox{\hspace{17.5pt} $E$ \hspace{17.5pt}}}_{m_E = 11} + \hspace{1pt} + \underbrace{\fbox{\hspace{78pt} $F$ \hspace{78pt}}}_{m_F = 52}% + }_{m = 64} + \end{equation*} + \caption{Représentation schématique d'un nombre en double précision + dans la norme IEEE~754.} + \label{fig:ordinateurs:double} +\end{figure} + +On remarque que le bit caché confère à la mantisse une longueur de mot +effective (ou précision) de 53~bits. + +Le décalage est $e = 2^{m_e - 1} - 1 = 2^{10} - 1 = \nombre{1023}$. +Avec une longueur de mot de 11~bits, les valeurs possibles de $E$ vont +de $0$ à $2^{11} - 1 = \nombre{2047}$. Cependant, les valeurs $0$ et +$\nombre{2047}$ sont réservées pour des usages spéciaux; voir le +\autoref{tab:ordinateurs:special_values}. Par conséquent, les +valeurs possibles de l'exposant (une fois décalé) pour les nombres en +double précision vont de $-\nombre{1022}$ à $\nombre{1023}$. + +\begin{table} + \caption{Valeurs spéciales dans la norme IEEE~754} + \label{tab:ordinateurs:special_values} + \begin{tabular}{crccc} + \toprule + $S$ & + \multicolumn{1}{c}{$E$} & + $F$ & Représentation binaire & Valeur spéciale \\ + \midrule + $0$ & $0$ & $0$ & + \ieee{0}{00000000000}{00 \cdots 00} & $0$ \\ + $1$ & $0$ & $0$ & + \ieee{1}{00000000000}{00 \cdots 00} & $-0$ \\ + $0$ & $\nombre{2047}$ & $0$ & + \ieee{0}{11111111111}{00 \cdots 00} & $+\infty$ \\ + $1$ & $\nombre{2047}$ & $0$ & + \ieee{1}{11111111111}{00 \cdots 00} & $-\infty$ \\ + $0 \text{ ou } 1$ & $\nombre{2047}$ & $F \neq 0$ & + \ieee{$S$}{11111111111}{\hspace{1.2em} $F$ \hspace{1.2em}} & + \code{NaN}$^a$ \\ + \bottomrule + \end{tabular} \\ + $^a$ \emph{Not a number}, par exemple $\frac{0}{0}$ + ou $\frac{\infty}{\infty}$. +\end{table} + +\begin{exemple} + Tel qu'expliqué à la + \autoref{sec:ordinateurs:conversion:10_vers_b}, le nombre + $\frac{1}{2}$ possède une représentation binaire exacte: + \begin{align*} + \frac{1}{2} + &= 2^{-1} \\ + &= (-1)^0 \times 2^{\nombre{1022} - \nombre{1023}} \times 1,0. + \end{align*} + Puisque la représentation de l'exposant est $\nombre{1022}_{10} = + 1111111110_2$, la représentation interne de $\frac{1}{2}$ selon la + norme IEEE~754 est + \begin{center} + \ieee{0}{01111111110}{00 \cdots 00}. + \end{center} + + En revanche, le nombre $\frac{1}{10}$ n'a pas une représentation + binaire finie. En utilisant + l'\autoref{algo:ordinateurs:10_vers_b}, on trouve (le côté + droit de l'égalité étant en binaire): + \begin{align*} + \frac{1}{10} + &= 0,0001100110011001100110011001\dots \\ + &= 2^{-4} \times 1,1001100110011001\dots \\ + &= (-1)^0 \times 2^{\nombre{1019} - \nombre{1023}} \times + 1,1001100110011001\dots + \end{align*} + Or, $\nombre{1019}_{10} = 1111111011_2$, d'où la représentation + interne finie de $\frac{1}{10}$ est + \begin{center} + \ieee{0}{01111111011}{1001 \cdots 1001}. + \end{center} + Si l'on reconvertit ce nombre en décimal, on obtient + \begin{equation*} + 2^{-4} \times + \left( + 1 + \sum_{k = 0}^{12} (2^{-4k - 1} + 2^{-4k - 4}) + \right), + \end{equation*} + un nombre près de, mais pas exactement égal à, $\frac{1}{10}$ (le + programme de calcul en multiprécision \code{bc} donne + $0,09999999999999999166$). Dès lors, la multiplication de ce nombre + par $10$ ne donnera pas $1$. Voilà qui justifie le principe de + programmation énoncé à la page \pageref{programming_principle}.% + \qed +\end{exemple} + +Les principales caractéristiques des nombres en double précision sont +les suivantes. +\begin{enumerate} +\item Soit $x_{\text{max}}$ le plus grand nombre représentable. Parce + que l'exposant $E = \nombre{2047}$ est réservé, on a + \begin{align*} + x_{\text{max}} + &= \ieee{0}{11111111110}{11 \cdots 11} \\ + &= (-1)^0 \times 2^{\nombre{1023}} \times 1,11\cdots11 \\ + &= 2^{\nombre{1023}} \times (2 - 2^{-52}) \\ + &= \nombre{1,797693} \times 10^{308}. + \end{align*} +\item Soit $x_{\text{min}}$ le plus petit nombre normalisé + représentable. Parce que l'exposant $E = 0$ est réservé, on a + \begin{align*} + x_{\text{min}} + &= \ieee{0}{00000000001}{00 \cdots 00} \\ + &= (-1)^0 \times 2^{\nombre{-1022}} \times 1,00\cdots00 \\ + &= 2^{\nombre{-1022}} \\ + &= \nombre{2,225074} \times 10^{-308}. + \end{align*} + Afin de rendre la transition vers $0$ moins abrupte, la norme + IEEE~754 définit également des nombres \emph{dénormalisés}. Ceux-ci + sont identifiés par $E = 0$ et une partie fractionnaire $F$ non + nulle. Cependant, par définition, les nombres dénormalisés ont $E - + e = -\nombre{1022}$ et leur bit caché est $0$. Par conséquent, le + plus petit nombre dénormalisé est stocké sous la forme + \begin{equation*} + \ieee{0}{00000000000}{00 \cdots 01} + \end{equation*} + et sa valeur est + \begin{align*} + x_{\text{min}} + &= (-1)^0 \times 2^{\nombre{-1022}} \times 0,00\cdots01 \\ + &= 2^{\nombre{-1022}} \times 2^{-52} \\ + &= 2^{-\nombre{1074}} \\ + &= \nombre{4,940656} \times 10^{-324}. + \end{align*} +\item On a la même étendue pour les nombres négatifs, soit + \begin{gather*} + [\nombre{-1,797693} \times 10^{308},\, + \nombre{-2,225074} \times 10^{-308}] \\ + \intertext{ou} + [\nombre{-1,797693} \times 10^{308},\, + \nombre{-4,940656} \times 10^{-324}]. + \end{gather*} + en considérant les nombres dénormalisés. +\item Soit $\varepsilon$ la plus petite valeur tel que $1 + + \varepsilon \neq 1$ dans la représentation en virgule flottante. + Cette valeur est appelée l'\emph{epsilon de la machine} ou la + \emph{précision de la machine}. Or, puisque + \begin{equation*} + 1 = (-1)^0 \times 2^0 \times 1,00\cdots00, + \end{equation*} + le nombre suivant est + \begin{equation*} + (-1)^0 \times 2^0 \times 1,00\cdots01. + \end{equation*} + Par conséquent, on a $\varepsilon = 2^{-52} = \nombre{2,220446} + \times 10^{-16}$. +\item Tout nombre $x$ représente en fait un intervalle de + $\mathbb{R}$. Par exemple, tout nombre dans l'intervalle $[1, 1 + + \varepsilon)$ est représenté par le nombre $1$ dans l'ordinateur. +\item On a un ensemble fini de nombres pour représenter $\mathbb{R}$. + Or, cet ensemble est plus dense près de $0$ que pour les grandes + valeurs. En effet, le nombre suivant $x_{\text{min}}$ est + \begin{align*} + x_{\text{min}}^+ + &= (1 + \varepsilon) \times 2^{-\nombre{1022}} \\ + &= x_{\text{min}} + \varepsilon \times 2^{-\nombre{1022}} \\ + &= x_{\text{min}} + 2^{-\nombre{1074}}, \\ + \intertext{alors que le nombre précédant $x_{\text{max}}$ est} + x_{\text{max}}^- + &= (2 - 2^{-52} - \varepsilon) \times 2^{\nombre{1023}} \\ + &= x_{\text{max}} - \varepsilon \times 2^{\nombre{1023}} \\ + &= x_{\text{max}} - 2^{971}. + \end{align*} + L'écart entre les deux plus petits nombres représentables est donc de + $2^{-\nombre{1024}} \approx 10^{-324}$, alors que celui entre les deux plus + grands est de $2^{971} \approx 10^{292}$! +\end{enumerate} + +Tout calcul impliquant un nombre $x > x_{\text{max}}$ ($x < +-x_{\text{max}}$) entraine un \emph{dépassement de capacité}. +Habituellement, cela entraine l'arrêt immédiat des calculs et un +résultat de $+\infty$ ($-\infty$). À l'autre bout du spectre, un +calcul impliquant un nombre $x < x_{\text{min}}$ entraine un +\emph{soupassement de capacité} et le résultat est habituellement +considéré égal à $0$. + +R conserve dans une liste nommée \code{.Machine} les +valeurs mentionnées ci-dessus --- ainsi que plusieurs autres --- pour +l'architecture de l'ordinateur courant. Par exemple, on confirme les +valeurs de $\varepsilon_m$, $x_{\text{min}}$, $x_{\text{max}}$, $B$, +$m_f$ et $m_e$, dans l'ordre, pour l'architecture x86: +\begin{Schunk} +\begin{Sinput} +> .Machine[c(1, 3:6, 11)] +\end{Sinput} +\begin{Soutput} +$double.eps +[1] 2.220446e-16 + +$double.xmin +[1] 2.225074e-308 + +$double.xmax +[1] 1.797693e+308 + +$double.base +[1] 2 + +$double.digits +[1] 53 + +$double.exponent +[1] 11 +\end{Soutput} +\end{Schunk} + + + +\section{Éléments d'arithmétique en virgule flottante} +\label{sec:ordinateurs:arithmetique} + +La section précédente expliquait pourquoi les nombres stockés dans un +ordinateur ne sont pas toujours ceux que l'on croit --- ou que l'on +voudrait. Puisque l'ordinateur ne peut représenter tous les nombres +réels, toute opération arithmétique avec des nombres en virgule +flottante implique une erreur d'arrondi ou de troncature (selon +l'architecture de l'ordinateur) dont il importe de tenir compte lors +de la mise en oeuvre de certains algorithmes. Cette section présente +quelques grands principes d'arithmétique en virgule flottante ainsi +que de bons usages pour minimiser les erreurs d'arrondi. Consulter les +ouvrages +\cite{Monahan:numstat:2001,Burden:numerical:2011,Knuth:ACP:vol2:1997}, +entre autres, pour une discussion plus complète de ce vaste sujet. + +Aux fins de cette section, on note $\fl(x)$ la représentation en +virgule flottante du nombre nombre $x$ et l'on définit la +représentation simplifiée +\begin{equation} + \label{eq:ordinateurs:fl(x)} + \fl(x) = (-1)^S \times 10^E \times 0,F, +\end{equation} +où $F$ compte cinq chiffres significatifs, dont le dernier est arrondi. +Le \autoref{tab:arithmetic:simplified} fournit quelques exemples. + +\begin{table} + \caption{Représentation en virgule flottante simplifiée} + \label{tab:arithmetic:simplified} + \centering + \begin{tabular}{r@{,}lr@{,}l} + \toprule + \multicolumn{2}{c}{$x$} & + \multicolumn{2}{c}{$\fl(x)$} \\ + \midrule + $2$&$5$ & $0$&$25000 \times 10^1$ \\ + $-42$&$182$ & $-0$&$42182 \times 10^2$ \\ + $0$&$214356$ & $0$&$21436 \times 10^0$ \\ + \bottomrule + \end{tabular} +\end{table} + +\begin{rem} + Dans la norme IEEE~754, les règles d'arrondi de base sont: + \begin{enumerate} + \item arrondir à la valeur la plus près ($0,14$ devient $0,1$ et + $\nombre{0,16}$ devient $0,2$); + \item arrondir un nombre exactement à mi-chemin au nombre avec un + dernier chiffre significatif pair ou nul ($0,05$ devient $0,0$ + alors que $\nombre{0,15}$ devient $0,2$). + \end{enumerate} +\end{rem} + + +\subsection{Erreurs d'arrondi ou de troncature} +\label{sec:ordinateurs:arithmetique:erreurs} + +Lors de l'addition et de la soustraction de nombres en virgule +flottante, on rend les exposants égaux en déplaçant les bits de la +mantisse du plus petit nombre vers la droite. Il en résulte une perte +de bits significatifs et donc une \emph{erreur d'arrondi}. Dans les +cas extrêmes où les deux opérandes sont de grandeur très différente, +le plus petit opérande devient nul suite à la perte de tous ses bits +significatifs. + +La situation pour la multiplication et la division est quelque peu +différente, mais la source d'erreur d'arrondi demeure la même. + +À toute fin pratique, tout calcul fait naitre de l'erreur d'arrondi et +celle-ci augmente avec le nombre d'opérations. Les quelques principes +de programmation ci-dessous, lorsque suivis par le programmeur prudent +et consciencieux, permettent d'atténuer l'impact de l'erreur +d'arrondi. + +\begin{enumerate} +\item L'addition et la soustraction en virgule flottante ne sont pas + associatives. Additionner les nombres en ordre croissant de grandeur + afin d'accumuler des bits significatifs. +\item Éviter de soustraire un petit nombre d'un grand, ou alors le + faire le plus tard possible dans la chaine des calculs. +\item Pour calculer une somme alternée, additionner tous les termes + positifs et tous les termes négatifs, puis faire la soustraction. +\item Multiplier et diviser des nombres d'un même ordre de grandeur. + Si $x$ et $y$ sont presque égaux, le calcul $x/y$ sera plus précis + en virgule flottante que $y^{-1} x$. +\end{enumerate} + +Les exemples ci-dessous illustrent ces principes. + +\begin{exemple} + Soit $x = 7$, $y = 4$ et $z = \nombre{100000}$. Dans la + représentation simplifiée \eqref{eq:ordinateurs:fl(x)}, on a $\fl(x) + = 0,70000 \times 10^1$, $\fl(y) = 0,40000 \times 10^1$ et $\fl(z) = + 0,10000 \times 10^6$. Or, $x + y + z = \nombre{100011}$ et + \begin{align*} + [\fl(x) + \fl(y)] + \fl(z) + &= (0,70000 \times 10^1 + 0,40000 \times 10^1) + + 0,10000 \times 10^6 \\ + &= 0,11000 \times 10^2 + 0,10000 \times 10^6 \\ + &= 0,00001 \times 10^6 + 0,10000 \times 10^6 \\ + &= 0,10001 \times 10^6, \\ + \intertext{soit un résultat raisonnablement précis. Cependant,} + \fl(x) + [\fl(y) + \fl(z)] + &= 0,70000 \times 10^1 + + (0,00000 \times 10^6 + 0,10000 \times 10^6) \\ + &= 0,00000 \times 10^6 + 0,10000 \times 10^6 \\ + &= 0,10000 \times 10^6. + \end{align*} + En effectuant les opérations dans un mauvais ordre, on obtient $x + + y + z = z$ même si $x \neq 0$ et $y \neq 0$. % + \qed +\end{exemple} + +\begin{exemple} + Soit $x = 7$, $y = \nombre{100006}$ et $z = \nombre{100002}$. On a + $z - y - x = -11$. Or, + \begin{align*} + \fl(z) - [\fl(y) + \fl(x)] + &= 0,10000 \times 10^6 + - (0,10000 \times 10^6 + 0,00000 \times 10^6) \\ + &= 0,00000 \times 10^0, + \intertext{alors que} + [\fl(z) - \fl(y)] - \fl(x) + &= (0,10000 \times 10^6 - 0,10000 \times 10^6) - + 0,70000 \times 10^1 \\ + &= 0,00000 \times 10^1 - 0,70000 \times 10^1 \\ + &= -0,70000 \times 10^1. + \end{align*} + \qed +\end{exemple} + +L'exemple suivant est adapté de \cite{Monahan:numstat:2001}. + +\begin{exemple} + L'évaluation numérique de probabilités loin dans les queues d'une + fonction de répartition peut s'avérer imprécise selon la technique + employée. Par exemple, la fonction de répartition de la distribution + logistique est + \begin{equation*} + F(x) = (1 + e^{-x})^{-1}. + \end{equation*} + La vraie valeur de $\operatorname{Pr}[X > 6]$ est $1 - F(6) = 1 - (1 + + e^{-6})^{-1} = \nombre{0,002472623}$. L'évaluation de cette + probabilité dans notre représentation en virgule flottante avec la + formule ci-dessus est + \begin{align*} + 1 - [1 \div (1 + \fl(e^{-6}))] + &= 1 - [1 \div (1 + 0,24788 \times 10^{-2})] \\ + &= 1 - [0,10000 \times 10^1 \div 0,10025 \times 10^1)] \\ + &= 1 - 0,99751 \times 10^0 \\ + &= 0,10000 \times 10^1 - 0,09975 \times 10^1 \\ + &= 0,25000 \times 10^{-2}. + \end{align*} + (Nous n'avons pas écrit les entiers en virgule flottante ci-dessus + pour alléger la notation.) Toutefois, si l'on utilise plutôt la + formule équivalente + \begin{align*} + 1 - F(6) + &= \frac{e^{-6}}{1 + e^{-6}} \\ + &= \frac{1}{1 + e^6} + \end{align*} + dans laquelle l'opération de soustraction entre deux nombres presque + égaux est déjà effectuée, on obtient le résultat bien plus précis + \begin{align*} + 1 \div (1 + \fl(e^6)) + &= 1 \div (1 + 0,40343 \times 10^3)) \\ + &= 1 \div (0,00100 \times 10^3 + 0,40343 \times 10^3) \\ + &= 1 \div 0,40443 \times 10^3 \\ + &= 0,24726 \times 10^{-2}. + \end{align*} + \qed +\end{exemple} + +Les deux principes ci-dessous permettent d'éviter des dépassements ou +des soupassements de capacité et d'améliorer la précision des calculs. + +\begin{enumerate} +\item Chercher des formules mathématiques équivalentes évitant de + devoir traiter des très grands ou des très petits nombres. +\item Travailler en échelle logarithmique. Par exemple, le produit de + deux grands nombres $x$ et $y$ dépassera la capacité plus tard et + demeurera précis plus longtemps s'il est calculé sous la forme + $e^{\log x + \log y}$. +\end{enumerate} + +\begin{exemple} + Soit $X_1, \dots, X_n$ un échantillon aléatoire tiré d'une + distribution de Pareto translatée, dont la fonction de répartition est + \begin{equation*} + F(x; \mu, \alpha) = 1 - + \left( + \frac{\mu}{x} + \right)^{\alpha}, \quad x > \mu. + \end{equation*} + On peut démontrer que l'estimateur du maximum de vraisemblance de + $\alpha$ est + \begin{equation*} + \hat{\alpha} = \frac{n}{\ln (X_1 \cdots X_n/X_{(1)}^n)}, + \end{equation*} + où $X_{(1)} = \min (X_1, \dots, X_n)$. Soit \code{x} un objet R + contenant un échantillon de $\nombre{1000}$ valeurs d'une distribution + Pareto translatée de moyenne $\nombre{5000}$ (le contenu de cet objet + n'est pas affiché ici pour des raisons évidentes). Le calcul de + l'estimateur $\hat{\alpha}$ directement par la formule entraine + rapidement un dépassement de capacité, tant lors du produit $X_1 + \cdots X_n$ que lors de l'opération $X_{(1)}^n$: +\begin{Schunk} +\begin{Sinput} +> prod(x) +\end{Sinput} +\begin{Soutput} +[1] Inf +\end{Soutput} +\begin{Sinput} +> min(x)^length(x) +\end{Sinput} +\begin{Soutput} +[1] Inf +\end{Soutput} +\end{Schunk} + Le résultat est donc \code{NaN}: +\begin{Schunk} +\begin{Sinput} +> length(x)/log(prod(x)/min(x)^length(x)) +\end{Sinput} +\begin{Soutput} +[1] NaN +\end{Soutput} +\end{Schunk} + Selon la grandeur des données dans l'échantillon, la formule + équivalente + \begin{displaymath} + \hat{\alpha} = \frac{n}{\ln \prod_{i = 1}^n X_i/X_{(1)}} + \end{displaymath} + peut éviter le dépassement de capacité. Elle n'est toutefois d'aucun + secours dans le présent exemple: +\begin{Schunk} +\begin{Sinput} +> length(x)/log(prod(x/min(x))) +\end{Sinput} +\begin{Soutput} +[1] 0 +\end{Soutput} +\end{Schunk} + On remarquera de plus que cette approche nécessite un grand nombre + de multiplications (voir la + \autoref{sec:ordinateurs:arithmetique:cout}), en plus d'ouvrir + la porte à des erreurs d'arrondi. + + Pour obtenir une réponse on utilisera plutôt une autre formule + algébriquement équivalente: + \begin{displaymath} + \hat{\alpha} = \frac{n}{\sum_{i=1}^n \ln X_i - n \ln X_{(1)}}. + \end{displaymath} + On obtient alors +\begin{Schunk} +\begin{Sinput} +> length(x)/(sum(log(x)) - length(x) * log(min(x))) +\end{Sinput} +\begin{Soutput} +[1] 1.405529 +\end{Soutput} +\end{Schunk} + Cet exemple illustre combien des calculs \emph{algébriquement} + équivalents ne sont pas nécessairement \emph{numériquement} + équivalents. % + \qed +\end{exemple} + + +\subsection{Cout des opérations} +\label{sec:ordinateurs:arithmetique:cout} + +Les ordinateurs modernes disposent d'une unité de calcul en virgule +flottante (FPU) intégrée au processeur. Cette unité est évidemment +très optimisée et, par conséquent, elle accélère beaucoup le calcul en +virgule flottante. Néanmoins, certaines opérations sont plus couteuses +à réaliser que d'autres en termes de temps de calcul. À titre +indicatif, on trouve au \autoref{tab:ordinateurs:cout} le cout +relatif approximatif de quelques opérations en virgule flottante. +\begin{table} + \centering + \caption{Cout relatif de quelques opérations en virgule flottante} + \label{tab:ordinateurs:cout} + \begin{tabular}{lr} + \toprule + Opération arithmétique & Cout relatif \\ + \midrule + Addition et soustraction & $1,0$ \\ + Multiplication & $1,3$ \\ + Division & $3,0$ \\ + Racine carrée & $4,0$ \\ + Logarithme & $15,4$ \\ + \bottomrule + \end{tabular} +\end{table} + +À titre d'exemple, considérons le calcul d'une simple moyenne +arithmétique +\begin{equation*} + \bar{x} = \frac{1}{n} \sum_{i = 1}^n x_i. +\end{equation*} +Si l'on effectue le calcul tel qu'écrit ci-dessus, cela requiert $n - +1$ additions et une division. En revanche, le calcul équivalent +\begin{equation*} + \bar{x} = \sum_{i = 1}^n \frac{x_i}{n}, +\end{equation*} +requiert $n - 1$ divisions et $n - 1$ additions. Pour $n$ grand +utiliser la première approche plutôt que la seconde fera une +différence. + + + +\section{Codage de caractères} +\label{sec:ordinateurs:codage} + +Pendant que l'on discute de la représentation interne des nombres dans +un ordinateur, on peut toucher un mot de la représentation interne, ou +le codage, des caractères. Ce sujet demeure une cible mouvante puisque +de nouveaux standards apparaissent encore après de nombreuses années +de systèmes incompatibles et basés sur la langue anglaise. + +Peu importe le système retenu, les caractères doivent être codés en +binaire dans l'ordinateur. La partie la plus difficile consiste à +créer un système standard permettant aux ordinateurs et autres +appareils numériques de communiquer entre eux. Le premier standard +d'usage courant fut le Code américain normalisé pour l'échange +d'information, mieux connu sous son acronyme ASCII \citep{ASCII}. La +norme ASCII définit des codes numériques pour 128 caractères, soit 95 +affichables (lettres, chiffres, symboles divers et l'espace) et 33 non +affichables (essentiellement des caractères de contrôle tels que saut +de ligne, retour de chariot ou espacement arrière). + +À titre d'exemple, les lettres majuscules A--Z occupent les cases +$65$--$90$ ($1000001$--$1011010$ en binaire) alors que les lettres +minuscules a--z occupent les cases $97$--$122$ ($1100001$--$1101010$ +en binaire). On constate que les versions majuscule et minuscule d'une +même lettre ne diffèrent, dans leur représentation binaire, que par +leur second bit le plus significatif. Le changement de casse d'une +lettre ou d'un mot est donc une opération très simple et rapide. + +La représentation ASCII ne requiert en soi que sept bits. Néanmoins, +on a rapidement codé les caractères sur un octet (huit bits) puisqu'il +s'agit du type de donnée natif des ordinateurs depuis les années 1970. +L'ajout d'un bit a créé de l'espace pour 128 caractères additionnels +(cases 128--255). Une myriade de systèmes de codage différents sont +alors apparus pour supporter les caractères des langues autres que +l'anglais (les caractères accentués, par exemple) ainsi que d'autres +symboles graphiques. La norme ISO~8859-1, ou Latin~1 +\citep{ISO:8859-1}, a fini par s'imposer comme l'un des standards les +plus répandus. Ces listes de codes fixes se révèlent toutefois +problématiques lors de l'apparition d'un nouveau symbole. Par exemple, +pour faire de la place pour le symbole de l'euro à la fin des années +1990, il a fallu retirer un symbole de ISO~8859-1. Avec quelques +autres changements, la nouvelle liste de code est devenue ISO~8859-15. +De plus, comment doit-on traiter les langues CJC (chinois, japonais, +coréen) qui comptent des milliers de symboles différents? + +Depuis le début des années 1990, la mondialisation de l'informatique a +suscité un effort concerté de création d'un système de codage standard +couvrant la presque totalité des systèmes d'écriture du monde. Le +système devait aussi permettre la composition de textes en plusieurs +langues, par exemple en français et dans une écriture de droite à +gauche comme l'hébreu ou l'arabe. Le standard ainsi créé est Unicode +\citep{Unicode:5.0}. Le plus populaire système de codage capable de +représenter l'ensemble des caractères Unicode est \emph{Unicode + Transformation Format} 8~bits, ou UTF-8 \citep[section +3.9]{Unicode:5.0}. Dans l'UTF-8, chaque caractère est codé sur une +suite d'un à quatre octets et les premiers 128 caractères sont +identiques à la norme ASCII. L'UTF-8 est le système de codage par +défaut dans macOS et les plus récentes distributions GNU/Linux. + +Le système R supporte les caractères multi-octets de manière assez +exhaustive. Sans doute aidés en cela par le fait qu'il s'agit d'un +projet international, les développeurs de R ont mis beaucoup d'effort +pour assurer l'internationalisation et la localisation du logiciel; +voir \cite{Ripley:Rnews:2005a}. + +\bibliography{formation-latex-ul} % production de la bibliographie + +\end{document} diff --git a/info/formation-latex-ul/doc/exercice_gabarit.tex b/info/formation-latex-ul/doc/exercice_gabarit.tex new file mode 100644 index 0000000000..05b3670a3a --- /dev/null +++ b/info/formation-latex-ul/doc/exercice_gabarit.tex @@ -0,0 +1,14 @@ +\documentclass[11pt,article,french]{memoir} + \usepackage{babel} + \usepackage[autolanguage]{numprint} + + %% Activer les lignes appropriées selon le moteur utilisé + \usepackage[utf8]{inputenc} % LaTeX + \usepackage[T1]{fontenc} % LaTeX + % \usepackage{fontspec} % XeLaTeX + +\begin{document} + + + +\end{document} diff --git a/info/formation-latex-ul/doc/exercice_include.tex b/info/formation-latex-ul/doc/exercice_include.tex new file mode 100644 index 0000000000..1ce8197af7 --- /dev/null +++ b/info/formation-latex-ul/doc/exercice_include.tex @@ -0,0 +1,28 @@ +\documentclass[11pt,french]{memoir} + \usepackage{babel} + \usepackage{graphicx} % insertion de graphiques avec \includegraphics + \usepackage{url} % commande \url pour les... URL + + %% Activer les lignes appropriées selon le moteur utilisé + \usepackage[utf8]{inputenc} % LaTeX + \usepackage[T1]{fontenc} % LaTeX + % \usepackage{fontspec} % XeLaTeX + + \title{R et GNU Emacs} + \author{Vincent Goulet} + \date{Université Laval} + +\begin{document} + +\frontmatter + +\input{pagetitre} + +\tableofcontents* + +\mainmatter + +\include{rpresentation} +\include{emacs} + +\end{document} diff --git a/info/formation-latex-ul/doc/exercice_mathematiques.tex b/info/formation-latex-ul/doc/exercice_mathematiques.tex new file mode 100644 index 0000000000..7fb190a4a1 --- /dev/null +++ b/info/formation-latex-ul/doc/exercice_mathematiques.tex @@ -0,0 +1,76 @@ +\documentclass[11pt,article,french]{memoir} + \usepackage{amsmath} + \usepackage{babel} + \usepackage[autolanguage]{numprint} + + %% Activer les lignes appropriées selon le moteur utilisé + \usepackage[utf8]{inputenc} % LaTeX + \usepackage[T1]{fontenc} % LaTeX + % \usepackage{fontspec} % XeLaTeX + +\begin{document} + +Soit deux variables aléatoires stochastiquement indépendantes $X_1$ et +$X_2$. La loi de la première est une exponentielle de paramètre $1$. +Celle de la seconde est une gamma de paramètres $\alpha$ et $1$. Nous +allons déterminer la loi de $Y = \theta (X_1/X_2)$. + +En premier lieu, la densité conjointe de $X_1$ et $X_2$ est +simplement le produit des densités marginales: +\begin{equation*} + f_{X_1 X_2}(x_1, x_2) = \frac{1}{\Gamma(\alpha)} + x_2^{\alpha - 1} e^{-(x_1 + x_2)}, \qquad + x_1 > 0, x_2 > 0. +\end{equation*} + +Nous allons utiliser la méthode du changement de variable (ou du +Jacobien). Pour ce faire, on pose les deux transformations +\begin{equation*} + \begin{aligned} + Y_1 &= \theta \left( \frac{X_1}{X_2} \right) \\ + Y_2 &= X_2 + \end{aligned} + \qquad \Leftrightarrow \qquad + \begin{aligned} + X_1 &= \frac{Y_1 Y_2}{\theta} \\ + X_2 &= Y_2 + \end{aligned} +\end{equation*} +et donc +\begin{align*} + \frac{\partial x_1}{\partial y_1} &= \frac{y_2}{\theta} & + \frac{\partial x_1}{\partial y_2} &= \frac{y_1}{\theta} \\ + \frac{\partial x_2}{\partial y_1} &= 0 & + \frac{\partial x_2}{\partial y_2} &= 1, +\end{align*} +d'où le Jacobien de la transformation est +\begin{equation*} + J = + \begin{vmatrix} + y_2/\theta & y_1/\theta \\ + 0 & 1 + \end{vmatrix} + = \frac{y_2}{\theta}. +\end{equation*} +Le domaine de $Y_1$ et de $Y_2$ est $R^+$. On a donc +\begin{align*} + f_{Y_1 Y_2}(y_1, y_2) + &= f_{X_1 X_2}(y_1 y_2/\theta, y_2)\, \lvert y_2/\theta \rvert \\ + &= \frac{1}{\theta \Gamma(\alpha)} y_2^\alpha + e^{-(y_1 y_2/\theta + y_2)}. +\end{align*} +Par conséquent, +\begin{align*} + f_{Y_1}(y_1) + &= \int_0^\infty f_{Y_1 Y_2}(y_1, y_2)\, dy_2 \\ + &= \frac{1}{\theta} \int_0^\infty + \frac{1}{\Gamma(\alpha)} y_2^{\alpha + 1 - 1} + e^{-[(y_1 + \theta)/\theta] y_2}\, dy_2 \\ + &= \frac{1}{\theta} + \frac{\theta^{\alpha + 1}}{(y_1 + \theta)^{\alpha + 1}} \\ + &= \frac{\theta^\alpha}{% + (y_1 + \theta)^{\alpha + 1}}, \qquad y_1 > 0, +\end{align*} +d'où la loi de $Y_1 = \theta (X_1/X_2)$ est une Pareto$(\alpha, \theta)$. + +\end{document} diff --git a/info/formation-latex-ul/doc/exercice_minimal.tex b/info/formation-latex-ul/doc/exercice_minimal.tex new file mode 100644 index 0000000000..52beff68ad --- /dev/null +++ b/info/formation-latex-ul/doc/exercice_minimal.tex @@ -0,0 +1,19 @@ +\documentclass{article} + +\begin{document} + +Hello World! + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec quam +nulla, bibendum vitae ipsum vel, fermentum pellentesque orci. +Phasellus vitae ultrices erat. + + + +Etiam magna est, convallis et dapibus +in, imperdiet eget magna. Donec pharetra neque ut aliquam finibus. Nam +justo nunc, eleifend non suscipit eget, consectetur eu est. Proin ut +sagittis mauris. Vestibulum ultrices, ipsum a ullamcorper consectetur, +risus risus cursus nunc, eu porta augue nisl in leo. + +\end{document} diff --git a/info/formation-latex-ul/doc/exercice_parties.tex b/info/formation-latex-ul/doc/exercice_parties.tex new file mode 100644 index 0000000000..0125e721b0 --- /dev/null +++ b/info/formation-latex-ul/doc/exercice_parties.tex @@ -0,0 +1,150 @@ +\documentclass[11pt,french]{memoir} + \usepackage{babel} + %% Activer les lignes appropriées selon le moteur utilisé + \usepackage[utf8]{inputenc} % LaTeX + \usepackage[T1]{fontenc} % LaTeX + % \usepackage{fontspec} % XeLaTeX + \usepackage[colorlinks]{hyperref} + + \title{} + \author{} + +\begin{document} + +\maketitle + +\frontmatter + +\tableofcontents + +\mainmatter + +\chapter{Présentation du langage R} +\label{chap:rpresentation} + +\section{Bref historique} +\label{sec:rpresentation:historique} + +À l'origine fut le S, un langage pour «programmer avec des données» +développé chez Bell Laboratories à partir du milieu des années 1970 +par une équipe de chercheurs menée par John~M.\ Chambers. Au fil du +temps, le S a connu quatre principales versions communément +identifiées par la couleur du livre dans lequel elles étaient +présentées: % +version «originale», % +version 2, % +version 3 et % +version 4; % +voir aussi et pour plus de détails. + +Dès la fin des années 1980 et pendant près de vingt ans, le S a +principalement été popularisé par une mise en {\oe}uvre commerciale +nommée S-PLUS. En 2008, Lucent Technologies a vendu le langage S à +Insightful Corporation, ce qui a effectivement stoppé le développement +du langage par ses auteurs originaux. Aujourd'hui, le S est +commercialisé de manière relativement confidentielle sous le nom +Spotfire S$+$ par TIBCO Software. + +Ce qui a fortement contribué à la perte d'influence de S-PLUS, c'est +une nouvelle mise en {\oe}uvre du langage développée au milieu des +années 1990. Inspirés à la fois par le S et par Scheme (un dérivé du +Lisp), Ross Ihaka et Robert Gentleman proposent un langage pour +l'analyse de données et les graphiques qu'ils nomment R. À la +suggestion de Martin Maechler de l'ETH de Zurich, les auteurs décident +d'intégrer leur nouveau langage au projet GNU\footnote{% + \url{http://www.gnu.org}}, % +faisant de R un logiciel libre. + +Ainsi disponible gratuitement et ouvert aux contributions de tous, +R gagne rapidement en popularité là même où S-PLUS avait acquis ses +lettres de noblesse, soit dans les milieux académiques. De simple +dérivé «\emph{not unlike S}», R devient un concurrent sérieux à +S-PLUS, puis le surpasse lorsque les efforts de développement se +rangent massivement derrière le projet libre. D'ailleurs John Chambers +place aujourd'hui ses efforts de réflexion et de développement dans le +projet R. + + +\section{Description sommaire de R} +\label{sec:rpresentation:description} + +R est un environnement intégré de manipulation de données, de calcul +et de préparation de graphiques. Toutefois, ce n'est pas seulement un +«autre» environnement statistique (comme SPSS ou SAS, par exemple), +mais aussi un langage de programmation complet et autonome. + +Tel que mentionné précédemment, le R est un langage principalement +inspiré du S et de Scheme. Le S était à son tour inspiré de plusieurs +langages, dont l'APL (autrefois un langage très prisé par les +actuaires) et le Lisp. Comme tous ces langages, le R est +\emph{interprété}, c'est-à-dire qu'il requiert un autre programme --- +l'\emph{interprète} --- pour que ses commandes soient exécutées. Par +opposition, les programmes de langages \emph{compilés}, comme le C ou +le C++, sont d'abord convertis en code machine par le compilateur puis +directement exécutés par l'ordinateur. + +Cela signifie donc que lorsque l'on programme en R, il n'est pas +possible de plaider l'attente de la fin de la phase de compilation +pour perdre son temps au travail. Désolé! + +Le programme que l'on lance lorsque l'on exécute R est en fait +l'interprète. Celui-ci attend que l'on lui soumette des commandes dans +le langage R, commandes qu'il exécutera immédiatement, une à une et +en séquence. + +Par analogie, Excel est certes un logiciel de manipulation de données, +de mise en forme et de préparation de graphiques, mais c'est aussi au +sens large un langage de programmation interprété. On utilise le +langage de programmation lorsque l'on entre des commandes dans une +cellule d'une feuille de calcul. L'interprète exécute les commandes et +affiche les résultats dans la cellule. + +Le R est un langage particulièrement puissant pour les applications +mathématiques et statistiques (et donc actuarielles) puisque +précisément développé dans ce but. Parmi ses caractéristiques +particulièrement intéressantes, on note: +\begin{itemize} +\item langage basé sur la notion de vecteur, ce qui simplifie les + calculs mathématiques et réduit considérablement le recours aux + structures itératives (boucles \texttt{for}, \texttt{while}, etc.); +\item pas de typage ni de déclaration obligatoire des variables; +\item programmes courts, en général quelques lignes de code seulement; +\item temps de développement très court. +\end{itemize} + + + +\section{Interfaces} +\label{sec:rpresentation:interfaces} + +R est d'abord et avant tout une application n'offrant qu'une invite de +commande du type de celle présentée à la +\autoref{fig:rpresentation:console}. En soi, cela n'est pas si +différent d'un tableur tel que Excel: la zone d'entrée de texte dans +une cellule n'est rien d'autre qu'une invite de commande\footnote{% + Merci à Markus Gesmann pour cette observation.}, par ailleurs aux +capacités d'édition plutôt réduites. + +\begin{figure} + \centering + \fbox{image} + \caption{Fenêtre de la console sous macOS au démarrage de R} + \label{fig:rpresentation:console} +\end{figure} + +\begin{itemize} +\item Sous Unix et Linux, R n'est accessible que depuis la ligne de + commande du système d'exploitation (terminal). Aucune interface + graphique n'est offerte avec la distribution de base de R. +\item Sous Windows, une interface graphique plutôt rudimentaire est + disponible. Elle facilite certaines opérations tel que + l'installation de packages externes, mais elle offre autrement peu + de fonctionnalités additionnelles pour l'édition de code R. +\item L'interface graphique de R sous macOS est la plus élaborée. + Outre la console présentée à la + \autoref{fig:rpresentation:console}, l'application \texttt{R.app} + comporte de nombreuses fonctionnalités, dont un éditeur de code + assez complet. +\end{itemize} + +\end{document} diff --git a/info/formation-latex-ul/doc/exercice_renvois.tex b/info/formation-latex-ul/doc/exercice_renvois.tex new file mode 100644 index 0000000000..e59a7d0e7a --- /dev/null +++ b/info/formation-latex-ul/doc/exercice_renvois.tex @@ -0,0 +1,45 @@ +\documentclass[11pt,french]{memoir} + \usepackage{babel} + \usepackage[autolanguage]{numprint} + %% Activer les lignes appropriées selon le moteur utilisé + \usepackage[utf8]{inputenc} % LaTeX + \usepackage[T1]{fontenc} % LaTeX + % \usepackage{fontspec} % XeLaTeX + \usepackage{icomma} + %% Activer le paquetage hyperref ci-dessous + % \usepackage[colorlinks]{hyperref} % toujours charger en dernier + + \title{Initiation au système de mise en page \LaTeX} + \author{Vincent Goulet} + +\begin{document} + +\maketitle + +\chapter{Classes et paquetages} + +\section{Marges variables} + +La longueur des lignes en {\LaTeX} est ajustée automatiquement en +fonction de la taille de la police de manière à ce que le nombre de +caractères par ligne demeure à peu près constant. Cela a pour but +d'améliorer la lisibilité: lorsqu'une ligne de texte est trop longue, +notre œil a plus de difficulté à suivre celle-ci de gauche à droite. + +\subsection{recto verso} + +En passant à une classe de document recto verso, vous remarquerez que +les marges gauche et droite ne sont pas identiques. C'est afin de +tenir compte de la marge de reliure. + +Le paquetage \textbf{babel} fournit les commandes \verb=\ier=, +\verb=\iere=, \verb=\ieme= pour écrire «premier», «première», +«deuxième» en chiffres: 1{\ier}, 1{\iere}, 36{\ieme}. + +En typographie française, on doit utiliser la virgule comme séparateur +décimal et l'espace fine comme séparateur des milliers. +\begin{displaymath} + y = 1,2x + 5, \quad x = 0, 1, \dots, \nombre{10 000}. +\end{displaymath} + +\end{document} diff --git a/info/formation-latex-ul/doc/exercice_subcaption.tex b/info/formation-latex-ul/doc/exercice_subcaption.tex new file mode 100644 index 0000000000..5f355bbfb1 --- /dev/null +++ b/info/formation-latex-ul/doc/exercice_subcaption.tex @@ -0,0 +1,47 @@ +\documentclass[11pt,article,french]{memoir} + \usepackage{babel} + \usepackage[autolanguage]{numprint} + %% Activer les lignes appropriées selon le moteur utilisé + \usepackage[utf8]{inputenc} % LaTeX + \usepackage[T1]{fontenc} % LaTeX + % \usepackage{fontspec} % XeLaTeX + \usepackage{icomma} % virgule intelligente en mathématiques + + %% Sous-légendes dans les environnements 'table' + \newsubfloat{table} + +\begin{document} + +\begin{table} + \caption{Conversion du nombre décimal $23,31$ en binaire.} + \begin{minipage}[t]{0.45\linewidth} + \begin{tabular*}{\linewidth}{crrcc} + \toprule + $i$ & \multicolumn{1}{c}{$v$} & $\lfloor v/2 \rfloor$ & $v \bmod 2$ & $x_i$ \\ + \midrule + $0$ & $23$ & $11$ & $1$ & $1$ \\ + $1$ & $11$ & $5$ & $1$ & $1$ \\ + $2$ & $5$ & $2$ & $1$ & $1$ \\ + $3$ & $2$ & $1$ & $0$ & $0$ \\ + $4$ & $1$ & $0$ & $1$ & $1$ \\ + \bottomrule + \end{tabular*} + \end{minipage} + \hfill + \begin{minipage}[t]{0.45\linewidth} + \begin{tabular*}{\linewidth}{ccccc} + \toprule + $i$ & $v$ & $2v$ & $\lfloor 2v \rfloor$ & $x_{-i}$ \\ + \midrule + $1$ & $0,31$ & $0,62$ & $0$ & $0$ \\ + $2$ & $0,62$ & $1,24$ & $1$ & $1$ \\ + $3$ & $0,24$ & $0,48$ & $0$ & $0$ \\ + $4$ & $0,48$ & $0,96$ & $0$ & $0$ \\ + $5$ & $0,96$ & $1,92$ & $1$ & $1$ \\ + \bottomrule + \end{tabular*} + \end{minipage} +\end{table} + + +\end{document} diff --git a/info/formation-latex-ul/doc/exercice_trucs.tex b/info/formation-latex-ul/doc/exercice_trucs.tex new file mode 100644 index 0000000000..22cd1fe9fc --- /dev/null +++ b/info/formation-latex-ul/doc/exercice_trucs.tex @@ -0,0 +1,102 @@ +\documentclass[11pt,french]{article} + \usepackage[utf8]{inputenc} + \usepackage[T1]{fontenc} + \usepackage{babel} + \usepackage[autolanguage]{numprint} + \usepackage{fontawesome} % icônes de la commande \doc + \usepackage{metalogo} % logo \XeLaTeX + \usepackage{hyperref} % hyperliens; chargé en dernier! + + \newcommand{\class}[1]{\textsf{#1}} + \newcommand{\fichier}[1]{\texttt{#1}} + + \newcommand{\link}[2]{\href{#1}{#2~\raisebox{-0.2ex}{\faExternalLink}}} + \newcommand{\doc}[3][documentation]{\link{#3}{#1}% + \marginpar[\hfill\faBookmark~\fichier{#2}]{\faBookmark~\fichier{#2}}} + + \title{\class{ulthese}: la classe pour les thèses et mémoires de + l'Université Laval} + \author{Faculté des études supérieures et postdoctorales\thanks{% + Cette classe et sa documentation ont été rédigées par Vincent + Goulet~(Faculté des sciences et de génie) avec la collaboration de + Koassi D'Almeida~(Faculté des études supérieures et postdoctorales) et + Pierre Lasou~(Bibliothèque).}} + +\begin{document} + +\maketitle + +\tableofcontents + +\section{Introduction} + +La classe \class{ulthese} permet de composer avec {\LaTeX} ou +{\XeLaTeX} des thèses et mémoires immédiatement conformes aux règles +générales de présentation matérielle de la Faculté des études +supérieures et postdoctorales (FESP) de l'Université Laval. Ces +règles définissent principalement la présentation des pages de titre +des thèses et mémoires ainsi que la disposition du texte sur la +page. La classe en elle-même est donc relativement simple. + +La classe \class{ulthese} est basée sur la classe \class{memoir}, +une extension de la classe standard \class{book} facilitant à +plusieurs égards la préparation de documents d'allure +professionnelle dans {\LaTeX}. La classe \class{memoir} est très +configurable et incorpore d'office plus de 30 des paquetages +(\emph{packages}) les plus populaires\footnote{% +Consulter la section~18.24 de la documentation de \class{memoir} +pour la liste ou encore le fichier journal (\emph{log}) de la +compilation d'un document utilisant la classe \class{ulthese}.}. % +L'intégralité des fonctionnalités de \class{memoir} se retrouve donc +disponible dans \class{ulthese}. + +La classe \class{memoir} fait partie des distributions +{\LaTeX} modernes; elle devrait donc être installée et disponible +sur votre système. La classe est livrée avec une % +\doc{memman.pdf}{http://texdoc.net/pkg/memoir}\footnote{% +Première occurence d'une convention de ce document quand il s'agit +de documentation d'un paquetage: un hyperlien mène vers une version +en ligne dans le site \href{http://texdoc.net}{TeXdoc Online} et on +trouve dans la marge le nom du fichier correspondant sur un système +doté d'une installation de {\TeX}~Live.} % +exhaustive: le manuel d'instructions fait près de 600~pages! Il peut +être utile de s'y référer de temps à autre pour réaliser une mise en +page particulière. + +\section{Installation} + +La classe est livrée avec la distribution {\TeX}~Live. Si vous +utilisez cette distribution et qu'elle est à jour, vous devriez +pouvoir utiliser \class{ulthese} sans autre intervention. Dans ce +cas, passez directement à la section suivante. + +Le reste de cette section explique comment installer la classe si +elle n'est pas disponible sur votre système ou si la version n'est +pas à jour. + +La classe est distribuée sous forme d'une archive +\fichier{ulthese.zip} via le réseau de sites \emph{Comprehensive R + Archive Network} (CTAN): +\begin{quote} + \url{http://www.ctan.org/pkg/ulthese} +\end{quote} + +L'installation de la classe consiste à créer le fichier +\fichier{ulthese.cls} et plusieurs gabarits \fichier{.tex} à partir du +code source documenté se trouvant dans le fichier +\fichier{ulthese.dtx}. Il est recommandé de simplement créer ces +fichiers dans le dossier de travail de la thèse ou du mémoire. + +Pour procéder à l'installation, décompresser l'archive +\fichier{ulthese.zip} dans le dossier de travail, puis compiler avec +{\LaTeX} le fichier \fichier{ulthese.ins} en exécutant +\begin{verbatim} +latex ulthese.ins +\end{verbatim} +depuis une invite de commande. Si l'on est peu familier avec l'invite +de commande, on peut aussi procéder comme avec tout document {\LaTeX}, +soit ouvrir le fichier \fichier{ulthese.ins} dans son éditeur de texte +favori et lancer depuis celui-ci la compilation avec {\LaTeX}, +pdf{\LaTeX}, {\XeLaTeX} ou un autre moteur {\TeX}. + +\end{document} diff --git a/info/formation-latex-ul/doc/exercice_ulthese.tex b/info/formation-latex-ul/doc/exercice_ulthese.tex new file mode 100644 index 0000000000..40b6154c29 --- /dev/null +++ b/info/formation-latex-ul/doc/exercice_ulthese.tex @@ -0,0 +1,69 @@ +\documentclass[PhD,english,french]{ulthese} + %% Encodage utilisé pour les caractères accentués dans les fichiers + %% source du document. Les gabarits sont encodés en UTF-8. Inutile avec + %% XeLaTeX, qui gère Unicode nativement. + \ifxetex\else \usepackage[utf8]{inputenc} \fi + + %% Charger ici les autres paquetages nécessaires pour le document. + %% Quelques exemples; décommenter au besoin. + %\usepackage{amsmath} % recommandé pour les mathématiques + %\usepackage{icomma} % gestion de la virgule dans les nombres + + %% Utilisation d'une autre police de caractères pour le document. + %% - Sous LaTeX + %\usepackage{mathpazo} % texte et mathématiques en Palatino + %\usepackage{mathptmx} % texte et mathématiques en Times + %% - Sous XeLaTeX + %\setmainfont{TeX Gyre Pagella} % texte en Pagella (Palatino) + %\setmathfont{TeX Gyre Pagella Math} % mathématiques en Pagella (Palatino) + %\setmainfont{TeX Gyre Termes} % texte en Termes (Times) + %\setmathfont{TeX Gyre Termes Math} % mathématiques en Termes (Times) + + %% Gestion des hyperliens dans le document. S'assurer que hyperref + %% est le dernier paquetage chargé. + \usepackage{hyperref} + \hypersetup{colorlinks,allcolors=ULlinkcolor} + + %% Options de mise en forme du mode français de babel. Consulter la + %% documentation du paquetage babel pour les options disponibles. + %% Désactiver (effacer ou mettre en commentaire) si l'option + %% 'nobabel' est spécifiée au chargement de la classe. + \frenchbsetup{% + StandardItemizeEnv=true, % format standard des listes + ThinSpaceInFrenchNumbers=true, % espace fine dans les nombres + og=«, fg=» % caractères « et » sont les guillemets + } + + %% Déclarations de la page titre. Remplacer les éléments entre < >. + %% Supprimer les caractères < >. Couper un long titre ou un long + %% sous-titre manuellement avec \\. + \titre{} + % \titre{Ceci est un exemple de long titre \\ + % avec saut de ligne manuel} + % \soustitre{Sous-titre le cas échéant} + % \soustitre{Ceci est un exemple de long sous-titre \\ + % avec saut de ligne manuel} + \auteur{} + \programme{Doctorat en -- } + \annee{<20xx>} + +\begin{document} + +\frontmatter % pages liminaires + +\pagetitre % production de la page titre + +\tableofcontents % production de la TdM +\cleardoublepage + +\listoftables % production de la liste des tableaux +\cleardoublepage + +\listoffigures % production de la liste des figures +\cleardoublepage + +\mainmatter % corps du document + +\include{b-a-ba-math} + +\end{document} diff --git a/info/formation-latex-ul/doc/formation-latex-ul-diapos.pdf b/info/formation-latex-ul/doc/formation-latex-ul-diapos.pdf new file mode 100644 index 0000000000..cc62ade050 Binary files /dev/null and b/info/formation-latex-ul/doc/formation-latex-ul-diapos.pdf differ diff --git a/info/formation-latex-ul/doc/formation-latex-ul.bib b/info/formation-latex-ul/doc/formation-latex-ul.bib new file mode 120000 index 0000000000..1d8a2af776 --- /dev/null +++ b/info/formation-latex-ul/doc/formation-latex-ul.bib @@ -0,0 +1 @@ +../source/formation-latex-ul.bib \ No newline at end of file diff --git a/info/formation-latex-ul/doc/formation-latex-ul.pdf b/info/formation-latex-ul/doc/formation-latex-ul.pdf new file mode 100644 index 0000000000..dace0b33a1 Binary files /dev/null and b/info/formation-latex-ul/doc/formation-latex-ul.pdf differ diff --git a/info/formation-latex-ul/doc/pagetitre.tex b/info/formation-latex-ul/doc/pagetitre.tex new file mode 100644 index 0000000000..5b68191278 --- /dev/null +++ b/info/formation-latex-ul/doc/pagetitre.tex @@ -0,0 +1,13 @@ +\begin{titlingpage} + \centering + \LARGE\bfseries% + \thetitle \\ + \vfill + \Large + par \\ + \vspace{1cm} + \theauthor + \vfill + \normalsize + \thedate +\end{titlingpage} \ No newline at end of file diff --git a/info/formation-latex-ul/doc/rpresentation.tex b/info/formation-latex-ul/doc/rpresentation.tex new file mode 100644 index 0000000000..d4c6914727 --- /dev/null +++ b/info/formation-latex-ul/doc/rpresentation.tex @@ -0,0 +1,78 @@ +\chapter{Présentation du langage R} +\label{chap:rpresentation} + +\section{Bref historique} +\label{sec:rpresentation:historique} + +À l'origine fut le S, un langage pour «programmer avec des données» +développé chez Bell Laboratories à partir du milieu des années 1970 +par une équipe de chercheurs menée par John~M.\ Chambers. Au fil du +temps, le S a connu quatre principales versions communément +identifiées par la couleur du livre dans lequel elles étaient +présentées: % +version «originale», % +version 2, % +version 3 et % +version 4; % +voir aussi et pour plus de détails. + +Dès la fin des années 1980 et pendant près de vingt ans, le S a +principalement été popularisé par une mise en {\oe}uvre commerciale +nommée S-PLUS. En 2008, Lucent Technologies a vendu le langage S à +Insightful Corporation, ce qui a effectivement stoppé le développement +du langage par ses auteurs originaux. Aujourd'hui, le S est +commercialisé de manière relativement confidentielle sous le nom +Spotfire S$+$ par TIBCO Software. + +Ce qui a fortement contribué à la perte d'influence de S-PLUS, c'est +une nouvelle mise en {\oe}uvre du langage développée au milieu des +années 1990. Inspirés à la fois par le S et par Scheme (un dérivé du +Lisp), Ross Ihaka et Robert Gentleman proposent un langage pour +l'analyse de données et les graphiques qu'ils nomment R. À la +suggestion de Martin Maechler de l'ETH de Zurich, les auteurs décident +d'intégrer leur nouveau langage au projet GNU\footnote{% + \url{http://www.gnu.org}}, % +faisant de R un logiciel libre. + +Ainsi disponible gratuitement et ouvert aux contributions de tous, +R gagne rapidement en popularité là même où S-PLUS avait acquis ses +lettres de noblesse, soit dans les milieux académiques. De simple +dérivé «\emph{not unlike S}», R devient un concurrent sérieux à +S-PLUS, puis le surpasse lorsque les efforts de développement se +rangent massivement derrière le projet libre. D'ailleurs John Chambers +place aujourd'hui ses efforts de réflexion et de développement dans le +projet R. + + +\section{Interfaces} +\label{sec:rpresentation:interfaces} + +R est d'abord et avant tout une application n'offrant qu'une invite de +commande du type de celle présentée à la +\ref{fig:rpresentation:console}. En soi, cela n'est pas si différent +d'un tableur tel que Excel: la zone d'entrée de texte dans une cellule +n'est rien d'autre qu'une invite de commande\footnote{% + Merci à Markus Gesmann pour cette observation.}, par ailleurs aux +capacités d'édition plutôt réduites. + +\begin{figure} + \centering +% \includegraphics[width=\textwidth]{console-screenshot} + \caption{Fenêtre de la console sous macOS au démarrage de R} + \label{fig:rpresentation:console} +\end{figure} + +\begin{itemize} +\item Sous Unix et Linux, R n'est accessible que depuis la ligne de + commande du système d'exploitation (terminal). Aucune interface + graphique n'est offerte avec la distribution de base de R. +\item Sous Windows, une interface graphique plutôt rudimentaire est + disponible. Elle facilite certaines opérations tel que + l'installation de packages externes, mais elle offre autrement peu + de fonctionnalités additionnelles pour l'édition de code R. +\item L'interface graphique de R sous Mac OS~X est la plus élaborée. + Outre la console présentée à la + \ref{fig:rpresentation:console}, l'application \texttt{R.app} + comporte de nombreuses fonctionnalités, dont un éditeur de code + assez complet. +\end{itemize} diff --git a/info/formation-latex-ul/doc/ul_p.pdf b/info/formation-latex-ul/doc/ul_p.pdf new file mode 120000 index 0000000000..35498b3d52 --- /dev/null +++ b/info/formation-latex-ul/doc/ul_p.pdf @@ -0,0 +1 @@ +../source/images/ul_p.pdf \ No newline at end of file diff --git a/info/formation-latex-ul/source/apparence-diapos.tex b/info/formation-latex-ul/source/apparence-diapos.tex new file mode 100644 index 0000000000..8a6ad45712 --- /dev/null +++ b/info/formation-latex-ul/source/apparence-diapos.tex @@ -0,0 +1,151 @@ +%%% Copyright (C) 2018 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\section{Apparence et disposition du texte} + +\subsection{Police et style} + +\begin{frame} + \frametitle{Police de caractères} + + Par défaut, {\LaTeX} compose les documents dans la police + {\CM Computer Modern}. + + \begin{itemize} + \item Aujourd'hui plus facile d'utiliser d'autres polices, surtout + avec {\XeLaTeX} + \item \alert{Attention}: peu de polices adaptées pour les + mathématiques + \item Commandes pour modifier les \alert{attributs} de la police + (famille, forme, graisse) + \item Commandes pour modifier la \alert{taille} du texte (de + \cs{tiny} à \cs{Huge}) + \end{itemize} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Italique} + \begin{itemize} + \item<1-> Une des propriétés les \emph{plus utilisées} dans le texte + \vfill + \item<1-> Commande sémantique: +\begin{lstlisting} +\emph`\marg{texte}' +\end{lstlisting} + \vfill + \item<2-> Par défaut: texte en italique dans texte droit et vice versa + \begin{demo} + \small + \begin{texample}[0.48\linewidth] +\begin{lstlisting} +C'était un peu \emph{rough} +par moments +\end{lstlisting} + \producing + C'était un peu \emph{rough} par moments + \end{texample} + + \begin{texample}[0.48\linewidth] +\begin{lstlisting} +Il m'a dit: «\emph{Enough +\emph{poutine} for the +week!}» +\end{lstlisting} + \producing + Il m'a dit: «\emph{Enough \emph{poutine} for the week!}» + \end{texample} + \end{demo} + \item<3-> Pas de commande pour souligner en {\LaTeX\dots} et ce n'est + pas une omission! + \end{itemize} +\end{frame} + +\subsection{Disposition du texte} + +\begin{frame}[fragile] + \frametitle{Listes} + \begin{itemize} + \item Deux principales sortes de listes: + \begin{enumerate} + \item \alert{à puce} avec environnement \texttt{itemize} + \item \alert{numérotée} avec environnement \texttt{enumerate} + \end{enumerate} + \item Possible de les imbriquer les unes dans les autres + \item Marqueurs adaptés automatiquement jusqu'à 4 niveaux + \end{itemize} + \pause + +\begin{lstlisting} +\begin{itemize} +\item Deux principales sortes de listes: + \begin{enumerate} + \item à puce avec environnement \texttt{itemize} + \item numérotée avec environnement \texttt{enumerate} + \end{enumerate} +\item Possible de les imbriquer les unes dans les autres +\item Marqueurs adaptés automatiquement jusqu'à 4 niveaux +\end{itemize} +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Notes de bas de page} + \begin{itemize} + \item Note de bas de page insérée avec la commande +\begin{lstlisting} +\footnote`\marg{texte de la note}' +\end{lstlisting} + \item Commande doit suivre immédiatement le texte à annoter + \item Numérotation et disposition automatiques + \end{itemize} +\end{frame} + +\begin{frame}[fragile=singleslide] + \frametitle{Code source} + \begin{itemize} + \item Environnement \texttt{verbatim} +\begin{lstlisting} +\begin{verbatim} +Texte disposé exactement tel qu'il est tapé +dans une police à largeur fixe +\end{verbatim} +\end{lstlisting} + \item Pour usage plus intensif, utiliser le paquetage \pkg{listings} + \end{itemize} +\end{frame} + +\subsection{[~Exercice~]} + +\begin{exercice} + Utiliser le fichier \fichier{exercice\_complet.tex}. + + \begin{enumerate} + \item Étudier le code source du fichier, puis le compiler. + \item Supprimer l'option \texttt{article} au chargement de la classe + et compiler de nouveau le document. Observer l'effet de cette + option. + \item Effectuer les modifications suivantes au document. + \begin{enumerate}[a)] + \item Dernier paragraphe de la première section, placer toute la + phrase débutant par \texttt{«De simple dérivé»} à l'intérieur + d'une commande \cs{emph}. + \item Changer la puce des listes en spécifiant le symbole + \texttt{\$>\$} pour \texttt{ItemLabeli} dans la commande + \cs{frenchbsetup} du préambule. + \end{enumerate} + \end{enumerate} +\end{exercice} + +%%% Local Variables: +%%% TeX-master: "formation-latex-ul-diapos" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/apparence.tex b/info/formation-latex-ul/source/apparence.tex new file mode 100644 index 0000000000..4c35253f0f --- /dev/null +++ b/info/formation-latex-ul/source/apparence.tex @@ -0,0 +1,576 @@ +%%% Copyright (C) 2018 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\chapter{Apparence et disposition du texte} +\label{chap:apparence} + +Les bonnes pratiques dictent de séparer le contenu du texte de son +apparence lorsque l'on utilise un système de mise en page comme +{\LaTeX}. Néanmoins, vient un moment où l'on peut souhaiter modifier +l'apparence générale du document ou disposer le texte d'une manière +particulière. {\LaTeX} offre toute la flexibilité voulue, que ce soit +pour contrôler les attributs et la taille des polices de caractères, +disposer du texte sous forme de liste numérotée ou à puce, centrer du +texte ou créer des notes de base de page et des citations. + +\section{Police de caractères} +\label{sec:apparence:police} + +Par défaut, tous les documents {\LaTeX} utilisent la même police de +caractères\footnote{% + Donald~Knuth a créé la police en même temps que {\TeX}.}, % +{\fontfamily{lmr}\selectfont Computer Modern}. Chose qui ne manquera +pas de surprendre les utilisateurs débutants: le système n'a pas été +conçu pour changer facilement la police du document! + +Cela dit, il est aujourd'hui devenu assez simple d'utiliser d'autres +polices pour son document, surtout avec les moteurs +{\TeX} modernes comme {\XeTeX}. La \autoref{sec:trucs:polices} traite +du sujet plus en détail. + +Cette section se concentre plutôt sur le changement d'\emph{attribut} +de la police du document, qu'il s'agisse de la famille (avec ou sans +empattements, à largeur fixe ou variable), de la forme (droit, +italique, penché) ou de la graisse (normal, gras). Le +\autoref{tab:apparence:police} dresse la liste des commandes de +changement d'attribut de la police. + +\begin{table} + \centering + \caption[Commandes de changement d'attribut de la police]{% + Commandes de changement d'attribut de la police. Les + commandes de la deuxième colonne s'appliquent à tout le texte qui + suit. Celles de la troisième colonne s'appliquent uniquement au + texte en argument.} + \label{tab:apparence:police} + \begin{tabularx}{0.9\linewidth}{p{0.35\linewidth}Xl} + \toprule + \textbf{Famille} \\ + \textrm{romain} & \cmd{\rmfamily} & \cmd{\textrm}\marg{texte} \\ + \texttt{largeur fixe} & \cmd{\ttfamily} & \cmd{\texttt}\marg{texte} \\ + \textsf{sans empattements} & \cmd{\sffamily} & \cmd{\textsf}\marg{texte} \\ + \addlinespace[6pt] + \textbf{Forme} \\ + \textup{\rmfamily droit} & \cmd{\upshape} & \cmd{\textup}\marg{texte} \\ + \textit{\rmfamily italique} & \cmd{\itshape} & \cmd{\textit}\marg{texte} \\ + \textsl{penché}$^\dagger$ & \cmd{\slshape} & \cmd{\textsl}\marg{texte} \\ + \textsc{\rmfamily petites capitales} & \cmd{\scshape} & \cmd{\textsc}\marg{texte} \\ + + \addlinespace[6pt] + \textbf{Série} \\ + \textmd{\rmfamily moyen} & \cmd{\mdseries} & \cmd{\textmd}\marg{texte} \\ + \textbf{\rmfamily gras} & \cmd{\bfseries} & \cmd{\textbf}\marg{texte} \\ + \bottomrule + \end{tabularx} \\ + \raggedright + \hspace*{3em}{\footnotesize $^\dagger$ diffère de l'italique selon + la police utilisée} +\end{table} + +La commande +\begin{lstlisting} +\normalfont +\end{lstlisting} +permet de revenir d'un trait à la police par défaut, soit le romain, +droit de graisse moyenne. + +\begin{exemple} + \label{ex:apparence:police} + La commande \cmd{\setsecheadstyle} de la classe \class{memoir} + permet de modifier facilement le style des titres de section pour + tout le document. Pour obtenir des titres de section en gras sans + empattements, on placera dans le préambule d'un document utilisant + cette classe la commande suivante: +\begin{lstlisting} +\setsecheadstyle{\normalfont\sffamily\bfseries} +\end{lstlisting} + L'utilisation de \cmd{\normalfont} au début de la série de commandes + permet de réinitialiser le style des titres, question d'éviter + d'éventuels conflits avec une configuration antérieure. % + \qed +\end{exemple} + +\section{Taille du texte} +\label{sec:apparence:taille} + +On se souviendra que l'on règle la taille de base du texte au +chargement de la classe du document, tel qu'expliqué à la +\autoref{sec:bases:classes}. Les commandes du +\autoref{tab:apparence:taille} permettent néanmoins de réduire ou +d'agrandir la taille des caractères pour une section du texte. Les +commandes servent également pour la configuration de l'apparence +générale du document dans le préambule. + +La taille des car + +\begin{table} + \centering + \caption[Commandes de changement de la taille des caractères]{% + Commandes de changement de la taille des caractères. Toutes + les tailles sont relatives à celle de police de base du document.} + \label{tab:apparence:taille} + \begin{tabularx}{0.9\linewidth}{Xl} + \toprule + \cmd{\miniscule}$^\dagger$ & {\miniscule minuscule} \\ + \cmd{\tiny} & {\tiny vraiment petit} \\ + \cmd{\scriptsize} & {\scriptsize encore plus petit} \\ + \cmd{\footnotesize} & {\footnotesize plus petit} \\ + \cmd{\small} & {\small petit} \\ + \cmd{\normalsize} & {\normalsize taille normale} \\ + \cmd{\large} & {\large grand} \\ + \cmd{\Large} & {\Large plus grand} \\ + \cmd{\LARGE} & {\LARGE encore plus grand} \\ + \cmd{\huge} & {\huge énorme} \\ + \cmd{\Huge} & {\Huge encore plus énorme} \\ + \cmd{\HUGE}$^\dagger$ & {\HUGE vraiment énorme} \\ + \bottomrule + \end{tabularx} \\ + \raggedright + \hspace*{3em}{\footnotesize $^\dagger$ ajout de la classe + \class{memoir} (et donc aussi de \class{ulthese})} +\end{table} + +\begin{exemple} + \label{ex:taille-du-texte} + Les titres de sections sont généralement composés dans une taille + supérieure à celle du texte. La commande suivante permet d'augmenter + de deux échelons la taille des titres de + l'\autoref{ex:apparence:police}: +\begin{lstlisting} +\setsecheadstyle{\normalfont\Large\sffamily\bfseries} +\end{lstlisting} + \qed +\end{exemple} + +\section{Italique} + +L'italique est l'un des attributs de police les plus fréquemment +employés dans le texte. Il sert, notamment, à insister sur des mots, à +composer les expressions et locutions en langue étrangère ou à +détacher les titres d'{\oe}uvres du fil du texte. + +Évidemment, il est possible d'obtenir de l'italique avec la commande +\cmd{\textit} du \autoref{tab:apparence:police}. Cependant, nous +recommandons plutôt d'utiliser une commande spécifiquement dédiée à +mettre en évidence une portion de texte: +\begin{lstlisting} +\emph`\marg{texte}' +\end{lstlisting} +Par défaut, la commande \cmd{\emph} (pour \emph{emphasis}, «emphase») +placera \meta{texte} en italique dans du texte en romain (droit), ou +encore en romain dans du texte déjà en italique. +\begin{demo} + \begin{texample} +\begin{lstlisting} +C'était un peu \emph{rough} +par moments. +\end{lstlisting} + \producing + C'était un peu \emph{rough} par moments. + \end{texample} + \begin{texample} +\begin{lstlisting} +Il m'a dit: «\emph{Enough +\emph{poutine} for the +week!}» +\end{lstlisting} + \producing + Il m'a dit: «\emph{Enough \emph{poutine} for the week!}» + \end{texample} +\end{demo} + +\tipbox{Le soulignement\index{soulignement} servait pour remplacer + l'italique à l'ère des dactylos. C'est aujourd'hui une marque de + typographie très rarement utilisée, voire à éviter. Ce n'est donc + pas pour rien qu'il n'existe pas de commande de soulignement dans + les classes {\LaTeX} standards.} + + +\section{Listes} +\label{sec:apparence:listes} + +{\LaTeX} offre deux environnements principaux pour la composition de +listes ou d'énumérations: +\begin{demo} + \begin{minipage}{0.48\linewidth} +\begin{lstlisting} +\begin{itemize} +\item `\meta{texte}' +\item `\meta{texte}' +... +\end{itemize} +\end{lstlisting} + \end{minipage} + \hfill + \begin{minipage}{0.48\linewidth} +\begin{lstlisting} +\begin{enumerate} +\item `\meta{texte}' +\item `\meta{texte}' +... +\end{enumerate} +\end{lstlisting} + \end{minipage} +\end{demo} +L'environnement \Ie{itemize} crée une liste à puce, alors que +l'environnement \Ie{enumerate} crée une énumération. Il est possible +d'imbriquer les listes les unes dans les autres, et ce, peu importe +leur type. {\LaTeX} se chargera d'adapter les marqueurs ou la +numérotation jusqu'à quatre niveaux de profondeur. + +Illustrons ces concepts par le biais d'un exemple. + +\begin{exemple} + La liste mixte suivante résume les étapes de création d'une liste + avec {\LaTeX}. + \begin{enumerate} + \item Décider s'il s'agit d'une liste à puce ou d'une énumération; + \begin{itemize} + \item pour une liste à puce utiliser environnement \Ie{itemize}; + \begin{itemize} + \item chaque niveau d'une liste à puce possède un marqueur + différent; + \end{itemize} + \item pour une énumération utiliser environnement \Ie{enumerate}; + \end{itemize} + \item Débuter chaque élément de la liste par la commande + \cmdprint{\item}. + \begin{enumerate} + \item utiliser simplement un autre environnement \Pe{itemize} ou + \Pe{enumerate} comme texte d'un élément pour créer des listes + imbriquées; + \item {\LaTeX} ajustera automatiquement les marqueurs; + \end{enumerate} + \item S'assurer de fermer tous les environnements dans le bon ordre + pour retourner au texte normal. + \end{enumerate} + + On a composé la liste ci-dessus avec le texte suivant. + \begin{demo} +\begin{lstlisting}[emph={enumerate,itemize}] +\begin{enumerate} +\item Décider s'il s'agit d'une liste à puce ou [...] + \begin{itemize} + \item pour une liste à puce utiliser [...] + \begin{itemize} + \item chaque niveau d'une liste à puce [...] + \end{itemize} + \item pour une énumération utiliser [...] + \end{itemize} +\item Débuter chaque élément de la liste par la commande + \verb=\item=. + \begin{enumerate} + \item utiliser simplement un autre environnement [...] + \item {\LaTeX} ajustera automatiquement les marqueurs; + \end{enumerate} +\item S'assurer de fermer tous les environnements [...] +\end{enumerate} +\end{lstlisting} + \end{demo} + \qed +\end{exemple} + +{\LaTeX} permet de configurer à peu près toutes les facettes de la +présentation des listes: puces, folios, alignement, espacement entre +les éléments, etc. Cette grande flexibilité implique une certaine +complexité et la configuration des listes dépasse le cadre du présent +document. Plusieurs paquetages facilitent toutefois la configuration +des listes; nous recommandons à ce titre le paquetage \pkg{enumitem} +\citep{enumitem}. + +\tipbox{Le mode français de \pkg{babel} remplace les puces par défaut + en anglais ({\textbullet}, {\textendash}, $\ast$ et $.$ pour chacun + des quatre niveaux de l'environnement \Ie{itemize}) par le tiret + cadratin {\textemdash}. + + On peut désactiver cette fonctionnalité de \pkg{babel} en entrant + l'option \code{StardardItemLabels=true} dans \cmd{\frenchbsetup} + (\autoref{sec:bases:francais:babel}). + + De plus, il est possible de modifier le symbole utilisé comme puce + pour l'un, l'autre ou chacun des quatre niveaux en configurant, + toujours via \cmd{\frenchbsetup}, les options du paquetage + \code{ItemLabeli}, \code{ItemLabelii}, \code{ItemLabeliii} et + \code{ItemLabeliv}. La \emph{Comprehensive {\LaTeX} Symbol List} + \citep{comprehensive} propose une immense sélection de symboles + pouvant faire office de puces.} + +Il existe un troisième environnement, plus rarement utilisé, pour +composer du texte sous une forme s'apparentant à une liste. +L'environnement \Ie{description} permet d'associer des termes à une +définition ou une description pour chacun. +\begin{demo} + \begin{texample} +\begin{lstlisting} +\begin{description} +\item[rouge] première couleur + primaire +\item[vert] seconde couleur + primaire +\item[bleu] troisième couleur + primaire +\end{description} +\end{lstlisting} + \producing +\begin{description} +\item[rouge] première couleur primaire +\item[vert] seconde couleur primaire +\item[bleu] troisième couleur primaire +\end{description} + \end{texample} +\end{demo} + + +\section{Texte centré} +\label{sec:apparence:centering} + +On obtient du texte centré avec l'environnement \Ie{center} ou à +l'aide de la commande \cmd{\centering}. L'environnement sert +principalement pour centrer un bloc de texte. +\begin{demo} + \begin{eqxample} +\begin{lstlisting} +\begin{center} + Centrer un mot ou une + expression les met en + évidence. +\end{center} +\end{lstlisting} + \producing +\begin{center} + Centrer un mot ou une expression + les met en évidence. +\end{center} + \end{eqxample} +\end{demo} +On remarquera que le texte centré n'est pas placé en retrait des +marges gauche et droite (illustrées par les lignes verticales +ci-dessus). Lorsque le texte fait plus d'une ligne, on pourra +souhaiter forcer des retours à la ligne avec la commande {\bs\bs}. +\begin{demo} + \begin{eqxample} +\begin{lstlisting} +\begin{center} + Centrer un mot \\ + ou une expression \\ + les met en évidence. +\end{center} +\end{lstlisting} + \producing +\begin{center} + Centrer un mot \\ + ou une expression \\ + les met en évidence. +\end{center} + \end{eqxample} +\end{demo} + +La commande \cmd{\centering} s'applique à tout le texte qui suit. Elle +s'avère surtout utile à l'intérieur d'environnements comme \Pe{table} +ou \Pe{figure} pour centrer un tableau ou une figure sur la page. On +trouvera plusieurs exemples de son utilisation +au \autoref{chap:tableaux}. + + +\section{Citations} +\label{sec:apparence:citations} + +Une citation est une reproduction d'un propos ou d'un écrit antérieur +d'un auteur qui est habituellement mentionné. Il existe deux +environnements dans {\LaTeX} pour composer les citations. + +\begin{quote} + L'environnement \Ie{quote} est utilisé pour les citations courtes. + Le texte est placé en retrait des marges gauche et droite. Le + présent texte a été placé dans cet environnement. +\end{quote} + +\begin{quotation} + L'environnement \Ie{quotation}, lui, sert pour les citations plus + longues se comptant en paragraphes. + + La principale différence par rapport à l'environnement \Pe{quote}, + c'est que \Pe{quotation} prend aussi en charge les marques de + paragraphes. + + Ce paragraphe et les deux précédents sont composés dans + un environnement \Pe{quotation}. +\end{quotation} + + +\section{Notes de bas de page} +\label{sec:apparence:notes} + +Une note de bas de page --- ou tout simplement \emph{note}, +puisqu'elle peut apparaitre ailleurs qu'au bas de la page --- est un +court texte qui sert à expliquer un mot ou une phrase du texte +principal. L'\emph{appel de note} désigne le signe, le chiffre ou la +lettre que l'on place après la partie à expliquer. + +La commande +\begin{lstlisting} +\footnote`\marg{texte de la note}' +\end{lstlisting} +insère un appel de note à l'endroit où la commande apparait dans le +texte et affiche \meta{texte de la note} à l'endroit +approprié\footnote{% + Au bas de la page par défaut, comme ici. La note est composée dans + un corps plus petit et elle est séparée du texte par un trait.}. % +{\LaTeX} se charge automatiquement de la numérotation et de la +disposition des notes. + +Pour éviter que l'appel de note ne soit séparé du texte à expliquer, +la commande \cmd{\footnote} doit immédiatement suivre celui-ci. La +gestion des espaces peut alors devenir délicate, surtout si l'appel de +note se trouve en fin de phrase. Nous recommandons de faire bon usage +du symbole \% pour délimiter le contenu de \cmdprint{\footnote} du +texte courant. +\begin{lstlisting}[emph=footnote] +%% note en fin de phrase +Nous remercions Pierre Lasou\footnote{% + Spécialiste en ressources documentaires.}. % +Il fut d'une grande aide dans la préparation de ... +\end{lstlisting} +\begin{lstlisting}[emph=footnote] +%% note au fil de la phrase +Nous soulignons que Pierre Lasou\footnote{% + Spécialiste en ressources documentaires.} % +fut d'une grande aide dans la préparation de ... +\end{lstlisting} + +Les usages en matière de numérotation et de disposition des notes +varient beaucoup d'une discipline à l'autre: numérotation consécutive +pour tout le document, notes dans la marge plutôt qu'au bas de la +page, notes rassemblées à la fin de chaque chapitre ou à la toute fin +du document, etc. Différents paquetages permettent de réaliser ce type +de disposition, notamment \pkg{footmisc} \citep{footmisc}. Les +utilisateurs de la classe \class{ulthese} pourront également tirer +profit des nombreuses fonctionnalités de la classe \class{memoir} pour +la gestion des notes; consulter le chapitre~12 de la % +\doc{memoir}{http://texdoc.net/pkg/memoir} de \class{memoir}. + + +\section{Texte brut et code source} +\label{sec::apparence:code} + +Il est parfois utile d'afficher du texte exactement comme il a été +saisi dans un fichier, sans que {\LaTeX} n'interprète les commandes +qui s'y trouvent ou n'en modifie la disposition. C'est ainsi que nous +avons composé les nombreux extraits de code du présent document. + +L'environnement \Ie{verbatim} permet de présenter du texte tel qu'il +est entré dans le code source du document. +\begin{demo} + \begin{texample} +\begin{lstlisting} +\begin{verbatim} +Texte disposé exactement tel +qu'il est tapé et +présenté dans une police +à largeur fixe +\end{verbatim} +\end{lstlisting} + \producing +\begin{verbatim} +Texte disposé exactement tel +qu'il est tapé et +présenté dans une police +à largeur fixe +\end{verbatim} +\end{texample} +\end{demo} +La variante \Ie{verbatim*} affiche les espaces de manière explicite en +les remplaçant par le symbole \verb*| |. C'est surtout utile pour le +code source de langages informatiques où le nombre d'espaces joue un rôle +important. + +Pour afficher du texte brut ou une commande {\LaTeX} au fil du texte, +on aura recours à la commande +\cmd{\verb}. Sa syntaxe est un peu particulière: +\begin{lstlisting} +\verb`\meta{c}\meta{source}\meta{c}' +\end{lstlisting} +où \meta{c} est un symbole quelconque ne se trouvant pas dans +\meta{source} et qui sert à délimiter le début et la fin de +\meta{source}. La variante +\cmd{\verb*} affiche elle aussi les espaces. +\begin{demo} + \begin{texample} +\begin{lstlisting} +{\LaTeX} n'interprète pas la +commande \verb=\bfseries= +lorsqu'elle est placée +dans \verb=\verb=. +\end{lstlisting} + \producing + {\LaTeX} n'interprète pas la + commande \verb=\bfseries= + lorsqu'elle est placée + dans \verb=\verb=. + \end{texample} + \begin{texample} +\begin{lstlisting} +Le nombre d'espaces entre les +mots ne compte pas dans +{\LaTeX}: \verb*=a b= et +\verb*=a b= donnent «a b». +\end{lstlisting} + \producing + Le nombre d'espaces entre les mots ne + compte pas dans {\LaTeX}: \verb*=a b= et + \verb*=a b= donnent «a b». + \end{texample} +\end{demo} + +Pour tout document comportant une grande quantité de texte brut ou de +code source, nous recommandons d'avoir le paquetage \pkg{listings} +\citep{listings}. La \autoref{sec:trucs:listings} approfondit le +sujet. + + +%%% +%%% Exercices +%%% + +\section{Exercice} +\label{sec:apparence:exercices} + +% \Opensolutionfile{solutions}[solutions-apparence] + +% \begin{Filesave}{solutions} +% \section*{Chapitre \ref*{chap:apparence}} +% \addcontentsline{toc}{section}{Chapitre \protect\ref*{chap:apparence}} + +% \end{Filesave} + +\begin{exercice}[nosol] + \begin{enumerate} + \item Ouvrir le fichier \fichier{exercice\_complet.tex} et en + étudier le code source, puis le compiler. + \item Supprimer l'option \code{article} au chargement de la classe + et compiler de nouveau le document. Observer l'effet de cette + option de la classe \class{memoir}. + \item Au dernier paragraphe de la première section, placer toute la + phrase débutant par \code{«De simple dérivé»} à l'intérieur d'une + commande \cmd{\emph} et compiler de nouveau le document. + \item Changer la puce des listes pour le symbole \code{\$>\$} et + compiler de nouveau le document. + \end{enumerate} +\end{exercice} + +% \Closesolutionfile{solutions} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "formation-latex-ul" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/auxdoc/exemple-classe-article.pdf b/info/formation-latex-ul/source/auxdoc/exemple-classe-article.pdf new file mode 100644 index 0000000000..9dea32d048 Binary files /dev/null and b/info/formation-latex-ul/source/auxdoc/exemple-classe-article.pdf differ diff --git a/info/formation-latex-ul/source/auxdoc/exemple-classe-article.tex b/info/formation-latex-ul/source/auxdoc/exemple-classe-article.tex new file mode 100644 index 0000000000..a4db55c67c --- /dev/null +++ b/info/formation-latex-ul/source/auxdoc/exemple-classe-article.tex @@ -0,0 +1,23 @@ +\documentclass{article} + \usepackage{lipsum} + +\begin{document} + +\section{Lorem ipsum} + +\lipsum[1] + +\subsection{Nam dui ligula} + +\lipsum[2-3] + +\subsubsection{Fusce mauris} + +\lipsum[4-6] + +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/info/formation-latex-ul/source/auxdoc/exemple-classe-book.pdf b/info/formation-latex-ul/source/auxdoc/exemple-classe-book.pdf new file mode 100644 index 0000000000..3470a22080 Binary files /dev/null and b/info/formation-latex-ul/source/auxdoc/exemple-classe-book.pdf differ diff --git a/info/formation-latex-ul/source/auxdoc/exemple-classe-book.tex b/info/formation-latex-ul/source/auxdoc/exemple-classe-book.tex new file mode 100644 index 0000000000..b3b74dfa9a --- /dev/null +++ b/info/formation-latex-ul/source/auxdoc/exemple-classe-book.tex @@ -0,0 +1,23 @@ +\documentclass{book} + \usepackage{lipsum} + +\begin{document} + +\chapter{Lorem ipsum} + +\lipsum[1] + +\section{Nam dui ligula} + +\lipsum[2-3] + +\subsection{Fusce mauris} + +\lipsum[4-6] + +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/info/formation-latex-ul/source/auxdoc/exemple-classe-report.pdf b/info/formation-latex-ul/source/auxdoc/exemple-classe-report.pdf new file mode 100644 index 0000000000..308a459cbb Binary files /dev/null and b/info/formation-latex-ul/source/auxdoc/exemple-classe-report.pdf differ diff --git a/info/formation-latex-ul/source/auxdoc/exemple-classe-report.tex b/info/formation-latex-ul/source/auxdoc/exemple-classe-report.tex new file mode 100644 index 0000000000..8fe7a8947d --- /dev/null +++ b/info/formation-latex-ul/source/auxdoc/exemple-classe-report.tex @@ -0,0 +1,23 @@ +\documentclass{report} + \usepackage{lipsum} + +\begin{document} + +\chapter{Lorem ipsum} + +\lipsum[1] + +\section{Nam dui ligula} + +\lipsum[2-3] + +\subsection{Fusce mauris} + +\lipsum[4-6] + +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/info/formation-latex-ul/source/auxdoc/exemple-renvoi-autoref.pdf b/info/formation-latex-ul/source/auxdoc/exemple-renvoi-autoref.pdf new file mode 100644 index 0000000000..f3375c31be Binary files /dev/null and b/info/formation-latex-ul/source/auxdoc/exemple-renvoi-autoref.pdf differ diff --git a/info/formation-latex-ul/source/auxdoc/exemple-renvoi-autoref.tex b/info/formation-latex-ul/source/auxdoc/exemple-renvoi-autoref.tex new file mode 100644 index 0000000000..33300d4146 --- /dev/null +++ b/info/formation-latex-ul/source/auxdoc/exemple-renvoi-autoref.tex @@ -0,0 +1,24 @@ +\documentclass[11pt]{article} + \usepackage{fontspec} + \usepackage[colorlinks]{hyperref} + +\begin{document} + +\section{Définitions} +\label{sec:definitions} + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. +Duis in auctor dui. Vestibulum ut, placerat ac, adipiscing +vitae, felis. + +\section{Historique} + +Tel que vu à la \autoref{sec:definitions}, on a... + +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-engine: xetex +%%% TeX-master: t +%%% End: diff --git a/info/formation-latex-ul/source/auxdoc/exemple-renvoi-hyperref.pdf b/info/formation-latex-ul/source/auxdoc/exemple-renvoi-hyperref.pdf new file mode 100644 index 0000000000..037517fd9b Binary files /dev/null and b/info/formation-latex-ul/source/auxdoc/exemple-renvoi-hyperref.pdf differ diff --git a/info/formation-latex-ul/source/auxdoc/exemple-renvoi-hyperref.tex b/info/formation-latex-ul/source/auxdoc/exemple-renvoi-hyperref.tex new file mode 100644 index 0000000000..c9ac17985c --- /dev/null +++ b/info/formation-latex-ul/source/auxdoc/exemple-renvoi-hyperref.tex @@ -0,0 +1,24 @@ +\documentclass[11pt]{article} + \usepackage{fontspec} + \usepackage[colorlinks]{hyperref} + +\begin{document} + +\section{Définitions} +\label{sec:definitions} + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. +Duis in auctor dui. Vestibulum ut, placerat ac, adipiscing +vitae, felis. + +\section{Historique} + +Tel que vu à la section \ref{sec:definitions}, on a... + +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-engine: xetex +%%% TeX-master: t +%%% End: diff --git a/info/formation-latex-ul/source/auxdoc/exemple-renvoi.pdf b/info/formation-latex-ul/source/auxdoc/exemple-renvoi.pdf new file mode 100644 index 0000000000..bad7115cbd Binary files /dev/null and b/info/formation-latex-ul/source/auxdoc/exemple-renvoi.pdf differ diff --git a/info/formation-latex-ul/source/auxdoc/exemple-renvoi.tex b/info/formation-latex-ul/source/auxdoc/exemple-renvoi.tex new file mode 100644 index 0000000000..554377cb75 --- /dev/null +++ b/info/formation-latex-ul/source/auxdoc/exemple-renvoi.tex @@ -0,0 +1,23 @@ +\documentclass[11pt]{article} + \usepackage{fontspec} + +\begin{document} + +\section{Définitions} +\label{sec:definitions} + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. +Duis in auctor dui. Vestibulum ut, placerat ac, adipiscing +vitae, felis. + +\section{Historique} + +Tel que vu à la section \ref{sec:definitions}, on a... + +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-engine: xetex +%%% TeX-master: t +%%% End: diff --git a/info/formation-latex-ul/source/auxdoc/exemple-titre.pdf b/info/formation-latex-ul/source/auxdoc/exemple-titre.pdf new file mode 100644 index 0000000000..562c3ff572 Binary files /dev/null and b/info/formation-latex-ul/source/auxdoc/exemple-titre.pdf differ diff --git a/info/formation-latex-ul/source/auxdoc/exemple-titre.tex b/info/formation-latex-ul/source/auxdoc/exemple-titre.tex new file mode 100644 index 0000000000..e0daeb5aa1 --- /dev/null +++ b/info/formation-latex-ul/source/auxdoc/exemple-titre.tex @@ -0,0 +1,26 @@ +\documentclass[11pt,french]{article} + \usepackage{fontspec} + \usepackage{babel} + \usepackage{lipsum} + + \title{Lorem ipsum dolor sit amet} + \author{Vincent Goulet% + \thanks{Mauris pharetra leo lacus, et suscipit + nulla consequat eget.} \\ + École d'actuariat \\ + Université Laval} + +\begin{document} + +\maketitle + +\lipsum[1-2] + +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% TeX-master: t +%%% End: diff --git a/info/formation-latex-ul/source/auxdoc/exercice_commandes-solution.pdf b/info/formation-latex-ul/source/auxdoc/exercice_commandes-solution.pdf new file mode 100644 index 0000000000..ee1b915890 Binary files /dev/null and b/info/formation-latex-ul/source/auxdoc/exercice_commandes-solution.pdf differ diff --git a/info/formation-latex-ul/source/auxdoc/exercice_commandes-solution.tex b/info/formation-latex-ul/source/auxdoc/exercice_commandes-solution.tex new file mode 100644 index 0000000000..7ccdf5b863 --- /dev/null +++ b/info/formation-latex-ul/source/auxdoc/exercice_commandes-solution.tex @@ -0,0 +1,31 @@ +\documentclass[12pt,french]{article} + \usepackage{babel} + %% Activer les lignes appropriées selon le moteur utilisé + % \usepackage[utf8]{inputenc} % LaTeX + % \usepackage[T1]{fontenc} % LaTeX + \usepackage{fontspec} % XeLaTeX + +\begin{document} + +%% La commande \LaTeX qui imprime le logo de LaTeX n'ayant pas +%% d'argument, il faut l'écrire sous la forme {\LaTeX} ou \LaTeX{} +%% pour éviter que l'espace qui suit ne soit avalé par la commande. +Les commandes {\LaTeX} débutent par le symbole \verb=\= et se +terminent par le premier caractère autre qu'une lettre, y compris +l'espace. Cela a pour conséquence qu'une espace immédiatement après +une commande sans argument sera \emph{avalée} par la commande. + +%% Il faut délimiter par { } la zone à laquelle la commande \bfseries +%% doit s'appliquer. +La portée d'une commande est {\bfseries limitée} à la zone entre accolades. + +%% Il faut utiliser l'environnement enumerate pour les listes +%% numérotées. L'environnement itemize sert pour les listes à puces. +\begin{enumerate} +\item L'environnement \texttt{enumerate} permet de créer une liste + numérotée. +\item Les environnements de listes sont parmi les plus utilisés en + \LaTeX. +\end{enumerate} + +\end{document} diff --git a/info/formation-latex-ul/source/bases-diapos.tex b/info/formation-latex-ul/source/bases-diapos.tex new file mode 100644 index 0000000000..2b3bbbe66b --- /dev/null +++ b/info/formation-latex-ul/source/bases-diapos.tex @@ -0,0 +1,169 @@ +%%% Copyright (C) 2018 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\section{Principes de base} + +\subsection{Règles de saisie} + +\begin{frame}[fragile=singleslide] + \frametitle{Rédaction} + + L'apparence du document est prise en charge par {\LaTeX} et + il est généralement préférable de ne pas la modifier. + + \begin{itemize} + \item On se concentre sur le \alert{contenu} et la \alert{structure} du + document + \bigskip + \begin{tabbing} + titre de section \qquad\= \faArrowRight \qquad\= \verb|\section{titre}| \\[6pt] + emphase \> \faArrowRight \> \verb|\emph{texte}| + \end{tabbing} + \bigskip + \item Mots séparés par une ou plusieurs \alert{espaces} + \item Paragraphes séparés par une ou plusieurs \alert{lignes blanches} + \item Utilisation de \alert{commandes} pour indiquer la structure du texte + \end{itemize} +\end{frame} + +\begin{frame}[fragile=singleslide] + \frametitle{Caractères réservés} + + \begin{itemize} + \item Caractères réservés par {\TeX}: + \begin{quote} + \verb=# $ & ~ _ ^ % { }= + \end{quote} + \item Pour les utiliser, précéder par \bs + \item On écrira donc + \begin{demo} + \begin{texample} +\begin{lstlisting} +L'augmentation de 2~\$ +représente une hausse +de 5~\%. +\end{lstlisting} + \producing + L'augmentation de 2~\$ représente une + hausse de 5~\%. + \end{texample} + \end{demo} + \end{itemize} +\end{frame} + +\subsection{Structure d'un fichier} + +\begin{frame}[fragile] + \frametitle{Structure d'un document {\LaTeX}} + + Un fichier source {\LaTeX} est toujours composé de deux parties. + + \begin{minipage}{0.2\linewidth} + \color{alert} + \onslide<2->{ + \begin{minipage}{\linewidth} + \hfill préambule \quad + \rule[-10mm]{2pt}{21mm} + \end{minipage} \\[5mm] + } + \onslide<3->{ + \begin{minipage}{\linewidth} + \hfill corps \quad + \rule[-15mm]{2pt}{30mm} + \end{minipage} + } + \end{minipage} + \hfill + \begin{minipage}{0.75\linewidth} +\begin{lstlisting}[emph={documentclass,begin,end,document}] +\documentclass[11pt,french]{article} + \usepackage{babel} + \usepackage[autolanguage]{numprint} + \usepackage[utf8]{inputenc} + \usepackage[T1]{fontenc} + +\begin{document} + +Lorem ipsum dolor sit amet, consectetur +adipiscing elit. Donec quam nulla, bibendum +vitae ipsum vel, fermentum pellentesque orci. + +\end{document} +\end{lstlisting} + \end{minipage} +\end{frame} + +\subsection{Commandes et environnements} + +\begin{frame}[fragile=singleslide] + \frametitle{Commandes} + \begin{itemize} + \item Débutent toujours par \bs + \item Exemples de syntaxe +\begin{lstlisting} +\LaTeX % aucun argument +\emph{toujours} % un argument obligatoire +\section*{Introduction} % effet modifié +\rule[6pt]{5mm}{2pt} % un argument optionnel, deux obligatoires +\end{lstlisting} + \item Commande sans argument: le nom se termine par tout + caractère qui n'est \alert{pas une lettre} (y compris l'espace!) + \item Portée d'une commande limitée à la zone entre \verb={ }= + \end{itemize} +\end{frame} + +\begin{frame}[fragile=singleslide] + \frametitle{Environnements} + \begin{itemize} + \item Délimités par +\begin{lstlisting} +\begin`\marg{environnement}' + ... +\end`\marg{environnement}' + \end{lstlisting} + \item Contenu de l'environnement traité différemment du reste du texte + \item Changements s'appliquent uniquement à l'intérieur de + l'environnement + \end{itemize} +\end{frame} + +\subsection{[~Exercice~]} + +\begin{exercice} + Modifier le fichier \fichier{exercice\_commandes.tex} afin de + produire le texte ci-dessous. + + \bigskip + \centering + \fbox{\includegraphics[viewport=108 551 502 665,% + clip=true,width=0.9\linewidth]{auxdoc/exercice_commandes-solution}} +\end{exercice} + +\begin{frame}[fragile] + \frametitle{{\LaTeX} en français} + + Il faut charger un certain nombre de paquetages pour franciser \LaTeX. + + \begin{itemize} + \item \pkg{babel}: traduction des mots-clés prédéfinis, + typographie française, coupure de mots, document multilingue + \item \pkg{inputenc} et \pkg{fontenc}: lettres accentuées dans le + code source (pdf{\LaTeX} seulement) + \item \pkg{icomma}: virgule comme séparateur décimal + \item \pkg{numprint}: espace comme séparateur des milliers + \end{itemize} +\end{frame} + +%%% Local Variables: +%%% TeX-master: "formation-latex-ul-diapos" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/bases.tex b/info/formation-latex-ul/source/bases.tex new file mode 100644 index 0000000000..c87729d1f9 --- /dev/null +++ b/info/formation-latex-ul/source/bases.tex @@ -0,0 +1,1260 @@ +%%% Copyright (C) 2018 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\chapter{Principes de base} +\label{chap:bases} + +Un système de mise en page tel que {\LaTeX} repose sur une logique de +séparation entre l'apparence d'un document et sa structure. La +personne habituée à utiliser un traitement de texte devra fort +probablement se défaire d'une vilaine habitude: se préoccuper sans +cesse, au moment de la rédaction, de la disposition du texte. + +Ce principe accepté, il faudra néanmoins indiquer au logiciel la +structure du document. Avec {\LaTeX} cela s'effectue par le biais de +diverses instructions que l'on insère au fil du texte. À la base, les +logiciels de traitements de texte n'opèrent pas différemment, sauf +qu'ils cachent les codes aux utilisateurs\footnote{% + Le leader du traitement de texte jusqu'au milieu des années 1990, + Word~Perfect, offrait l'option d'afficher l'ensemble des codes de + mise en page. C'est malheureusement une caractéristique brillante + que Microsoft Word et les autres progiciels développés depuis ont + choisi d'omettre.}. % +Sous prétexte de simplicité d'utilisation, ils causent en fait bien +des mots de tête. Qui ne s'est pas déjà demandé, en utilisant un +traitement de texte moderne: «Pourquoi donc mon texte est-il +soudainement en gras?» + +Ce chapitre explique comment aborder la rédaction d'un document avec +{\LaTeX} ainsi que la syntaxe de base des différents types +d'instructions que l'on peut insérer dans un texte pour en spécifier +la structure et la mise en forme. + + +\section{Séparation du contenu et de l'apparence} +\label{sec:bases:separation} + +Lors de la rédaction avec un système de mise en page tel que {\LaTeX}, +on se concentre sur le contenu et la \emph{structure} du document, et +non pas sur son \emph{apparence}. Par exemple: +\begin{itemize} +\item au lieu de prescrire qu'un titre de section doit être en gras + 14~points, on indique simplement à {\LaTeX} que le texte doit être + traité comme un titre de section; + \begin{demo} + \begin{minipage}{0.45\linewidth} +\begin{lstlisting} +\textbf{\large Titre} +\end{lstlisting} + \end{minipage} + \hfill \faArrowRight \hfill + \begin{minipage}{0.45\linewidth} +\begin{lstlisting} +\section{Titre} +\end{lstlisting} + \end{minipage} + \end{demo} +\item au lieu de décider qu'un mot sur lequel l'on souhaite insister + sera en italique, on indique à {\LaTeX} de mettre de l'emphase sur + ce mot sans se soucier de la mise en forme. + \begin{demo} + \begin{minipage}{0.45\linewidth} +\begin{lstlisting} +\textit{texte} +\end{lstlisting} + \end{minipage} + \hfill \faArrowRight \hfill + \begin{minipage}{0.45\linewidth} +\begin{lstlisting} +\emph{texte} +\end{lstlisting} + \end{minipage} + \end{demo} +\end{itemize} + +L'apparence du texte sera prise en charge par {\LaTeX}. Comme les +gabarits sont l'{\oe}uvre de spécialistes en typographie, il est +généralement préférable de ne pas les modifier. À titre d'exemple, +{\LaTeX} détermine automatiquement la largeur des marges en fonction +de la taille de la police de manière à ce que les lignes de texte +comptent approximativement 70~caractères. La raison: lorsqu'une ligne +de texte est trop longue, notre {\oe}il a de la difficulté à la suivre +sur toute sa longueur. Il a tendance à passer à la ligne inférieure, +ce qui rend la lecture plus difficile. + + +\section{Règles de saisie} +\label{sec:bases:saisie} + +Une fois le principe de séparation du contenu et de l'apparence +compris et accepté, on veillera, lors de la saisie du texte, à +respecter les règles simples suivantes. +\begin{enumerate} +\item On sépare les mots par une ou plusieurs \emph{espaces}. Qu'il y + en ait une ou un millier, seule la première compte et la mise en + page sera la même. + \begin{demo} + \begin{texample} +\begin{lstlisting} +Les espaces délimitent les +mots. Leur nombre n'a pas +d'importance. +\end{lstlisting} + \producing + Les espaces délimitent les + mots. Leur nombre n'a pas + d'importance. + \end{texample} + \begin{texample} +\begin{lstlisting}[showstringspaces=true] +Les espaces délimitent +les mots. +Leur nombre n'a pas +d'importance. +\end{lstlisting} + \producing + Les espaces délimitent + les mots. + Leur nombre n'a pas + d'importance. + \end{texample} + \end{demo} +% +\item On sépare les paragraphes par une ou plusieurs lignes blanches. + Celles-ci n'apparaitront pas nécessairement dans le texte final; les + gabarits standards identifient les paragraphes par un retrait de + première ligne. + \begin{demo} + \begin{texample} +\begin{lstlisting} +Les lignes blanches +délimitent les paragraphes. + +Une ou plusieurs, ça ne fait +aucune différence! +\end{lstlisting} + \producing +Les lignes blanches +délimitent les +paragraphes. + + Une ou plusieurs, ça ne fait aucune différence! + \end{texample} +\begin{texample} +\begin{lstlisting} +Les lignes blanches +délimitent les paragraphes. + + + +Une ou plusieurs, ça ne fait +aucune différence! +\end{lstlisting} + \producing + Les lignes blanches délimitent + les paragraphes. + + + + Une ou plusieurs, ça ne fait aucune différence! + \end{texample} + \end{demo} +% +\item On utilise des \emph{commandes} pour indiquer la structure du + texte dans le texte. Celles-ci débutent presque toujours par + le symbole {\bs}. À la différence des logiciels de traitement de + texte, les instructions de mise en forme du document sont donc + toujours visibles et, par conséquent, modifiables facilement et sans + surprise (on ne se demande donc jamais où termine le gras). + \begin{demo} + \begin{texample} +\begin{lstlisting} +Les commandes sont visibles +dans le \textbf{texte}, +mais évidemment pas dans le +\emph{document} fini. +\end{lstlisting} + \producing + Les commandes sont visibles + dans le \textbf{texte}, + mais évidemment pas dans le + \emph{document} fini. + \end{texample} + \end{demo} +\end{enumerate} + + +\section{Structure d'un fichier} +\label{sec:bases:structure} + +Un fichier source {\LaTeX} --- dont on trouvera un exemple simple à la +\autoref{fig:bases:parties} --- est toujours composé de deux parties. + +\begin{figure} + \centering + \begin{minipage}{0.75\linewidth} +\begin{lstlisting}[numbers=left, numberstyle=\tiny] +\documentclass[11pt,french]{article} `\label{lst:bases:preambule_debut}' + \usepackage{babel} + \usepackage[autolanguage]{numprint} + \usepackage[utf8]{inputenc} + \usepackage[T1]{fontenc} `\label{lst:bases:preambule_fin}' + +\begin{document} `\label{lst:bases:corps_debut}' + +Lorem ipsum dolor sit amet, consectetur +adipiscing elit. Donec quam nulla, bibendum +vitae ipsum vel, fermentum pellentesque +orci. + +\end{document} `\label{lst:bases:corps_fin}' +\end{lstlisting} + \end{minipage} + \caption[Fichier source {\LaTeX} simple comportant les deux parties + obligatoires: le préambule et le corps du document]{% + Fichier source {\LaTeX} simple comportant les deux parties + obligatoires: le préambule (lignes + \ref*{lst:bases:preambule_debut}--\ref*{lst:bases:preambule_fin}) + et le corps du document (lignes + \ref*{lst:bases:corps_debut}--\ref*{lst:bases:corps_fin}).} + \label{fig:bases:parties} +\end{figure} + +\begin{description} +\item[Préambule] Suite de commandes spécifiant la mise en forme + globale du document (format du papier, marges, entête et pied de + page, etc.). Il contient au minimum la commande + \cmd{\documentclass}. Les commandes contenues dans le préambule ont + un effet global sur le document. + + Dans l'exemple de la \autoref{fig:bases:parties}, le préambule + s'étend de la ligne \ref*{lst:bases:preambule_debut} à la ligne + \ref*{lst:bases:preambule_fin}. +\item[Corps du document] Contenu du document en tant que tel. + Il débute par \verb=\begin{document}= et se termine par + \verb=\end{document}=. Le corps du document peut aussi contenir + des commandes, mais l'effet de celles-ci demeure presque toujours local. + + Les lignes \ref*{lst:bases:corps_debut}--\ref*{lst:bases:corps_fin} + du code de la \autoref{fig:bases:parties} forment le corps du + document. +\end{description} + + +\section{Classes et paquetages} +\label{sec:bases:classes} + +La première commande du préambule est normalement la déclaration de la +\emph{classe} du document. La forme de la déclaration est la suivante: +\begin{lstlisting} +\documentclass`\oarg{options}\marg{classe}' +\end{lstlisting} +Les classes standards de {\LaTeX} sont \class{article}, +\class{report}, \class{book}, \class{letter} et \class{slides}. La +classe pour les thèses et mémoires de l'Université Laval se nomme +\class{ulthese} \citep{ulthese}. Celle-ci se base sur la classe +\class{memoir} et, par conséquent, elle hérite de toutes ses (nombreuses) +fonctionnalités; consulter l'\autoref{chap:ulthese}. La +\autoref{sec:organisation:classe} traite des différences entre les +diverses classes et des \meta{options} disponibles. + +Les \emph{paquetages} permettent de modifier des commandes ou +d'ajouter des fonctionnalités à {\LaTeX}. On charge les paquetages +dans le préambule avec des commandes de la forme +\begin{lstlisting} +\usepackage`\marg{paquetage}' +\usepackage`\oarg{options}\marg{paquetage}' +\usepackage`\marg{paquetage1,paquetage2, ...}' +\end{lstlisting} +La première et la troisième forme permettent de charger un ou +plusieurs paquetages sans options. La seconde permet de spécifier des +\meta{options} au chargement du paquetage. Il n'est évidemment pas +possible de préciser des options avec la troisième forme puisque +{\LaTeX} ne saurait à quel paquetage celles-ci se rapportent. + +Certains paquetages permettent que leurs options apparaissent parmi +les \meta{options} de la commande \cmdprint{\documentclass}. Elles +sont ainsi plus «visibles» pour d'autres paquetages. Par exemple, +l'option \code{french} que l'on retrouve dans la déclaration de la +classe à la \autoref{fig:bases:parties} est en fait une option du +paquetage \pkg{babel}. + + +\section{Commandes} +\label{sec:bases:commandes} + +Nous avons déjà fait référence à quelques reprises au concept de +commande {\LaTeX}. Cette section se penche sur leur syntaxe. + +Les formes générales des commandes {\LaTeX} sont: +\begin{lstlisting} +\`\meta{nomcommande}\oarg{arg\_optionnel}\marg{arg\_obligatoire}' +\`\meta{nomcommande}'*`\oarg{arg\_optionnel}\marg{arg\_obligatoire}' +\end{lstlisting} +Ici, \meta{nomcommande} est le nom de la commande. Il débute par le +symbole {\bs} et est exclusivement formé de lettres, habituellement +des minuscules ({\LaTeX} est sensible à la casse). La forme étoilée +d'une commande réalise généralement une action légèrement différente +de la version sans étoile. Par exemple, \cmd{\section} crée une +nouvelle section numérotée, alors que \cmd{\section*} n'insère aucune +numérotation. + +Lorsque la commande prend des arguments, les arguments obligatoires +sont placés entre accolades \verb={ }= et les arguments optionnels +sont placés entre crochets \verb=[ ]=. + +Certaines commandes n'ont aucun argument. Leur forme est alors +\begin{lstlisting} +\`\meta{nomcommande} +\end{lstlisting} +Dans ce cas, le nom de la commande se termine par tout symbole qui +n'est pas une lettre --- y compris l'espace! Cette règle fait en sorte +qu'une espace après le nom d'une commande est considérée comme un +marqueur de la fin du nom de la commande. Cette règle joue parfois de +vilains tours en «avalant» l'espace entre une commande et le mot qui +suit; voir l'\autoref{exemple:base:commandes} et +l'\autoref{ex:base:commandes}. + +La portée d'une commande est limitée à la zone entre accolades +\verb={ }=, le cas échéant. + +\begin{exemple} + \label{exemple:base:commandes} + Voici trois exemples de commandes {\LaTeX}: une sans argument, une + avec un seul argument obligatoire et une commande avec deux + arguments obligatoires et un argument optionnel. + \begin{enumerate} + \item La commande \cmd{\LaTeX} permet de composer de logo {\LaTeX}. + \begin{demo} + \begin{texample} +\begin{lstlisting} +Apprendre \LaTeX c'est +formidable! +\end{lstlisting} + \producing + Apprendre \LaTeX c'est + formidable! + \end{texample} + \end{demo} + On constate ici l'effet de la règle mentionnée ci-dessus: + l'espace suivant le nom de la commande a été interprété par + {\LaTeX} comme un marqueur de la fin de la commande et il a été + supprimé du texte. Pour contourner ce problème, nous pouvons soit + fournir un argument vide à la commande, soit la placer en + accolades pour limiter sa portée à elle-même: + \begin{demo} + \begin{texample} +\begin{lstlisting} +Apprendre \LaTeX{} c'est +formidable! +\end{lstlisting} + \producing + Apprendre \LaTeX{} c'est + formidable! + \end{texample} + \begin{texample} +\begin{lstlisting} +Apprendre {\LaTeX} c'est +formidable! +\end{lstlisting} + \producing + Apprendre {\LaTeX} c'est + formidable! + \end{texample} + \end{demo} + % + \item La commande \cmd{\emph} met de l'emphase (en général sous + forme d'italique) sur le ou les mots en argument. + \begin{demo} + \begin{texample} +\begin{lstlisting} +Il est \emph{essentiel} de +connaitre la syntaxe de +{\LaTeX}. +\end{lstlisting} + \producing + Il est \emph{essentiel} de + connaitre la syntaxe de + {\LaTeX}. + \end{texample} + \end{demo} + % + \item La commande \cmd{\rule} produit un rectangle plein. Elle a + deux arguments obligatoires: la longueur et la hauteur du + rectangle, dans l'ordre. Un argument optionnel permet de surélever + le rectangle au-dessus de la ligne de base (voir le + \autoref{chap:boites} pour plus de détails). + \begin{demo} + \begin{texample} +\begin{lstlisting} +Réglure de 1~cm de long et +3~mm d'épais surélevée de +2~points au-dessus de la +ligne de base: +\rule[2pt]{1cm}{3mm}. +\end{lstlisting} + \producing + Réglure de $1$~cm de long et + $3$~mm d'épais surélevée de + $2$~points au-dessus de la + ligne de base: \rule[2pt]{1cm}{3mm}. + \end{texample} + \end{demo} + \end{enumerate} + \qed +\end{exemple} + +\begin{exemple} + La commande \cmd{\bfseries} sélectionne une police + grasse pour tout le texte qui suit. + \begin{demo} + \begin{texample} +\begin{lstlisting} +En typographie, la \bfseries +graisse est l'épaisseur d'un +trait ou d'un caractère. +\end{lstlisting} + \producing + En typographie, la \bfseries + graisse est l'épaisseur d'un + trait ou d'un caractère. + \end{texample} + \end{demo} + Pour limiter le changement à une zone de texte, il faut la délimiter + par des accolades. +\begin{demo} + \begin{texample} +\begin{lstlisting} +En typographie, la {\bfseries +graisse est l'épaisseur d'un +trait} ou d'un caractère. +\end{lstlisting} + \producing + En typographie, la {\bfseries + graisse est l'épaisseur d’un + trait} ou d’un caractère. + \end{texample} + \end{demo} + \qed +\end{exemple} + +L'utilisateur de {\LaTeX} peut définir de nouvelles commandes à +loisir. Ceci est expliqué au \autoref{chap:commandes}. + + +\section{Environnements} +\label{sec:bases:environnements} + +Un environnement {\LaTeX} est une zone de texte délimitée par une +construction du type +\begin{lstlisting} +\begin`\marg{environnement}' + ... +\end`\marg{environnement}' +\end{lstlisting} +Le contenu d'un environnement est traité différemment du reste du +texte en fonction des paramètres de l'environnement. Par exemple, le +texte à l'intérieur d'un environnement \Ie{center} est centré sur la +page. + +Les changements induits par un environnement s'appliquent uniquement à +l'intérieur de celui-ci. Il en va de même des commandes utilisées à +l'intérieur d'un environnement. + +\begin{exemple} + L'environnement \Ie{quote} sert à composer des citations. Le texte à + l'intérieur de l'environnement sera placé dans un bloc séparé du + texte principal et en retrait des marges gauche et droite. + \begin{demo} + \begin{texample} +\begin{lstlisting} +La phrase +\begin{quote} + Attention aux bogues dans + le code ci-dessus; je ne + l'ai pas testé, j'ai + seulement prouvé qu'il + était correct. +\end{quote} +est une citation célèbre du +créateur de {\TeX}, Donald +Knuth. +\end{lstlisting} + \producing + La phrase + \begin{quote} + Attention aux bogues dans le code ci-dessus; je ne l'ai pas testé, + j'ai seulement prouvé qu'il était correct. + \end{quote} + est une citation célèbre du créateur de {\TeX}, Donald Knuth. + \end{texample} + \end{demo} + Si la citation est dans la langue originale, il est préférable de la + composer en italique. + \begin{demo} + \begin{texample} +\begin{lstlisting} +La phrase +\begin{quote} + \itshape + Beware of bugs in the above + code; I have only proved it + correct, not tried it. +\end{quote} +est une citation célèbre du +créateur de {\TeX}, Donald +Knuth. +\end{lstlisting} + \producing + La phrase + \begin{quote} + \itshape + Beware of bugs in the above code; I have only proved it + correct, not tried it. + \end{quote} + est une citation célèbre du créateur de {\TeX}, Donald Knuth. + \end{texample} + \end{demo} + On remarque que l'effet de la commande \cmdprint{\itshape} s'est + limité à l'environnement. % + \qed +\end{exemple} + + +\section{Longueurs} +\label{sec:bases:longueurs} + +Plusieurs commandes {\LaTeX} requièrent en argument une mesure de +largeur ou de hauteur. Dans la terminologie de {\LaTeX}, on parle plus +généralement de longueur\index{longueur} (\emph{length}). + +Une longueur est un nombre positif, négatif ou nul +\emph{obligatoirement} et \emph{immédiatement} suivi d'un symbole +d'unité de mesure. Le \autoref{tab:bases:longueurs} présente les +principales unités de mesure utilisées par {\LaTeX} et le symbole +correspondant. + +\begin{table} + \caption{Principales unités de mesure pour les longueurs dans + {\LaTeX}} + \label{tab:bases:longueurs} + \centering + \begin{tabular}{lcl} + \toprule + Nom ou description & Symbole & Longueur équivalente \\ + \midrule + millimètre & \texttt{mm} \\ + centimètre & \texttt{cm} & $10$~mm \\ + pouce & \texttt{in} & $2,54$~cm \\ + point & \texttt{pt} & $1/72,27$~pouce \\ + point PostScript & \texttt{bp} & $1/72$~pouce \\ + largeur de la lettre M & \texttt{em} & fonction de la police \\ + hauteur de la lettre x & \texttt{ex} & fonction de la police \\ + \bottomrule + \end{tabular} +\end{table} + +Il existe un certain nombre de longueurs prédéfinies. Les plus utiles +sont: +\begin{lstlisting} +\linewidth +\textwidth +\end{lstlisting} +La première contient la largeur de la ligne de texte courante et la +seconde, la largeur de la page courante. Dans du texte normal, les +deux mesures sont habituellement égales. + + +\section{Commentaires} +\label{sec:bases:commentaires} + +Le symbole \verb=%= indique un commentaire dans le code source: tout +le texte après le symbole jusqu'à la fin de la ligne est ignoré par +{\LaTeX}. +\begin{demo} + \begin{texample} +\begin{lstlisting} +texte % ignoré par LaTeX +\end{lstlisting} + \producing + texte % ignoré par LaTeX + \end{texample} +\end{demo} + + +\section{Caractères spéciaux} +\label{sec:bases:caracteres} + +Les claviers d'ordinateur mettent à la disposition des auteurs toutes +les lettres de l'alphabet (en versions minuscule et majuscule), les +chiffres de 0 à 9, un certain nombre de symboles et, selon le clavier, +des versions accentuées de certaines lettres. L'entrée des lettres et +des chiffres ne pose pas de problème particulier pour {\LaTeX}, mais +certains symboles sont réservés. De plus, certains symboles d'usage +courant ne sont pas disponibles sur les claviers. + +\subsection{Espaces et retours à la ligne} +\label{sec:bases:caracteres:espaces} + +Nous avons déjà mentionné à la \autoref{sec:bases:saisie} le +traitement spécial réservé par {\LaTeX} aux espaces et aux retours à +la ligne dans le code source. Ajoutons les précisions suivantes: +\begin{itemize} +\item seule la première espace entre deux éléments compte; +\item les espaces en début de ligne sont ignorées; +\item un retour à la ligne simple est traité comme une espace; +\item il faut deux retours à la ligne consécutifs (ce qui résulte en + une ligne blanche dans le code source) pour identifier un changement + de paragraphe. +\end{itemize} + +Pour forcer une espace à un endroit où {\LaTeX} la supprimerait +normalement, utiliser la commande \verb*=\ = (le symbole \bs\ suivi +d'une espace, représentée ici par le symbole \verb*| |. +\begin{demo} + \begin{texample} +\begin{lstlisting} +Apprendre \LaTeX\ c'est +formidable! +\end{lstlisting} + \producing + Apprendre \LaTeX\ c'est + formidable! + \end{texample} +\end{demo} + +Dans le même ordre d'idées, le symbole \verb=~= insère une espace +insécable entre deux mots, de telle sorte que {\LaTeX} ne pourra +placer les mots sur des lignes différentes. À utiliser dans les noms ou +entre une quantité et son unité. +\begin{demo} + \begin{texample} +\begin{lstlisting} +M.~Tremblay me doit au +moins 200~\$. +\end{lstlisting} + \producing + M.~Tremblay me doit au moins 200~\$. + \end{texample} +\end{demo} + +Il arrive que l'espace générée par un retour à la ligne \emph{simple} +s'avère indésirable. Dans de tels cas, placer un symbole de +commentaire \verb=%= à la fin de la ligne. +\begin{demo} + \begin{texample} +\begin{lstlisting} +Donald Knuth est un dieu +\textsuperscript{[citation]} +. +\end{lstlisting} + \producing + Donald Knuth est un dieu + \textsuperscript{[citation]} + . + \end{texample} + \begin{texample} +\begin{lstlisting} +Donald Knuth est un dieu% +\textsuperscript{[citation]}% +. +\end{lstlisting} + \producing + Donald Knuth est un dieu% + \textsuperscript{[citation]}% + . + \end{texample} +\end{demo} + +\subsection{Caractères réservés} +\label{sec:bases:caracteres:reserves} + +Comme à peu près tous les langages de programmation, {\TeX} réserve +certains caractères pour son usage interne. Les caractères suivants sont +interprétés comme des commandes: +\begin{center} + \verb=# $ & ~ _ ^ % { }= +\end{center} + +Pour utiliser les symboles ci-dessus tels quels dans le texte, il faut +les précéder par le symbole {\bs}: +\index{#@\cs{}\texttt{\#}} +\index{$@\cs{}\texttt{\$}} %$ +\index{&@\cs{}\texttt{\&}} +\index{_@\cs{}\texttt{\_}} +\index{%@\cs{}\texttt{\%}} +\begin{demo} + \begin{minipage}{0.15\linewidth} + \begin{texample} +\begin{lstlisting} +\# +\end{lstlisting} + \producing\ \# + \end{texample} + \end{minipage} + \hfill + \begin{minipage}{0.15\linewidth} + \begin{texample} +\begin{lstlisting} +\$ +\end{lstlisting} + \producing\ \$ + \end{texample} + \end{minipage} + \hfill + \begin{minipage}{0.15\linewidth} + \begin{texample} +\begin{lstlisting} +\& +\end{lstlisting} + \producing\ \& + \end{texample} + \end{minipage} + \hfill + \begin{minipage}{0.15\linewidth} + \begin{texample} +\begin{lstlisting} +\_ +\end{lstlisting} + \producing\rule{0pt}{1em}\ \_ + \end{texample} + \end{minipage} + \\ + \begin{minipage}{0.15\linewidth} + \begin{texample} +\begin{lstlisting}[commentstyle=\mdseries] +\% +\end{lstlisting} + \producing\ \% + \end{texample} + \end{minipage} + \hfill + \begin{minipage}{0.15\linewidth} + \begin{texample} +\begin{lstlisting} +\{ +\end{lstlisting} + \producing\ \{ + \end{texample} + \end{minipage} + \hfill + \begin{minipage}{0.15\linewidth} + \begin{texample} +\begin{lstlisting} +\} +\end{lstlisting} + \producing\ \} + \end{texample} + \end{minipage} + \hfill + \begin{minipage}{0.15\linewidth} + \mbox{} + \end{minipage} + \hfill +\end{demo} +(Les commandes \verb=\^= et \verb=\~= servent à créer des accents; +voir la \autoref{sec:bases:caracteres:accents}.) + +\subsection{Guillemets} +\label{sec:bases:caracteres:guillemets} + +L'usage des guillemets nécessite une attention particulière dans +{\LaTeX}. On ne devrait pas utiliser dans le code source les +guillemets doubles (\verb="=) que l'on trouve couramment sur les +claviers d'ordinateurs. + +Pour obtenir les guillemets anglais, on utilisera deux symboles +d'accent grave côte à côte pour les guillemets ouvrants (``) et deux +apostrophes côte à côte pour les guillemets fermants (''). +\begin{demo} + \begin{texample} +\begin{lstlisting}[escapeinside={}] +``guillemets anglais'' +\end{lstlisting} + \producing + ``guillemets anglais'' + \end{texample} +\end{demo} + +En typographie française, il convient d'utiliser les chevrons («\ ») +comme guillemets. Avec la configuration appropriée de \pkg{babel} +(voir la \autoref{sec:bases:francais}), il suffit d'utiliser dans le +code source les symboles \,\verb=«=\, et \,\verb=»=\, que l'on +retrouve normalement sur un clavier français. L'espacement requis +autour des symboles est géré automatiquement. +\begin{demo} + \begin{texample} +\begin{lstlisting} +«guillemets français» +\end{lstlisting} + \producing + «guillemets français» + \end{texample} + \begin{texample} +\begin{lstlisting} +« guillemets français » +\end{lstlisting} + \producing + « guillemets français » + \end{texample} +\end{demo} +En français, les guillemets anglais ne servent que pour les citations +incluses, c'est-à-dire pour les citations à l'intérieur d'une +citation. +\begin{demo} + \begin{texample} +\begin{lstlisting}[escapeinside={}] +Elle m'a dit: «Laurent fait +dire ``non merci''.» +\end{lstlisting} + \producing + Elle m'a dit: «Laurent fait + dire ``non merci''.» + \end{texample} +\end{demo} + +Les bons éditeurs de texte adaptés pour {\LaTeX} redéfinissent +l'action de la touche % +%% simili touche de clavier faite main à partir; utilisation de +%% \ooalign tirée de comprehensive.pdf, section 10.3 +\raisebox{-2pt}{% + \ooalign{\hfil\Large\faSquareO\hfil\cr\hfil\ttfamily\textquotedbl\hfil}} % +du clavier pour insérer les symboles appropriés selon la langue du +document. + +Le paquetage \pkg{csquotes} \citep{csquotes} propose une autre approche +pour la saisie des guillemets. Il fournit une commande +\cmdprint{\enquote} qui entoure son argument des guillemets appropriés +selon le contexte et la langue du texte. Cette solution peut s'avérer +intéressante pour les nouveaux venus à {\LaTeX} qui n'ont pas encore +pris l'habitude d'entrer directement les bons guillemets. + +\subsection{Trait d'union et tirets} +\label{sec:bases:caracteres:tirets} + +On trouve en typographie soignée trois sortes de tirets de longueurs +différentes: +\begin{enumerate} +\item le trait d'union (-) qui sert à relier des mots entre eux; +\item le tiret demi-cadratin (--) qui sert à joindre deux éléments qui + comportent déjà des traits d'union (\emph{Trois-Rivières--Québec}); +\item le tiret cadratin (---) qui sert à identifier le changement + d'interlocuteur dans les dialogues ou qui remplacent parfois les + parenthèses dans du texte normal. +\end{enumerate} + +S'il est simple d'entrer un trait d'union à l'ordinateur, il est rare +que les claviers comportent des touches pour entrer les tirets +demi-cadratin et cadratin (ou alors cela se fait via une obscure +combinaison de touches). {\LaTeX} permet de créer facilement tous les +tirets ci-dessus en répétant simplement le trait d'union deux ou trois +fois. +\begin{demo} + \begin{minipage}{0.2\linewidth} + \begin{texample} +\begin{lstlisting} +- +\end{lstlisting} + \producing\ - + \end{texample} + \end{minipage} + \hfill + \begin{minipage}{0.2\linewidth} + \begin{texample} +\begin{lstlisting} +-- +\end{lstlisting} + \producing\ -- + \end{texample} + \end{minipage} + \hfill + \begin{minipage}{0.2\linewidth} + \begin{texample} +\begin{lstlisting} +--- +\end{lstlisting} + \producing\ --- + \end{texample} + \end{minipage} +\end{demo} + +\subsection{Accents et ligatures} +\label{sec:bases:caracteres:accents} + +À la base, {\LaTeX} ne reconnait pas les lettres accentuées ni les +ligatures comme {\ae} et {\oe} qui ne sont pas courantes en anglais. +Néanmoins, il est possible de créer ces symboles avec des commandes. +\begin{demo} + \begin{minipage}{0.2\linewidth} + \begin{texample} +\begin{lstlisting} +\'{o} +\end{lstlisting} + \producing\ \'{o} + \end{texample} + \end{minipage} + \hfill + \begin{minipage}{0.2\linewidth} + \begin{texample} +\begin{lstlisting}[escapeinside={}] +\`{o} +\end{lstlisting} + \producing\ \`{o} + \end{texample} + \end{minipage} + \hfill + \begin{minipage}{0.2\linewidth} + \begin{texample} +\begin{lstlisting} +\^{o} +\end{lstlisting} + \producing\ \^{o} + \end{texample} + \end{minipage} + \hfill + \begin{minipage}{0.2\linewidth} + \begin{texample} +\begin{lstlisting} +\"{o} +\end{lstlisting} + \producing\ \"{o} + \end{texample} + \end{minipage} \\ + \hfill + \begin{minipage}{0.2\linewidth} + \begin{texample} +\begin{lstlisting} +{\ae} +\end{lstlisting} + \producing\ \ae + \end{texample} + \end{minipage} + \hfill + \begin{minipage}{0.2\linewidth} + \begin{texample} +\begin{lstlisting} +{\AE} +\end{lstlisting} + \producing\ \AE + \end{texample} + \end{minipage} + \hfill + \begin{minipage}{0.2\linewidth} + \begin{texample} +\begin{lstlisting} +{\oe} +\end{lstlisting} + \producing\ \oe + \end{texample} + \end{minipage} + \hfill + \begin{minipage}{0.2\linewidth} + \begin{texample} +\begin{lstlisting} +{\OE} +\end{lstlisting} + \producing\ \OE + \end{texample} + \end{minipage} +\end{demo} + +Évidemment, entrer tous les accents d'un texte en français avec les +commandes ci-dessus se révélerait un véritable cauchemar. +Heureusement, avec la configuration appropriée, il est possible +d'entrer directement les lettres accentuées que l'on trouve couramment +sur un clavier, voire même certaines ligatures si l'on utilise +l'encodage UTF-8. La \autoref{sec:bases:francais} fournit les détails. + +Les commandes pour les accents demeurent utiles pour composer les +lettres accentuées des langues européennes autres que le français. On +trouvera la liste de ces commandes, ainsi que celles pour composer une +multitude d'autres symboles à la section~2 de la très utile % +\doc[\emph{Comprehensive {\LaTeX} Symbol List}]{comprehensive}{http://texdoc.net/pkg/comprehensive} % +\citep{comprehensive}. + + +\section{{\LaTeX} en français} +\label{sec:bases:francais} + +Par défaut, LaTeX prévoit la rédaction de documents en anglais. +L'entrée de texte en français de façon simple et conviviale requiert +de charger quelques paquetages bien choisis. Le choix dépend lui-même +du moteur {\TeX} utilisé. + +\subsection{Moteur pdf\TeX} +\label{sec:bases:francais:pdftex} + +Afin de pouvoir entrer directement les lettres accentuées dans le code +source sans avoir recours aux commandes de la section précédente, il +faut s'assurer que les lettres accentuées soient reconnues par +{\LaTeX}. C'est le rôle du paquetage \pkg{inputenc} \citep{inputenc}. +Il faut spécifier le type de codage utilisé, ce qui parfois demande +quelques essais et erreurs. Le type de codage le plus universel en ce +moment est l'Unicode \citep{Unicode:5.0}. C'est le type utilisé par +défaut dans macOS et les distributions Linux; il est aussi +disponible sous Windows. Si le fichier source est sauvegardé dans le +format % +\link{https://fr.wikipedia.org/wiki/UTF-8}{UTF-8} % +de l'Unicode, on ajoutera dans le préambule la commande: +\begin{lstlisting} +\usepackage[utf8]{inputenc} +\end{lstlisting} + +Les autres types de codage les plus répandus sont +l'\link{https://fr.wikipedia.org/wiki/Iso_8859-1}{ISO 8859-1}, ou +Latin-1, et l'\link{https://fr.wikipedia.org/wiki/Windows-1252}{ANSI} +de Windows. Pour utiliser ces types, on remplacera \code{utf8} +ci-dessus par, respectivement, \code{latin1} ou \code{ansiwin}. + +L'entrée du texte n'est pas tout, il faut également se soucier de la +sortie, afin que les lettres accentuées apparaissent dans le document +final. {\LaTeX} utilise par défaut un codage de sortie des caractères +nommé OT1. Il est recommandé de ne pas utiliser ce codage pour les +textes en français, notamment parce que la coupure automatique ne +fonctionnera pas pour les mots contenant des lettres accentuées. On +préférera donc le plus récent codage T1, que l'on active avec le +paquetage \pkg{fontenc} \citep{fontenc}: +\begin{lstlisting} +\usepackage[T1]{fontenc} +\end{lstlisting} + +La classe \class{ulthese} charge par défaut le paquetage \pkg{fontenc} +avec l'option T1 et les gabarits de documents fournis avec la classe +contiennent l'instruction pour charger \pkg{inputenc}. + +%% hyperref n'aime pas \XeTeX dans un titre. Je peux utiliser un titre +%% court puisqu'il ne sera pas affiché dans la tdm (c'est une +%% sous-section). +\subsection[Moteur XeTeX]{Moteur \XeTeX} +\label{sec:bases:francais:xetex} + +Le plus récent et moderne moteur {\XeTeX} utilise par défaut des +fichiers source en format Unicode UTF-8. Il n'y a donc rien de spécial +à faire pour l'entrée du texte avec ce moteur. + +Pour la sortie, le paquetage \pkg{fontspec} \citep{fontspec} est +requis pour obtenir les lettres accentuées dans le fichier PDF. Cela ne +représente pas véritablement une étape de configuration additionnelle +puisque l'on charge normalement ce paquetage avec {\XeLaTeX} pour +contrôler le chargement des polices de caractères (plus de détails à +la \autoref{sec:trucs:polices}). + +La classe \class{ulthese} charge par défaut le paquetage +\pkg{fontspec} avec {\XeLaTeX}. + +\subsection{Typographie et mots clés français} +\label{sec:bases:francais:babel} + +Entrer du texte en français dans le code source n'est pas tout. Il +faut adapter {\LaTeX} au français, qu'il s'agisse des mots clés (tels +«Table des matières» ou «Bibliographie»), de la typographie ou de la +coupure des mots. La solution standard provient du paquetage +\pkg{babel} \citep{babel}. Celui-ci permet de combiner plusieurs +langues dans un même document et de passer de l'une à l'autre +facilement. Consulter la % +\doc{frenchb}{http://texdoc.net/pkg/babel-french/} % +pour connaitre toutes les adaptations au français offertes par ce +paquetage incontournable. + +Il est possible de configurer plusieurs options de \pkg{babel} par +l'entremise de la commande \cmd{\frenchbsetup}. + +Le paquetage \pkg{babel} est chargé par défaut par la classe +\class{ulthese}. + +\subsection{Guillemets français} +\label{sec:bases:francais:guillemets} + +Une espace fine devrait séparer les guillemets du ou des mots qu'ils +entourent. Pour que l'espace autour des symboles soit géré +automatiquement par \pkg{babel}, il suffit d'ajouter dans le préambule +la commande +\begin{lstlisting} +\frenchbsetup{og=«, fg=»} +\end{lstlisting} +On trouve cette configuration dans les gabarits livrés avec la classe +\class{ulthese}. + +\subsection{Séparateur décimal} +\label{sec:bases:francais:virgule} + +Le séparateur décimal en français est la virgule et non le point. Or, +en mode mathématique, LaTeX ajoute automatiquement une espace fine +après une virgule comme s'il s'agissait d'une énumération. + +Afin de pouvoir utiliser de manière conviviale la virgule comme +séparateur décimal en mode mathématique, on chargera le très pratique +paquetage \pkg{icomma} \citep{icomma}. Avec ce paquetage, la virgule +agira comme séparateur décimal en mode mathématique seulement +lorsqu'elle est suivie d'un caractère autre que l'espace. +\begin{demo} + \begin{minipage}{0.5\linewidth} + \begin{texample}[0.6\linewidth] +\begin{lstlisting} +% nombre décimal +$x = 1,2$ +\end{lstlisting} + \producing + $x = 1,2$ + \end{texample} + \end{minipage} + \hfill + \begin{minipage}{0.5\linewidth} + \begin{texample}[0.6\linewidth] +\begin{lstlisting} +% énumération +$x = 1, 2, 3$ +\end{lstlisting} + \producing + $x = 1, 2, 3$ + \end{texample} + \end{minipage} +\end{demo} + +\importantbox{Le paquetage \pkg{icomma} peut interagir avec d'autres. + Aussi est-il préférable de le charger parmi les derniers dans le + préambule, et certainement après les paquetages \pkg{fontspec} et + \pkg{unicode-math} avec {\XeLaTeX}.} + +\subsection{Séparateur des milliers} +\label{sec:bases:francais:milliers} + +Le séparateur des milliers en français est l'espace. Lorsque le +paquetage \pkg{numprint} \citep{numprint} est chargé, \pkg{babel} +fournit la commande \cmd{\nombre} pour formater automatiquement les +nombres. +\begin{demo} + \begin{texample} +\begin{lstlisting} +\nombre{123456789} +\end{lstlisting} + \producing + \nombre{123456789} + \end{texample} +\end{demo} + +Le \autoref{tab:bases:francais} résume les divers enjeux liés à la +rédaction en français avec {\LaTeX} et les paquetages qui offrent des +solutions. + +\begin{table} + \centering + \caption{Principaux enjeux de rédaction en français et paquetages + offrant des solutions} + \label{tab:bases:francais} + \begin{tabularx}{1.0\linewidth}{Xl} + \toprule + Enjeu & Solution \\ + \midrule + \addlinespace[0.5\normalbaselineskip] + Traduction des mots clés prédéfinis & \pkg{babel} \\ + \addlinespace[0.5\normalbaselineskip] + Coupure de mots & \pkg{babel} \\ + \addlinespace[0.5\normalbaselineskip] + Typographie française & \pkg{babel} \\ + \addlinespace[0.5\normalbaselineskip] + Lettres accentuées dans source & \pkg{inputenc} (\LaTeX) \\ + & source en UTF-8 (\XeLaTeX) \\ + \addlinespace[0.5\normalbaselineskip] + Lettres accentuées dans sortie & \pkg{fontenc} (\LaTeX) \\ + & \pkg{fontspec} (\XeLaTeX) \\ + \addlinespace[0.5\normalbaselineskip] + Virgule comme séparateur décimal & \pkg{icomma} \\ + \addlinespace[0.5\normalbaselineskip] + Espace comme séparateur des milliers & \pkg{numprint} et + \pkg{babel} \\ + \bottomrule + \end{tabularx} +\end{table} + + +%%% +%%% Exercices +%%% + +\section{Exercices} +\label{sec:bases:exercices} + +\Opensolutionfile{solutions}[solutions-bases] + +\begin{Filesave}{solutions} +\section*{Chapitre \ref*{chap:bases}} +\addcontentsline{toc}{section}{Chapitre \protect\ref*{chap:bases}} + +\end{Filesave} + +\begin{exercice}[nosol] + Utiliser le fichier \fichier{exercice\_minimal.tex}. + \begin{enumerate} + \item Compiler le document avec la classe \class{article}, puis avec + la classe \class{book}. Observer le résultat. + \item Ajouter du texte en français (avec accents), puis compiler et + observer le résultat. + \end{enumerate} +\end{exercice} + +\begin{exercice} + \label{ex:base:commandes} + Modifier le fichier \fichier{exercice\_commandes.tex} afin + de produire le texte ci-dessous. + \begin{demo} + \fbox{\includegraphics[viewport=108 551 502 665,clip=true,width=0.98\linewidth]{auxdoc/exercice_commandes-solution}} + \end{demo} + \begin{sol} + Il y a trois modifications principales à apporter au fichier. + \begin{enumerate}[1.] + \item La commande {\LaTeX} qui imprime le logo de LaTeX n'ayant + pas d'argument, il faut l'écrire sous la forme + \verb={\LaTeX}= ou \verb=\LaTeX{}= pour éviter que l'espace + qui suit ne soit avalée par la commande. + \item Il faut délimiter par des accolades la zone à laquelle la + commande \cmdprint{\bfseries} doit s'appliquer: +\begin{lstlisting} +{\bfseries limitée} +\end{lstlisting} + \item Il faut utiliser l'environnement \Pe{enumerate} pour les + listes numérotées. L'environnement \Pe{itemize} sert pour les + listes à puces. + \end{enumerate} + \end{sol} +\end{exercice} + +\begin{exercice}[nosol] + \begin{enumerate} + \item Compiler le fichier \fichier{exercice\_classe+paquetages.tex}. + \item Changer la police du document pour 11~points, puis 12~points. + Observer l'effet sur les marges et sur la coupure automatique des + mots dans le document compilé. + \item Activer le paquetage \pkg{icomma} en supprimant le symbole + \% au début de la ligne dans le préambule. Compiler le document + et observer l'effet sur la formule mathématique. + \item Charger le paquetage \pkg{numprint} avec l'option + \verb=autolanguage= (\emph{après} le paquetage \pkg{babel}). Dans + le code source de la formule mathématique, changer +\begin{lstlisting} +10 000 +\end{lstlisting} + pour +\begin{lstlisting} +\nombre{10000} +\end{lstlisting} + Compiler et observer le résultat. + \end{enumerate} +\end{exercice} + +\Closesolutionfile{solutions} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "formation-latex-ul" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/bibliographie.tex b/info/formation-latex-ul/source/bibliographie.tex new file mode 100644 index 0000000000..f900df3b28 --- /dev/null +++ b/info/formation-latex-ul/source/bibliographie.tex @@ -0,0 +1,879 @@ +%%% Copyright (C) 2018 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\chapter{Bibliographie et citations} +\label{chap:bibliographie} + +\nobibliography* + +La production de la bibliographie d'un ouvrage d'une certaine ampleur +--- qu'il s'agisse d'un article scientifique, d'un mémoire, d'une +thèse --- est une tâche d'une grande importance qui peut rapidement devenir +laborieuse\dots\ lorsqu'elle n'est pas réalisée avec les outils appropriés. + +L'ordinateur est bien meilleur qu'un humain pour accomplir certaines +opérations propres à la production d'une bibliographie. Un auteur ne +devrait se préoccuper que de colliger les informations +bibliographiques, puis de sélectionner les ouvrages à citer. La +machine peut ensuite se charger: +\begin{itemize} +\item d'inclure dans la bibliographie tous les ouvrages cités dans le + document et seulement ceux-ci; +\item de trier les entrées de la bibliographie; +\item de composer les entrées de manière uniforme; +\item de recommencer ces opérations autant de fois que nécessaire pour + un même document ou pour chaque nouveau document. +\end{itemize} + +Avec en main une base de données bibliographique, la création de la +bibliographie devient une tâche triviale qui ne prend guère plus que +les quelques secondes de compilation nécessaires pour la composer. + + + +\section{Quel système utiliser?} +\label{sec:bibliographie:systeme} + +La gestion des citations et la composition d'une bibliographie sont +des tâches hautement spécialisées. Comme la plupart des traitements de +texte, {\LaTeX} les confie donc à des outils externes. Reste à savoir +lequel de ces outils utiliser. + +%% hack ici pour afficher le logo BibTeX en police sans serif qui n'a +%% pas de version petites capitales tout en utilisant la commande +%% usuelle dans la table des matières +\subsection[{\BibTeX} et \pkg{natbib}]{% + {B\kern-.025em{\small I}\kern-.025em{\small B}\kern-.08em\TeX} % + et \pkg{natbib}} +\label{sec:bibliographie:systeme:bibtex} + +Fort de plus de 25 années d'existence, {\BibTeX}\index{bibtex@\BibTeX} +\citep{bibtex} est le système standard de traitement des +bibliographies dans {\LaTeX}. Il est stable et prévisible --- ce que +certains considéreraient des bogues passent pour des caractéristiques +--- et, surtout, il existe un vaste catalogue de références +bibliographiques en format {\BibTeX}. C'est généralement le seul +format accepté par les revues scientifiques. Non qu'il s'agisse d'un +argument massue, mais même Wikipedia, dans les rubriques «Citer cette +page», et la Bibliothèque de l'Université Laval, dans les pages de +notices bibliographiques, offrent les citations en format {\BibTeX}. + +{\BibTeX} est principalement un système de tri d'entrées +bibliographiques et d'interface avec la base de données. La +présentation des citations et de la bibliographie relève d'un +\emph{style}. Les styles standards sont \code{plain}, \code{unsrt}, +\code{alpha} et \code{abbrv}; nous y reviendrons à la +\autoref{sec:bibliographie:style}. + +Fonctionnant de pair --- et exclusivement --- avec {\BibTeX}, +\pkg{natbib} \citep{natbib} est un paquetage qui fournit des styles et +des commandes pour composer des bibliographies dans le format +auteur-année fréquemment utilisé dans les sciences naturelles et +sociales\footnote{% + C'est le style utilisé dans le présent document.}. % +Le paquetage est également compatible avec les styles de citation +standards mentionnés ci-dessus. + +Parce qu'il est flexible et qu'il rend facile de produire des +extensions compatibles, \pkg{natbib} est en quelque sorte devenu un +standard \emph{de facto} pour la composition des bibliographies. +D'ailleurs, la classe \class{ulthese} pour les thèses et mémoires de +l'Université Laval charge par défaut le paquetage. + +Il existe plusieurs autres paquetages pour rencontrer des exigences +particulières avec {\BibTeX}: bibliographies multiples, bibliographies +par chapitre, etc. \citet{Mori:bibliographies:2009} en offre un bon +survol. Consulter aussi la section \emph{Bibliographies and citations} +de la formidable % +\doc[\emph{UK List of {\TeX} Frequently Asked Questions}]{letterfaq}{http://www.tex.ac.uk/}. + + +\subsection{Biber et biblatex} +\label{sec:bibliographie:systeme:biblatex} + +Au moment d'écrire ces lignes, un nouveau système de traitement des +bibliographies dans {\LaTeX} est en émergence. Il est formé du moteur +de traitement Biber\index{Biber} \citep{biber} et du paquetage \pkg{biblatex}\index{biblatex} +\citep{biblatex}. Ensemble, ils visent tout à la fois à remplacer +l'infrastructure bâtie autour de {\BibTeX} et à proposer des +fonctionnalités additionnelles. Citons le support natif des caractères +UTF-8 et de nombreux modes de citation, dont le mode +auteur-titre populaire en sciences humaines. + +Le duo Biber-\pkg{biblatex} bénéficie d'un développement récent en +phase avec les technologies et les préoccupations actuelles. Certains +enjoignent aux débutants de sauter dans ce train. Difficile, +cependant, de dire si ce système saura s'établir comme nouveau +standard, surtout compte tenu de la masse de matériel disponible pour +{\BibTeX}. + +Pour de l'information additionnelle, consulter % +\link{https://tex.stackexchange.com/q/25701}{cette entrée} % +du site {\TeX}--{\LaTeX} Stack Exchange qui fournit un excellent +sommaire des mérites et des inconvénients respectifs des deux systèmes +de traitement de bibliographie. + +En l'absence d'un consensus clair, nous avons choisi de traiter dans +ce chapitre à la fois du système le plus répandu et de celui avec +lequel nous sommes le plus familier, soit la combinaison {\BibTeX} et +\pkg{natbib}. + +\subsection{EndNote} +\label{sec:bibliographie:systeme:endnote} + +EndNote\index{EndNote} est un logiciel commercial de gestion bibliographique très +répandu dans certaines disciplines scientifiques. Il n'est donc pas +rare que les nouveaux utilisateurs de {\LaTeX} demandent: «puis-je +utiliser EndNote pour ma bibliographie?» La réponse courte est «Non», +car {\LaTeX} ne peut traiter directement les données bibliographiques +de EndNote. La réponse plus longue est «Oui, indirectement», +car EndNote possède un filtre pour exporter ses données en format +{\BibTeX}. + +Il est hors de la portée de ce document de traiter de la conversion +des données bibliographiques de EndNote. Une simple recherche dans +Internet sur «EndNote BibTeX» devrait fournir toute l'information +nécessaire pour réaliser la conversion. + + +\section{Processus de création d'une bibliographie} +\label{sec:bibliographie:processus} + +La création d'une bibliographie compte plusieurs étapes. Nous les +présentons ici afin d'en avoir une vue d'ensemble avant d'aborder les +détails dans les sections suivantes. + +\begin{enumerate} +\item Construire une ou plusieurs bases de données contenant les + informations bibliographiques. On utilise les mêmes bases de données + pour tous ses documents. Par conséquent, le temps consacré à cette + étape s'amenuise au fur et à mesure que l'on complète ses bases de + données. +\item Choisir un style de citation et de présentation de la + bibliographie, généralement en se conformant aux us et coutumes dans + sa discipline scientifique ou aux instructions d'un éditeur. +\item Insérer dans le texte de son document des références à des + ouvrages se trouvant dans ses bases de données bibliographiques. +\item Insérer dans le code source du document les informations + relatives au style de bibliographie et aux bases de données à + utiliser, puis composer les références et la bibliographie avec + {\BibTeX}. +\end{enumerate} + + +\section{Création d'une base de données} +\label{sec:bibliographie:bib} + +Il est tout à fait possible de citer des références et de construire +une bibliographie avec {\LaTeX} sans avoir recours à une base de +données bibliographiques et à {\BibTeX} pour traiter celles-ci. Nous +recommandons toutefois fortement d'adopter cette approche. +L'investissement requis en temps et en efforts demeure relativement +faible, surtout au regard des avantages: +\begin{itemize} +\item on entre les informations dans une base de données une seule + fois pour ensuite les utiliser à répétition; +\item le traitement automatisé des informations assure une + présentation uniforme de celles-ci; +\item on peut changer le style de présentation de la bibliographie + sans pour autant toucher aux informations bibliographiques. +\end{itemize} + +La base de données n'est en fait qu'un simple fichier texte dans +lequel sont regroupées dans un format précis les informations +bibliographiques. Le nom du fichier doit nécessairement comporter +l'extension \code{.bib}. + +La base de données est composée d'entrées de divers \emph{types}: +livre, article scientifique, thèse, etc. Chaque entrée comporte un +certain nombre de \emph{champs}: titre, nom de l'auteur, date de +publication, etc. Pour un type d'entrée donné, certains champs sont +obligatoires, d'autres optionnels et d'autres simplement ignorés ou +inactifs. + +La structure générale d'une entrée de base de données est la suivante: +\begin{lstlisting} +@`\meta{type\_entree}'{`\meta{clé}', + `\marg{champ}' = `\marg{valeur}', + ..., + `\marg{champ}' = `\marg{valeur}'} +\end{lstlisting} +Ci-dessus, \meta{clé} est un identifiant arbitraire, mais unique --- +et idéalement mnémonique --- de l'entrée. C'est cette clé qui sera +utilisée pour faire référence à l'entrée dans le code source du +document. + +Il est beaucoup plus facile de comprendre ce dont il est question ici +par le biais d'exemples. Des commentaires et précisions additionnels sur la +préparation des entrées bibliographiques suivent l'\autoref*{ex:bibliographie:bib}. + +\begin{exemple} + \label{ex:bibliographie:bib} + On trouvera ci-dessous les entrées bibliographiques d'un livre + \citep{Kopka:latex:4e}, d'un article scientifique + \citep{Mori:bibliographies:2009} et d'un manuel générique, en + l'occurrence la documentation d'un paquetage \citep{natbib}. Pour + faciliter la comparaison, chaque entrée est immédiatement suivie du + texte de la notice tel qu'il apparait dans la bibliographie du + présent ouvrage. + +\begin{lstlisting}[language=] +@Book{Kopka:latex:4e, + author = {Kopka, Helmut and Daly, Patrick W.}, + title = {Guide to {\LaTeX}}, + publisher = {Addison-Wesley}, + year = 2003, + edition = 4, + isbn = {978-032117385-0}, + language = {english}} +\end{lstlisting} + + \begin{framed} + \noindent \nolink{\bibentry{Kopka:latex:4e}}. + \end{framed} + +\begin{lstlisting}[language=] +@Article{Mori:bibliographies:2009, + author = {Lapo F. Mori}, + title = {Managing bibliographies with {\LaTeX}}, + journal = {{TUG}boat}, + year = 2009, + volume = 30, + number = 1, + pages = {36-48}, + url = {https://www.tug.org/TUGboat/tb30-1/tb94mori.pdf}, + language = {english}} +\end{lstlisting} + + \begin{framed} + \noindent \nolink{\bibentry{Mori:bibliographies:2009}}. + \end{framed} + +\begin{lstlisting}[language=] +@Manual{natbib, + author = {Patrick W. Daly}, + title = {Natural Sciences Citations and References}, + year = 2010, + url = {https://www.ctan.org/pkg/natbib/}, + language = {english}} +\end{lstlisting} + + \begin{framed} + \noindent \nolink{\bibentry{natbib}}. + \end{framed} + \qed +\end{exemple} + + +\begin{itemize} +\item Les types d'entrée bibliographique dans l'exemple ci-dessus sont + \code{Book}, \code{Article} et \code{Manual}\footnote{% + Les identifiants des types d'entrée et des champs sont insensibles + à la casse. Par exemple, on pourrait tout aussi bien débuter une + entrée par \code{@Manual}, \code{@manual} ou \code{@MANUAL}.}. % + On remarquera que les champs utilisés sont différents d'un type à un + autre. + + On trouvera la liste de tous les types d'entrée et des champs + obligatoires et optionnels pour chacun dans, entre autres, % + \doc[Wikipedia]{}{https://fr.wikipedia.org/wiki/BibTeX}, % + la % + \doc[documentation de {\BibTeX}]{btxdoc}{http://texdoc.net/pkg/btxdoc} % + ou la plupart des bons ouvrages de référence + \citep[comme][]{Kopka:latex:4e}. +\item On entre le nom d'un auteur soit sous la forme \code{\{Prénom + Nom\}}, soit sous la forme \code{\{Nom, Prénom\}}. La seconde + forme est surtout utile pour distinguer explicitement le nom du + prénom, par exemple dans le cas de prénoms ou de noms multiples. +\item Lorsqu'un ouvrage compte plusieurs auteurs, on distingue ceux-ci + en séparant le nom complet de \emph{chacun} des auteurs par le + mot-clé \code{and}. +\item {\BibTeX} gère automatiquement les hauts et bas de + casse (majuscules et minuscules), en particulier dans les titres + d'ouvrages. Pour préserver une casse particulière, il suffit de + placer les lettres entre accolades. + + Par exemple, dans la seconde entrée de + l'\autoref{ex:bibliographie:bib}, le titre du journal TUGboat est + inscrit sous la forme \code{\{\{TUG\}boat\}} pour éviter que {\BibTeX} + ne le transforme en «Tugboat». +\item Les champs \code{isbn}, \code{url} et quelques autres + \citep[section~2.8]{natbib} sont fournis par le paquetage + \pkg{natbib}. Même si ces champs ne devaient pas s'afficher dans la + bibliographie pour le style choisi, c'est une bonne idée d'insérer + les informations dans la base de données pour référence future. +\item Le champ \code{language}, introduit par \pkg{babel}, permet de + préciser la langue de l'entrée bibliographique. La césure de mots et + la composition de certains éléments seront ainsi adaptées en + conséquence. + + Par exemple, si l'entrée d'un document comporte le champ + \code{edition = 2}, sa fiche bibliographique contiendra la mention + «2{\ieme} édition» ou «2\up{nd} edition» selon que l'on a précisé + que l'ouvrage est en français ou en anglais. +\item {\BibTeX} supporte les lettres accentuées ou autres caractères + spéciaux dans le texte des champs seulement si le document utilisant + la bibliographie supporte lui-même ces caractères; voir la + \autoref{sec:bases:francais}. Autrement, il faut entrer les + caractères spéciaux avec les commandes {\LaTeX} de base tel + qu'expliqué sommairement à la \autoref{sec:bases:caracteres}. + + Notre recommandation: éviter les lettres accentuées dans les + entrées susceptibles d'être utilisées dans un document entièrement + en anglais. +\end{itemize} + +\tipbox{Entretenir une base de données bibliographiques unique peut + rapidement devenir pénible quand le nombre d'entrée devient grand. + + Mieux vaut alors scinder ses références dans plusieurs fichiers par + thématique, un peu comme dans une bibliothèque: + droit, finance, informatique, mathématiques, etc. + + On nommera ensuite les fichiers du nom de la thématique: + \code{droit.bib}, \code{finance.bib}, + \code{informatique.bib}, etc.} + + + +\section{Style des citations et de la bibliographie} +\label{sec:bibliographie:style} + +Il existe plusieurs manières différentes de présenter une +bibliographie et {\LaTeX} sait s'adapter. Le format général de la +bibliographie est contrôlé par un \emph{style} choisi avec la commande +\cmd{\bibliographystyle}. Le style affecte habituellement deux +composantes de la bibliographie: +\begin{enumerate} +\item le mode de citation dans le texte (numérique, alphanumérique, + auteur-année, etc.); +\item la présentation des notices bibliographiques (ordre des + éléments, ponctuation, mise en forme des caractères, etc.). +\end{enumerate} +On trouvera des exemples de quelques styles de bibliographie dans le +\autoref{tab:bibliographie:styles}. + +\begin{table} + \caption{Quelques styles de bibliographie et leur effet sur le mode de + citation et le format des notices bibliographiques} + \label{tab:bibliographie:styles} + \small + \textbf{Styles standards numériques et alphanumériques} \\[0.5\normalbaselineskip] + \begin{tabularx}{1.0\linewidth}{p{0.16\linewidth}p{0.35\linewidth}X} + \toprule + style & mode de citation & format de notice \\ + \midrule + \code{plain} & + Un bon ouvrage de référence est [1] & + \begin{bibexample} + \item[{[1]}] Helmut Kopka and Patrick~W. Daly. + \emph{Guide to {\LaTeX}}. Addison-Wesley, 4 edition, 2003. + \end{bibexample} + \\ \addlinespace[8pt] + \code{plain-fr} & + Un bon ouvrage de référence est [1] & + \begin{bibexample} + \item[{[1]}] Helmut \textsc{Kopka} et Patrick~W. \textsc{Daly}: + \emph{Guide to {\LaTeX}}. Addison-Wesley, 4 édition, 2003. + \end{bibexample} + \\ \addlinespace[8pt] + \code{alpha-fr} & + Un bon ouvrage de référence est [KD03] & + \begin{bibexample} + \item[{[KD03]}] Helmut \textsc{Kopka} et Patrick~W. \textsc{Daly}: + \emph{Guide to {\LaTeX}}. Addison-Wesley, 4 édition, 2003. + \end{bibexample} \\ + \end{tabularx} \\ + \medskip + + \textbf{Styles auteur-année avec \pkg{natbib}} \\[0.5\normalbaselineskip] + \begin{tabularx}{1.0\linewidth}{p{0.16\linewidth}p{0.35\linewidth}X} + \toprule + style & mode de citation & format de notice \\ + \midrule + \code{plainnat-fr} & + Un bon ouvrage de référence est Kopka et Daly (2003) & + \begin{bibexample} + \item[] Helmut \textsc{Kopka} et Patrick~W. \textsc{Daly}: + \emph{Guide to {\LaTeX}}. Addison-Wesley, 4 édition, 2003. + \end{bibexample} + \\ \addlinespace[8pt] + \code{francais} & + Un bon ouvrage de référence est Kopka et Daly (2003) & + \begin{bibexample} + \item[] Kopka, H.\ et P.~W. Daly. 2003. + \emph{Guide to {\LaTeX}}, 4{\ieme} éd., Addison-Wesley. + \end{bibexample} \\ + \bottomrule + \end{tabularx} +\end{table} + +Les styles standards de {\LaTeX} sont \code{plain}, \code{unsrt}, +\code{alpha} et \code{abbrv}. Ces styles ont été développés pour des +modes de citation numériques ou alphanumériques. + +Pour plus de flexibilité, nous recommandons d'utiliser le paquetage +\pkg{natbib} pour la gestion des références et du style de la +bibliographie. Entre autres choses, ce paquetage supporte le style de +citation auteur-année fréquemment employé en sciences naturelles et +sociales, plusieurs commandes de citation, un grand nombre de styles +de bibliographie, ainsi que des entrées spécifiques pour les numéros +ISBN et les URL. Le paquetage fournit des styles \code{plainnat}, +\code{unsrtnat} et \code{abbrvnat} similaires aux styles standards, +mais plus complets. Il existe des % +\doc[versions francisées]{}{https://mirrors.ctan.org/biblio/bibtex/contrib/bib-fr/} % +de ces styles dans CTAN et dans {\TeX}~Live. +Il est fortement recommandé de consulter la % +\doc{natbib}{http://texdoc.net/pkg/natbib/} % +de \pkg{natbib} pour les détails. On y trouvera également des +informations sur l'utilisation de styles de citation autres que +auteur-année. + +Également dans CTAN et dans {\TeX}~Live, le paquetage +\pkg{francais-bst} \citep{francais-bst} fournit deux feuilles de style +compatibles avec \pkg{natbib} permettant de composer des +bibliographies auteur-année respectant les normes de typographie +française proposées dans \citet{Malo:1996}; voir le dernier exemple du +\autoref{tab:bibliographie:styles}. + +Le paquetage \pkg{natbib} est chargé par défaut par la classe +\class{ulthese}; consulter la section~6.6 de la % +\doc{ulthese}{http://texdoc.net/pkg/ulthese/} % +de la classe pour plus d'information sur l'interaction entre le +paquetage et celle-ci. + +En terminant, notons que la plupart des journaux scientifiques et des +maisons d'édition ont leur propre style que les auteurs sont tenus +d'utiliser. En ce qui a trait aux thèses et mémoires de l'Université +Laval, la Faculté des études supérieures et postdoctorales n'impose +aucun style de bibliographie particulier. Nous recommandons +d'utiliser le style usuel dans sa discipline scientifique. + + + +\section{Insertion de références dans le texte} +\label{sec:bibliographie:cite} + +La raison première d'une bibliographie, c'est évidemment d'y colliger +les informations relatives aux ouvrages auxquels un document fait +référence. Avant de penser créer une bibliographie, il faut donc +savoir comment insérer des références dans le texte. + +La commande de base pour insérer une référence au fil du texte dans +{\LaTeX} est +\begin{lstlisting} +\cite`\marg{clé}' +\end{lstlisting} +L'effet de la commande est double: +\begin{enumerate} +\item insérer une référence comme «\nolink{\citet{Mori:bibliographies:2009}}» + dans le texte; +\item ajouter le document dans la bibliographie. +\end{enumerate} +En somme, outre la phase de compilation qui fait l'objet de la section +suivante, c'est tout ce qu'il y a à faire pour construire sa +bibliographie. + +Avec \pkg{natbib}, on utilisera plutôt les commandes +\begin{lstlisting} +\citet`\marg{clé}' +\citep`\marg{clé}' +\end{lstlisting} +Dans le style de citation auteur-année, ces commandes permettent +respectivement d'insérer une référence au fil de la phrase ou en +aparté: +\begin{demo} + \begin{texample}[0.55\linewidth] +\begin{lstlisting} +\citet{Mori:bibliographies:2009} +en offre un bon survol. +\end{lstlisting} + \producing + \citet{Mori:bibliographies:2009}, + en offre un bon survol. + \end{texample} + \begin{texample}[0.55\linewidth] +\begin{lstlisting} +TUGboat a publié un bon survol +\citep{Mori:bibliographies:2009}. +\end{lstlisting} + \producing + TUGboat a publié un bon survol + \citep{Mori:bibliographies:2009}. + \end{texample} +\end{demo} + +On ne devrait \emph{jamais} entrer directement dans le texte des +informations bibliographiques, même partielles. Pour insérer dans le +texte le nom d'un auteur ou l'année de publication d'un ouvrage, +\pkg{natbib} offre les commandes: +\begin{lstlisting} +\citeauthor`\marg{clé}' +\citeyear`\marg{clé}' +\end{lstlisting} +Avec ces commandes, pas de risque de mal orthographier un nom par +inadvertance, ou d'oublier de modifier dans le texte une année de +publication que l'on aura changé dans la base de données +bibliographique. + +Le paquetage fournit plusieurs autres commandes pour manipuler les +informations bibliographiques et contrôler leur présentation; +consulter la % +\doc{natbib}{http://texdoc.net/pkg/natbib} % +de \pkg{natbib}. + +Il arrive que l'on souhaite inclure dans la bibliographie un ou +plusieurs documents qui ne sont pas cités dans le texte. Pour ce +faire, insérer dans le corps du document la commande +\begin{lstlisting} +\nocite`\marg{clé1,clé2,...}' +\end{lstlisting} +où \meta{clé1}, \meta{clé2}, \dots, sont les clés des documents à +inclure dans la bibliographie. + +Le paquetage \pkg{hyperref} fait automatiquement d'une référence +bibliographique un hyperlien vers l'entrée dans la bibliographie. +C'est le cas dans le présent document. Or, il peut arriver que +l'hyperlien soit superflu ou indésirable. Pour le supprimer pour une +référence particulière, utiliser l'environnement \Ie{NoHyper}: +\begin{lstlisting} +\begin{NoHyper} \citet`\marg{clé}' \end{NoHyper} +\end{lstlisting} + + +\section{Composition de la bibliographie} +\label{sec:bibliographie:bibtex} + +Les commandes de la section précédente servent à indiquer à {\LaTeX} +les ouvrages à inclure dans la bibliographie. C'est toutefois l'outil +externe {\BibTeX} qui se chargera de fournir à {\LaTeX} le texte des +références ainsi que le contenu de la bibliographie. + +À la \autoref{sec:presentation:processus}, nous avons représenté +schématiquement comme suit le processus de création d'un document avec +pdf{\LaTeX} ou {\XeLaTeX}: +\begin{center} + \sffamily + \begin{minipage}[t]{0.12\linewidth} + \centering + {\LARGE\faFileTextO} \\ \medskip + code source + \end{minipage} + \quad\faArrowRight\quad + \begin{minipage}[t]{0.12\linewidth} + \centering + {\LARGE\faCogs} \\ \medskip + \code{pdflatex} \\ \code{xelatex} + \end{minipage} + \quad\faArrowRight\quad + \begin{minipage}[t]{0.12\linewidth} + \centering + {\LARGE\faFilePdfO} \\ \medskip + fichier PDF + \end{minipage} +\end{center} + +Pour créer ou mettre à jour la bibliographie, il s'ajoute au processus +une étape de compilation du document avec {\BibTeX}: +\begin{center} + \sffamily + \begin{minipage}[t]{0.12\linewidth} + \centering + {\LARGE\faFileTextO} \\ \medskip + code source + \end{minipage} + \quad\faArrowRight\quad + \begin{minipage}[t]{0.12\linewidth} + \centering + {\LARGE\faCogs} \\ \medskip + \code{pdflatex} \\ \code{xelatex} + \end{minipage} + \quad\faArrowRight\quad + \begin{minipage}[t]{0.12\linewidth} + \centering + {\LARGE\faCogs} \\ \medskip + \code{bibtex} + \end{minipage} + \quad\faArrowRight\quad + \begin{minipage}[t]{0.12\linewidth} + \centering + {\LARGE\faCogs}\; + \raisebox{-2pt}{\parbox[b]{1em}{\centering\large\faRepeat\tiny\\ $\times 2$}} \\ \medskip + \code{pdflatex} \\ \code{xelatex} + \end{minipage} + \quad\faArrowRight\quad + \begin{minipage}[t]{0.12\linewidth} + \centering + {\LARGE\faFilePdfO} \\ \medskip + fichier PDF + \end{minipage} +\end{center} + +Plus en détails, le processus de préparation d'un document comprenant +une bibliographie est le suivant. + +\begin{enumerate} +\item Composer le texte et y insérer des références avec les commandes + de la section précédente. +\item Ajouter dans le préambule ou près de la commande + \cmdprint{\bibliography} ci-dessous la commande +\begin{lstlisting} +\bibliographystyle`\marg{style}' +\end{lstlisting} + où \meta{style} est un nom de style bibliographique. +\item Ajouter dans le texte la commande +\begin{lstlisting} +\bibliography{`\meta{base\_donnees1}', `\meta{base\_donnees2}', ...} +\end{lstlisting} + à l'endroit où l'on veut qu'apparaisse la bibliographie + (généralement à la fin du document). Les arguments + \meta{base\_donnees1}, \meta{base\_donnees2}, séparés par des + virgules, sont les noms (sans l'extension \code{.bib}) des fichiers + de données bibliographiques. +\item \label{item:bibliographie:1} Compiler le document une première + fois avec un moteur {\TeX} afin que {\LaTeX} détecte les ouvrages à + insérer dans la bibliographie. À cette étape, les références dans le + texte apparaissent sous forme d'un point d'interrogation + «\textbf{?}». +\item Compiler le document avec {\BibTeX} afin de préparer le texte + des références et composer la bibliographie. +\item \label{item:bibliographie:2} Compiler à nouveau le document au + moins deux fois avec un moteur {\TeX} afin d'y insérer d'abord la + bibliographie, puis le texte des références. +\end{enumerate} + +Il faut répéter les étapes +\ref*{item:bibliographie:1}--\ref*{item:bibliographie:2} chaque fois +qu'une nouvelle référence est ajoutée dans le document ou que l'entrée +bibliographique est modifiée. Autrement, tant que la bibliographie +demeure inchangée, une compilation standard avec seulement le moteur +{\TeX} suffit. + +\begin{exemple} + La \autoref{fig:bibliographie:bibtex:1} présente le contenu d'un + fichier de base de données bibliographiques et le fichier source + d'un document simple contenant des références et une bibliographie. + + \begin{itemize} + \item Le document utilise le mode de citation auteur-année de + \pkg{natbib}. + \item La présence du paquetage \pkg{fontspec} dans le préambule + indique que le document doit être compilé avec {\XeLaTeX}. Cela + fait en sorte que les lettres accentuées sont automatiquement + supportées tant dans le texte que dans les entrées de la + bibliographie. + \item Le paquetage \pkg{babel} est activé avec l'anglais et le + français, les deux langues utilisées dans la bibliographie. Nommé + en dernier dans les options de chargement de la classe, le + français est la langue par défaut du document. + \end{itemize} + + Ces fichiers en main, les étapes de composition 1--3 sont + complétées. La \autoref{fig:bibliographie:bibtex:2} présente la zone + de texte principale du document après l'étape 4, puis après chacune + des deux compilations de l'étape 6. % + \qed + \begin{figure} + \centering + \code{exemple-bibliographie.bib} + \lstinputlisting[language=]{listings/exemple-bibliographie.bib} + \medskip + \code{exemple-bibliographie.tex} + \lstinputlisting[firstline=3]{listings/exemple-bibliographie.tex} + \caption[Code source d'un fichier de base de données et + d'un document simple]{% + Code source d'un fichier de base de données (haut) et + d'un document simple (bas)} + \label{fig:bibliographie:bibtex:1} + \end{figure} + \begin{figure} + \code{xelatex} + \begin{framed} + \includegraphics[width=\linewidth]{images/exemple-bibliographie-cropped-1} + \end{framed} + \code{xelatex} $\rightarrow$ \code{bibtex} $\rightarrow$ \code{xelatex} + \begin{framed} + \includegraphics[width=\linewidth]{images/exemple-bibliographie-cropped-2} + \end{framed} + \code{xelatex} $\rightarrow$ \code{bibtex} $\rightarrow$ \code{xelatex} $\rightarrow$ \code{xelatex} + \begin{framed} + \includegraphics[width=\linewidth]{images/exemple-bibliographie-cropped-3} + \end{framed} + \caption{Zone de texte du document aux diverses étapes de la + compilation des fichiers de la + \autoref{fig:bibliographie:bibtex:1} avec {\XeLaTeX} et + {\BibTeX}} + \label{fig:bibliographie:bibtex:2} + \end{figure} +\end{exemple} + +\tipbox{Aux toutes dernières étapes avant de rendre un document, s'assurer + d'exécuter {\BibTeX} une dernière fois et de compiler avec + pdf{\LaTeX} ou {\XeLaTeX} au moins deux fois. Le journal de la + compilation (\emph{log file}) ne devrait pas rapporter de références + manquantes (\emph{undefined references}).} + +Les logiciels intégrés de rédaction offrent généralement des raccourcis pour exécuter la +compilation avec {\BibTeX}. +\begin{itemize} +\item Dans TeXShop, on sélectionne un autre programme dans le menu à + côté du bouton «Composition». +\item Dans Texmaker, on choisit le programme approprié dans le menu de + composition rapide. +\item Dans GNU~Emacs, on choisit \code{BibTeX} dans le menu + \code{Command} ou après avoir lancé la commande + \code{TeX-command-master} avec \code{C-c C-c}. +\end{itemize} +La \autoref{fig:bibliographie:editeurs} présente les deux premières +interfaces. + +\begin{figure} + \centering + \includegraphics[height=2.2cm]{images/bibtex-texshop} + \qquad + \includegraphics[height=2.2cm]{images/bibtex-texmaker} + \caption[Interfaces de sélection du programme {\BibTeX} dans TeXShop + et Texmaker]{% + Interfaces de sélection du programme {\BibTeX} dans TeXShop (à + gauche) et Texmaker (à droite)} + \label{fig:bibliographie:editeurs} +\end{figure} + +On trouvera des informations additionnelles, notamment sur des sources +de données bibliographiques et des outils de gestion des bases de +données, dans la section % +\doc[Gestion de la bibliographie]{}{https://fr.wikibooks.org/wiki/LaTeX/Gestion_de_la_bibliographie} % +de \citeauthor{wikilivres:latex}. + + + +%%% +%%% Exercices +%%% + +\section{Exercices} +\label{sec:bibliographie:exercices} + +\Opensolutionfile{solutions}[solutions-bibliographie] + +\begin{Filesave}{solutions} +\section*{Chapitre \ref*{chap:bibliographie}} +\addcontentsline{toc}{section}{Chapitre \protect\ref*{chap:bibliographie}} + +\end{Filesave} + +\begin{exercice} + Composer des entrées de base de données pour les références + bibliographiques suivantes. + \begin{enumerate} + \item \nolink{\bibentry{Mittelbach:floats:2014:nourl}} + + \emph{Astuce}: cette entrée est un article tiré d'une revue + scientifique. + + \item \nolink{\bibentry{memoir}} + + \emph{Astuces}: traiter cette entrée comme un livre et utiliser le + champ \code{note} pour consigner la remarque qui se trouve à la + fin de la notice. + + \item \nolink{\bibentry{pstricks}} + + \emph{Astuces}: utiliser le type de document \code{Manual}; + attention à la casse de certains mots; on obtient le symbole {\ss} + avec la commande \cmdprint{\ss}. + \end{enumerate} + \begin{sol} + On trouve les champs obligatoires et optionnels pour chaque type + d'entrée dans % + \doc[Wikipedia]{}{https://fr.wikipedia.org/wiki/BibTeX}. % + La clé est laissée vacante dans les réponses ci-dessous. + \begin{enumerate} + \item On utilise le type \code{Article} pour cette entrée. +\begin{lstlisting}[language=] +@Article{, + author = {Frank Mittelbach}, + title = {How to Influence the Position of Float + Environments Like Figure and Table In + {\LaTeX}?}, + journal = {{TUG}boat}, + year = 2014, + volume = 35, + number = 3, + pages = {258-254}, + language = {english}} +\end{lstlisting} + + \item On utilise le type \code{Book} pour cette entrée. +\begin{lstlisting}[language=] +@Book{, + author = {Peter Wilson}, + title = {The Memoir Class for Configurable + Typesetting}, + publisher = {The Herries Press}, + year = 2013, + edition = 8, + note = {Maintained by Lars Madsen}, + url = {https://www.ctan.org/pkg/memoir/}, + language = {english}} +\end{lstlisting} + + \item La réponse ci-dessous contient les prénoms des auteurs, + simplement afin d'illustrer que {\BibTeX} sait les abréger au + moment de composer la notice bibliographique. Remarquer + l'utilisation des accolades \verb={ }= dans le titre pour + préserver la casse de «PSTricks» et de «PostScript». +\begin{lstlisting}[language=] +@Manual{, + author = {Timothy {V}an Zandt and Denis Girou and + Herbert Vo{\ss}}, + title = {{PSTricks} --- {PostScript} Macros for + Generic {\TeX}}, + year = 2014, + url = {https://www.ctan.org/pkg/pstricks-base/}, + language = {english}} +\end{lstlisting} + \end{enumerate} + \end{sol} +\end{exercice} + +\begin{exercice}[nosol] + Utiliser pour cet exercice le fichier + \fichier{exercice\_gabarit.tex} ainsi que la base de données + bibliographique crée à l'exercice précédent. + \begin{enumerate} + \item Créer un document simple comprenant des références à une ou + plusieurs des entrées bibliographiques de l'exercice précédent. + Compiler le document en suivant les étapes mentionnées à la + \autoref{sec:bibliographie:bibtex} en utilisant tour à tour les + styles par défaut \code{plain}, \code{unsrt}, \code{alpha} et + \code{abbrv}. + \item Charger dans le document le paquetage \pkg{natbib} (avant + \pkg{babel}) et utiliser le style de bibliographie \code{francais} + fourni par \pkg{francais-bst} (installé par défaut dans + {\TeX}~Live). Recompiler le document et observer les différences + par rapport aux documents produit en a). + \end{enumerate} +\end{exercice} + +\begin{exercice}[nosol] + À partir d'un gabarit fourni avec la classe \class{ulthese}, + produire un document simple contenant une bibliographie. +\end{exercice} + +\Closesolutionfile{solutions} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "formation-latex-ul" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/boites.tex b/info/formation-latex-ul/source/boites.tex new file mode 100644 index 0000000000..e11dee2e58 --- /dev/null +++ b/info/formation-latex-ul/source/boites.tex @@ -0,0 +1,496 @@ +%%% Copyright (C) 2018 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\chapter{Boites} +\label{chap:boites} + +Il arrive que l'on doive traiter de manière spéciale une aire +rectangulaire de texte; pour l'encadrer, la mettre en surbrillance ou +la mettre en exergue, par exemple. + +Avec les traitements de texte, on aura souvent recours aux tableaux à +de telles fins. Or, les tableaux devraient être réservés à la +disposition d'information sous forme de lignes et de colonnes. Pour +disposer et mettre en forme tout autre type contenu se présentant sous +forme rectangulaire, {\LaTeX} offre la solution plus générale des +«boites». + +Il existe trois sortes de boites en {\LaTeX}: les boites horizontales, +dont le contenu est disposé exclusivement côte à côte; les boites +verticales, qui peuvent contenir plusieurs lignes de contenu; les +boites de réglure pour former des lignes pleines de largeur et de +hauteur quelconques. + +Il n'est pas inutile de savoir, au passage, que {\TeX} ne manipule que +cela, des boites. Pour {\TeX}, chaque caractère, chaque lettre n'est +qu'un rectangle d'une certaine largeur qui s'élève au-dessus de la +ligne de base (les lignes d'une feuille lignée) et qui, parfois, se +prolonge sous la ligne de base (pensons aux lettres \emph{p}, \emph{y} +ou \emph{Q}). La \autoref{fig:boites:glyphs} illustre cela. + +\begin{figure}[t] + \begin{minipage}{0.45\linewidth} + \centering\huge + fantastique + \end{minipage} + \hfill + \begin{minipage}{0.45\linewidth} + %% creéation de boites autour des caractères + %% https://tex.stackexchange.com/q/57812 + \fboxrule=0.1pt + \fboxsep=-\fboxrule + \makeatletter + \def\SOUL@soeverytoken{% + \fbox{\color{white}\the\SOUL@token}} + \makeatother + \centering + \so{\huge fantastique} + \end{minipage} + \caption[Pour {\TeX}, un texte n'est qu'un alignement de boites]{% + Pour {\TeX}, un texte n'est qu'un alignement de boites. À gauche, + ce que nous voyons dans le document fini; à droite, ce que {\TeX} + manipule.} + \label{fig:boites:glyphs} +\end{figure} + +Les commandes et environnements présentés ci-dessous permettent +simplement de créer d'autres boites dont le contrôle des dimensions et +du contenu est laissé à l'usager. + +Une fois créée, une boite ne peut être scindée en parties, notamment +entre les lignes ou entre les pages. + + +\section{Boites horizontales} +\label{sec:boites:lrbox} + +Le concept de boite le plus simple dans {\LaTeX} est celui de boite +«horizontale», c'est-à-dire dont le contenu est disposé latéralement +de gauche à droite\footnote{% + D'où l'appellation \emph{LR (left-right) box} en anglais.}. % +Le contenu est normalement du texte, mais conceptuellement ce pourrait +être n'importe quoi, y compris d'autres boites. + +Les commandes de base pour créer des boites horizontales sont: +\begin{lstlisting} +\mbox`\marg{texte}' +\fbox`\marg{texte}' +\end{lstlisting} +Elles produisent une boite de la largeur précise de \meta{texte}. Avec +la commande \cmd{\fbox}, le texte est au surplus \fbox{encadré}. + +Il existe également des versions plus générales des commandes +\cmd{\mbox} et \cmd{\fbox}: +\begin{lstlisting} +\makebox`\oarg{largeur}\oarg{pos}\marg{texte}' +\framebox`\oarg{largeur}\oarg{pos}\marg{texte}' +\end{lstlisting} +Les arguments optionnels \meta{largeur} et \meta{pos} déterminent +respectivement la largeur de la boite et la position du texte +dans la boite. Les valeurs possibles de \meta{pos} sont: \code{l} pour +du texte aligné à gauche, \code{r} pour du texte aligné à droite et +\code{c} (la valeur par défaut) pour du texte centré. Ainsi, la commande +\begin{lstlisting} +\framebox[3.5cm][l]{aligné à gauche} +\end{lstlisting} +produit \framebox[3.5cm][l]{aligné à gauche}, alors que +\begin{lstlisting} +\makebox[3.5cm]{centré} +\end{lstlisting} +produit \makebox[3.5cm]{centré}. + +\tipbox{En usage courant, la commande \cmd{\mbox} sert principalement + à deux choses: + \begin{enumerate} + \item réunir en un bloc du texte que l'on ne veut pas voir scindé + entre les lignes ou entre les pages; + \item \label{item:boites:mbox} créer une boite vide avec + \cs{mbox\{\}} afin de laisser croire à {\TeX} que du contenu + apparait à un endroit, sans toutefois qu'il n'occupe aucun espace. + \end{enumerate} + La seconde utilisation fait l'objet de + l'\autoref{ex:boites:alignement-v}.} + +Il est parfois nécessaire d'ajuster le positionnement vertical +d'éléments de contenu, notamment pour les symboles ou les images. La +commande +\begin{lstlisting} +\raisebox`\marg{déplacement}\marg{texte}' +\end{lstlisting} +produit une boite horizontale dont le contenu \meta{texte} est +surélevé de la longueur \meta{déplacement} par rapport à la ligne de +base. Si \meta{déplacement} est négatif, la boite est positionnée sous +la ligne de base. +\begin{demo} + \begin{texample}[0.55\textwidth] +\begin{lstlisting} +Texte \raisebox{1ex}{au-dessus} +de la ligne de base. +\end{lstlisting} + \producing + Texte \raisebox{1ex}{au-dessus} + de la ligne de base. + \end{texample} + + \begin{texample}[0.55\textwidth] +\begin{lstlisting} +Texte \raisebox{-1ex}{au-dessous} +de la ligne de base. +\end{lstlisting} + \producing + Texte \raisebox{-1ex}{au-dessous} + de la ligne de base. + \end{texample} +\end{demo} + +Attention, toutefois, de ne pas utiliser \cmd{\raisebox} pour placer +du texte en exposant ou en indice. Selon la nature du texte, employer +plutôt les commandes \cmd{\textsuperscript} et \cmd{\textsubscript}, +les commandes de la famille \cmd{\ieme} de \pkg{babel} (section~1.1 de +la % +\doc{frenchb}{http://texdoc.net/pkg/babel-french/}) ou, pour des +symboles mathématiques, les commandes d'exposant et d'indice +spécifiques au mode mathématique (\autoref{sec:math:bases:exposants}). + +\section{Boites verticales} +\label{sec:boites:parbox} + +Les boites verticales se distinguent des boites horizontales par le +fait qu'elles peuvent contenir plusieurs lignes de contenu empilées +les unes au-dessus des autres. Lorsque le contenu en question est du +texte, on obtient des paragraphes\footnote{% + D'où l'appellation de \emph{paragraph boxes} en anglais + ou \emph{parboxes} dans le jargon {\LaTeX}.}. % + +La commande de base pour créer une boite verticale est: +\begin{lstlisting} +\parbox`\oarg{pos}\marg{largeur}\marg{texte}' +\end{lstlisting} +Ici, l'argument optionnel \meta{pos} permet d'ajuster l'alignement +vertical de la boite avec la ligne de base: \code{b} ou \code{t} selon +que l'on souhaite aligner, respectivement, le bas ou le haut de la +boite avec la ligne de base. Par défaut, la boite est centrée avec la +ligne de base. Cet argument n'a aucun effet si la boite est le seul +élément de contenu du paragraphe. + +On remarquera que l'argument \meta{largeur} est ici obligatoire. +Autrement dit, on doit nécessairement définir la largeur des boites +verticales, un peu comme il faut bien définir la largeur de la page +pour le texte normal (la classe se charge de ce détail). + +Les boites créées avec \cmd{\parbox} ne peuvent contenir de structures +«complexes» comme des listes ou des tableaux. Parce que plus général, +l'outil véritablement utile pour la création de boites verticales est +l'environnement \Pe{minipage}. Cet environnement peut contenir à peu +n'importe quel type de contenu. Comme son nom l'indique, c'est ni plus +ni moins qu'une page miniature à l'intérieur de la page standard. + +La syntaxe de l'environnement \Ie{minipage} est la suivante: +\begin{lstlisting} +\begin{minipage}`\oarg{pos}\marg{largeur}' + `\meta{texte}' +\end{minipage} +\end{lstlisting} +La signification des arguments \meta{largeur} et \meta{pos} est la +même que pour la commande \cmd{parbox}. + +L'environnement \Pe{minipage} est fréquemment utilisé pour disposer +des éléments de contenu de manière spécifique sur la page, notamment +des tableaux ou des figures côte à côte ou en grille (voir +l'\autoref{exemple:tableaux:grille} à la +\autopageref{exemple:tableaux:grille}). + +\begin{exemple} + L'agencement de boites ci-dessous est produit avec le code qui suit + immédiatement. \\[0.5\baselineskip] + \begin{minipage}{\textwidth} + \makebox[0pt][l]{\color{lightgray}\rule{\textwidth}{0.7pt}}\relax + \fbox{\begin{minipage}[b]{0.3\textwidth} La ligne inférieure de + cette \emph{minipage} est alignée avec + \end{minipage}} \hfill \fbox{\parbox{0.3\textwidth}{le centre de + cette boite verticale, qui est à son tour alignée avec}} + \hfill \fbox{\begin{minipage}[t]{0.3\textwidth} la ligne + supérieure de cette \emph{minipage}. Le filet horizontal grisé + représente la ligne de base du paragraphe contenant les trois + boites. + \end{minipage}} + \end{minipage} +\begin{lstlisting} +\begin{minipage}[b]{0.3\textwidth} + La ligne inférieure de cette \emph{minipage} [...] +\end{minipage} +\hfill +\parbox{0.3\textwidth}{le centre de cette boite [...] } +\hfill +\begin{minipage}[t]{0.3\textwidth} + la ligne supérieure de cette \emph{minipage}. [...] +\end{minipage} +\end{lstlisting} + \qed +\end{exemple} + +La commande \cmd{\hfill} utilisée entre les boites dans l'exemple +ci-dessus indique à {\LaTeX} d'insérer de l'espace entre les éléments +de contenu de manière à remplir entièrement la ligne de texte. C'est +une commande très utile pour disposer automatiquement des éléments à +intervalles égaux sur la largeur du bloc de texte. Ainsi, +\begin{lstlisting} +\framebox[\linewidth]{gauche \hfill droite} +\end{lstlisting} +produit \\[0.5\baselineskip] +\framebox[\linewidth]{gauche \hfill droite} \\[0.5\baselineskip] +alors que +\begin{lstlisting} +\framebox[\linewidth]{gauche \hfill centre \hfill droite.} +\end{lstlisting} +produit \\[0.5\baselineskip] +\framebox[\linewidth]{gauche \hfill centre \hfill droite.} + + + +\section{Boites de réglure} +\label{sec:boites:rulebox} + +En imprimerie, une réglure est une ligne droite continue ou +pointillée. Une ligne n'étant jamais rien d'autre qu'un rectangle +plein, si mince fut-il, la réglure est le troisième type de +boite\footnote{% + \emph{Rule box}, en anglais} % +dans {\LaTeX}. + +La commande +\begin{lstlisting} +\rule`\oarg{déplacement}\marg{largeur}\marg{hauteur}' +\end{lstlisting} +crée une réglure de dimensions \meta{largeur} $\times$ \meta{hauteur}. +Par défaut, la réglure s'appuie sur la ligne de base. Le résultat de +\begin{lstlisting} +\rule{2cm}{6pt} +\end{lstlisting} +est donc une ligne pleine de $2$~cm de long et de $6$~points d'épais: +\rule{2cm}{6pt}. + +L'argument optionnel \meta{déplacement} permet de déplacer +verticalement la réglure au-dessus ou au-dessous de la ligne de base +selon que la longueur \meta{déplacement} est positive ou négative. Avec les deux +commandes +\begin{lstlisting} +\rule[3pt]{2cm}{6pt} +\rule[-3pt]{2cm}{6pt} +\end{lstlisting} +on crée respectivement les réglures \rule[3pt]{2cm}{6pt} et +\rule[-3pt]{2cm}{6pt}. + +Un usage intéressant de la réglure consiste à faire croire à {\TeX} +qu'une ligne est plus haute qu'il n'y parait en insérant dans celle-ci +une réglure de largeur nulle. Par exemple, la distance entre +\rule[-12pt]{0mm}{30pt}\relax la présente ligne et les autres du paragraphe est +plus grande que la normale parce que nous y avons inséré une réglure +invisible avec +\begin{lstlisting} +\rule[-12pt]{0mm}{30pt} +\end{lstlisting} +Ce truc est particulièrement utile pour augmenter la hauteur des +lignes dans un tableau; voir la \autoref{sec:tableaux:tableaux}. + + + +%%% +%%% Exercices +%%% + +\section{Exercices} +\label{sec:boites:exercices} + +\Opensolutionfile{solutions}[solutions-boites] + +\begin{Filesave}{solutions} +\section*{Chapitre \ref*{chap:boites}} +\addcontentsline{toc}{section}{Chapitre \protect\ref*{chap:boites}} + +\end{Filesave} + +\noindent% +Utiliser comme canevas le fichier \fichier{exercice\_gabarit.tex} pour +tous les exercices ci-dessous. + +\begin{exercice} + Une fois qu'une boite est définie, {\TeX} n'y voit qu'une unité de + contenu avec ses dimensions propres. Il est donc possible de définir + une boite à l'intérieur d'une autre, et ce, peu importe le type de + boite. + + Avec ceci en tête, définir la boite suivante: + \begin{center} + \fbox{\fbox{% + \parbox{10cm}{Ce bloc de texte est une boite verticale de + 10~cm de large, doublement encadrée et centrée sur la + ligne.}}} + \end{center} + + \begin{sol} + Une première boite verticale de 10~cm de large contient le texte: +\begin{lstlisting} +\parbox{10cm}{Ce bloc [...] la ligne.} +\end{lstlisting} + Cette boite peut être placée dans une boite horizontale encadrée + avec \cmd{\fbox}. Celle-ci peut à son tour être placée dans une autre + boite horizontale encadrée, de manière à obtenir un cadrage + double. Pour centrer le tout sur la ligne, on a recours à + l'environnement \Ie{center}: +\begin{lstlisting} +\begin{center} + \fbox{\fbox{\parbox{10cm}{Ce bloc [...] la ligne.}}} +\end{center} +\end{lstlisting} + \end{sol} +\end{exercice} + +\begin{exercice} + \label{ex:boites:alignement-v} + Réaliser l'agencement de boites verticales suivant: + \begin{center} + \begin{minipage}{0.8\linewidth} + \makebox[0pt][l]{\color{lightgray}\rule{\linewidth}{0.7pt}}\relax + \hfill + \begin{minipage}[b]{0.95\linewidth} + \small + \parbox[t]{0.45\linewidth}{Deux boites verticales de + hauteurs différentes placées côte à côte} + \hfill + \parbox[t]{0.45\linewidth}{alignées sur + leurs premières lignes et le bas de la boite + la plus haute alignée sur la ligne de base (représentée + ici par le filet horizontal grisé).} \\ + \mbox{} + \end{minipage} + \hfill + \end{minipage} + \end{center} + + La solution intuitive serait la suivante: +\begin{lstlisting} +\begin{minipage}[b]{...} + \parbox[t]{...}{...} \hfill \parbox[t]{...}{...} +\end{minipage} +\end{lstlisting} + Cependant, cette solution produit le résultat suivant (les boites + sont rendues visibles par des cadres): + \begin{center} + \begin{minipage}{0.8\linewidth} + \makebox[0pt][l]{\color{lightgray}\rule{\linewidth}{0.7pt}}\relax + \hfill + \fbox{% + \begin{minipage}[b]{0.95\linewidth} + \small + \fbox{% + \parbox[t]{0.45\linewidth}{Les deux boites sont + correctement alignées l'une par rapport à l'autre}} \hfill + \fbox{\parbox[t]{0.45\linewidth}{mais l'alignement avec la + ligne de base est incorrect.}} + \end{minipage}} + \hfill + \end{minipage} + \end{center} + La raison: pour {\TeX}, la \Ie{minipage} externe ne contient que + deux «caractères» sur une seule ligne de «texte». La \Pe{minipage} + est donc correctement alignée sur sa ligne du bas, mais celle-ci se + trouve aussi être la ligne du haut. + + Pour parvenir au résultat escompté, utiliser la commande \cmd{\mbox} + pour créer une seconde ligne (vide) dans la \Pe{minipage} externe. + \begin{sol} + L'idée consiste à créer une seconde ligne dans la \Pe{minipage} + externe sans que celle-ci n'occupe aucun espace. Pour ce faire, on + insère du contenu vide avec \cs{mbox\{\}}, tel qu'expliqué à la + \autopageref{item:boites:mbox}. Le code +\begin{lstlisting} +\begin{minipage}[b]{...} + \parbox[t]{...}{...} \hfill \parbox[t]{...}{...} \\ + \mbox{} +\end{minipage} +\end{lstlisting} + produit donc le résultat voulu: + \begin{center} + \begin{minipage}{0.8\linewidth} + \makebox[0pt][l]{\color{lightgray}\rule{\linewidth}{0.7pt}}\relax + \hfill + \fbox{% + \begin{minipage}[b]{0.95\linewidth} + \small + \fbox{% + \parbox[t]{0.45\linewidth}{Les boites sont rendues visibles + par des cadres}} \hfill + \fbox{\parbox[t]{0.45\linewidth}{et le filet horizontal grisé + représente la ligne de base du paragraphe courant.}} \\ + \fbox{\mbox{}} + \end{minipage}} + \hfill + \end{minipage} + \end{center} + (Sans le cadre, la boite de la seconde ligne n'occupe aucun espace.) + \end{sol} +\end{exercice} + +\begin{exercice} + Réaliser l'agencement de boites verticales ci-dessous. (La taille de + la police est \cs{footnotesize}.) + \begin{center} + \begin{minipage}{120mm} + \footnotesize + \begin{minipage}[b]{80mm} + \parbox[t]{30mm}{La première ligne de cette \emph{parbox} de + $30$~mm de large est alignée avec celle de la boite + voisine.} + \hfill + \parbox[t]{45mm}{Cette \emph{parbox} de $45$~mm de large est + positionnée de telle sorte que sa première ligne soit + alignée avec le haut de la boite à gauche et la dernière + avec le bas de la boite à droite. La solution intuitive + consistant à placer côte à côte trois boites avec des + arguments de positionnement \code{t}, \code{t} et \code{b} + ne fonctionne pas.} \\ + \mbox{} + \end{minipage} + \hfill + \parbox[b]{35mm}{Pour parvenir à cette disposition, il faut + avoir recours à des lignes invisibles comme dans l'exercice + précédent.} + \end{minipage} + \end{center} + La troisième boite fait $35$~mm de large et l'espace entre les + boites, $5$~mm. + \begin{sol} + La solution la plus simple consiste à réunir les deux premières + boites dans une \Pe{minipage} dans laquelle les deux boites seront + alignées tel que désiré, puis à aligner la \Pe{minipage} avec la + troisième boite. Cependant, il faut insérer une seconde ligne + invisible dans la \Pe{minipage} afin de pouvoir l'aligner par le + bas avec la boite de droite: +\begin{lstlisting} +\begin{minipage}[b]{80mm} + \parbox[t]{30mm}{...} \hfill \parbox[t]{45mm}{...} \\ + \mbox{} +\end{minipage} +\hfill +\parbox[b]{35mm}{...} +\end{lstlisting} + \end{sol} +\end{exercice} + +\Closesolutionfile{solutions} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "formation-latex-ul" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/colophon-diapos.tex b/info/formation-latex-ul/source/colophon-diapos.tex new file mode 100644 index 0000000000..b19fd123bd --- /dev/null +++ b/info/formation-latex-ul/source/colophon-diapos.tex @@ -0,0 +1,27 @@ +%%% Copyright (C) 2018 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\begin{frame}[plain] + \begin{adjustwidth}{20mm}{20mm} + \scriptsize \raggedright % + Ce document a été produit par le système de mise en page + {\XeLaTeX} avec la classe \textbf{beamer} et le thème Metropolis. + Les titres et le texte sont composés en Fira~Sans, les + mathématiques en Arev~Math et le code informatique en Fira~Mono. + Les icônes proviennent de la police Font~Awesome. + \end{adjustwidth} +\end{frame} + +%%% Local Variables: +%%% TeX-master: "formation-latex-ul-diapos" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/colophon.tex b/info/formation-latex-ul/source/colophon.tex new file mode 100644 index 0000000000..56b213c3e2 --- /dev/null +++ b/info/formation-latex-ul/source/colophon.tex @@ -0,0 +1,36 @@ +%%% Copyright (C) 2019 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\thispagestyle{empty} +\vspace*{\fill} + +\begingroup +\calccentering{\unitlength} +\begin{adjustwidth*}{\unitlength}{-\unitlength} + \begin{flushleft} + \small % + Ce document a été produit avec le système de mise en page + {\XeLaTeX} à partir de la classe \class{memoir}. Le texte + principal est en Lucida Bright~OT 11~points, les mathématiques en + Lucida Bright Math~OT, le code informatique en Lucida Grande + Mono~DK et les titres en Fira Sans. Les icônes proviennent + de la police Font~Awesome. + \end{flushleft} +\end{adjustwidth*} +\endgroup +\vfill + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "formation-latex-ul" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/commandes.tex b/info/formation-latex-ul/source/commandes.tex new file mode 100644 index 0000000000..7d2464334d --- /dev/null +++ b/info/formation-latex-ul/source/commandes.tex @@ -0,0 +1,400 @@ +%%% Copyright (C) 2018 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\chapter{Commandes et environnements définis par l'usager} +\label{chap:commandes} + +{\LaTeX} est un ensemble de macro-commandes conçu pour faciliter +l'utilisation du système {\TeX}. Dès lors, il est assez naturel de +permettre à l'usager de définir à son tour ses propres commandes. Il +suffit généralement d'avoir rédigé quelques documents --- ou quelques +chapitres d'un long document --- avec {\LaTeX} pour réaliser combien +cette possibilité est de nature à faciliter le travail. + +La définition de nouvelles commandes et de nouveaux environnements +peut servir à créer des extensions à {\LaTeX} --- c'est d'ailleurs ce +que font plusieurs paquetages. Cependant, en usage courant, on fera +principalement appel à ces fonctionnalités pour l'une ou l'autre des +trois raisons suivantes: + +\begin{enumerate} +\item créer des raccourcis pour de longues commandes utilisées + fréquemment; +\item créer des commandes sémantiques afin d'uniformiser la + présentation du texte; +\item modifier le comportement de commandes existantes --- car il est + également possible de redéfinir une commande existante. +\end{enumerate} + +\begin{exemple} + \label{ex:commandes:intro} + Nous avons créé ou modifié des commandes pour chacune des raisons + ci-dessus dans la préparation du présent document. + \begin{enumerate} + \item Une nouvelle commande \cmdprint{\doc} facilite et systématise + l'insertion de liens vers la documentation. D'un seul appel, elle + crée un hyperlien dans le texte suivi de l'icône {\faExternalLink} + et elle ajoute le nom du fichier de documentation dans la marge + précédé de l'icône {\faBookmark}. + \item Une nouvelle commande sémantique \cmdprint{\pkg} sert pour la + mise en forme des noms de paquetages. Ainsi, leur présentation est + toujours la même et si nous souhaitons en changer, il suffit de + modifier la définition de la commande. + \item La redéfinition de la commande \cmd{\chaptitlefont} de la + classe \class{memoir} permet de modifier la police et la mise en + forme des titres de chapitres. + \end{enumerate} + Nous reviendrons sur les détails de ces exemples dans la suite du + chapitre. % + \qed +\end{exemple} + + +\section{Nouvelles commandes} +\label{sec:commandes:commandes} + +Les commandes \cmd{\newcommand} et \cmd{\renewcommand} permettent +respectivement de définir une nouvelle commande et de redéfinir une +commande existante --- c'est-à-dire d'en modifier la définition. On +place généralement les appels à ces commandes dans le préambule du +document. + +\subsection{Commandes sans arguments} +\label{sec:commandes:commandes:sans_arg} + +Certaines commandes ne requièrent pas d'argument; pensons à +\cmdprint{\LaTeX} ou \cmdprint{\bfseries}. Ce sont les commandes les +plus simples à créer. La syntaxe des commandes \cmd{\newcommand} et +\cmd{\renewcommand} pour de tels cas est la suivante: +\begin{lstlisting} +\newcommand{`\bs\meta{nom\_commande}'}`\marg{définition}' +\renewcommand{`\bs\meta{nom\_commande}'}`\marg{définition}' +\end{lstlisting} +Le premier argument, \bs\meta{nom\_commande}, est le nom de la +commande, avec le symbole \bs. Ce nom doit être différent de celui +de toute commande active\footnote{% + Les commandes actives dans un document sont les commandes de base de + {\TeX} et {\LaTeX} ainsi que les commandes de tous les paquetages + chargés dans le préambule.} % +dans le document dans le cas de \cmdprint{\newcommand}. À l'inverse, +une commande active doit nécessairement porter le même nom lorsque +l'on fait appel à \cmdprint{\renewcommand}. + +Le second argument, \meta{définition}, contient la définition de la +commande. Il peut s'agir de caractères à insérer dans le texte, de +commandes à exécuter ou d'une combinaison de tout cela. + +\begin{exemple} + La commande \cmd{\mathbb}, présentée à la + \autoref{sec:math:symboles:mathcal}, permet de créer une lettre + majuscule ajourée pour représenter un ensemble de nombres en + mathématiques. Plutôt que de l'utiliser à divers endroits dans un + document, il est préférable de définir une commande sémantique comme + \cmdprint{\R} pour représenter l'ensemble des nombres réels: +\begin{lstlisting} +\newcommand{\R}{\mathbb{R}} +\end{lstlisting} + Ainsi, si l'on souhaite pour une raison quelconque modifier la + représentation de l'ensemble des nombres réels, il suffit de + modifier la définition de la commande \cmdprint{\R} pour que le + changement prenne effet dans tout le document. % + \qed +\end{exemple} + +\begin{exemple} + Tel que mentionné à l'\autoref{ex:commandes:intro}, nous avons + modifié la police des titres de chapitres dans le présent document + en redéfinissant la commande \cmdprint{\chaptitlefont} de la classe + \class{memoir}. Pour obtenir des titres de chapitres sans + empattements, en caractères gras, de dimension \cmdprint{\Huge} et + alignés à gauche, on trouve dans le préambule du document la + déclaration +\begin{lstlisting} +\renewcommand{\chaptitlefont}{\normalfont% + \sffamily\bfseries\Huge\raggedright} +\end{lstlisting} + \qed +\end{exemple} + + +\subsection{Commandes avec arguments} +\label{sec:commandes:commandes:avec_arg} + +Les commandes \cmdprint{\newcommand} et \cmdprint{\renewcommand} ont +d'autres tours dans leur sac. Leur syntaxe étendue permet également de +définir ou de redéfinir des commandes acceptant un ou plusieurs +arguments: +\begin{lstlisting} +\newcommand{`\bs\meta{nom\_commande}'}`\oarg{narg}\marg{définition}' +\renewcommand{`\bs\meta{nom\_commande}'}`\oarg{narg}\marg{définition}' +\end{lstlisting} +Le nouvel argument \meta{narg} est un nombre entre 1 et 9 +spécifiant le nombre d'arguments de la commande. La \meta{définition} +de la commande doit alors contenir des jetons \code{\#1}, \code{\#2}, +\dots\ pour identifier les endroits où les arguments 1, 2, \dots\ +doivent apparaitre. + +\begin{exemple} + La nouvelle commande \cmdprint{\pkg} mentionnée à + l'\autoref{ex:commandes:intro} affiche les noms de paquetages en + caractères gras. La commande prend en argument le nom du paquetage. + Sa définition est donc +\begin{lstlisting} +\newcommand{\pkg}[1]{\textbf{#1}} +\end{lstlisting} + Il s'agit encore d'une commande sémantique permettant de changer + aisément la mise en forme en modifiant une seule définition dans le + préambule du document. % + \qed +\end{exemple} + +\begin{exemple} + \label{ex:commandes:doc} + La commande \cmdprint{\doc} mentionnée à + l'\autoref{ex:commandes:intro} requiert trois arguments: + \begin{enumerate} + \item le texte de l'hyperlien qui sera placé au fil du texte; + \item le nom du fichier de documentation à placer dans la marge dans + une police non proportionnelle; + \item l'URL vers le fichier de documentation en ligne. + \end{enumerate} + Voici une version simplifiée de la définition de la commande: +\begin{lstlisting} +\newcommand{\doc}[3]{% + \href{#3}{#1~\raisebox{-0.2ex}{\faExternalLink}}% + \marginpar{\faBookmark~\texttt{#2}}} +\end{lstlisting} + La commande \cmd{\href} qui permet d'insérer un hyperlien dans le + texte provient du paquetage \pkg{hyperref} \citep{hyperref}. Les + commandes \cmdprint{\faEx\-ter\-nal\-Link} et \cmdprint{\faBookmark} + proviennent du paquetage \pkg{fontawesome} \citep{fontawesome}; elles + insèrent dans le texte des icônes de la police libre % + \link{https://fortawesome.com/}{Font~Awesome}. % + + Avec la définition ci-dessus, la déclaration +\begin{lstlisting} +\doc{documentation}{hyperref}{% + http://texdoc.net/pkg/hyperref} +\end{lstlisting} + produit: \doc{hyperref}{http://texdoc.net/pkg/hyperref}. % + \qed +\end{exemple} + + +\section{Nouveaux environnements} +\label{sec:commandes:environnements} + +Tel que mentionné en introduction du chapitre, {\LaTeX} permet +également à l'utilisateur de définir ou de modifier des +environnements. La mécanique est similaire à celle de la définition de +commandes, sauf qu'un environnement compte trois parties: le début, +marqué par la déclaration \cmdprint{\begin\marg{...}} et, parfois, des + commandes de configuration de l'environnement; le contenu en tant + que tel; la fin, marquée par la déclaration + \cmdprint{\end\marg{...}}. + +On crée ou modifie des environnements avec les commandes +\begin{lstlisting} +\newenvironment`\marg{nom\_env}\oarg{narg}\marg{début\_déf}\marg{fin\_déf}' +\renewenvironment`\marg{nom\_env}\oarg{narg}\marg{début\_déf}\marg{fin\_déf}' +\end{lstlisting} +Les nombreux arguments sont les suivants: +\begin{list}{}{% + \setlength{\labelsep}{1.5ex} + \settowidth{\labelwidth}{\meta{début\_déf}} + \setlength{\leftmargin}{\labelwidth} + \addtolength{\leftmargin}{\labelsep} + \setlength{\parsep}{0.5ex plus0.2ex minus0.2ex} + \setlength{\itemsep}{0.3ex} + \renewcommand{\makelabel}[1]{\meta{#1}\hfill}} +% + +\item[nom\_env] nom de l'environnement à créer ou à modifier. + Il est fortement recommandé de ne pas modifier les environnements de + base de {\LaTeX}; +\item[narg] un nombre entre 1 et 9 représentant le nombre + d'arguments de l'environnement, lorsqu'il y en a. Les arguments sont + utilisés de la même manière que dans les définitions de commandes; +\item[début\_déf] commandes et texte à insérer au début de + l'environnement, lors de l'appel \cmdprint{\begin\marg{nom\_env}}. + C'est dans ce bloc que doivent se trouver les jetons \code{\#1}, + \dots, \code{\#}\meta{narg} lorsque l'environnement a des + arguments. +\item[fin\_déf] commandes et texte à insérer à la fin de + l'environnement, lors de l'appel \cmdprint{\end\marg{nom\_env}}. + \end{list} + +\begin{exemple} + \label{ex:commandes:citation} + On souhaite composer les citations hors paragraphe de la + manière suivante: + \begin{quote} + \small\itshape% + Texte en italique, dans une police de taille inférieure au texte + normal et en retrait des marges gauche et droite. + \end{quote} + Ceci est simple à réaliser en se basant sur l'environnement standard + \Ie{quote} et en modifiant les attributs de police: +\begin{lstlisting} +\begin{quote} + \small\itshape% + Texte en italique... +\end{quote} +\end{lstlisting} + + Pour automatiquement composer toutes les citations de la même + manière, il suffit de créer un nouvel environnement \Ie{citation}: +\begin{lstlisting} +\newenvironment{citation}% + {\begin{quote}\small\itshape}% + {\end{quote}} +\end{lstlisting} + Le bloc de code ci-dessus peut ensuite être remplacé par +\begin{lstlisting} +\begin{citation} + Texte en italique... +\end{citation} +\end{lstlisting} + \qed +\end{exemple} + +\tipbox{N'hésitez pas à créer des nouvelles commandes et des nouveaux + environnements dès lors qu'une mise en forme particulière revient + plus d'une ou deux fois dans un document.} + + + +%%% +%%% Exercices +%%% + +\section{Exercices} +\label{sec:commandes:exercices} + +\Opensolutionfile{solutions}[solutions-commandes] + +\begin{Filesave}{solutions} +\section*{Chapitre \ref*{chap:commandes}} +\addcontentsline{toc}{section}{Chapitre \protect\ref*{chap:commandes}} + +\end{Filesave} + +\begin{exercice} + Certains auteurs composent les sigles et les acronymes\footnote{% + Un sigle est une abréviation formée par une suite de lettres qui + sont les initiales d'un groupe de mots. Un acronyme est un sigle + qui se prononce comme un mot ordinaire.} % + en petites capitales, avec ou sans les points: \textsc{c.q.f.d.}, + \textsc{nasa}. + \begin{enumerate} + \item Créer une commande \cmdprint{\NASA} qui insère l'acronyme + \textsc{nasa} dans le texte. Rappelons que l'on compose du texte en petites + capitales avec la commande \cmd{\textsc}. + \item Créer une commande plus générale \cmdprint{\sigle} qui affiche + son argument en petites capitales. La commande devra convertir + l'argument en minuscules avec \cmd{\MakeLowercase} afin que le + résultat soit toujours le même peu importe la casse utilisée dans + le code. Ainsi, \lstinline=\sigle{nasa}=, \lstinline=\sigle{Nasa}= et + \lstinline=\sigle{NASA}= donneront toujours + \textsc{nasa}. + \item Après avoir utilisé la commande \cmdprint{\sigle} à quelques + reprises dans un document, modifier sa définition pour plutôt + composer les sigles en majuscules. + \end{enumerate} + Utiliser le gabarit de document \fichier{exercice\_gabarit.tex} pour + créer et tester les commandes ci-dessus. + \begin{sol} + \begin{enumerate} + \item \lstinline=\newcommand{\NASA}{\textsc{nasa}}= + \item \lstinline=\newcommand{\sigle}[1]{\textsc{\MakeLowercase{#1}}}= + \item \lstinline=\newcommand{\sigle}[1]{\MakeUppercase{#1}}= + \end{enumerate} + \end{sol} +\end{exercice} + +\begin{exercice} + Nous n'avons pas abordé dans le chapitre une fonctionnalité plus + avancée de \cmd{\newcommand} et \cmd{\renewcommand}, soit celle de + pouvoir définir des commandes dont un argument est optionnel ou, + plus précisément, de donner une valeur par défaut à un argument. + + La syntaxe réellement complète de \cmd{\newcommand} et + \cmd{\renewcommand} est la suivante: +\begin{lstlisting} +\newcommand{`\bs\meta{nom\_commande}'}`\oarg{narg}\oarg{option}\marg{déf}' +\renewcommand{`\bs\meta{nom\_commande}'}`\oarg{narg}\oarg{option}\marg{déf}' +\end{lstlisting} + L'argument additionnel \meta{option} contient la valeur par défaut + du \emph{premier} argument de \bs\meta{nom\_commande}. Dès lors, la + commande ne compte plus \meta{narg} arguments obligatoires, mais + bien $\text{\meta{narg}} - 1$ arguments obligatoires et un optionnel. + + Modifier la définition de la commande \cmdprint{\doc} de + l'\autoref{ex:commandes:doc} pour que «documentation» soit le texte + par défaut de l'hyperlien qui est placé au fil du texte. + \begin{sol} + Avec la définition +\begin{lstlisting} +\newcommand{\doc}[3][documentation]{% + \href{#3}{#1~\raisebox{-0.2ex}{\faExternalLink}}% + \marginpar{\faBookmark~\texttt{#2}}} +\end{lstlisting} + la déclaration à deux arguments +\begin{lstlisting} +\doc{hyperref}{http://texdoc.net/pkg/hyperref} +\end{lstlisting} + produit toujours \doc{hyperref}{http://texdoc.net/pkg/hyperref}. + \end{sol} +\end{exercice} + +\begin{exercice} + Modifier l'environnement \Ie{citation} de + l'\autoref{ex:commandes:citation} afin de composer les citations + hors paragraphe comme suit: + \begin{quote} + \begin{tabularx}{\linewidth}{X} + \toprule + \small\sffamily% + La citation est toujours en retrait des marges gauche et droite, + mais également surmontée et suivie de filets horizontaux. Le + texte est en police de taille \cmdprint{\small}, droite et sans + empattements. \\ + \bottomrule + \end{tabularx} + \end{quote} + \emph{Astuce}: utiliser un tableau pleine largeur à l'intérieur de + l'environnement \Pe{quote} pour disposer le texte et créer les + filets horizontaux. + \begin{sol} + La définition suivante donne les résultats demandés: +\begin{lstlisting} +\newcommand{citation} + {\begin{quote} + \begin{tabularx}{\linewidth}{X} + \toprule\small\sffamily}% + {\\ \bottomrule + \end{tabularx} + \end{quote}} +\end{lstlisting} + On remarquera dans le troisième argument la présence de la + commande de fin de ligne {\bs\bs} qui doit absolument précéder + \cmdprint{\bottomrule}. + \end{sol} +\end{exercice} + +\Closesolutionfile{solutions} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "formation-latex-ul" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/couverture-arriere-diapos.tex b/info/formation-latex-ul/source/couverture-arriere-diapos.tex new file mode 100644 index 0000000000..4b7003ee6d --- /dev/null +++ b/info/formation-latex-ul/source/couverture-arriere-diapos.tex @@ -0,0 +1,35 @@ +%%% Copyright (C) 2019 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\begingroup +\TPGrid{16}{64} +\textblockorigin{0mm}{0mm} +\setlength{\parindent}{0mm} +\setlength{\bandeorwidth}{12.8125\TPVertModule} % == 4\logoheight +\setlength{\banderougewidth}{\paperwidth} +\addtolength{\banderougewidth}{-\bandeorwidth} +\setlength{\bandeorheight}{\TPVertModule} +\setlength{\banderougeheight}{\TPVertModule} + +%% bandeau identitaire arrière +\begin{frame}[plain] + \begin{textblock*}{\paperwidth}[0,1](0mm,56\TPVertModule) + \textcolor{or}{\rule{\bandeorwidth}{\TPVertModule}}% % bande or + \textcolor{rouge}{\rule{\banderougewidth}{\TPVertModule}} % bande rouge + \end{textblock*} +\end{frame} +\endgroup + +%%% Local Variables: +%%% TeX-master: "formation-latex-ul-diapos" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/couverture-arriere.tex b/info/formation-latex-ul/source/couverture-arriere.tex new file mode 100644 index 0000000000..a24d65bf77 --- /dev/null +++ b/info/formation-latex-ul/source/couverture-arriere.tex @@ -0,0 +1,34 @@ +%%% Copyright (C) 2018 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\begingroup +\TPGrid{8}{64} +\textblockorigin{0mm}{0mm} +\setlength{\parindent}{0mm} +\setlength{\bandeorwidth}{12.8125\TPVertModule} % == 4\logoheight +\setlength{\banderougewidth}{\paperwidth} +\addtolength{\banderougewidth}{-\bandeorwidth} +\setlength{\bandeorheight}{\TPVertModule} +\setlength{\banderougeheight}{\TPVertModule} + +%% bandeau identitaire arrière +\begin{textblock*}{\paperwidth}[0,1](0mm,56\TPVertModule) + \textcolor{or}{\rule{\bandeorwidth}{\TPVertModule}}% % bande or + \textcolor{rouge}{\rule{\banderougewidth}{\TPVertModule}} % bande rouge +\end{textblock*} +\endgroup + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "formation-latex-ul" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/couverture-avant-diapos.tex b/info/formation-latex-ul/source/couverture-avant-diapos.tex new file mode 100644 index 0000000000..bca073983d --- /dev/null +++ b/info/formation-latex-ul/source/couverture-avant-diapos.tex @@ -0,0 +1,142 @@ +%%% Copyright (C) 2019 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +%% Normes de présentation visuelle 2018 +%% +%% - grille de 8 unités de haut +%% - 1 mesure = 1/8 d'unité +%% - bande identitaire de 1 mesure placée au bas de la 7e unité +%% - logo haut de 4 mesures avec blancs de deux mesures en haut et +%% en bas +%% - blanc équivalent à la largeur du blason à droite du logo +%% - bande or de la largeur du logo + blanc à droite +%% +%% Dimensions du logo UL +%% +%% hauteur: 128 +%% largeur totale: 310 +%% largeur blason: 100 +%% valeur clé: (310 + 100)/128 = 3.2031125 +%% +%% Dimensions de l'image +%% +%% hauteur: 55 mesures - 1pt (filet) = 54.9191919 mesures +%% largeur: 160mm +%% ratio largeur/hauteur: 160/77.23 + +\begingroup +\TPGrid{16}{64} +\textblockorigin{0mm}{0mm} +\setlength{\parindent}{0mm} +\setlength{\imageheight}{54.9191919\TPVertModule} +\setlength{\logoheight}{4\TPVertModule} +\setlength{\bandeorwidth}{3.203125\logoheight} +\setlength{\banderougewidth}{\paperwidth} +\addtolength{\banderougewidth}{-\bandeorwidth} +\setlength{\bandeorheight}{\TPVertModule} +\setlength{\banderougeheight}{\TPVertModule} +\setlength{\textwidth}{\paperwidth} +\addtolength{\textwidth}{-2\TPHorizModule} + +\def\titlefmt{% + \titlefontOS\bfseries\fontsize{24}{24}\selectfont% + Rédaction avec + \lucida\mdseries% + {\textbackslash}title% + \raisebox{-6pt}{\fontsize{48}{48}\selectfont% + \{% + \fontsize{40}{40}\selectfont% + \LaTeX + \fontsize{48}{48}\selectfont% + \}\par}} +\def\subtitlefmt{% + \titlefontOS\bfseries\fontsize{10}{11}\selectfont% + Premiers pas\par} +\def\authorfmt{% + \titlefontOS\bfseries\fontsize{14}{14}\selectfont% + Vincent Goulet\par} +\def\affiliation{% + \titlefontOS\mdseries\fontsize{10}{11}\selectfont% + Professeur titulaire \\ + École d'actuariat, Université Laval} +\def\edition{% + \titlefontOS\mdseries\fontsize{10}{11}\selectfont% + Édition {\titlefontFC\year}.\month} + +%%% +%%% Page de titre +%%% + +\begin{frame}[plain] + %% bandeau identitaire + \begin{textblock*}{\paperwidth}[0,1](0mm,56\TPVertModule) + \textcolor{rouge}{\rule{\banderougewidth}{\banderougeheight}}% % bande rouge + \textcolor{or}{\rule{\bandeorwidth}{\bandeorheight}} % bande or + \end{textblock*} + + %% logo UL + \begin{textblock*}{\bandeorwidth}(\banderougewidth,58\TPVertModule) + \includegraphics[height=\logoheight,keepaspectratio=true]{ul_p} + \end{textblock*} + + %% image de fond + \begin{textblock*}{\paperwidth}(0mm,0mm) + \includegraphics[height=\imageheight,width=\paperwidth]{images/Meerkat_stare-diapos} + \end{textblock*} + + %% titre + \begin{textblock*}{\banderougewidth}(0.8\TPHorizModule,4\TPVertModule) + \textcolor{black!10}{\titlefmt} + \end{textblock*} + + %% sous-titre (premiers pas) + \begin{textblock*}{\banderougewidth}(0.8\TPHorizModule,13\TPVertModule) + \textcolor{black!10}{\subtitlefmt} + \end{textblock*} +\end{frame} + +%%% +%%% Page frontispice +%%% + +\begin{frame}[plain] + %% titre + \begin{textblock*}{\banderougewidth}(0.8\TPHorizModule,4\TPVertModule) + \titlefmt + \end{textblock*} + + %% sous-titre + \begin{textblock*}{\banderougewidth}(0.8\TPHorizModule,13\TPVertModule) + \subtitlefmt + \end{textblock*} + + %% auteur + \begin{textblock*}{\textwidth}(0.8\TPHorizModule,28\TPVertModule) + \authorfmt + \end{textblock*} + + %% affiliation + \begin{textblock*}{\textwidth}(0.8\TPHorizModule,33\TPVertModule) + \affiliation + \end{textblock*} + + %% édition + \begin{textblock*}{\textwidth}(0.8\TPHorizModule,58\TPVertModule) + \edition + \end{textblock*} +\end{frame} +\endgroup + +%%% Local Variables: +%%% TeX-master: "formation-latex-ul-diapos" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/couverture-avant.tex b/info/formation-latex-ul/source/couverture-avant.tex new file mode 100644 index 0000000000..8df0bd2616 --- /dev/null +++ b/info/formation-latex-ul/source/couverture-avant.tex @@ -0,0 +1,130 @@ +%%% Copyright (C) 2019 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +%%% +%%% Page de titre +%%% + +%% Normes de présentation visuelle 2018 +%% +%% - grille de 8 unités de haut +%% - 1 mesure = 1/8 d'unité +%% - bande identitaire de 1 mesure placée au bas de la 7e unité +%% - logo haut de 4 mesures avec blancs de deux mesures en haut et +%% en bas +%% - blanc équivalent à la largeur du blason à droite du logo +%% - bande or de la largeur du logo + blanc à droite +%% +%% Dimensions du logo UL +%% +%% hauteur: 128 +%% largeur totale: 310 +%% largeur blason: 100 +%% valeur clé: (310 + 100)/128 = 3.2031125 +%% +%% Dimensions de l'image +%% +%% hauteur: 55 mesures - 1pt (filet) = 54.9191919 mesures +%% largeur: 8.5in +%% ratio largeur/hauteur: 8.5/9.4392 + +\begingroup +\TPGrid{8}{64} +\textblockorigin{0mm}{0mm} +\setlength{\parindent}{0mm} +\setlength{\imageheight}{54.9191919\TPVertModule} +\setlength{\logoheight}{4\TPVertModule} +\setlength{\bandeorwidth}{3.203125\logoheight} +\setlength{\banderougewidth}{\paperwidth} +\addtolength{\banderougewidth}{-\bandeorwidth} +\setlength{\bandeorheight}{\TPVertModule} +\setlength{\banderougeheight}{\TPVertModule} +\setlength{\textwidth}{\paperwidth} +\addtolength{\textwidth}{-1.5\TPHorizModule} + + +\def\titlefmt{\protect\raggedright% + \sffamily\bfseries + \fontsize{48}{48}\selectfont + Rédaction avec + \rmfamily\mdseries + \raisebox{10pt}{{\textbackslash}title}% + \fontsize{80}{70}\selectfont% + \{% + \fontsize{70}{70}\selectfont% + \LaTeX + \fontsize{80}{70}\selectfont% + \}} +\def\authorfmt{% + \sffamily\bfseries\fontsize{28}{38}\selectfont\theauthor} +\def\affiliation{% + \sffamily\mdseries\fontsize{16}{20}\selectfont + Professeur titulaire \\ + École d'actuariat, Université Laval} +\def\edition{% + \sffamily\mdseries\fontsize{16}{16}\selectfont + Édition {\fullcaps\year}.\month} + +%% bandeau identitaire +\begin{textblock*}{\paperwidth}[0,1](0mm,56\TPVertModule) + \textcolor{rouge}{\rule{\banderougewidth}{\banderougeheight}}% % bande rouge + \textcolor{or}{\rule{\bandeorwidth}{\bandeorheight}} % bande or +\end{textblock*} + +%% logo UL +\begin{textblock*}{\bandeorwidth}(\banderougewidth,58\TPVertModule) + \includegraphics[height=\logoheight,keepaspectratio=true]{images/ul_p} +\end{textblock*} + +%% image de fond +\begin{textblock*}{\paperwidth}(0mm,0mm) + \includegraphics[height=\imageheight,keepaspectratio=true]{images/Meerkat_stare.jpg} +\end{textblock*} + +%% titre +%% [https://tex.stackexchange.com/a/49912] +\begin{textblock*}{\textwidth}(0.75\TPHorizModule,4\TPVertModule) + {\par\color{black!10}\titlefmt\par} +\end{textblock*} + +\null\cleardoublepage + +%%% +%%% Page frontispice +%%% + +%% titre +\begin{textblock*}{\textwidth}(0.75\TPHorizModule,4\TPVertModule) + \titlefmt +\end{textblock*} + +%% auteur +\begin{textblock*}{\textwidth}(0.75\TPHorizModule,18.5\TPVertModule) + \authorfmt +\end{textblock*} + +%% affiliation +\begin{textblock*}{\textwidth}(0.75\TPHorizModule,22.5\TPVertModule) + \affiliation +\end{textblock*} + +%% édition +\begin{textblock*}{\textwidth}(0.75\TPHorizModule,58\TPVertModule) + \edition +\end{textblock*} +\endgroup + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "formation-latex-ul" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/formation-latex-ul-diapos.tex b/info/formation-latex-ul/source/formation-latex-ul-diapos.tex new file mode 100644 index 0000000000..02ad816e1d --- /dev/null +++ b/info/formation-latex-ul/source/formation-latex-ul-diapos.tex @@ -0,0 +1,250 @@ +%%% Copyright (C) 2019 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\documentclass[aspectratio=169,10pt,xcolor=x11names,french]{beamer} + \usepackage{babel} + \usepackage[autolanguage]{numprint} + \usepackage{amsmath} + \usepackage{changepage} % page licence + \usepackage{tabularx} % page licence + \usepackage{booktabs} % beaux tableaux + \usepackage{fontawesome} % icônes + \usepackage{awesomebox} % \tipbox et autres + \usepackage{listings} % code source + \usepackage[export]{adjustbox} % cadre autour image + \usepackage[overlay,absolute]{textpos} % couvertures + \usepackage{metalogo} % logo \XeLaTeX + + %% ========================================== + %% Informations de publication + %% (titre et al. dans couverture-avant.tex) + %% ========================================== + \renewcommand{\year}{2019} + \renewcommand{\month}{03} + \newcommand{\ctanurl}{https://ctan.org/pkg/formation-latex-ul/} + \newcommand{\reposurl}{https://gitlab.com/vigou3/formation-latex-ul/} + + %% ======================= + %% Apparence du document + %% ======================= + + %% Thème Beamer + \usetheme{metropolis} + \metroset{subsectionpage=progressbar} + + %% Polices de caractères pour les titres + \newfontfamily\titlefontOS{FiraSans} + [ + Extension = .otf, + UprightFont = *-Book, + BoldFont = *-SemiBold, + BoldItalicFont = *-SemiBoldItalic, + Scale = 1.0, + Numbers = OldStyle + ] + \newfontfamily\titlefontFC{FiraSans} + [ + Extension = .otf, + UprightFont = *-Book, + BoldFont = *-SemiBold, + BoldItalicFont = *-SemiBoldItalic, + Scale = 1.0, + Numbers = Uppercase + ] + \newfontfamily\lucida{Lucida Bright OT} + [ + Scale=0.92 + ] + + %% Police Computer Modern pour exemple de police par défaut + \newfontfamily\CM{cmunrm.otf} + + %% Mathématiques en arev et ajustement de la taille des autres + %% polices Fira; https://tex.stackexchange.com/a/405211/24355 + \usepackage{arevmath} + \setsansfont[% + BoldFont = {Fira Sans SemiBold}, + ItalicFont = {Fira Sans Book Italic}, + BoldItalicFont = {Fira Sans SemiBold Italic}]{Fira Sans Book} + + %% Couleurs + \definecolor{comments}{rgb}{0.7,0,0} % commentaires + \definecolor{link}{rgb}{0,0.4,0.6} % liens internes + \definecolor{url}{rgb}{0.6,0,0} % liens externes + \definecolor{codebg}{named}{LightYellow1} % fond code source + \definecolor{rouge}{rgb}{0.85,0,0.07} % rouge bandeau identitaire + \definecolor{or}{rgb}{1,0.8,0} % or bandeau identitaire + \colorlet{alert}{mLightBrown} % alias pour couleur Metropolis + \colorlet{dark}{mDarkTeal} % alias pour couleur Metropolis + \colorlet{shadecolor}{codebg} + + %% Hyperliens + \hypersetup{% + pdfauthor = {Vincent Goulet}, + pdftitle = {Rédaction avec LaTeX - Premiers pas}, + colorlinks = true, + linktocpage = true, + urlcolor = {url}, + linkcolor = {link}, + citecolor = {citation}, + pdfpagemode = {UseOutlines}, + pdfstartview = {Fit}} + \setlength{\XeTeXLinkMargin}{1pt} + + %% Affichage de la table des matières du PDF + \usepackage{bookmark} + \bookmarksetup{% + open = true, + depth = 3, + numbered = true} + + %% Paramétrage de babel pour les guillemets + \frenchbsetup{og=«, fg=»} + + %% Sections de code source + \lstloadlanguages{[LaTeX]TeX} + \lstset{language=[LaTeX]TeX, + escapeinside=`', + extendedchars=true, + inputencoding=utf8/latin1, + basicstyle=\small\ttfamily\NoAutoSpacing, + commentstyle=\color{comments}, + keywordstyle=\mdseries, + emphstyle=\color{alert}\bfseries, + backgroundcolor=\color{LightYellow1}, + frame=lr, rulecolor=\color{LightYellow1}, + showstringspaces=false} + + %%% ========================= + %%% Nouveaux environnements + %%% ========================= + + %% Environnements pour les demo de code; tirés du document + %% principal. (L'environnement 'eqxample' ajoute des filets de part + %% et d'autre du bloc pour illustrer les marges.) + \newenvironment{demo}{% + \begin{beamercolorbox}[wd=\linewidth,sep=6pt]{block body example}} + {\end{beamercolorbox}} + \newenvironment{texample}[1][0.45\linewidth]{% + \noindent\begin{minipage}{#1}% + \def\producing{\end{minipage}\hfill\begin{minipage}{\dimexpr0.9\linewidth-#1}% + \hbox\bgroup\kern-.2pt% + \vbox\bgroup\parindent0pt\relax + % The 3pt is to cancel the -\lineskip from \displ@y + \abovedisplayskip3pt \abovedisplayshortskip\abovedisplayskip + \belowdisplayskip0pt \belowdisplayshortskip\belowdisplayskip + \noindent} + }{% + \par + % Ensure that a lonely \[\] structure doesn't take up width less than + % \hsize. + \hrule height0pt width\hsize + \egroup\kern-.2pt\egroup + \end{minipage}% + \par + } + \newenvironment{eqxample}{% + \noindent\begin{minipage}{.45\linewidth}% + \def\producing{\end{minipage}\hfill\begin{minipage}{.45\linewidth}% + \hbox\bgroup\kern-.2pt\vrule width.2pt% + \vbox\bgroup\parindent0pt\relax + % The 3pt is to cancel the -\lineskip from \displ@y + \abovedisplayskip3pt \abovedisplayshortskip\abovedisplayskip + \belowdisplayskip0pt \belowdisplayshortskip\belowdisplayskip + \noindent} + }{% + \par + % Ensure that a lonely \[\] structure doesn't take up width less than + % \hsize. + \hrule height0pt width\hsize + \egroup\vrule width.2pt\kern-.2pt\egroup + \end{minipage}% + \par + } + + %% Simplfication de l'environnement 'quote' de beamer + \renewenvironment{quote}{% + \begin{beamercolorbox}[wd=\linewidth,sep=6pt]{block body example}} + {\end{beamercolorbox}} + + %% Exercices + \newenvironment{exercice}{% + \begin{frame}[fragile=singleslide] + \frametitle{Exercice}}{\end{frame}} + + %% Rubriques conseil du TeXpert + \newenvironment{conseil}{% + \begin{frame}[standout,fragile=singleslide] + \textcolor{alert}{Conseil du {\TeX}pert}\normalsize + \begin{block}{}}% + {\end{block}\end{frame}} + + %% ===================== + %% Nouvelles commandes + %% ===================== + + %% Noms de fonctions, code, environnement, etc. + \newcommand{\fichier}[1]{\texttt{#1}} + \newcommand{\class}[1]{\textbf{#1}} + \newcommand{\pkg}[1]{\textbf{#1}} + \newcommand{\link}[2]{\href{#1}{#2~\raisebox{-0.2ex}{\faExternalLink}}} + + %% Pour documenter des commandes LaTeX; dérivé de memoir.cls + \def\bs{\texttt{\char`\\}} + \newcommand{\meta}[1]{% + \ensuremath\langle{\normalfont\itshape #1\/}\ensuremath\rangle} + \newcommand{\marg}[1]{% + {\ttfamily\char`\{}\meta{#1}{\ttfamily\char`\}}} + \newcommand{\oarg}[1]{% + {\ttfamily\char`\[}\meta{#1}{\ttfamily\char`\]}} + \newcommand{\cs}[1]{\texttt{\char`\\#1}} + + %% Lien vers Gitlab dans la page de notices + \newcommand{\viewsource}[1]{% + \href{#1}{\faGitlab\ Voir sur GitLab}} + + %%% ======= + %%% Varia + %%% ======= + + %% Longueurs pour la composition des pages couvertures avant et + %% arrière. + \newlength{\banderougewidth} \newlength{\banderougeheight} + \newlength{\bandeorwidth} \newlength{\bandeorheight} + \newlength{\imageheight} + \newlength{\logoheight} + +\begin{document} + +\include{couverture-avant-diapos} +\include{notices-diapos} +\include{prerequis-diapos} + +\include{presentation-diapos} +\include{bases-diapos} +\include{organisation-diapos} +\include{apparence-diapos} +\include{tableaux-diapos} +\include{mathematiques-diapos} +\include{sweave-diapos} +\include{ulthese-diapos} +\include{suite-diapos} + +\include{colophon-diapos} +\include{couverture-arriere-diapos} + +\end{document} + +%%% Local Variables: +%%% TeX-master: t +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/formation-latex-ul.bib b/info/formation-latex-ul/source/formation-latex-ul.bib new file mode 100644 index 0000000000..d82a9f0693 --- /dev/null +++ b/info/formation-latex-ul/source/formation-latex-ul.bib @@ -0,0 +1,551 @@ +%%% Copyright (C) 2018 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% http://github.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition selon le contrat +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% http://creativecommons.org/licenses/by-sa/4.0/ + +@Manual{ASCII, + title = {ANSI X3.4-1986: Coded Character Set. 7-Bit + {A}merican {S}tandard {C}ode for {I}nformation + {I}nterchange}, + organization = {{A}merican {N}ational {S}tandards {I}nstitute}, + key = {{ANSI}}, + address = {New York}, + year = 1986, + language = {english} +} + +@Article{Beccari:ISO, + author = {Claudio Beccari}, + title = {Typesetting Mathematics for Science and Technology According to {ISO} 31/{XI}}, + journal = {{TUG}boat}, + year = 1997, + volume = 18, + number = 1, + pages = {39-48}, + url = {https://tug.org/TUGboat/tb18-1/tb54becc.pdf}, + language = {english} +} + +@Article{Beebe:keynote:2004, + author = {Beebe, Nelson H. F.}, + title = {25 Years of {\TeX} and \textlogo{METAFONT}: Looking + Back and Looking Forward}, + journal = {{TUG}boat}, + year = 2004, + volume = 25, + number = 1, + pages = {7-30}, + note = {{TUG} 2003 Keynote Address}, + url = {https://www.tug.org/TUGboat/tb25-1/beebe-2003keynote.pdf}, + language = {english} +} + +@Book{Burden:numerical:2011, + author = {Burden, R. L. and Faires, J. D.}, + title = {Numerical Analysis}, + publisher = {Brooks/Cole}, + year = {2011}, + edition = 9, + isbn = {978-053873351-9}, + language = {english} +} + +@Manual{IEEE:754, + title = {754-1985 {IEEE} Standard for Binary Floating-Point + Arithmetic}, + key = {{IEEE}}, + organization = {{IEEE}}, + address = {Piscataway, NJ}, + year = 2003, + isbn = {978-155937653-2}, + language = {english} +} + +@Manual{ISO:8859-1, + title = {{ISO/IEC} 8859-1:1998. Information Technology -- 8-bit + Single-Byte Coded Graphic Character Sets -- {P}art 1: + Latin Alphabet No. 1}, + organization = {{I}nternational {O}rganization for {S}tandardization}, + key = {{ISO}}, + address = {Geneva}, + year = 1998, + language = {english} +} + +@Book{Kernighan:style:1978, + author = {Kernighan, B. W. and Plauger, P. J.}, + title = {The Elements of Programming Style}, + publisher = {McGraw-Hill}, + year = 1978, + edition = 2, + isbn = {0-07034207-5}, + language = {english} +} + +@Book{Knuth:ACP:vol2:1997, + author = {Knuth, D. E.}, + title = {The Art of Computer Programming}, + publisher = {Addison-Wesley}, + year = 1997, + volume = {2, Seminumerical Algorithms}, + address = {Reading, MA}, + language = {english} +} + +@Book{Kopka:latex:4e, + author = {Kopka, Helmut and Daly, Patrick W.}, + title = {Guide to {\LaTeX}}, + publisher = {Addison-Wesley}, + year = 2003, + edition = 4, + isbn = {978-032117385-0}, + language = {english} +} + +@Book{Malo:1996, + author = {Malo, M.}, + title = {Guide de la communication écrite au cégep, à + l'université et en entreprise}, + publisher = {Québec Amérique}, + year = 1996, + language = {french} +} + +@Article{Mittelbach:floats:2014, + author = {Frank Mittelbach}, + title = {How to Influence the Position of Float Environments + Like Figure and Table In {\LaTeX}?}, + journal = {{TUG}boat}, + year = 2014, + volume = 35, + number = 3, + pages = {258-254}, + url = {https://www.tug.org/TUGboat/tb35-3/tb111mitt-float.pdf}, + language = {english} +} + +@Article{Mittelbach:floats:2014:nourl, + author = {Frank Mittelbach}, + title = {How to Influence the Position of Float Environments + Like Figure and Table In {\LaTeX}?}, + journal = {{TUG}boat}, + year = 2014, + volume = 35, + number = 3, + pages = {258-254}, + language = {english} +} + +@Book{Monahan:numstat:2001, + author = {Monahan, J. F.}, + title = {Numerical Methods of Statistics}, + publisher = {Cambridge {U}niversity {P}ress}, + year = 2001, + address = {Cambridge, UK}, + isbn = {0-52179168-5}, + language = {english} +} + +@Article{Mori:bibliographies:2009, + author = {Lapo F. Mori}, + title = {Managing bibliographies with {\LaTeX}}, + journal = {{TUG}boat}, + year = 2009, + volume = 30, + number = 1, + pages = {36-48}, + url = {https://www.tug.org/TUGboat/tb30-1/tb94mori.pdf}, + language = {english} +} + +@Article{Ripley:Rnews:2005a, + author = {Brian D. Ripley}, + title = {Internationalization Features of {R} 2.1.0}, + journal = {R News}, + year = 2005, + volume = 5, + number = 1, + pages = {2--7}, + month = {May}, + url = {https://cran.r-project.org/doc/Rnews/}, + pdf = {https://cran.r-project.org/doc/Rnews/Rnews_2005-1.pdf}, + language = {english} +} + +@inproceedings{Sweave, + author = {Friedrich Leisch}, + title = {Sweave: Dynamic Generation of Statistical Reports Using + Literate Data Analysis}, + booktitle = {Compstat 2002 --- Proceedings in Computational + Statistics}, + pages = {575--580}, + year = 2002, + editor = {Wolfgang H{\"a}rdle and Bernd R{\"o}nz}, + publisher = {Physica Verlag, Heidelberg}, + isbn = {3-79081517-9}, + url = {https://www.stat.uni-muenchen.de/~leisch/Sweave}, + language = {english} +} + +@Article{Thurnherr:class-options, + author = {Thomas Thurnherr}, + title = {{\LaTeX} document class options}, + journal = {{TUG}boat}, + year = 2014, + volume = 35, + number = 3, + pages = {245-247}, + url = {https://tug.org/TUGboat/tb35-3/tb111thurnherr.pdf}, + language = {english} +} + +@Book{Unicode:5.0, + author = {The {U}nicode {C}onsortium}, + title = {The Unicode Standard, Version 5.0.0}, + publisher = {Addison-Wesley}, + year = 2007, + address = {Boston}, + isbn = {0-32148091-0} +} + +@Misc{Wikipedia:IEEE754, + author = {Wikipedia}, + title = {{IEEE} 754-2008 --- {W}ikipedia{,} + The Free Encyclopedia}, + year = 2012, + url = {https://en.wikipedia.org/wiki/IEEE_floating-point_standard}, + language = {english} +} + +@Manual{amsmath, + title = {User’s Guide for the \pkg{amsmath} Package}, + author = {{A}merican {M}athematical {S}ociety}, + year = 2002, + url = {https://www.ctan.org/pkg/amsmath/}, + language = {english} +} + +@Manual{babel, + author = {Johannes Braams and Javier Bezos}, + title = {Babel}, + year = 2016, + url = {https://www.ctan.org/pkg/babel/}, + language = {english} +} + +@Manual{beamer, + author = {Till Tantau and Joseph Wright and Vedran Mileti\'{c}}, + title = {The \textsc{beamer} Class}, + year = 2015, + url = {https://www.ctan.org/pkg/beamer/}, + language = {english} +} + +@Manual{biber, + author = {Philip Kline and Fran\c{c}ois Charette}, + title = {biber --- A Backend Bibliography Processor for Biblatex}, + year = 2015, + url = {https://www.ctan.org/pkg/biber/}, + language = {english} +} + +@Manual{biblatex, + author = {Philipp Lehman}, + title = {The Biblatex Package --- Programmable Bibliographies and Citations}, + year = 2015, + url = {https://www.ctan.org/pkg/biblatex/}, + language = {english} +} + +@Manual{bibtex, + author = {Oren Patasnik}, + title = {{\BibTeX}ing}, + year = 1988, + url = {https://www.ctan.org/pkg/bibtex/}, + language = {english} +} + +@Manual{bm, + author = {David Carlisle}, + title = {The \pkg{bm} Package}, + year = 2014, + url = {https://www.ctan.org/pkg/bm/}, + language = {english} +} + +@Manual{booktabs, + author = {Simon Fear}, + title = {Publication quality tables in {\LaTeX}}, + year = 2005, + url = {https://www.ctan.org/pkg/booktabs/}, + language = {english} +} + +@Manual{comprehensive, + author = {Scott Pakin}, + title = {The Comprehensive {\LaTeX} Symbol List}, + year = 2009, + url = {https://www.ctan.org/pkg/comprehensive/}, + language = {english} +} + +@Manual{csquotes, + author = {Philipp Lehman and Joseph Wright}, + title = {The \pkg{csquotes} Package: Context Sensitive Quotation Facilities}, + year = 2015, + url = {https://www.ctan.org/pkg/csquotes/}, + language = {english} +} + +@Manual{enumitem, + title = {Customizing lists with the \pkg{enumitem} package}, + author = {Bezos, J.}, + year = 2011, + url = {https://www.ctan.org/pkg/enumitem/}, + language = {english} +} + +@Manual{fontawesome, + title = {The \pkg{fontawesome} package. High quality web icons}, + author = {Xavier Danaux and Dave Gandy}, + year = 2015, + url = {https://www.ctan.org/pkg/fontawesome/}, + language = {english} +} + +@Manual{fontenc, + title = {{\LaTeX} font encodings}, + author = {Frank Mittelbach and Robin Fairbairns and Werner Lemberg}, + year = 2014, + url = {https://www.ctan.org/pkg/encguide/}, + language = {english} +} + +@Manual{fontspec, + title = {The \pkg{fontspec} package: Font selection for {\XeLaTeX} and {\LuaLaTeX}}, + author = {Will Robertson and Khaled Hosny}, + year = 2017, + url = {https://www.ctan.org/pkg/fontspec/}, + language = {english} +} + +@Manual{footmisc, + title = {\pkg{footmisc} --- a portmanteau package for + customising footnotes in {\LaTeX}}, + author = {Fairbairns, R.}, + year = 2011, + url = {https://www.ctan.org/pkg/footmisc}, + language = {english} +} + +@Misc{francais-bst, + author = {Vincent Goulet}, + title = {Paquetage \pkg{francais-bst}}, + year = 2013, + url = {https://www.ctan.org/pkg/francais-bst/}, + language = {french} +} + +@Book{git, + author = {Scott Chacon and Ben Straub}, + title = {Pro {G}it}, + publisher = {Apress}, + year = 2014, + edition = 2, + note = {Version en ligne}, + url = {https://git-scm.com/book/fr/v2}, + language = {french} +} + +@Manual{graphicx, + author = {David Carlisle and {The \LaTeX3\ Project}}, + title = {Packages in the `graphics' Bundle}, + year = 2016, + url = {https://www.ctan.org/pkg/graphics/}, + language = {english} +} + +@Manual{hyperref, + title = {Hypertext marks in {\LaTeX}: a manual for \pkg{hyperref}}, + author = {Sebastian Rahtz and Heiko Oberdiek}, + year = 2017, + url = {https://www.ctan.org/pkg/hyperref/}, + language = {english} +} + +@Manual{icomma, + title = {The \pkg{icomma} package for \LaTeX2e}, + author = {Walter Schmidt}, + year = 2002, + url = {https://www.ctan.org/pkg/icomma/}, + language = {english} +} + +@Manual{inputenc, + title = {inputenc.sty}, + author = {Alan Jeffrey and Frank Mittelbach}, + year = 2015, + url = {https://www.ctan.org/pkg/inputenc/}, + language = {english} +} + +@Misc{knitr, + author = {Yihui Xie}, + title = {\pkg{knitr}: A General-Purpose Package for Dynamic + Report Generation in {R}}, + year = 2016, + note = {{R} package version 1.12}, + url = {https://cran.r-project.org/package=knitr}, + language = {english} +} + +@Manual{listings, + title = {The \pkg{listings} Package}, + author = {Carsten Heinz and Brooks Moses and Jobst Hoffmann}, + year = 2015, + url = {https://www.ctan.org/pkg/listings/}, + language = {english} +} + +@Book{memoir, + author = {Peter Wilson}, + title = {The Memoir Class for Configurable Typesetting}, + publisher = {The Herries Press}, + year = 2016, + edition = 8, + note = {Maintained by Lars Madsen}, + url = {https://www.ctan.org/pkg/memoir/}, + language = {english} +} + +@Manual{natbib, + author = {Patrick W. Daly}, + title = {Natural Sciences Citations and References}, + year = 2010, + url = {https://www.ctan.org/pkg/natbib/}, + language = {english} +} + +@Misc{noweb, + author = {Normand Ramsey}, + title = {Noweb --- A Simple, Extensible Tool for Literate + Programming}, + year = 2011, + url = {https://www.cs.tufts.edu/~nr/noweb/}, + language = {english} +} + +@Manual{numprint, + title = {The \pkg{numprint} package}, + author = {Harald Harders}, + year = 2012, + url = {https://www.ctan.org/pkg/numprint/}, + language = {english} +} + +@Manual{pdfpages, + author = {Andreas Matthias}, + title = {The \pkg{pdfpages} Package}, + year = 2015, + url = {https://www.ctan.org/pkg/pdfpages/}, + language = {english} +} + +@Manual{pstricks, + author = {Timothy {V}an Zandt and Denis Girou and Herbert Vo{\ss}}, + title = {{PSTricks} --- {PostScript} Macros for Generic {\TeX}}, + year = 2014, + url = {https://www.ctan.org/pkg/pstricks-base/}, + language = {english} +} + +@Book{rabagliati:1999:campagne, + author = {Michel Rabagliati}, + title = {Paul à la campagne}, + publisher = {La Pastèque}, + year = 1999, + isbn = {978-2-92258501-8}, + language = {french} +} + +@Book{subversion, + author = {Collins-Sussman, Ben and Fitzpatrick, Brian W. and Pilato, C. Michael}, + title = {Gestion de versions avec {S}ubversion}, + publisher = {O'Reilly Media}, + year = 2008, + note = {Version en ligne}, + url = {https://svnbook.red-bean.com}, + language = {french} +} + +@Manual{tikz, + author = {Till Tantau}, + title = {\textsc{pgf} and {Ti\textit{k}Z} --- {G}raphic System for {\TeX}}, + year = 2014, + url = {https://www.ctan.org/pkg/pgf/}, + language = {english} +} + +@Manual{ulthese, + title = {{\class{ulthese}}: la classe pour les thèses et mémoires de l'{U}niversité {L}aval}, + author = {Vincent Goulet}, + organization = {Faculté des études supérieures et doctorales, Université Laval}, + year = 2018, + url = {https://www.ctan.org/pkg/ulthese/}, + language = {french} +} + +@Manual{unicode-math, + title = {Experimental {U}nicode Mathematical Typesetting: The \pkg{unicode-math} Package}, + author = {Will Robertson and Philipp Stephani and Khaled Hosny}, + year = 2017, + url = {https://www.ctan.org/pkg/unicode-math/}, + language = {english} +} + +@Misc{wikibooks:latex, + author = {Wikibooks}, + title = {{LaTeX}}, + year = 2015, + url = {https://en.wikibooks.org/wiki/LaTeX}, + language = {english} +} + +@Misc{wikilivres:latex, + author = {Wikilivres}, + title = {{LaTeX}}, + year = 2015, + url = {https://fr.wikibooks.org/wiki/LaTeX}, + language = {french} +} + +@misc{wikipedia:bibtex, + author = {Wikipédia}, + title = {{BibTeX}}, + year = 2015, + url = {https://fr.wikipedia.org/wiki/BibTeX}, + language = {french} +} + +@misc{wikipedia:unicode-math, + author = {Wikipedia}, + title = {Mathematical Operators and Symbols in {U}nicode}, + year = 2015, + url = {https://en.wikipedia.org/wiki/Mathematical_operators_and_symbols_in_Unicode}, + language = {english} +} + +@Manual{xcolor, + title = {Extending {\LaTeX}’s color facilities: the \pkg{xcolor} package}, + author = {Kern, Dr.\ Uwe}, + year = 2016, + url = {https://www.ctan.org/pkg/xcolor/}, + language = {english} +} + diff --git a/info/formation-latex-ul/source/formation-latex-ul.tex b/info/formation-latex-ul/source/formation-latex-ul.tex new file mode 100644 index 0000000000..0ad9f1cd4c --- /dev/null +++ b/info/formation-latex-ul/source/formation-latex-ul.tex @@ -0,0 +1,493 @@ +%%% Copyright (C) 2019 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\documentclass[letterpaper,11pt,x11names,english,french]{memoir} + \usepackage{natbib,url,bibentry} + \usepackage{babel} + \usepackage[autolanguage]{numprint} + \usepackage{amsmath,amsthm} + \usepackage[shortlabels]{enumitem} + \usepackage{graphicx} + \usepackage{manfnt} % \mantriangleright (puce) + \usepackage{dirtree} % arbre pour exercice sur \include + \usepackage{metalogo} % logo de \XeLaTeX + \usepackage{mflogo} % logo de Metafont + \usepackage{fontawesome} % plusieurs icônes + \usepackage{awesomebox} % boites info, important, etc. + \usepackage{applekeys} % touches Mac + \usepackage{answers} % exercices et solutions + \usepackage{listings} % code informatique + \usepackage[absolute]{textpos} % disposition d'images + \usepackage{ifthen} % exécution conditionnelle + \usepackage{soul} % base pour boites autour des caractères + + + %%% ============================= + %%% Informations de publication + %%% ============================= + \title{Rédaction avec \LaTeX} + \author{Vincent Goulet} + \renewcommand{\year}{2019} + \renewcommand{\month}{03} + \newcommand{\ctanurl}{https://ctan.org/pkg/formation-latex-ul/} + \newcommand{\reposurl}{https://gitlab.com/vigou3/formation-latex-ul/} + + %%% =================== + %%% Style du document + %%% =================== + + %% Polices de caractères + \usepackage{fontspec} + \usepackage{unicode-math} + \defaultfontfeatures + { + Scale = 0.92 + } + \setmainfont{Lucida Bright OT} + [ + Ligatures = TeX, + Numbers = OldStyle + ] + \setmathfont{Lucida Bright Math OT} + \setmonofont{Lucida Grande Mono DK} + \setsansfont{FiraSans} + [ + Extension = .otf, + UprightFont = *-Book, + ItalicFont = *-BookItalic, + BoldFont = *-SemiBold, + BoldItalicFont = *-SemiBoldItalic, + Scale = 0.95, + Numbers = OldStyle + ] + \newfontfamily\fullcaps{FiraSans} + [ + Extension = .otf, + UprightFont = *-Book, + Scale = 0.95, + Numbers = Uppercase + ] + \usepackage[babel=true]{microtype} + \usepackage{icomma} + + %% Polices additionnelles pour le chapitre trucs et astuces + \newfontfamily\CM[Ligatures=TeX]{cmunrm.otf} % Computer Modern + \newfontfamily\Times{texgyretermes-regular.otf} % Times + \newfontfamily\Palatino{texgyrepagella-regular.otf} % Palatino + \newfontfamily\Bookman{texgyrebonum-regular.otf} % Bookman + \newfontfamily\NewCent{texgyreschola-regular.otf} % New Cent. Sch. + \newfontfamily\Charter{XCharter-Roman.otf} % Charter + \newfontfamily\Helvet{texgyreheros-regular.otf} % Helvetica + + %% Couleurs + \usepackage{xcolor} + \definecolor{comments}{rgb}{0.7,0,0} % rouge foncé + \definecolor{link}{rgb}{0,0.4,0.6} % ~RoyalBlue de dvips + \definecolor{url}{rgb}{0.6,0,0} % rouge-brun + \definecolor{citation}{rgb}{0,0.5,0} % vert foncé + \definecolor{ULlinkcolor}{rgb}{0,0,0.3} % de ulthese.cls + \definecolor{rouge}{rgb}{0.85,0,0.07} % rouge bandeau identitaire + \definecolor{or}{rgb}{1,0.8,0} % or bandeau identitaire + + %% Hyperliens + \usepackage{hyperref} + \hypersetup{% + pdfauthor = \theauthor, + pdftitle = {Rédaction avec LaTeX}, + colorlinks = {true}, + linktocpage = {true}, + urlcolor = {url}, + linkcolor = {link}, + citecolor = {citation}, + pdfpagemode = {UseOutlines}, + pdfstartview = {Fit}} + \setlength{\XeTeXLinkMargin}{1pt} + + %% Affichage de la table des matières du PDF + \usepackage{bookmark} + \bookmarksetup{% + open = true, + depth = 3, + numbered = true} + + %% Étiquettes de \autoref (redéfinitions compatibles avec babel). + %% Attention! Les % à la fin des lignes sont importants sinon des + %% blancs apparaissent dès que la commande \selectlanguage est + %% utilisée, notamment dans la bibliographie. + \addto\extrasfrench{% + \def\subsectionautorefname{section}% + \def\figureautorefname{figure}% + \def\tableautorefname{tableau}% + \def\exempleautorefname{exemple}% + \def\exerciceautorefname{exercice}% + \def\appendixautorefname{annexe}% + } + + %% Table des matières et al. (inspiré de classicthesis.sty) + \renewcommand{\cftchapterleader}{\hspace{1.5em}} + \renewcommand{\cftchapterafterpnum}{\cftparfillskip} + \renewcommand{\cftsectionleader}{\hspace{1.5em}} + \renewcommand{\cftsectionafterpnum}{\cftparfillskip} + \renewcommand{\cfttableleader}{\hspace{1.5em}} + \renewcommand{\cfttableafterpnum}{\cftparfillskip} + \renewcommand{\cftfigureleader}{\hspace{1.5em}} + \renewcommand{\cftfigureafterpnum}{\cftparfillskip} + \setlength{\cftfigurenumwidth}{3.2em} + + %% Titres des chapitres + \chapterstyle{hangnum} + \renewcommand{\chaptitlefont}{\normalfont\Huge\sffamily\bfseries\raggedright} + + %% Marges, entêtes et pieds de page + \setlength{\marginparsep}{7mm} + \setlength{\marginparwidth}{20mm} + \setlength{\headwidth}{\textwidth} + \addtolength{\headwidth}{\marginparsep} + \addtolength{\headwidth}{\marginparwidth} + \addtolength{\marginparwidth}{15mm} % plus d'espace pour titres de documentation + + %% Titres des sections et sous-sections + \setsecheadstyle{\normalfont\Large\sffamily\bfseries\raggedright} + \setsubsecheadstyle{\normalfont\large\sffamily\bfseries\raggedright} + \maxsecnumdepth{subsection} + \setsecnumdepth{subsection} + + %% Listes. Paramétrage avec enumitem. + \setlist[enumerate]{leftmargin=*,align=left} + \setlist[enumerate,2]{label=\alph*),labelsep=*,leftmargin=1.5em} + \setlist[enumerate,3]{label=\roman*),labelsep=*,leftmargin=1.5em,align=right} + \setlist[itemize]{leftmargin=*,align=left} + + %% Paramétrage de babel + \frenchbsetup{% + StandardItemizeEnv=true, % format standard des listes + ThinSpaceInFrenchNumbers=true, % espace fine dans les nombres + ItemLabeli=\mantriangleright, % puce premier niveau + ItemLabelii=\textendash, % puce second niveau + og=«, fg=» % caractères « et » sont les guillemets + } + \addto\captionsfrench{\def\figurename{{\scshape Fig.}}} + \addto\captionsfrench{\def\tablename{{\scshape Tab.}}} + \addto\captionsfrench{\def\listfigurename{Liste des figures}} + + %% Sections de code source + \lstloadlanguages{[LaTeX]TeX} + \lstset{language=[LaTeX]TeX, + basicstyle=\ttfamily\NoAutoSpacing, + keywordstyle=\mdseries, + commentstyle=\color{comments}\slshape, + emphstyle=\bfseries, + escapeinside=`', + extendedchars=true, + showstringspaces=false, + backgroundcolor=\color{LightYellow1}, + frame=leftline, + framerule=2pt, + framesep=5pt, + xleftmargin=7.4pt + } + + %%% ========================= + %%% Nouveaux environnements + %%% ========================= + + %% Exemples + \theoremstyle{definition} + \newtheorem{exemple}{Exemple}[chapter] + + %% Exercices et réponses + \Newassociation{sol}{solution}{solutions} + \newcounter{exercice}[chapter] + \renewcommand{\theexercice}{\thechapter.\arabic{exercice}} + \newenvironment{exercice}[1][]{% + \begin{list}{}{% + \refstepcounter{exercice} + \ifthenelse{\equal{#1}{nosol}}{% + \renewcommand{\makelabel}{\bfseries\theexercice}}{% + \hypertarget{ex:\theexercice}{} + \Writetofile{solutions}{\protect\hypertarget{sol:\theexercice}{}} + \renewcommand{\makelabel}{% + \bfseries\protect\hyperlink{sol:\theexercice}{\theexercice}}} + \settowidth{\labelwidth}{\bfseries\theexercice} + \setlength{\leftmargin}{\labelwidth} + \addtolength{\leftmargin}{\labelsep} + \setlist[enumerate,1]{label=\alph*),labelsep=*,leftmargin=1.5em} + \setlist[enumerate,2]{label=\roman*),labelsep=0.5em,align=right}} + \item} + {\end{list}} + \renewenvironment{solution}[1]{% + \begin{list}{}{% + \renewcommand{\makelabel}{% + \bfseries\protect\hyperlink{ex:#1}{#1}} + \settowidth{\labelwidth}{\bfseries #1} + \setlength{\leftmargin}{\labelwidth} + \addtolength{\leftmargin}{\labelsep} + \setlist[enumerate,1]{label=\alph*),labelsep=*,leftmargin=1.5em} + \setlist[enumerate,2]{label=\roman*),labelsep=0.5em,align=right}} + \item} + {\end{list}} + + %% Démo de code LaTeX. Le code de 'texample' et 'eqxample' est + %% repris de amsldoc.tex avec des petits ajustements. + \newenvironment{demo}{% + \begin{trivlist}\item}{% + \end{trivlist}} + \newenvironment{texample}[1][0.5\linewidth]{% + \noindent\begin{minipage}{#1}% + \def\producing{\end{minipage}\hfill\begin{minipage}{\dimexpr0.97\linewidth-#1}% + \hbox\bgroup\kern-.2pt% + \vbox\bgroup\parindent0pt\relax + % The 3pt is to cancel the -\lineskip from \displ@y + \abovedisplayskip3pt \abovedisplayshortskip\abovedisplayskip + \belowdisplayskip0pt \belowdisplayshortskip\belowdisplayskip + \noindent} + }{% + \par + % Ensure that a lonely \[\] structure doesn't take up width less than + % \hsize. + \hrule height0pt width\hsize + \egroup\kern-.2pt\egroup + \end{minipage}% + \par + } + \newenvironment{eqxample}{% + \noindent\begin{minipage}{.5\columnwidth}% + \def\producing{\end{minipage}\hfill\begin{minipage}{.45\columnwidth}% + \hbox\bgroup\kern-.2pt\vrule width.2pt% + \vbox\bgroup\parindent0pt\relax + % The 3pt is to cancel the -\lineskip from \displ@y + \abovedisplayskip3pt \abovedisplayshortskip\abovedisplayskip + \belowdisplayskip0pt \belowdisplayshortskip\belowdisplayskip + \noindent} + }{% + \par + % Ensure that a lonely \[\] structure doesn't take up width less than + % \hsize. + \hrule height0pt width\hsize + \egroup\vrule width.2pt\kern-.2pt\egroup + \end{minipage}% + \par + } + + %% Un exemple du chapitre Trucs et astuces nécessite des + %% environnements 'lstlisting' imbriqués, ce que ne digère pas + %% LaTeX. La ruse consiste à définir un environnement équivalent qui + %% porte simplement un autre nom. + \lstnewenvironment{vglisting}{\lstset{deletetexcs={int,include}}}{} + + %% Exemples de notices bibliographiques + \newenvironment{bibexample}[1][\linewidth]{% + \begin{minipage}[t]{#1}% + \begin{trivlist}} + {\end{trivlist}\end{minipage}} + + %%% ======= + %%% Index + %%% ======= + \renewcommand{\preindexhook}{% + Cet index contient des références aux commandes et environnements + {\LaTeX}, ainsi qu'aux noms de paquetages et de classes. % + Le premier numéro indique habituellement, mais pas toujours, + la page où un concept est introduit, défini ou expliqué.% + \vskip\onelineskip} + \lstset{language=[AlLaTeX]TeX, + morekeywords={align,align*,aligned,bmatrix,cases,equation*,% + figure,gather,lstlisting,multline,quote,split,% + table,tabular,tabularx}, + deletekeywords={document}, % répéter dans deletetexcs + moretexcs={toprule,midrule,bottomrule,% + includegraphics,reflectbox,resizebox,rotatebox,scalebox,% + includepdf,frenchfigurename,frenchtablename,% + newsubfloat,subcaption,% + bm,dfrac,tfrac,iint,text,mathcal,mathbb,eqref,symbf,% + citet,citep,citeauthor,citeyear,% + setmainfont,setsansfont,setmonofont,setmathfont,% + color,textcolor,definecolor,colorlet,hypersetup}, + deletetexcs={document,documentclass,usepackage,begin,end,LaTeX,TeX,% + normalfont,bfseries,textbf,itshape,scshape,sffamily,ttfamily,texttt,% + emph,small,Huge,raggedright,% + hfill,def,a,b,c,d,em,i,j,l,r,t}, + index=[1][keywords], % environnements + indexstyle=[1]\ixenv, + index=[2][texcs], % commandes + indexstyle=[2]\ixcmd} + \newcommand{\ixenv}[1]{\index{#1 env@\Pe{#1}}% + \index{environnement!#1@\Pe{#1}}} + \newcommand{\ixcmd}[1]{\index{#1@\string\cs{#1}}} + \makeindex + + %%% ===================== + %%% Nouvelles commandes + %%% ===================== + + %% Noms de fonctions, code, environnement, etc. + \newcommand{\code}[1]{\texttt{#1}} + \newcommand{\fichier}[1]{\texttt{#1}} + \newcommand{\class}[1]{\textsf{#1}\index{#1 class@\textsf{#1}}% + \index{classe!#1}} + \newcommand{\pkg}[1]{\textbf{#1}\index{#1 pkg@\textbf{#1}}% + \index{paquetage!#1}} + \newcommand{\Pe}[1]{\code{#1}} % tiré de la doc de memoir + \newcommand{\Ie}[1]{\Pe{#1}\ixenv{#1}} % idem + \newcommand{\mat}[1]{\symbf{#1}} % en mode mathématique + + %% Modification de commandes tirées de memoir.cls servant à afficher + %% des noms de commandes. + %% - \cmdprint est modifiée pour que le nom de la commande ne soit + %% pas en italique; + %% - \cmd est modifiée pour utiliser @ comme séparateur dans \index + %% et pour utiliser \cs plutôt que \cmdprint pour afficher le nom de + %% la commande (afin d'obtenir le même format d'entrée d'index + %% qu'avec \ixcmd ci-dessus); + %% - \pixbsbs et \pixabang servent respectivement à afficher et + %% indexer \\ et \! ; + %% - \pixbar sert à afficher et indexer \| avec un hack pour + %% contourner un problème d'insertion de l'hyperlien vers le + %% numéro de page: l'entrée est triée sur le symbole [ plutôt que + %% sur |. + \renewcommand{\cmdprint}[1]{\textup{\texttt{\string#1}}} + \makeatletter + \renewcommand{\cmd}[1]{\cmdprint{#1}% + \index{\expandafter\@gobble\string#1@\string\cs{\expandafter\@gobble\string#1}}} + \makeatother + \newcommand*{\pixbsbs}{\cmdprint{\\}\index{"\ @\string\cs{}\bs}} + \newcommand*{\pixabang}{\cmdprint{\!}\index{"!@\string\cs{}\texttt{"!}}} + \newcommand*{\pixbar}{\cmdprint{\|}\index{[@\string\cs{}\texttt{\textbar}}} + + %% Boite additionnelle (basée sur awesomebox.sty) pour liens vers + %% des vidéos + \newcommand{\videobox}[1]{% + \awesomebox{\faYoutubePlay}{\aweboxrulewidth}{url}{#1}} + + %% Hyperlien avec symbole de lien externe juste après + \newcommand{\link}[2]{\href{#1}{#2~\raisebox{-0.2ex}{\faExternalLink}}} + + %% Lien vers documentation dans la marge + %% usage: \doc[documentation]{nom_fichier}{url} + \newcommand{\doc}[3][documentation]{\link{#3}{#1}% + \ifthenelse{\equal{#2}{}}{}{\marginpar% + [\hfill\faBookmark~\fichier{#2}]% + {\faBookmark~\fichier{#2}}}} + + %% Suppression de l'hyperlien + \newcommand{\nolink}[1]{\begin{NoHyper}#1\end{NoHyper}} + + %% Lien vers Gitlab dans la page de notices + \newcommand{\viewsource}[1]{% + \href{#1}{\faGitlab\ Voir sur Gitlab}} + + %% Pour le tableau des commandes d'espacement en mode mathématique. + %% Pris de la doc de amsmath. + \newcommand{\lspx}{\mathord{\dashv\mkern-3mu}} + \newcommand{\rspx}{\mathord{\mkern-2mu\vdash}} + \newcommand{\spx}[1]{$\lspx #1\rspx$} + + %% Logo BIBTeX; tiré de https://bit.ly/1RQqUnG + \newcommand{\BibTeX}{\rmfamily B\kern-.05em{\scshape i\kern-.025em b}\kern-.08em \TeX} + + %% Chapitre sur les bibliographies: des références bibliographiques + %% sont insérées dans le texte avec \bibentry. Certaines commandes + %% de francaisbst.tex sont alors utilisées, mais non encore + %% définies. Répétées ici. De plus, il faut définir ici la commande + %% \enquote plutôt que dans francais.bst. C'est pourquoi il y a une + %% version modifiée de ce fichier dans ces sources. + %% Voir https://bit.ly/1MORZmp + \global\def\bbland{et} + \global\def\bbledn{\'ed.} + \global\def\bblfourtho{4{\ieme}} + \global\def\bblth{{\ieme}} + \global\def\bblvol{vol.} + \def\bblno{\no{}} + \def\bblpp{p.} + \newcommand{\enquote}[1]{\guillemotleft#1\guillemotright} + + %%% ======= + %%% Varia + %%% ======= + + %% Style de la bibliographie + \bibliographystyle{francais} + + %% Longueurs pour la composition des pages couvertures avant et + %% arrière. + \newlength{\banderougewidth} \newlength{\banderougeheight} + \newlength{\bandeorwidth} \newlength{\bandeorheight} + \newlength{\imageheight} + \newlength{\logoheight} + \newlength{\gapwidth} + +% \includeonly{} + +\begin{document} + +\frontmatter + +%% Page couverture avant. +\pagestyle{empty} +\input{couverture-avant} +\null\cleardoublepage % cf. section 2.2 textpos.pdf + +%% Page de copyright +\include{notices} +\clearpage + +%% Corps du document +\pagestyle{companion} + +\include{introduction} + +\cleartorecto +\tableofcontents +\cleartorecto +\listoftables +\cleartorecto +\listoffigures + +\mainmatter + +\include{presentation} +\include{bases} +\include{organisation} +\include{apparence} +\include{boites} +\include{tableaux+figures} +\include{mathematiques} +\include{bibliographie} +\include{commandes} +\include{trucs+astuces} + +\appendix +\include{ulthese} % éléments spécifiques à ulthese +\include{solutions} + +\bibliography{formation-latex-ul} + +\cleardoublepage +\printindex + +\cleartoverso + +\input{colophon} + +\cleartoverso + +%% Page couverture arrière. +\pagestyle{empty} +\input{couverture-arriere} + +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-engine: xetex +%%% TeX-master: t +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/francais.bst b/info/formation-latex-ul/source/francais.bst new file mode 100644 index 0000000000..e9cbaf4444 --- /dev/null +++ b/info/formation-latex-ul/source/francais.bst @@ -0,0 +1,1739 @@ +%% +%% This is file `francais.bst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% merlin.mbs (with options: `babel,ay,nat,lang,vonx,nm-rev1,jnrlst,blkyear,dt-beg,yr-per,note-yr,tit-qq,qt-g,qx,vnum-nr,volp-com,pgsep-s,jwdpg,pp-last,jwdvol,num-xser,numser,ser-vol,ser-ed,pg-bk,pre-edn,isbn,issn,agu-doi,doi,edby,blk-com,blknt,pp,ed,abr,ord,and-xcom,etal-xc,url,url-nt,nfss,') +%% +%% >> Style bibliographique compatible avec natbib permettant de composer +%% >> des bibliographies en francais conformes aux regles de typographie +%% >> enoncees dans +%% >> +%% >> Malo, M. "Guide de la communication ecrite", Quebec Amerique, 1996. +%% >> ISBN 978-2-8903-7875-9. +%% >> +%% >> Style cree et maintenu par Vincent Goulet +%% >> . +%% >> +%% >> Version 1.1 2013-05-12 +%% +%% Copyright 1994-2011 Patrick W Daly + % =============================================================== + % IMPORTANT NOTICE: + % This bibliographic style (bst) file has been generated from one or + % more master bibliographic style (mbs) files, listed above. + % + % This generated file can be redistributed and/or modified under the terms + % of the LaTeX Project Public License Distributed from CTAN + % archives in directory macros/latex/base/lppl.txt; either + % version 1 of the License, or any later version. + % =============================================================== + % Name and version information of the main mbs file: + % \ProvidesFile{merlin.mbs}[2011/11/18 4.33 (PWD, AO, DPC)] + % For use with BibTeX version 0.99a or later + %------------------------------------------------------------------- + % This bibliography style file requires a file named francaisbst.tex + % containing the definitions of word commands like \bbleditor, etc. + % This is an author-year citation style bibliography. As such, it is + % non-standard LaTeX, and requires a special package file to function properly. + % Such a package is natbib.sty by Patrick W. Daly + % The form of the \bibitem entries is + % \bibitem[Jones et al.(1990)]{key}... + % \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}... + % The essential feature is that the label (the part in brackets) consists + % of the author names, as they should appear in the citation, with the year + % in parentheses following. There must be no space before the opening + % parenthesis! + % With natbib v5.3, a full list of authors may also follow the year. + % In natbib.sty, it is possible to define the type of enclosures that is + % really wanted (brackets or parentheses), but in either case, there must + % be parentheses in the label. + % The \cite command functions as follows: + % \citet{key} ==>> Jones et al. (1990) + % \citet*{key} ==>> Jones, Baker, and Smith (1990) + % \citep{key} ==>> (Jones et al., 1990) + % \citep*{key} ==>> (Jones, Baker, and Smith, 1990) + % \citep[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2) + % \citep[e.g.][]{key} ==>> (e.g. Jones et al., 1990) + % \citep[e.g.][p. 32]{key} ==>> (e.g. Jones et al., 1990, p. 32) + % \citeauthor{key} ==>> Jones et al. + % \citeauthor*{key} ==>> Jones, Baker, and Smith + % \citeyear{key} ==>> 1990 + %--------------------------------------------------------------------- + +ENTRY + { address + author + booktitle + chapter + doi + edition + editor + eid + howpublished + institution + isbn + issn + journal + key + language + month + note + number + organization + pages + publisher + school + series + title + type + url + volume + year + } + {} + { label extra.label sort.label short.list } +INTEGERS { output.state before.all mid.sentence after.sentence after.block } +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} +STRINGS { s t} +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} +FUNCTION {add.blank} +{ " " * before.all 'output.state := +} + +FUNCTION {date.block} +{ + skip$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} +FUNCTION {non.stop} +{ duplicate$ + "}" * add.period$ + #-1 #1 substring$ "." = +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\emph{" swap$ * "}" * } + if$ +} +FUNCTION {tie.or.space.prefix} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ +} + +FUNCTION {capitalize} +{ "\capitalize" swap$ * } + +FUNCTION {space.word} +{ " " swap$ * " " * } + % Here are the language-specific definitions for explicit words. + % Each function has a name bbl.xxx where xxx is the English word. + % The BABEL language selection is made here; definitions in francaisbst.tex. +FUNCTION {bbl.and} +{ "\bbland{}"} + +FUNCTION {bbl.etal} +{ "\bbletal{}"} + +FUNCTION {bbl.editors} +{ "\bbleds{}" } + +FUNCTION {bbl.editor} +{ "\bbled{}" } + +FUNCTION {bbl.edby} +{ "\bbledby{}" } + +FUNCTION {bbl.edition} +{ "\bbledn{}" } + +FUNCTION {bbl.volume} +{ "\bblvol{}" } + +FUNCTION {bbl.of} +{ "\bblof{}" } + +FUNCTION {bbl.number} +{ "\bblno{}" } + +FUNCTION {bbl.nr} +{ "\bblno{}" } + +FUNCTION {bbl.in} +{ "\bblin{}" } + +FUNCTION {bbl.pages} +{ "\bblpp{}" } + +FUNCTION {bbl.page} +{ "\bblp{}" } + +FUNCTION {bbl.chapter} +{ "\bblchap{}" } + +FUNCTION {bbl.techrep} +{ "\bbltechrep{}" } + +FUNCTION {bbl.mthesis} +{ "\bblmthesis{}" } + +FUNCTION {bbl.phdthesis} +{ "\bblphdthesis{}" } + +FUNCTION {bbl.first} +{ "\bblfirsto{}" } + +FUNCTION {bbl.second} +{ "\bblsecondo{}" } + +FUNCTION {bbl.third} +{ "\bblthirdo{}" } + +FUNCTION {bbl.fourth} +{ "\bblfourtho{}" } + +FUNCTION {bbl.fifth} +{ "\bblfiftho{}" } + +FUNCTION {bbl.st} +{ "\bblst{}" } + +FUNCTION {bbl.nd} +{ "\bblnd{}" } + +FUNCTION {bbl.rd} +{ "\bblrd{}" } + +FUNCTION {bbl.th} +{ "\bblth{}" } + +MACRO {jan} {"\bbljan{}"} + +MACRO {feb} {"\bblfeb{}"} + +MACRO {mar} {"\bblmar{}"} + +MACRO {apr} {"\bblapr{}"} + +MACRO {may} {"\bblmay{}"} + +MACRO {jun} {"\bbljun{}"} + +MACRO {jul} {"\bbljul{}"} + +MACRO {aug} {"\bblaug{}"} + +MACRO {sep} {"\bblsep{}"} + +MACRO {oct} {"\bbloct{}"} + +MACRO {nov} {"\bblnov{}"} + +MACRO {dec} {"\bbldec{}"} + +FUNCTION {eng.ord} +{ duplicate$ "1" swap$ * + #-2 #1 substring$ "1" = + { bbl.th * } + { duplicate$ #-1 #1 substring$ + duplicate$ "1" = + { pop$ bbl.st * } + { duplicate$ "2" = + { pop$ bbl.nd * } + { "3" = + { bbl.rd * } + { bbl.th * } + if$ + } + if$ + } + if$ + } + if$ +} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} +FUNCTION {bibinfo.check} +{ swap$ + duplicate$ missing$ + { + pop$ pop$ + "" + } + { duplicate$ empty$ + { + swap$ pop$ + } + { swap$ + pop$ + } + if$ + } + if$ +} +FUNCTION {bibinfo.warn} +{ swap$ + duplicate$ missing$ + { + swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ + "" + } + { duplicate$ empty$ + { + swap$ "empty " swap$ * " in " * cite$ * warning$ + } + { swap$ + pop$ + } + if$ + } + if$ +} +INTEGERS { nameptr namesleft numnames } + + +STRINGS { bibinfo} + +FUNCTION {format.names} +{ 'bibinfo := + duplicate$ empty$ 'skip$ { + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + duplicate$ #1 > + { "{f.~}{vv~}{ll}{, jj}" } + { "{vv~}{ll}{, f.}{, jj}" } + if$ + format.name$ + bibinfo bibinfo.check + 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { + " " * bbl.etal * + } + { + bbl.and + space.word * t * + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + } if$ +} +FUNCTION {format.names.ed} +{ + 'bibinfo := + duplicate$ empty$ 'skip$ { + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{f.~}{vv~}{ll}{, jj}" + format.name$ + bibinfo bibinfo.check + 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { + + " " * bbl.etal * + } + { + bbl.and + space.word * t * + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + } if$ +} +FUNCTION {format.key} +{ empty$ + { key field.or.null } + { "" } + if$ +} + +FUNCTION {format.authors} +{ author "author" format.names +} +FUNCTION {get.bbl.editor} +{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } + +FUNCTION {format.editors} +{ editor "editor" format.names duplicate$ empty$ 'skip$ + { + "," * + " " * + get.bbl.editor + * + } + if$ +} +FUNCTION {format.book.pages} +{ pages "pages" bibinfo.check + duplicate$ empty$ 'skip$ + { " " * bbl.pages * } + if$ +} +FUNCTION {format.isbn} +{ isbn "isbn" bibinfo.check + duplicate$ empty$ 'skip$ + { + "ISBN " swap$ * + } + if$ +} + +FUNCTION {format.issn} +{ issn "issn" bibinfo.check + duplicate$ empty$ 'skip$ + { + "ISSN " swap$ * + } + if$ +} + +FUNCTION {format.doi} +{ doi empty$ + { "" } + { + "\doi{" doi * "}" * + } + if$ +} +FUNCTION {select.language} +{ duplicate$ empty$ + 'pop$ + { language empty$ + 'skip$ + { "{\selectlanguage{" language * "}" * swap$ * "}" * } + if$ + } + if$ +} + +FUNCTION {format.note} +{ + url empty$ + 'skip$ + { "\urlprefix\url{" url * "}" * output } + if$ + note empty$ + { "" } + { note #1 #1 substring$ + duplicate$ "{" = + 'skip$ + { output.state mid.sentence = + { "l" } + { "u" } + if$ + change.case$ + } + if$ + note #2 global.max$ substring$ * "note" bibinfo.check + } + if$ +} + +FUNCTION {format.title} +{ title + duplicate$ empty$ 'skip$ + { "t" change.case$ } + if$ + "title" bibinfo.check + duplicate$ empty$ 'skip$ + { + "\enquote{" swap$ * + "}, " * + select.language + } + if$ +} +FUNCTION {end.quote.title} +{ title empty$ + 'skip$ + { before.all 'output.state := } + if$ +} +FUNCTION {format.full.names} +{'s := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{vv~}{ll}" format.name$ + 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { + " " * bbl.etal * + } + { + bbl.and + space.word * t * + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.editor.key.full} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.full.names } + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {author.key.full} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {editor.key.full} +{ editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.full.names } + if$ +} + +FUNCTION {make.full.names} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.full + { type$ "proceedings" = + 'editor.key.full + 'author.key.full + if$ + } + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem[{" write$ + label write$ + ")" make.full.names duplicate$ short.list = + { pop$ } + { * } + if$ + "}]{" * write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {if.digit} +{ duplicate$ "0" = + swap$ duplicate$ "1" = + swap$ duplicate$ "2" = + swap$ duplicate$ "3" = + swap$ duplicate$ "4" = + swap$ duplicate$ "5" = + swap$ duplicate$ "6" = + swap$ duplicate$ "7" = + swap$ duplicate$ "8" = + swap$ "9" = or or or or or or or or or +} +FUNCTION {n.separate} +{ 't := + "" + #0 'numnames := + { t empty$ not } + { t #-1 #1 substring$ if.digit + { numnames #1 + 'numnames := } + { #0 'numnames := } + if$ + t #-1 #1 substring$ swap$ * + t #-2 global.max$ substring$ 't := + numnames #5 = + { duplicate$ #1 #2 substring$ swap$ + #3 global.max$ substring$ + "\," swap$ * * + } + 'skip$ + if$ + } + while$ +} +FUNCTION {n.dashify} +{ + n.separate + 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {word.in} +{ bbl.in + " " * } + +FUNCTION {format.date} +{ year "year" bibinfo.check duplicate$ empty$ + { + } + 'skip$ + if$ + extra.label * + before.all 'output.state := + after.sentence 'output.state := +} +FUNCTION {format.btitle} +{ title "title" bibinfo.check + duplicate$ empty$ 'skip$ + { + emphasize + select.language + } + if$ +} +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { bbl.volume volume tie.or.space.prefix + "volume" bibinfo.check * * + series "series" bibinfo.check + duplicate$ empty$ 'pop$ + { emphasize ", " * swap$ * } + if$ + "volume and number" number either.or.check + } + if$ +} +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { series empty$ + { number "number" bibinfo.check } + { output.state mid.sentence = + { bbl.number } + { bbl.number capitalize } + if$ + number tie.or.space.prefix "number" bibinfo.check * * + bbl.in space.word * + series "series" bibinfo.check * + } + if$ + } + if$ + } + { "" } + if$ +} +FUNCTION {is.num} +{ chr.to.int$ + duplicate$ "0" chr.to.int$ < not + swap$ "9" chr.to.int$ > not and +} + +FUNCTION {extract.num} +{ duplicate$ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ + t #2 global.max$ substring$ 't := + duplicate$ is.num + { s swap$ * 's := } + { pop$ "" 't := } + if$ + } + while$ + s empty$ + 'skip$ + { pop$ s } + if$ +} + +FUNCTION {convert.edition} +{ extract.num "l" change.case$ 's := + s "first" = s "1" = or + { bbl.first 't := } + { s "second" = s "2" = or + { bbl.second 't := } + { s "third" = s "3" = or + { bbl.third 't := } + { s "fourth" = s "4" = or + { bbl.fourth 't := } + { s "fifth" = s "5" = or + { bbl.fifth 't := } + { s #1 #1 substring$ is.num + { s eng.ord 't := } + { edition 't := } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + t +} + +FUNCTION {format.edition} +{ edition duplicate$ empty$ 'skip$ + { + convert.edition + output.state mid.sentence = + { "l" } + { "t" } + if$ change.case$ + "edition" bibinfo.check + " " * bbl.edition * + } + if$ +} +INTEGERS { multiresult } +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} +FUNCTION {format.pages} +{ pages duplicate$ empty$ 'skip$ + { duplicate$ multi.page.check + { + bbl.pages swap$ + n.dashify + } + { + bbl.page swap$ + } + if$ + tie.or.space.prefix + "pages" bibinfo.check + * * + } + if$ +} +FUNCTION {format.journal.pages} +{ pages duplicate$ empty$ 'pop$ + { swap$ duplicate$ empty$ + { pop$ pop$ format.pages } + { + ", " * + swap$ + n.dashify + pages multi.page.check + 'bbl.pages + 'bbl.page + if$ + swap$ tie.or.space.prefix + "pages" bibinfo.check + * * + * + } + if$ + } + if$ +} +FUNCTION {format.journal.eid} +{ eid "eid" bibinfo.check + duplicate$ empty$ 'pop$ + { swap$ duplicate$ empty$ 'skip$ + { + ", " * + } + if$ + swap$ * + } + if$ +} +FUNCTION {format.vol.num.pages} +{ volume field.or.null + duplicate$ empty$ 'skip$ + { + bbl.volume swap$ tie.or.space.prefix + "volume" bibinfo.check + * * + } + if$ + number "number" bibinfo.check duplicate$ empty$ 'skip$ + { + swap$ duplicate$ empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + swap$ + ", " bbl.nr * number tie.or.space.prefix pop$ * swap$ * + } + if$ * +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + { "" } + { type empty$ + { bbl.chapter } + { type "l" change.case$ + "type" bibinfo.check + } + if$ + chapter tie.or.space.prefix + "chapter" bibinfo.check + * * + } + if$ +} + +FUNCTION {format.booktitle} +{ + booktitle "booktitle" bibinfo.check + emphasize +} +FUNCTION {format.in.ed.booktitle} +{ format.booktitle duplicate$ empty$ 'skip$ + { + format.bvolume duplicate$ empty$ 'pop$ + { ", " swap$ * * } + if$ + editor "editor" format.names.ed duplicate$ empty$ 'pop$ + { + bbl.edby + " " * swap$ * + swap$ + "," * + " " * swap$ + * } + if$ + word.in swap$ * + } + if$ +} +FUNCTION {format.thesis.type} +{ type duplicate$ empty$ + 'pop$ + { swap$ pop$ + "t" change.case$ "type" bibinfo.check + } + if$ +} +FUNCTION {format.tr.number} +{ number "number" bibinfo.check + type duplicate$ empty$ + { pop$ bbl.techrep } + 'skip$ + if$ + "type" bibinfo.check + swap$ duplicate$ empty$ + { pop$ "t" change.case$ } + { tie.or.space.prefix * * } + if$ +} +FUNCTION {format.article.crossref} +{ + word.in + " \cite{" * crossref * "}" * +} +FUNCTION {format.book.crossref} +{ volume duplicate$ empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + pop$ word.in + } + { bbl.volume + swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * + } + if$ + " \cite{" * crossref * "}" * +} +FUNCTION {format.incoll.inproc.crossref} +{ + word.in + " \cite{" * crossref * "}" * +} +FUNCTION {format.org.or.pub} +{ 't := + "" + address empty$ t empty$ and + 'skip$ + { + t empty$ + { address "address" bibinfo.check * + } + { t * + address empty$ + 'skip$ + { ", " * address "address" bibinfo.check * } + if$ + } + if$ + } + if$ +} +FUNCTION {format.publisher.address} +{ publisher "publisher" bibinfo.warn format.org.or.pub +} + +FUNCTION {format.organization.address} +{ organization "organization" bibinfo.check format.org.or.pub +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.date "year" output.check + date.block + format.title "title" output.check + end.quote.title + crossref missing$ + { + journal + "journal" bibinfo.check + emphasize + "journal" output.check + format.vol.num.pages output + format.doi output + } + { format.article.crossref output.nonnull + } + if$ + eid empty$ + { format.journal.pages } + { format.journal.eid } + if$ + format.issn output + new.sentence + format.note output + fin.entry +} +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + editor format.key output + } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + format.date "year" output.check + date.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + format.edition output + format.number.series output + format.publisher.address output + } + { + format.book.crossref output.nonnull + } + if$ + format.isbn output + format.book.pages output + format.doi output + new.sentence + format.note output + fin.entry +} +FUNCTION {booklet} +{ output.bibitem + format.authors output + author format.key output + format.date "year" output.check + date.block + format.title "title" output.check + end.quote.title + howpublished "howpublished" bibinfo.check output + address "address" bibinfo.check output + format.isbn output + format.book.pages output + format.doi output + new.sentence + format.note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + editor format.key output + } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + format.date "year" output.check + date.block + format.btitle "title" output.check + crossref missing$ + { + format.bvolume output + format.chapter.pages "chapter and pages" output.check + format.edition output + format.number.series output + format.publisher.address output + } + { + format.chapter.pages "chapter and pages" output.check + format.book.crossref output.nonnull + } + if$ + crossref missing$ + { format.isbn output } + 'skip$ + if$ + format.pages "pages" output.check + format.doi output + new.sentence + format.note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.date "year" output.check + date.block + format.title "title" output.check + end.quote.title + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.edition output + format.chapter.pages output + format.number.series output + format.publisher.address output + format.isbn output + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + format.pages "pages" output.check + format.doi output + new.sentence + format.note output + fin.entry +} +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.date "year" output.check + date.block + format.title "title" output.check + end.quote.title + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.number.series output + publisher empty$ + { format.organization.address output } + { organization "organization" bibinfo.check output + format.publisher.address output + } + if$ + format.isbn output + format.issn output + } + { format.incoll.inproc.crossref output.nonnull + } + if$ + format.pages "pages" output.check + format.doi output + new.sentence + format.note output + fin.entry +} +FUNCTION {conference} { inproceedings } +FUNCTION {manual} +{ output.bibitem + format.authors output + author format.key output + format.date "year" output.check + date.block + format.btitle "title" output.check + organization "organization" bibinfo.check output + address "address" bibinfo.check output + format.edition output + format.doi output + new.sentence + format.note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.date "year" output.check + date.block + format.btitle + "title" output.check + bbl.mthesis format.thesis.type output.nonnull + school "school" bibinfo.warn output + address "address" bibinfo.check output + format.doi output + new.sentence + format.note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + author format.key output + format.date "year" output.check + date.block + format.title output + end.quote.title + howpublished "howpublished" bibinfo.check output + format.doi output + new.sentence + format.note output + fin.entry +} +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.date "year" output.check + date.block + format.btitle + "title" output.check + bbl.phdthesis format.thesis.type output.nonnull + school "school" bibinfo.warn output + address "address" bibinfo.check output + format.doi output + new.sentence + format.note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + format.editors output + editor format.key output + format.date "year" output.check + date.block + format.btitle "title" output.check + format.bvolume output + format.number.series output + publisher empty$ + { format.organization.address output } + { organization "organization" bibinfo.check output + format.publisher.address output + } + if$ + format.isbn output + format.issn output + format.doi output + new.sentence + format.note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.date "year" output.check + date.block + format.title + "title" output.check + end.quote.title + format.tr.number output.nonnull + institution "institution" bibinfo.warn output + address "address" bibinfo.check output + format.doi output + new.sentence + format.note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.date "year" output.check + date.block + format.title "title" output.check + end.quote.title + format.doi output + new.sentence + format.note "note" output.check + fin.entry +} + +FUNCTION {default.type} { misc } +READ +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} +INTEGERS { len } +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} +FUNCTION {format.lab.names} +{ 's := + "" 't := + s #1 "{vv~}{ll}" format.name$ + s num.names$ duplicate$ + #2 > + { pop$ + " " * bbl.etal * + } + { #2 < + 'skip$ + { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { + " " * bbl.etal * + } + { bbl.and space.word * s #2 "{vv~}{ll}" format.name$ + * } + if$ + } + if$ + } + if$ +} + +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.label} +{ editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION {calc.short.authors} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label + { type$ "proceedings" = + 'editor.key.label + 'author.key.label + if$ + } + if$ + 'short.list := +} + +FUNCTION {calc.label} +{ calc.short.authors + short.list + "(" + * + year duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ + * + 'label := +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{ll{ }}{ f{ }}{ jj{ }}" + format.name$ 't := + nameptr #1 > + { + " " * + namesleft #1 = t "others" = and + { "zzzzz" 't := } + 'skip$ + if$ + t sortify * + } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} +FUNCTION {editor.sort} +{ editor empty$ + { key empty$ + { "to sort, need editor or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ +} +FUNCTION {presort} +{ calc.label + label sortify + " " + * + type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.sort + 'author.sort + if$ + } + if$ + #1 entry.max$ substring$ + 'sort.label := + sort.label + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} +SORT +STRINGS { last.label next.extra } +INTEGERS { last.extra.num last.extra.num.extended last.extra.num.blank number.label } +FUNCTION {initialize.extra.label.stuff} +{ #0 int.to.chr$ 'last.label := + "" 'next.extra := + #0 'last.extra.num := + "a" chr.to.int$ #1 - 'last.extra.num.blank := + last.extra.num.blank 'last.extra.num.extended := + #0 'number.label := +} +FUNCTION {forward.pass} +{ last.label label = + { last.extra.num #1 + 'last.extra.num := + last.extra.num "z" chr.to.int$ > + { "a" chr.to.int$ 'last.extra.num := + last.extra.num.extended #1 + 'last.extra.num.extended := + } + 'skip$ + if$ + last.extra.num.extended last.extra.num.blank > + { last.extra.num.extended int.to.chr$ + last.extra.num int.to.chr$ + * 'extra.label := } + { last.extra.num int.to.chr$ 'extra.label := } + if$ + } + { "a" chr.to.int$ 'last.extra.num := + "" 'extra.label := + label 'last.label := + } + if$ + number.label #1 + 'number.label := +} +FUNCTION {reverse.pass} +{ next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + extra.label 'next.extra := + extra.label + duplicate$ empty$ + 'skip$ + { "{\natexlab{" swap$ * "}}" * } + if$ + 'extra.label := + label extra.label * 'label := +} +EXECUTE {initialize.extra.label.stuff} +ITERATE {forward.pass} +REVERSE {reverse.pass} +FUNCTION {bib.sort.order} +{ sort.label + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} +ITERATE {bib.sort.order} +SORT +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" number.label int.to.str$ * "}" * + write$ newline$ + "\ProvideTextCommand{\guillemotleft}{OT1}{%" + write$ newline$ + " \leavevmode\raise .27ex\hbox{$\scriptscriptstyle\ll$}}" + write$ newline$ + "\ProvideTextCommand{\guillemotright}{OT1}{%" + write$ newline$ + " \leavevmode\raise .27ex\hbox{$\scriptscriptstyle\gg$}}" + % write$ newline$ + % "\newcommand{\enquote}[1]{\guillemotleft#1\guillemotright}" + write$ newline$ + "\providecommand{\natexlab}[1]{#1}" + write$ newline$ + "\providecommand{\url}[1]{\texttt{#1}}" + write$ newline$ + "\providecommand{\urlprefix}{URL }" + write$ newline$ + "\expandafter\ifx\csname urlstyle\endcsname\relax" + write$ newline$ + " \providecommand{\doi}[1]{doi:\discretionary{}{}{}#1}\else" + write$ newline$ + " \providecommand{\doi}{doi:\discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi" + write$ newline$ + "\providecommand{\selectlanguage}[1]{\relax}" + write$ newline$ + "\input{francaisbst.tex}" write$ newline$ + "\newcommand{\Capitalize}[1]{\uppercase{#1}}" write$ newline$ + "\newcommand{\capitalize}[1]{\expandafter\Capitalize#1}" write$ newline$ +} +EXECUTE {begin.bib} +EXECUTE {init.state.consts} +ITERATE {call.type$} +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} +EXECUTE {end.bib} +%% End of customized bst file +%% +%% End of file `francais.bst'. diff --git a/info/formation-latex-ul/source/images/Meerkat_stare-diapos.jpg b/info/formation-latex-ul/source/images/Meerkat_stare-diapos.jpg new file mode 100644 index 0000000000..80ef47482e Binary files /dev/null and b/info/formation-latex-ul/source/images/Meerkat_stare-diapos.jpg differ diff --git a/info/formation-latex-ul/source/images/Meerkat_stare.jpg b/info/formation-latex-ul/source/images/Meerkat_stare.jpg new file mode 100644 index 0000000000..ca33487d9d Binary files /dev/null and b/info/formation-latex-ul/source/images/Meerkat_stare.jpg differ diff --git a/info/formation-latex-ul/source/images/bibtex-texmaker.png b/info/formation-latex-ul/source/images/bibtex-texmaker.png new file mode 100644 index 0000000000..8df241da9c Binary files /dev/null and b/info/formation-latex-ul/source/images/bibtex-texmaker.png differ diff --git a/info/formation-latex-ul/source/images/bibtex-texshop.png b/info/formation-latex-ul/source/images/bibtex-texshop.png new file mode 100644 index 0000000000..7fc6d4e446 Binary files /dev/null and b/info/formation-latex-ul/source/images/bibtex-texshop.png differ diff --git a/info/formation-latex-ul/source/images/by-sa.pdf b/info/formation-latex-ul/source/images/by-sa.pdf new file mode 100644 index 0000000000..575f606b78 Binary files /dev/null and b/info/formation-latex-ul/source/images/by-sa.pdf differ diff --git a/info/formation-latex-ul/source/images/by.pdf b/info/formation-latex-ul/source/images/by.pdf new file mode 100644 index 0000000000..3391984142 Binary files /dev/null and b/info/formation-latex-ul/source/images/by.pdf differ diff --git a/info/formation-latex-ul/source/images/exemple-bibliographie-cropped-1.pdf b/info/formation-latex-ul/source/images/exemple-bibliographie-cropped-1.pdf new file mode 100644 index 0000000000..aff22993ed Binary files /dev/null and b/info/formation-latex-ul/source/images/exemple-bibliographie-cropped-1.pdf differ diff --git a/info/formation-latex-ul/source/images/exemple-bibliographie-cropped-2.pdf b/info/formation-latex-ul/source/images/exemple-bibliographie-cropped-2.pdf new file mode 100644 index 0000000000..22c84db319 Binary files /dev/null and b/info/formation-latex-ul/source/images/exemple-bibliographie-cropped-2.pdf differ diff --git a/info/formation-latex-ul/source/images/exemple-bibliographie-cropped-3.pdf b/info/formation-latex-ul/source/images/exemple-bibliographie-cropped-3.pdf new file mode 100644 index 0000000000..6b57f93cbc Binary files /dev/null and b/info/formation-latex-ul/source/images/exemple-bibliographie-cropped-3.pdf differ diff --git a/info/formation-latex-ul/source/images/exercice_commandes-solution.pdf b/info/formation-latex-ul/source/images/exercice_commandes-solution.pdf new file mode 100644 index 0000000000..610fb0f805 Binary files /dev/null and b/info/formation-latex-ul/source/images/exercice_commandes-solution.pdf differ diff --git a/info/formation-latex-ul/source/images/formation-latex-ul.png b/info/formation-latex-ul/source/images/formation-latex-ul.png new file mode 100644 index 0000000000..2ba654ffb0 Binary files /dev/null and b/info/formation-latex-ul/source/images/formation-latex-ul.png differ diff --git a/info/formation-latex-ul/source/images/knuth.jpg b/info/formation-latex-ul/source/images/knuth.jpg new file mode 100644 index 0000000000..cfbfb4c1f4 Binary files /dev/null and b/info/formation-latex-ul/source/images/knuth.jpg differ diff --git a/info/formation-latex-ul/source/images/ponctuation.pdf b/info/formation-latex-ul/source/images/ponctuation.pdf new file mode 100644 index 0000000000..4af2c48d8d Binary files /dev/null and b/info/formation-latex-ul/source/images/ponctuation.pdf differ diff --git a/info/formation-latex-ul/source/images/sa.pdf b/info/formation-latex-ul/source/images/sa.pdf new file mode 100644 index 0000000000..f8a641fb5e Binary files /dev/null and b/info/formation-latex-ul/source/images/sa.pdf differ diff --git a/info/formation-latex-ul/source/images/section-non-num.pdf b/info/formation-latex-ul/source/images/section-non-num.pdf new file mode 100644 index 0000000000..4adf6b38bb Binary files /dev/null and b/info/formation-latex-ul/source/images/section-non-num.pdf differ diff --git a/info/formation-latex-ul/source/images/section-num.pdf b/info/formation-latex-ul/source/images/section-num.pdf new file mode 100644 index 0000000000..d68033b259 Binary files /dev/null and b/info/formation-latex-ul/source/images/section-num.pdf differ diff --git a/info/formation-latex-ul/source/images/tdm-dans-pdf.pdf b/info/formation-latex-ul/source/images/tdm-dans-pdf.pdf new file mode 100644 index 0000000000..d3ebbfbe71 Binary files /dev/null and b/info/formation-latex-ul/source/images/tdm-dans-pdf.pdf differ diff --git a/info/formation-latex-ul/source/images/ul_p.pdf b/info/formation-latex-ul/source/images/ul_p.pdf new file mode 100644 index 0000000000..6535aad11f Binary files /dev/null and b/info/formation-latex-ul/source/images/ul_p.pdf differ diff --git a/info/formation-latex-ul/source/images/xyz-emph.pdf b/info/formation-latex-ul/source/images/xyz-emph.pdf new file mode 100644 index 0000000000..cdd81fc175 Binary files /dev/null and b/info/formation-latex-ul/source/images/xyz-emph.pdf differ diff --git a/info/formation-latex-ul/source/images/xyz-math.pdf b/info/formation-latex-ul/source/images/xyz-math.pdf new file mode 100644 index 0000000000..54a5f038dd Binary files /dev/null and b/info/formation-latex-ul/source/images/xyz-math.pdf differ diff --git a/info/formation-latex-ul/source/introduction.tex b/info/formation-latex-ul/source/introduction.tex new file mode 100644 index 0000000000..8454a22f1d --- /dev/null +++ b/info/formation-latex-ul/source/introduction.tex @@ -0,0 +1,170 @@ +%%% Copyright (C) 2018 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\chapter{Introduction} +\label{chap:introduction} + +Le présent ouvrage tire son origine d'une formation sur la rédaction +de thèses et de mémoires avec {\LaTeX} développée pour la Bibliothèque +de l'Université Laval. La formation aborde les concepts de base pour +un nouvel utilisateur: processus d'édition, compilation, +visualisation; séparation du contenu et de l'apparence du texte; mise +en forme du texte; séparation du document en parties; rudiments du +mode mathématique. Transformée en prose, la série de diapositives qui +appuie la présentation correspond grosso modo aux quatre premiers +chapitres de l'ouvrage. + +Les six autres chapitres visent à rendre l'utilisateur de {\LaTeX} +débutant ou intermédiaire autonome dans la rédaction de documents +relativement complexes comportant des tableaux, des figures, des +équations mathématiques élaborées, une bibliographie, etc. Nous avons +aussi émaillé le texte de conseils et d'astuces glanés au fil de nos +vingt années d'utilisation du système de mise en page. + +Les nombreuses références à la classe de documents \class{ulthese} +s'adressent au premier public de l'ouvrage: les étudiantes et +étudiants de l'Université Laval occupés à la rédaction de leur thèse +ou de leur mémoire. Ils devront utiliser cette classe pour composer un +document conforme aux règles générales de présentation matérielle de +la Faculté des études supérieures et postdoctorales. Les autres +lecteurs pourront sans mal escamoter ces passages. + +Chaque chapitre comporte quelques exercices. Les solutions se trouvent +en annexe. + +\section*{Fonctionnalités interactives} + +En consultation électronique, ce document se trouve enrichi de +plusieurs fonctionnalités interactives. +\begin{itemize} +\item Intraliens entre le numéro d'un exercice et sa solution, et vice + versa. Ces intraliens sont aussi marqués par la couleur + \textcolor{link}{\rule{1.5em}{1.2ex}}. +\item Intraliens entre les citations dans le texte et leur entrée dans + la bibliographie. Ces intraliens sont marqués par la couleur + \textcolor{citation}{\rule{1.5em}{1.2ex}}. +\item Hyperliens vers des ressources externes marqués par le symbole + {\faExternalLink} et la couleur + \textcolor{url}{\rule{1.5em}{1.2ex}}. +\item Table des matières, liste des tableaux et liste des figures + permettant d'accéder rapidement à des ressources du document. +\item Index comprenant les références aux commandes et environnements + {\LaTeX}, ainsi qu'aux noms de paquetages et de classes. +\end{itemize} + +\section*{Blocs signalétiques} + +Le document est parsemé de divers types de blocs signalétiques +inspirés de +\link{https://asciidoctor.org/docs/user-manual/\#admonition}{AsciiDoc} +qui visent à attirer votre attention sur une notion. + +\tipbox{Astuce! Ces blocs contiennent un truc, une astuce, ou tout + autre type d'information utile.} +\vspace{-\baselineskip} + +\importantbox{Important! Ces blocs contiennent les remarques les plus + importantes. Veillez à en tenir compte.} +\vspace{-\baselineskip} + +\notebox{Ces blocs contiennent des remarques additionnelles sur + la matière ou des informations amusantes, mais non essentielles.} +\vspace{-\baselineskip} + +\videobox{Ces blocs contiennent des renvois vers des vidéos dans la % + \link{https://www.youtube.com/channel/UCIQia52CHKSCQG3_mwLSNCA}{chaine + YouTube} liée ce document.} + +\section*{Liens vers la documentation} + +Parmi les hyperliens vers des ressources externes, le texte compte +plusieurs renvois vers la documentation d'un paquetage ou d'une +classe, par exemple vers la % +\doc{memoir}{http://texdoc.net/pkg/memoir/} % +de la classe \class{memoir}. L'hyperlien mène vers la documentation +dans le site % +\link{http://texdoc.net}{TeXdoc Online}. On trouve également dans la +marge le nom du fichier correspondant (sans l'extension \code{.pdf}) +sur un système doté de {\TeX}~Live. + +La plupart des logiciels intégrés de rédaction {\LaTeX} offrent une +interface pour accéder à cette documentation. +\begin{itemize} +\item TeXShop: menu \code{Aide|Afficher l'aide pour le + package} (\optkey\,\cmdkey\, I). +\item Texmaker: menu \code{Aide|TeXDoc [selection]}. +\item GNU~Emacs: commande \code{TeX-doc} (\code{C-c ?}) du mode + spécialisé AUC{\TeX}. +\end{itemize} +Le lecteur devrait consulter la rubrique d'aide de son éditeur pour +savoir s'il offre une interface au système de gestion de la +documentation Texdoc de {\TeX}~Live. + +\section*{Références additionnelles} + +L'ouvrage n'a aucune prétention d'exhaustivité. La consultation de +documentation additionnelle pourra s'avérer nécessaire pour réaliser +des mises en page plus élaborées. À cet égard, nous recommandons +chaudement le livre de \citet{Kopka:latex:4e} --- il a servi +d'inspiration pour ce document à maints endroits. La très complète +documentation (plus de 600~pages!) de la classe \class{memoir} +\citep{memoir} constitue une autre référence de choix. Nous +recommandons également: +\begin{itemize} +\item \link{https://fr.wikibooks.org/wiki/LaTeX}{\emph{LaTeX} dans + Wikilivre} pour de la documentation en ligne, en français et + libre; +\item le très actif forum de discussion + \link{https://tex.stackexchange.com}{{\TeX}--{\LaTeX} Stack Exchange} + (avant de penser y poser une question, vérifier que la réponse ne se trouve + pas déjà dans le forum\dots\ ce qui risque fort d'être le cas); +\item la très complète + \link{http://www.tex.ac.uk/cgi-bin/texfaq2html}{% + \emph{foire aux questions}} (en anglais) du groupe des + utilisateurs de {\LaTeX} du Royaume-Uni. +\end{itemize} + +\section*{Installation d'une distribution} + +L'utilisation de {\LaTeX} requiert évidemment une distribution du +système. Nous recommandons la distribution {\TeX}~Live administrée par +le {\TeX} Users Group. + +\videobox{Visionnez les vidéos qui expliquent comment installer la + distribution {\TeX}~Live \link{https://youtu.be/uJFbhQkDbU8}{sur + macOS} et \link{https://youtu.be/wO2FlNmye14}{sur Windows}.} + +\section*{Fichiers d'accompagnement} + +Ce document devrait être accompagné des fichiers nécessaires pour +compléter certains exercices figurant à la fin des chapitres, ainsi +que d'un gabarit \fichier{exercice\_gabarit.tex} pour composer les +solutions des autres exercices. Si ce n'est pas le cas, récupérer les +fichiers dans le site \link{\ctanurl}{\emph{Comprehensive TeX Archive + Network} (CTAN)}. + +\section*{Document libre} + +Tout comme {\TeX}, {\LaTeX} et l'ensemble des outils présentés dans ce +document, le projet «Rédaction avec {\LaTeX}» s'inscrit dans le +mouvement de +l'\link{https://www.gnu.org/philosophy/free-sw.html}{informatique + libre}. Vous pouvez accéder à l'ensemble du code source en suivant +le lien dans la page de copyright. Vous trouverez dans le fichier +\code{README.md} toutes les informations utiles pour composer le +document. + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "formation-latex-ul" +%%% TeX-engine: xetex +%%% encoding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/listings/exemple-bibliographie.bib b/info/formation-latex-ul/source/listings/exemple-bibliographie.bib new file mode 100644 index 0000000000..2b6582280d --- /dev/null +++ b/info/formation-latex-ul/source/listings/exemple-bibliographie.bib @@ -0,0 +1,16 @@ +@Book{Kopka:latex:4e, + author = {Kopka, Helmut and Daly, Patrick W.}, + title = {Guide to {\LaTeX}}, + publisher = {Addison-Wesley}, + year = 2003, + edition = 4, + isbn = {978-0321173850}, + language = {english}} + +@Book{Malo:1996, + author = {Malo, M.}, + title = {Guide de la communication écrite au cégep, + à l'université et en entreprise}, + publisher = {Québec Amérique}, + year = 1996, + language = {french}} diff --git a/info/formation-latex-ul/source/listings/exemple-bibliographie.tex b/info/formation-latex-ul/source/listings/exemple-bibliographie.tex new file mode 100644 index 0000000000..2e42a3a9e9 --- /dev/null +++ b/info/formation-latex-ul/source/listings/exemple-bibliographie.tex @@ -0,0 +1,20 @@ +%%% -*- coding: utf-8; TeX-engine: xetex; mode: latex; -*- + +\documentclass[11pt,english,french]{article} + \usepackage{fontspec} + \usepackage{natbib} + \usepackage{babel} + + \bibliographystyle{francais} + +\begin{document} + +Nous recommandons \citet{Kopka:latex:4e} comme ouvrage de +référence sur {\LaTeX}. + +La bibliographie est mise en forme selon des normes de +typographie française \citep{Malo:1996}. + +\bibliography{exemple-bibliographie} + +\end{document} diff --git a/info/formation-latex-ul/source/mathematiques-diapos.tex b/info/formation-latex-ul/source/mathematiques-diapos.tex new file mode 100644 index 0000000000..0c1986380a --- /dev/null +++ b/info/formation-latex-ul/source/mathematiques-diapos.tex @@ -0,0 +1,178 @@ +%%% Copyright (C) 2018 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\section{B.a.-ba des mathématiques} + +\begin{frame}[fragile=singleslide] + \frametitle{Principes de base} + \begin{itemize} + \item Décrire des équations mathématiques requiert un «langage» spécial + \begin{itemize} + \item il faut informer {\LaTeX} que l'on passe à ce langage + \item par le biais de modes mathématiques + \end{itemize} + \item Important d'utiliser un mode mathématique + \begin{itemize} + \item règles de typographie spéciales + \item espaces gérées automatiquement + \end{itemize} + \item Vous voulez utiliser le paquetage \pkg{amsmath} +\begin{lstlisting} +\usepackage{amsmath} +\end{lstlisting} + \end{itemize} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Modes mathématiques} + \begin{enumerate}[<+->] + \item «En ligne» directement dans le texte comme $(a + b)^2 = a^2 + + 2ab + b^2$ en plaçant l'équation entre \verb=$ $= +\begin{lstlisting} +«En ligne» directement dans le texte +comme $(a + b)^2 = a^2 + 2ab + b^2$ +\end{lstlisting} + \item «Hors paragraphe» séparé du texte principal comme + \begin{equation*} + \int_0^\infty f(x)\, dx = \sum_{i = 1}^n \alpha_i e^{x_i} f(x_i) + \end{equation*} + en utilisant divers types d'environnements +\begin{lstlisting} +«Hors paragraphe» séparé du texte principal comme +\begin{equation*} + \int_0^\infty f(x)\, dx = + \sum_{i = 1}^n \alpha_i e^{x_i} f(x_i) +\end{equation*} +\end{lstlisting} + \end{enumerate} +\end{frame} + + +\begin{conseil} + En ligne ou hors paragraphe, les équations font partie intégrante de + la phrase. + + Les règles de ponctuation usuelles s'appliquent donc aux équations. + + \bigskip + \fbox{\includegraphics[width=0.95\linewidth]{images/ponctuation}} +\end{conseil} + +\begin{frame}[fragile] + \frametitle{Quelques règles de base} + \begin{itemize} + \item En mode mathématique, {\TeX} écrit automatiquement les + constantes en romain et les variables en italique + \begin{demo} + \begin{texample} +\begin{lstlisting} +$z = 2a + 3y$ +\end{lstlisting} + \producing + $z = 2a + 3y$ + \end{texample} + \end{demo} + \item Espacement entre les éléments géré automatiquement, peu importe + le code source + \begin{demo} + \begin{texample} +\begin{lstlisting} +$z=2 a+3 y$ +\end{lstlisting} + \producing + $z=2 a+3 y$ + \end{texample} + \end{demo} + \end{itemize} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Quelques règles de base (suite)} + \begin{itemize} + \item \alert{Ne pas} utiliser le mode mathématique pour obtenir du + texte en italique! + \begin{demo} + \begin{minipage}{0.45\linewidth} +\begin{lstlisting} +\emph{xyz} +\end{lstlisting} + \end{minipage} + \hfill + \begin{minipage}{0.45\linewidth} + \includegraphics[height=0.8\baselineskip,keepaspectratio]{images/xyz-emph} + \end{minipage}\par + \begin{minipage}{0.45\linewidth} +\begin{lstlisting} +$xyz$ +\end{lstlisting} + \end{minipage} + \hfill + \begin{minipage}{0.45\linewidth} + \includegraphics[height=0.8\baselineskip,keepaspectratio]{images/xyz-math} + \end{minipage} + \end{demo} + \item Commande \cs{text} de \pkg{amsmath} pour texte à + l'intérieur du mode mathématique + \begin{demo} + \begin{texample} +\begin{lstlisting} +$x = 0 \text{ si } y < 2$ +\end{lstlisting} + \producing + $x = 0 \text{ si } y < 2$ + \end{texample} + \end{demo} + \end{itemize} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Avant-gout} + + Pouvez-vous interpréter ce code? +\begin{lstlisting} +\begin{equation*} + \Gamma(\alpha) = + \sum_{j = 0}^\infty \int_j^{j + 1} + x^{\alpha - 1} e^{-x}\, dx +\end{equation*} +\end{lstlisting} + \vspace{18pt} + \pause + + Fort probablement! + \begin{equation*} + \Gamma(\alpha) = + \sum_{j = 0}^\infty \int_j^{j + 1} x^{\alpha - 1} e^{-x}\, dx + \end{equation*} +\end{frame} + +\subsection{[~Exercice~]} + +\begin{exercice} + Utiliser le fichier \fichier{exercice\_mathematiques.tex}. + + \begin{enumerate} + \item Étudier le code source du fichier, puis le compiler. + \item Charger le paquetage \pkg{amsfonts} dans le préambule, puis + remplacer \verb=$R^+$= par \verb=$\mathbb{R}^+$= à la ligne + débutant par «Le domaine». + \item À l'aide de la fonction Rechercher et remplacer de l'éditeur + de texte, remplacer toutes les occurrences du symbole $\theta$ par + $\lambda$. + \end{enumerate} +\end{exercice} + + +%%% Local Variables: +%%% TeX-master: "formation-latex-ul-diapos" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/mathematiques.tex b/info/formation-latex-ul/source/mathematiques.tex new file mode 100644 index 0000000000..ae522b6199 --- /dev/null +++ b/info/formation-latex-ul/source/mathematiques.tex @@ -0,0 +1,2041 @@ +%%% Copyright (C) 2018 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\chapter{Mathématiques} +\label{chap:math} + + +S'il est un domaine où {\LaTeX} brille particulièrement, c'est bien +dans la préparation et la présentation d'équations mathématiques --- +des plus simples aux plus complexes. Après tout, l'amélioration de la +qualité typographique des équations mathématiques dans son ouvrage +phare \emph{The Art of Computer Programming} figurait parmi les +objectifs premiers de Knuth lorsqu'il a développé {\TeX}. + + +\section{Principes de base du mode mathématique} +\label{sec:math:base} + +La mise en forme d'équations mathématiques requiert d'indiquer à +l'ordinateur, dans un langage spécial, le contenu des dites équations +et la position des symboles: en exposant, en indice, sous forme de +fraction, etc. L'ordinateur peut ensuite assembler le tout à partir de +règles typographiques portant, par exemple, sur la représentation des +variables et des constantes, l'espacement entre les symboles ou la +disposition des équations selon qu'elles apparaissent au fil du texte +ou hors d'un paragraphe. + +On indique à {\LaTeX} que l'on change de «langage», par l'utilisation +d'un mode mathématique. Il y a deux grandes manière d'activer le mode +mathématique: +\begin{enumerate} +\item en insérant le code entre les symboles \verb=$ $= pour générer + une équation «en ligne», ou au fil du texte; + \begin{demo} + \begin{texample} +\begin{lstlisting} +on sait que $(a + b)^2 = +a^2 + 2ab + b^2$, d'où +on obtient... +\end{lstlisting} + \producing + on sait que $(a + b)^2 = a^2 + 2ab + b^2,$ d'où on obtient... + \end{texample} + \end{demo} +\item en utilisant un environnement servant à créer une équation hors + paragraphe; + \begin{demo} + \begin{texample} +\begin{lstlisting} +on sait que +\begin{equation*} + (a + b)^2 + = a^2 + 2ab + b^2, +\end{equation*} +d'où on obtient... +\end{lstlisting} + \producing + on sait que + \begin{equation*} + (a + b)^2 = a^2 + 2ab + b^2, + \end{equation*} + d'où on obtient... + \end{texample} + \end{demo} +\end{enumerate} + +Dans l'exemple ci-dessus, l'environnement \Pe{equation*} (tiré du +paquetage \pkg{amsmath}, voir la section suivante) crée une +équation hors paragraphe, centrée sur la ligne et non numérotée. Avec +l'environnement \Ie{equation} (donc sans \verb=*= dans le nom), +{\LaTeX} ajoute automatiquement un numéro d'équation séquentiel aligné +sur la marge de droite: +\begin{demo} + \begin{texample} +\begin{lstlisting} +on sait que +\begin{equation} + (a + b)^2 = a^2 + b^2, +\end{equation} +d'où on obtient... +\end{lstlisting} + \producing + on sait que + \begin{equation} + (a + b)^2 = a^2 + b^2, + \end{equation} + d'où on obtient... + \end{texample} +\end{demo} +Cette disposition est la plus usuelle dans les ouvrages mathématiques. +Le type de numérotation diffère selon qu'un document comporte des +chapitres ou non. + +En mode mathématique, les chiffres sont automatiquement considérés +comme des constantes, les lettres comme des variables et une suite de +lettres comme un produit de variables (nous verrons plus loin comment +représenter des fonctions mathématiques comme $\sin$, $\log$ ou +$\lim$). Ceci a trois conséquences principales: +\begin{enumerate} +\item conformément aux conventions typographiques, les chiffres sont + représentés en caractère \textrm{romain} et les variables, en + italique; + \begin{demo} + \begin{texample} +\begin{lstlisting} +$123xyz$ +\end{lstlisting} + \producing + $123xyz$ + \end{texample} + \end{demo} +\item l'espace entre les constantes, les variables et les opérateurs + mathématiques est géré automatiquement; + \begin{demo} + \begin{texample} +\begin{lstlisting} +$z = 2 x + 3 x y$ +\end{lstlisting} + \producing + $z = 2 x + 3 x y$ + \end{texample} + \end{demo} +\item les espaces dans le code source n'ont aucun impact sur la + disposition d'une équation. + \begin{demo} + \begin{texample} +\begin{lstlisting} +$z=2x + 3xy$ +\end{lstlisting} + \producing + $z=2x + 3xy$ + \end{texample} + \end{demo} +\end{enumerate} + +Quant au langage retenu par {\LaTeX} pour décrire les équations +mathématiques, il est très similaire à celui que l'on utiliserait pour +le faire à voix haute. Il faut simplement recourir à des commandes +pour identifier les symboles mathématiques que l'on ne retrouve pas +sur un clavier usuel, comme les lettres grecques, les opérateurs +d'inégalité ou les symboles de sommes et d'intégrales. + + +\section{Un paquetage incontournable} +\label{sec:math:amsmath} + +Le paquetage \pkg{amsmath} \citep{amsmath} produit par la prestigieuse +\emph{American Mathematical Society} fournit diverses extensions à +{\LaTeX} pour faciliter encore davantage la saisie d'équations +mathématiques complexes et en améliorer la présentation. L'utilisation +de ce paquetage doit être considérée incontournable pour tout document +contenant plus que quelques équations très simples. + +Au chapitre des améliorations fournies par \pkg{amsmath}, notons +particulièrement: +\begin{itemize} +\item plusieurs environnements pour les équations hors paragraphe, en + particulier pour les équations multilignes; +\item une meilleure gestion de l'espacement autour des symboles de + relation (comme les signes d'égalité) dans les équations + multilignes; +\item une commande pour faciliter l'entrée de texte à l'intérieur du + mode mathématique; +\item un environnement pour la saisie des matrices et des coefficients + binomiaux; +\item des commandes pour les intégrales multiples; +\item la possibilité de définir de nouveaux opérateurs mathématiques. +\end{itemize} +Nous décrivons certaines de ces fonctionnalités dans la suite, mais +tout utilisateur du paquetage devrait impérativement consulter sa % +\doc[documentation complète]{amsldoc}{http://texdoc.net/pkg/amsmath}. + + +\section{Principaux éléments du mode mathématique} +\label{sec:math:bases} + +Cette section explique comment créer et assembler divers éléments +d'une formule mathématique: exposants, indices, fractions, texte, etc. +Les seuls symboles utilisés sont pour le moment les chiffres et les +lettres latines. La présentation d'une partie de l'éventail de +symboles mathématiques offerts par {\LaTeX} fera l'objet de la +\autoref{sec:math:symboles}. + +\subsection{Exposants et indices} +\label{sec:math:bases:exposants} + +{\LaTeX} permet de créer facilement et avec la bonne taille de +symboles n'importe quelle combinaison d'exposants et d'indices. + +On place un caractère en \textsuperscript{exposant} avec la +commande \cmd{^} et en \textsubscript{indice} avec la commande +\cmd{_}. Les indices et exposants se combinent naturellement. +\begin{demo} + \def\strut{\rule[-0.4ex]{0pt}{2ex}} + \begin{minipage}{0.3\linewidth} + \begin{texample}[0.6\linewidth] +\begin{lstlisting} +x^2 +\end{lstlisting} + \producing\strut $x^2$ + \end{texample} + \end{minipage} + \quad + \begin{minipage}{0.3\linewidth} + \begin{texample}[0.6\linewidth] +\begin{lstlisting} +a_n +\end{lstlisting} + \producing\strut $a_n$ + \end{texample} + \end{minipage} + \quad + \begin{minipage}{0.3\linewidth} + \begin{texample}[0.67\linewidth] +\begin{lstlisting} +x_i^k +\end{lstlisting} + \producing\strut $x_i^k$ + \end{texample} + \end{minipage} +\end{demo} +(L'ordre de saisie n'a pas d'importance; le troisième exemple +donnerait le même résultat avec \verb=x^k_i=.) + +Si l'exposant ou l'indice compte plus d'un caractère, il faut +regrouper le tout entre accolades \verb={ }=. +\begin{demo} + \begin{minipage}{0.3\linewidth} + \begin{texample}[0.6\linewidth] +\begin{lstlisting} +x^{2k + 1} +\end{lstlisting} + \producing\strut $x^{2k + 1}$ + \end{texample} + \end{minipage} + \quad + \begin{minipage}{0.3\linewidth} + \begin{texample}[0.6\linewidth] +\begin{lstlisting} +x_{i,j} +\end{lstlisting} + \producing\strut $x_{i,j}$ + \end{texample} + \end{minipage} + \quad + \begin{minipage}{0.3\linewidth} + \begin{texample}[0.67\linewidth] +\begin{lstlisting} +x_{ij}^{2n} +\end{lstlisting} + \producing\strut $x_{ij}^{2n}$ + \end{texample} + \end{minipage} +\end{demo} + +Toutes les combinaisons d'exposants et d'indices sont possibles, y +compris les puissances de puissances ou les indices d'indices. +\begin{demo} + \begin{minipage}{0.3\linewidth} + \begin{texample}[0.6\linewidth] +\begin{lstlisting} +e^{-x^2} +\end{lstlisting} + \producing\strut $e^{-x^2}$ + \end{texample} + \end{minipage} + \quad + \begin{minipage}{0.6\linewidth} + \begin{texample}[0.6\linewidth] +\begin{lstlisting} +A_{i_s, k^n}^{y_i} +\end{lstlisting} + \producing\strut $A_{i_s,k^n}^{y_i}$ + \end{texample} + \end{minipage} + \quad \mbox{} % pour alignement avec bloc d'exemples ci-dessus +\end{demo} + +\importantbox{Les commandes \cmd{^} et \cmd{_} sont permises dans le + mode mathématique seulement. En fait, si {\TeX} rencontre l'une de + ces commandes en mode texte, il tentera automatiquement de passer au + mode mathématique après avoir émis l'avertissement + \begin{trivlist} \item\ttfamily + ! Missing \$ inserted. + \end{trivlist} + Il est assez rare que le résultat soit celui souhaité.} + +\subsection{Fractions} +\label{sec:math:bases:fractions} + +Il y a plusieurs façons de représenter une fraction selon qu'elle se +trouve au fil du texte, dans une équation hors paragraphe ou à +l'intérieur d'une autre fraction. + +Pour les fractions au fil du texte, il vaut souvent mieux utiliser +simplement la barre oblique \verb=/= pour séparer le numérateur du +dénominateur, quitte à utiliser des parenthèses. Ainsi, on utilise +\verb=$(n + 1)/2$= pour obtenir $(n + 1)/2$. + +De manière plus générale, la commande +\begin{lstlisting} +\frac`\marg{numérateur}\marg{dénominateur}' +\end{lstlisting} +dispose \meta{numérateur} au-dessus de \meta{dénominateur}, séparé par +une ligne horizontale. La taille des caractères s'ajuste +automatiquement selon que la fraction se trouve au fil du texte ou +dans une équation hors paragraphe, ainsi que selon la position de la +fraction dans l'équation. +\begin{demo} + \begin{texample} +\begin{lstlisting} +% taille au fil du texte +On a $z_1 = \frac{x}{y}$ et +$z_2 = xy$. +\end{lstlisting} + \producing On a $z_1 = \frac{x}{y}$ et $z_2 = xy$. + \end{texample} + + \begin{texample} +\begin{lstlisting} +% taille hors paragraphe +On a +\begin{equation*} + z_1 = \frac{x}{y} +\end{equation*} +et $z_2 = xy$. +\end{lstlisting} + \producing On a + \begin{equation*} + z_1 = \frac{x}{y} + \end{equation*} + et $z_2 = xy$. + \end{texample} + + \begin{texample} +\begin{lstlisting} +% deux tailles combinées +Soit +\begin{equation*} + z = \frac{\frac{x}{2} + + 1}{y}. +\end{equation*} +\end{lstlisting} + \producing Soit + \begin{equation*} + z = \frac{\frac{x}{2} + 1}{y}. + \end{equation*} + \end{texample} +\end{demo} + +Les commandes +\begin{lstlisting} +\dfrac`\marg{numérateur}\marg{dénominateur}' +\tfrac`\marg{numérateur}\marg{dénominateur}' +\end{lstlisting} +de \pkg{amsmath} permettent de forcer une fraction à adopter la taille +d'une fraction hors paragraphe (\emph{displayed}) dans le cas de +\cmd{\dfrac}, ou de celle d'une fraction au fil du texte (\emph{text}) +dans le cas de \cmd{\tfrac}. Consulter l'\autoref{ex:math:matrices} à +la \autopageref{ex:math:matrices} pour visualiser l'effet de la +commande \cmd{\dfrac}. + +\tipbox{Il est parfois visuellement plus intéressant, surtout au fil + du texte, d'écrire une fraction comme $1/x$ sous la forme $x^{-1}$.} + +\subsection{Racines} +\label{sec:math:bases:racines} + +La commande +\begin{lstlisting} +\sqrt`\oarg{n}\marg{radicande}' +\end{lstlisting} +construit un symbole de radical autour de \meta{radicande}, par défaut +la racine carrée. Si l'argument optionnel \meta{n} est spécifié, c'est +plutôt un symbole de racine d'ordre $n$ qui est tracé. La longueur et +la hauteur du radical s'adapte toujours à celles du radicande. +\begin{demo} + \begin{minipage}{0.3\linewidth} + \begin{texample}[0.65\linewidth] +\begin{lstlisting} +\sqrt{2} +\end{lstlisting} + \producing $\sqrt{2}$ + \end{texample} + \end{minipage} + \quad + \begin{minipage}{0.3\linewidth} + \begin{texample}[0.67\linewidth] +\begin{lstlisting} +\sqrt{625} +\end{lstlisting} + \producing + $\sqrt{625}$ + \end{texample} + \end{minipage} + \quad + \begin{minipage}{0.3\linewidth} + \begin{texample}[0.67\linewidth] +\begin{lstlisting} +\sqrt[3]{8} +\end{lstlisting} + \producing + $\sqrt[3]{8}$ + \end{texample} + \end{minipage} + + \begin{texample}[0.55\linewidth] +\begin{lstlisting} +\sqrt[n]{x + y + z} +\end{lstlisting} + \producing + $\sqrt[n]{x + y + z}$ + \end{texample} + + \begin{texample}[0.55\linewidth] +\begin{lstlisting} +\sqrt{\frac{x + y}{x^2 - y^2}} +\end{lstlisting} + \producing + $\displaystyle \sqrt{\frac{x + y}{x^2 - y^2}}$ + \end{texample} +\end{demo} + +\subsection{Sommes et intégrales} +\label{sec:math:bases:sommes-et-integrales} + +Les sommes et les intégrales requièrent un symbole spécial ainsi que +des limites inférieures et supérieures, le cas échéant. + +Les commandes \cmd{\sum} et \cmd{\int} servent respectivement à tracer +les symboles de somme $\sum$ et d'intégrale $\int$. Le paquetage +\pkg{amsmath} fournit également des commandes comme \cmd{\iint} et +\cmd{\iiint} pour obtenir des symboles d'intégrales multiples finement +disposés ($\iint$ et $\iiint$). + +On entre les éventuelles limites inférieures et supérieures comme des +indices et des exposants. +\begin{demo} + \begin{texample} +\begin{lstlisting} +\sum_{i = 0}^n x_i +\end{lstlisting} + \producing $\displaystyle \sum_{i = 0}^n x_i$ + \end{texample} + + \begin{texample} +\begin{lstlisting} +\int_0^{10} f(x)\, dx +\end{lstlisting} + \producing $\displaystyle \int_0^{10} f(x)\, dx$ + \end{texample} + + \begin{texample} +\begin{lstlisting} +\iint_D f(x, y)\, dx dy +\end{lstlisting} + \producing $\displaystyle \iint_D f(x, y)\, dx dy$ + \end{texample} +\end{demo} + +La taille des symboles et la position des limites s'ajustent +automatiquement selon le contexte. Au fil du texte, la somme et +l'intégrale simple ci-dessus apparaitraient comme $\sum_{i = 0}^n x_i$ +et $\int_0^{10} f(x)\, dx$. + +Dans une intégrale il est recommandé de séparer l'intégrande de +l'opérateur de différentiation $dx$ par une espace fine. C'est ce à +quoi sert la commande \cmd{\,} ci-dessus; voir aussi le +\autoref{tab:math:espaces} de la \autopageref{tab:math:espaces}. + +\subsection{Points de suspension} +\label{sec:math:bases:dots} + +Les formules mathématiques comportent fréquemment des points de +suspension dans des suites de variables ou d'opérations. On recommande +d'éviter de les entrer comme trois points finaux consécutifs, car +l'espacement entre les points sera trop petit et le résultat, jugé +disgracieux\footnote{% + Le résultat exact dépend de la police utilisée.} % +d'un point de vue typographique: $...$ + +Le \autoref{tab:math:dots} fournit les commandes {\LaTeX} servant à +générer divers types de points de suspension. + +\begin{table} + \caption{Points de suspension} + \label{tab:math:dots} + \centering + \begin{tabular}{lll} + \toprule + commande & type de points & exemple \\ + \midrule + \cmd{\dots} & sélection automatique \\ + \cmd{\ldots} & points à la ligne de base & $x_1, \ldots, x_n$ \\ + \cmd{\cdots} & points centrés & $x_1 + \cdots + x_n$ \\ + \addlinespace[0.5\normalbaselineskip] + \cmd{\vdots} & points verticaux & $ + \begin{matrix} + x_1 \\ \vdots \\ x_n + \end{matrix}$ \\ + \addlinespace[0.5\normalbaselineskip] + \cmd{\ddots} & points diagonaux & $ + \begin{matrix} + x_1 &&\\ &\ddots& \\ && x_n + \end{matrix}$ \\ + \bottomrule + \end{tabular} +\end{table} + +Avec \pkg{amsmath}, la commande \cmd{\dots} tâche de sélectionner +automatiquement entre les points à la ligne de base ou les points +centrés selon le contexte. Comme le résultat est en général le bon, +nous recommandons d'utiliser principalement cette commande pour +insérer des points de suspension en mode mathématique. +\begin{demo} + \begin{texample} +\begin{lstlisting} +$x_1, \dots, x_n$ +\end{lstlisting} + \producing $x_1, \dots, x_n$ + \end{texample} + + \begin{texample} +\begin{lstlisting} +$x_1, \ldots, x_n$ +\end{lstlisting} + \producing $x_1, \ldots, x_n$ + \end{texample} + + \begin{texample} +\begin{lstlisting} +$x_1 + \dots + x_n$ +\end{lstlisting} + \producing $x_1 + \dots + x_n$ + \end{texample} + + \begin{texample} +\begin{lstlisting} +$x_1 + \cdots + x_n$ +\end{lstlisting} + \producing $x_1 + \cdots + x_n$ + \end{texample} +\end{demo} +Le paquetage définit également les commandes sémantiques suivantes: +\begin{itemize} +\item \cmd{\dotsc} pour des «points avec des virgules» (\emph{commas}); +\item \cmd{\dotsb} pour des «points avec des opérateurs binaires»; +\item \cmd{\dotsm} pour des «points de multiplication»; +\item \cmd{\dotsi} pour des «points avec des intégrales»; +\item \cmd{\dotso} pour d'«autres points» (\emph{other}). +\end{itemize} + +\subsection{Texte et espaces} +\label{sec:math:bases:texte} + +On l'a vu, en mode mathématique {\LaTeX} traite les lettres comme des +variables et gère automatiquement l'espacement entre les divers +symboles. Or, il n'est pas rare que des formules mathématiques +contiennent du texte (notamment des mots comme «où», «si», «quand»). +De plus, il est parfois souhaitable de pouvoir ajuster les blancs +entre des éléments. + +La commande de \pkg{amsmath} +\begin{lstlisting} +\text`\marg{texte}' +\end{lstlisting} +insère \meta{texte} dans une formule mathématique. Le texte est inséré +tel quel, sans aucune gestion des espaces avant ou après le texte. Si +des espaces sont nécessaires, ils doivent faire partie de +\meta{texte}. +\begin{demo} + \begin{texample} +\begin{lstlisting} +f(x) = a e^{-ax} +\text{ pour } x > 0 +\end{lstlisting} + \producing $f(x) = a e^{-ax} \text{ pour } x > 0$ + \end{texample} +\end{demo} + +Les commandes +\begin{lstlisting} +\quad +\qquad +\end{lstlisting} +insèrent un blanc de largeur variable selon la taille de la police en +vigueur. La commande \cmd{\quad} insère un blanc de $1$~em (la largeur de +la lettre M dans la police en vigueur), alors que \cmd{\qquad} +insère le double de cette longueur\footnote{% + Bien qu'elles soient surtout utilisées dans le mode mathématique, + les commandes \cmd{\quad} et \cmd{\qquad} sont également valides + dans le mode texte.}. +\begin{demo} + \begin{texample} +\begin{lstlisting} +f(x) = a e^{-ax}, +\quad x > 0 +\end{lstlisting} + \producing + $f(x) = a e^{-ax}, \quad x > 0$ + \end{texample} +\end{demo} + +Le \autoref{tab:math:espaces} répertorie et compare les différentes +commandes qui permettent d'insérer des espaces plus ou moins fines +entre des éléments dans le mode mathématique. + +\begin{table} + \caption{Espaces dans le mode mathématique} + \label{tab:math:espaces} + \centering + \begin{tabular}{lll} + \toprule + Commande & Longueur & Exemple \\ + \midrule + & pas d'espace & \spx{} \\ + \cmd{\,} & $3/18$ de \cmdprint{quad} & \spx{\,} \\ + \cmd{\:} & $4/18$ de \cmdprint{quad} & \spx{\:} \\ + \cmd{\;} & $5/18$ de \cmdprint{quad} & \spx{\;} \\ + \pixabang & $-3/18$ de \cmdprint{quad} & \spx{\!} \\ + \cmd{\quad} & $1$~em & \spx{\quad} \\ + \cmd{\qquad} & $2$~em & \spx{\qquad} \\ + \bottomrule + \end{tabular} +\end{table} + +\subsection{Fonctions et opérateurs} +\label{sec:math:bases:fonctions} + +Les règles de typographie pour les équations mathématiques exigent que +les variables apparaissent en \textit{italique}, mais que les noms de +fonctions, eux, apparaissent en \textrm{romain}, comme le texte +standard. Pensons, ici, à des fonctions comme $\sin$ ou $\log$. + +On sait que {\LaTeX} interprétera un nom de fonction saisi tel quel +comme un produit de variables: +\begin{demo} + \begin{minipage}{0.45\linewidth} + \begin{texample} +\begin{lstlisting} +$2 sin 30$ +\end{lstlisting} + \producing + $2 sin 30$ + \end{texample} + \end{minipage} + \hfill + \begin{minipage}{0.45\linewidth} + \begin{texample} +\begin{lstlisting} +$3 log 2$ +\end{lstlisting} + \producing + $3 log 2$ + \end{texample} + \end{minipage} +\end{demo} +La commande \cmdprint{\text} permettrait d'afficher les noms de +fonction en romain, mais l'utiliser à répétition se révélerait +rapidement peu pratique. De plus, un nom de fonction n'est pas du +texte à proprement parler, mais plutôt un opérateur mathématique. + +La solution de {\LaTeX} consiste à définir des commandes pour un grand +nombre de fonctions et d'opérateurs mathématiques standards: +\begin{lstlisting} +\arccos \cosh \det \inf \limsup \Pr \tan +\arcsin \cot \dim \ker \ln \sec \tanh +\arctan \coth \exp \lg \log \sin +\arg \csc \gcd \lim \max \sinh +\cos \deg \hom \liminf \min \sup +\end{lstlisting} +L'espacement autour des fonctions et opérateurs est géré par {\LaTeX}. +\begin{demo} + \begin{minipage}{0.45\linewidth} + \begin{texample} +\begin{lstlisting} +$2 \sin30$ +\end{lstlisting} + \producing + $2 \sin30$ + \end{texample} + \end{minipage} + \hfill + \begin{minipage}{0.45\linewidth} + \begin{texample} +\begin{lstlisting} +$3 \log 2$ +\end{lstlisting} + \producing + $3 \log 2$ + \end{texample} + \end{minipage} +\end{demo} + +Certaines des fonctions ci-dessus, notamment \cmd{\lim}, acceptent des +limites comme les symboles de somme et d'intégrale. +\begin{demo} + \begin{texample} +\begin{lstlisting} +% au fil du texte +\lim_{x \to 0} x = 0 +\end{lstlisting} + \producing $\lim_{x \to 0} x = 0$ + \end{texample} + + \begin{texample} +\begin{lstlisting} +% hors paragraphe +\lim_{x \to 0} x = 0 +\end{lstlisting} + \producing $\displaystyle \lim_{x \to 0} x = 0$ + \end{texample} +\end{demo} + +La commande \cmd{\DeclareMathOperator} de \pkg{amsmath} permet de +définir de nouveaux opérateurs mathématiques lorsque nécessaire; +consulter la % +\doc{amsldoc}{http://texdoc.net/pkg/amsmath} % +du paquetage (section~5.1) pour les détails. + + +\begin{exemple} + Le matériel passé en revue jusqu'à maintenant permet déjà + de composer des équations élaborées --- sous réserve qu'elles + tiennent sur une seule ligne comme dans le présent exemple. + + On présente ci-dessous, pièce par pièce, le code {\LaTeX} pour créer + l'équation suivante: + \begin{equation*} + \int_x^\infty (y - x) f_{X|X > x}(y)\, dy = + \frac{1}{1 - F_X(x)} \int_x^\infty (y - x) f_X(y)\, dy. + \end{equation*} + \begin{demo} + \begin{texample}[0.58\linewidth] +\begin{lstlisting} +\begin{equation*} +\end{lstlisting} + \producing + \emph{équation hors paragraphe} + \end{texample} + + \begin{texample}[0.58\linewidth] +\begin{lstlisting} +\int_x^\infty +\end{lstlisting} + \producing + $\displaystyle \int_x^\infty$ + \end{texample} + + \begin{texample}[0.58\linewidth] +\begin{lstlisting} +(y - x) f_{X|X > x}(y)\, dy = +\end{lstlisting} + \producing + $(y - x) f_{X|X > x}(y)\, dy =$ + \end{texample} + + \begin{texample}[0.58\linewidth] +\begin{lstlisting} +\frac{1}{1 - F_X(x)} +\end{lstlisting} + \producing + $\dfrac{1}{1 - F_X(x)}$ + \end{texample} + + \begin{texample}[0.58\linewidth] +\begin{lstlisting} +\int_x^\infty (y - x) f_X(y)\, dy +\end{lstlisting} + \producing + $\displaystyle \int_x^\infty (y - x) f_X(y)\, dy$ + \end{texample} + + \begin{texample}[0.58\linewidth] +\begin{lstlisting} +\end{equation*} +\end{lstlisting} + \producing + \emph{fin de l'environnement} + \end{texample} + \end{demo} + \qed +\end{exemple} + + +\section{Symboles mathématiques} +\label{sec:math:symboles} + +Outre les chiffres et les lettres de l'alphabet, les claviers +d'ordinateurs ne comptent normalement que les symboles +mathématiques suivants: +\begin{center} +%\begin{verbatim} +\verb0+ - = < > / : ! ' | [ ] ( ) { }0 +%\end{verbatim} +\end{center} +Ils s'emploient directement dans les équations, sauf les accolades +\verb={ }= qui sont des symboles réservés par {\LaTeX}. Il faut donc +entrer celles-ci avec \cmdprint{\{} et \cmdprint{\}}, comme dans du +texte normal. + +Pour représenter les innombrables autres symboles mathématiques, on +aura recours à des commandes qui débutent, comme d'habitude, par le +symbole {\bs} et dont le nom est habituellement dérivé de la +signification mathématique du symbole. + +Si un symbole mathématique a été utilisé quelque part dans une +publication, il y a de fortes chances que sa version existe dans +{\LaTeX}. Il serait donc utopique de tenter de faire ici une recension +des symboles disponibles. Nous nous contenterons d'un avant-gout des +principales catégories. + +L'ouvrage de référence pour connaitre les symboles disponibles dans +{\LaTeX} est la bien nommée \emph{Comprehensive {\LaTeX} Symbol List} +\citep{comprehensive}. La liste comprend près de \nombre{6000} +symboles répartis sur plus de 160 pages! On y trouve de tout, des +symboles mathématiques aux pictogrammes de météo ou d'échecs, en +passant par\dots\ des figurines des Simpsons. + +\importantbox{Les moteurs {\XeTeX} et {\LuaTeX} supportent nativement le + code source en format Unicode UTF-8 \citep{Unicode:5.0}. Ce standard + contient des définitions pour plusieurs symboles mathématiques + \citep{wikipedia:unicode-math}. Cela signifie qu'il est possible + d'entrer une partie au moins des équations mathématiques avec des + caractères visibles à l'écran, plutôt qu'avec des commandes + {\LaTeX}. Nous ne saurions toutefois recommander cette pratique qui + rend les fichiers source moins compatibles d'un système à un autre.} + +\subsection{Lettres grecques} +\label{sec:math:symboles:grecques} + +On obtient les lettres grecques en {\LaTeX} avec des commandes +correspondant au nom de chaque lettre. Lorsque la commande débute par +une capitale, on obtient une lettre grecque majuscule. Les commandes +de certaines lettres grecques majuscules n'existent pas lorsque celles-ci +sont identiques aux lettres romaines. + +Les tableaux \ref{tab:math:grecques} et \ref{tab:math:Grecques} +présentent l'ensemble des lettres grecques disponibles dans {\LaTeX}. + +\begin{table} + \caption{Lettres grecques minuscules} + \label{tab:math:grecques} + \begin{tabularx}{1.0\linewidth}{lXlXlXlX} + $\alpha$ & \cmd{\alpha} & $\theta$ & \cmd{\theta} & + $o$ & o & $\tau$ & \cmd{\tau} \\ + $\beta$ & \cmd{\beta} & $\vartheta$ & \cmd{\vartheta} & + $\pi$ & \cmd{\pi} & $\upsilon$ & \cmd{\upsilon} \\ + $\gamma$ & \cmd{\gamma} & $\iota$ & \cmd{\iota} & + $\varpi$ & \cmd{\varpi} & $\phi$ & \cmd{\phi} \\ + $\delta$ & \cmd{\delta} & $\kappa$ & \cmd{\kappa} & + $\rho$ & \cmd{\rho} & $\varphi$ & \cmd{\varphi} \\ + $\epsilon$ & \cmd{\epsilon} & $\lambda$ & \cmd{\lambda} & + $\varrho$ & \cmd{\varrho} & $\chi$ & \cmd{\chi} \\ + $\varepsilon$ & \cmd{\varepsilon} & $\mu$ & \cmd{\mu} & + $\sigma$ & \cmd{\sigma} & $\psi$ & \cmd{\psi} \\ + $\zeta$ & \cmd{\zeta} & $\nu$ & \cmd{\nu} & + $\varsigma$ & \cmd{\varsigma} & $\omega$ & \cmd{\omega} \\ + $\eta$ & \cmd{\eta} & $\xi$ & \cmd{\xi} + \end{tabularx} +\end{table} + +\begin{table} + \caption{Lettres grecques majuscules} + \label{tab:math:Grecques} + \begin{tabularx}{1.0\linewidth}{lXlXlXlX} + $\Gamma$ & \cmd{\Gamma} & + $\Lambda$ & \cmd{\Lambda} & + $\Sigma$ & \cmd{\Sigma} & + $\Psi$ & \cmd{\Psi} \\ + $\Delta$ & \cmd{\Delta} & + $\Xi$ & \cmd{\Xi} & + $\Upsilon$ & \cmd{\Upsilon} & + $\Omega$ & \cmd{\Omega} \\ + $\Theta$ & \cmd{\Theta} & + $\Pi$ & \cmd{\Pi} & + $\Phi$ & \cmd{\Phi} + \end{tabularx} +\end{table} + +\subsection{Lettres modifiées} +\label{sec:math:symboles:mathcal} + +Les lettres de l'alphabet, principalement en majuscule, servent +parfois en mathématiques dans des versions modifiées pour représenter +des quantités, notamment les ensembles. + +La commande \cmd{\mathcal} permet de transformer un ou plusieurs +caractères en version dite «calligraphique» dans le mode mathématique. +\begin{demo} + \begin{texample} +\begin{lstlisting} +\mathcal{ABC\, xyz} +\end{lstlisting} + \producing + %% pris de lucidaot.tex; apparemment lent + \setmathfont[RawFeature=+ss04]{Lucida Bright Math OT} + $\mathscr{ABC\, xyz}$ + \end{texample} +\end{demo} + +La commande \cmd{\mathbb} fournie par les paquetages \pkg{amsfonts} et +\pkg{unicode-math}, entre autres, génère des versions majuscule +ajourée (\emph{blackboard bold}) des lettres de l'alphabet. Elles sont +principalement utilisée pour représenter les ensembles de nombres. +\begin{demo} + \begin{texample} +\begin{lstlisting} +\mathbb{NZRC} +\end{lstlisting} + \producing $\mathbb{NZRC}$ + \end{texample} +\end{demo} + +Le tableau~213 de la % +\doc[\emph{Comprehensive {\LaTeX} Symbol List}]{comprehensive}{http://texdoc.net/pkg/comprehensive} % +présente plusieurs autres alphabets spéciaux disponibles en mode +mathématique. + +\tipbox{Certaines polices OpenType contiennent plusieurs versions des + symboles mathématiques. Par exemple, la police utilisée dans le + présent document contient deux versions de la police calligraphique, + celle présentée ci-contre et celle-ci: % + \setmathfont[RawFeature=-ss04]{Lucida Bright Math OT} + $\mathscr{ABC\, xyz}$. Consulter éventuellement la documentation de + la police pour les détails.} + +\subsection{Opérateurs binaires et relations} +\label{sec:math:symboles:binaires+relations} + +Les opérateurs binaires combinent deux quantités pour en former une +troisième; pensons simplement aux opérateurs d'addition $+$ et de +soustraction $-$ que l'on retrouve sur un clavier d'ordinateur normal. +Les relations, quant à elles, servent pour la comparaison entre deux +quantités, comme $<$ et $>$. Le \autoref{tab:math:binaires} +présente une sélection d'opérateurs binaires et +le \autoref{tab:math:relations} une sélection de relations. + +La % +\doc[\emph{Comprehensive {\LaTeX} Symbol List}]{}{http://texdoc.net/pkg/comprehensive} % +consacre plus d'une dizaine de tableaux aux opérateurs binaires et +près d'une quarantaine aux relations. C'est dire à quel point les +tableaux \ref*{tab:math:binaires} et \ref*{tab:math:relations} de la +\autopageref{tab:math:binaires} ne présentent que les principaux +éléments à titre indicatif. + +Certaines relations existent directement en version opposée, ou +négative (comme $\neq$ ou $\notin$) soit dans {\LaTeX} de base, soit +avec \pkg{amsmath} ou un autre paquetage. Autrement, il est possible +de préfixer toute relation de \cmd{\not} pour y superposer une barre +oblique $/$. + +\begin{table} + \caption{Quelques opérateurs binaires} + \label{tab:math:binaires} + \begin{tabularx}{1.0\linewidth}{lXlXlXlX} + $\times$ & \cmd{\times} & + $\div$ & \cmd{\div} & + $\pm$ & \cmd{\pm} & + $\cdot$ & \cmd{\cdot} \\ + $\cup$ & \cmd{\cup} & + $\cap$ & \cmd{\cap} & + $\setminus$ & \cmd{\setminus} & + $\circ$ & \cmd{\circ} \\ + $\wedge$ & \cmd{\wedge} & + $\vee$ & \cmd{\vee} & + $\oplus$ & \cmd{\oplus} & + $\otimes$ & \cmd{\otimes} \\ + $\ast$ & \cmd{\ast} & + $\star$ & \cmd{\star} & + $\boxplus$ & \cmd{\boxplus}$^\dagger$ & + $\boxtimes$ & \cmd{\boxtimes}$^\dagger$ \\ + \addlinespace + \end{tabularx} + \hspace*{1em}{\footnotesize $^\dagger$ requiert \pkg{amsmath}} +\end{table} + +\begin{table} + \caption{Quelques relations et leur négation} + \label{tab:math:relations} + \begin{tabularx}{1.0\linewidth}{lXlXlXlX} + $\leq$ & \cmd{\leq} & + $\geq$ & \cmd{\geq} & + $\neq$ & \cmd{\neq} & + $\equiv$ & \cmd{\equiv} \\ + $\subset$ & \cmd{\subset} & + $\subseteq$ & \cmd{\subseteq} & + $\in$ & \cmd{\in} & + $\notin$ & \cmd{\notin} \\ + $\nless$ & \cmd{\nless}$^\dagger$ & + $\ngtr$ & \cmd{\ngtr}$^\dagger$ & + $\nleq$ & \cmd{\nleq}$^\dagger$ & + $\ngeq$ & \cmd{\ngeq}$^\dagger$ \\ + \addlinespace + \end{tabularx} + \hspace*{1em}{\footnotesize $^\dagger$ requiert \pkg{amsmath}} +\end{table} + +\subsection{Flèches} +\label{sec:math:symboles:fleches} + +Les flèches de différents types sont souvent utilisées en notation +mathématique, notamment dans les limites ou pour les expressions +logiques. Le \autoref{tab:math:fleches} en présente une sélection. + +On retrouve les flèches utilisables en notation mathématique dans les +tableaux 102 à 119 de la % +\doc[\emph{Comprehensive {\LaTeX} Symbol List}]{}{http://texdoc.net/pkg/comprehensive}. % +Le document contient divers autres types de flèches, mais celles-ci ne +sont généralement pas appropriées pour les mathématiques (pensons à +{\manerrarrow} ou {\faArrowRight}). + +Le paquetage \pkg{amsmath} fournit plusieurs flèches additionnelles +ainsi que la négation des plus communes. Ces dernières apparaissent +d'ailleurs dans le \autoref{tab:math:fleches}. + +\begin{table} + \caption{Quelques flèches et leur négation} + \label{tab:math:fleches} + \begin{tabularx}{1.0\linewidth}{lXlX} + $\gets$ & \cmd{\leftarrow}\quad \cmd{\gets} & + $\longleftarrow$ & \cmd{\longleftarrow} \\ + $\Leftarrow$ & \cmd{\Leftarrow} & + $\Longleftarrow$ & \cmd{\Longleftarrow} \\ + $\to$ & \cmd{\rightarrow}\quad \cmd{\to} & + $\longrightarrow$ & \cmd{\longrightarrow} \\ + $\Rightarrow$ & \cmd{\Rightarrow} & + $\Longrightarrow$ & \cmd{\Longrightarrow} \\ + $\uparrow$ & \cmd{\uparrow} & + $\downarrow$ & \cmd{\downarrow} \\ + $\Uparrow$ & \cmd{\Uparrow} & + $\Downarrow$ & \cmd{\Downarrow} \\ + $\updownarrow$ & \cmd{\updownarrow} & + $\Updownarrow$ & \cmd{\Updownarrow} \\ + $\leftrightarrow$ & \cmd{\leftrightarrow} & + $\longleftrightarrow$ & \cmd{\longleftrightarrow} \\ + $\Leftrightarrow$ & \cmd{\Leftrightarrow} & + $\Longleftrightarrow$ & \cmd{\Longleftrightarrow} \\ + $\nleftarrow$ & \cmd{\nleftarrow}$^\dagger$ & + $\nleftrightarrow$ & \cmd{\nleftrightarrow}$^\dagger$ \\ + $\nrightarrow$ & \cmd{\nrightarrow}$^\dagger$ & + $\nLeftarrow$ & \cmd{\nLeftarrow}$^\dagger$ \\ + $\nLeftrightarrow$ & \cmd{\nLeftrightarrow}$^\dagger$ & + $\nRightarrow$ & \cmd{\nRightarrow}$^\dagger$ \\ + \addlinespace + \end{tabularx} + \hspace*{1em}{\footnotesize $^\dagger$ requiert \pkg{amsmath}} +\end{table} + +\subsection{Accents et autres symboles utiles} +\label{sec:math:symboles:autres} + +Le \autoref{tab:math:autres} présente quelques uns des accents +disponibles dans le mode mathématique, ainsi que divers symboles +fréquemment utilisés en mathématiques. + +Pour connaitre l'ensemble des accents du mode mathématique de +{\LaTeX}, consulter le tableau~164 de la % +\doc[\emph{Comprehensive {\LaTeX} Symbol List}]{}{http://texdoc.net/pkg/comprehensive}. % +Les versions extensibles de certains accents se trouvent au +tableau~169. Quant aux symboles mathématiques divers, on en trouve de +toutes les sortes dans les tableaux 201--212. + +\begin{table} + \caption{Accents et symboles mathématiques divers} + \label{tab:math:autres} + \begin{tabularx}{1.0\linewidth}{lXlXlXlX} + $\hat{a}$ & \cmd{\hat}\verb={a}= & + $\bar{a}$ & \cmd{\bar}\verb={a}= & + $\tilde{a}$ & \cmd{\tilde}\verb={a}= & + $\ddot{a}$ & \cmd{\ddot}\verb={a}= \\ + $\infty$ & \cmd{\infty} & + $\nabla$ & \cmd{\nabla} & + $\partial$ & \cmd{\partial} & + $\ell$ & \cmd{\ell} \\ + $\forall$ & \cmd{\forall} & + $\exists$ & \cmd{\exists} & + $\emptyset$ & \cmd{\emptyset} & + $\prime$ & \cmd{\prime} \\ + $\neg$ & \cmd{\neg} & + $\backslash$ & \cmd{\backslash} & + $\|$ & \pixbar & + $\angle$ & \cmd{\angle} + \end{tabularx} +\end{table} + + +\begin{exemple} + L'équation suivante contient plusieurs des éléments présentés dans + cette section et la précédente: + \begin{equation*} + \frac{\Gamma(\alpha)}{\lambda^\alpha} = + \sum_{j = 0}^\infty \int_j^{j + 1} x^{\alpha - 1} e^{-\lambda x}\, + dx, + \quad + \alpha > 0 \text{ et } \lambda > 0. + \end{equation*} + \begin{demo} + \begin{texample}[0.58\linewidth] +\begin{lstlisting} +\begin{equation*} +\end{lstlisting} + \producing + \emph{équation hors paragraphe} + \end{texample} + + \begin{texample}[0.58\linewidth] +\begin{lstlisting} +\frac{\Gamma(\alpha)}{ + \lambda^\alpha} = +\end{lstlisting} + \producing + $\dfrac{\Gamma(\alpha)}{\lambda^\alpha} =$ + \end{texample} + + \begin{texample}[0.58\linewidth] +\begin{lstlisting} +\sum_{j = 0}^\infty \int_j^{j + 1} +\end{lstlisting} + \producing + $\displaystyle \sum_{j = 0}^\infty \int_j^{j + 1}$ + \end{texample} + + \begin{texample}[0.58\linewidth] +\begin{lstlisting} +x^{\alpha - 1} e^{-\lambda x}\, dx +\end{lstlisting} + \producing + $\displaystyle x^{\alpha - 1} e^{-\lambda x}\, dx$ + \end{texample} + + \begin{texample}[0.58\linewidth] +\begin{lstlisting} +, \quad \alpha > 0 \text{ et } +\lambda > 0. +\end{lstlisting} + \producing + $, \quad \alpha > 0 \text{ et } \lambda > 0.$ + \end{texample} + + \begin{texample}[0.58\linewidth] +\begin{lstlisting} +\end{equation*} +\end{lstlisting} + \producing + \emph{fin de l'environnement} + \end{texample} + \end{demo} + \qed +\end{exemple} + + +\section{Équations sur plusieurs lignes et numérotation} +\label{sec:math:align} + +Dans ce qui précède, nous n'avons présenté que des équations tenant +sur une seule ligne en mode hors paragraphe. Cette section se penche +sur la manière de représenter des groupes d'équations du type +\begin{align} + y &= 2x + 4 \\ + y &= 6x - 1 +\end{align} +ou des suites d'équations comme +\begin{align*} + x_{\text{max}} + &= \sum_{i = 0}^{m - 1} (b - 1) b^i \\ + &= (b - 1) \sum_{i = 0}^{m - 1} b^i \\ + &= b^m - 1. +\end{align*} + +Nous recommandons fortement les environnements de \pkg{amsmath} pour +les équations sur plusieurs lignes: ils sont plus polyvalents, plus +simples à utiliser et leur rendu est meilleur. Le +\autoref{tab:math:displays} --- repris presque intégralement de la +documentation de ce paquetage --- compare les différents +environnements pour les équations hors paragraphe. + +\begin{table}[p] + \caption[Comparaison des environnements pour les équations hors + paragraphe de \pkg{amsmath}]{% + Comparaison des environnements pour les équations hors + paragraphe de \pkg{amsmath} (les lignes verticales indiquent les + marges logiques).} + \label{tab:math:displays} + \renewcommand{\theequation}{\arabic{equation}} + \begin{eqxample} +\begin{lstlisting} +\begin{equation*} + a = b +\end{equation*} +\end{lstlisting} + \producing + \begin{equation*} + a = b + \end{equation*} + \end{eqxample} + + \begin{eqxample} +\begin{lstlisting} +\begin{equation} + a = b +\end{equation} +\end{lstlisting} + \producing + \begin{equation} + a = b + \end{equation} + \end{eqxample} + + \begin{eqxample} +\begin{lstlisting} +\begin{equation} + \label{eq:5} + \begin{split} + a &= b + c - d \\ + &\phantom{=} + e - f \\ + &= g + h \\ + &= i + \end{split} +\end{equation} +\end{lstlisting} + \producing + \begin{equation}\label{eq:math:5} + \begin{split} + a& =b+c-d\\ + &\phantom{=} +e-f\\ + & =g+h\\ + & =i + \end{split} + \end{equation} + \end{eqxample} + + \begin{eqxample} +\begin{lstlisting} +\begin{multline} + a + b + c + d + e + f \\ + + i + j + k + l + m + n +\end{multline} +\end{lstlisting} + \producing + \begin{multline} + a+b+c+d+e+f\\ + +i+j+k+l+m+n + \end{multline} + \end{eqxample} + + \begin{eqxample} +\begin{lstlisting} +\begin{gather} + a_1 = b_1 + c_1 \\ + a_2 = b_2 + c_2 - d_2 + e_2 +\end{gather} +\end{lstlisting} + \producing + \begin{gather} + a_1=b_1+c_1\\ + a_2=b_2+c_2-d_2+e_2 + \end{gather} + \end{eqxample} + + \begin{eqxample} +\begin{lstlisting} +\begin{align} + a_1 &= b_1+c_1 \\ + a_2 &= b_2+c_2-d_2+e_2 +\end{align} +\end{lstlisting} + \producing + \begin{align} + a_1& =b_1+c_1\\ + a_2& =b_2+c_2-d_2+e_2 + \end{align} + \end{eqxample} + + \begin{eqxample} +\begin{lstlisting} +\begin{align} + a_{11} &= b_{11} & + a_{12} &= b_{12} \\ + a_{21} &= b_{21} & + a_{22} &= b_{22} + c_{22} +\end{align} +\end{lstlisting} + \producing + \begin{align} + a_{11}& =b_{11}& + a_{12}& =b_{12}\\ + a_{21}& =b_{21}& + a_{22}& =b_{22}+c_{22} + \end{align} + \end{eqxample} +\end{table} + +\begin{itemize} +\item L'environnement de base pour les équations alignées sur un + symbole de relation (en une ou plusieurs colonnes) est \Ie{align}. + C'est l'environnement le plus utilisé en mode mathématique hormis + \Pe{equation}. +\item Les environnements \Pe{multline}, \Pe{gather} et \Pe{align} + existent également en version étoilée (\Ie{multline*}, \Ie{gather*}, + \Ie{align*}) qui ne numérotent pas les équations. +\item Dans les environnements \Pe{align} et \Ie{split}, les équations + successives sont alignées sur le caractère se trouvant immédiatement + après le marqueur de colonne \verb=&=. +\item Comme dans les tableaux, la commande {\pixbsbs} sert à + délimiter les lignes de la suite d'équations. +\item Remarquer, dans le troisième exemple du + \autoref{tab:math:displays}, comment la commande \cmd{\phantom} sert + à insérer un blanc exactement de la largeur du symbole $=$ au début + de la seconde ligne de la suite d'égalités. +\item Pour supprimer la numérotation d'une ligne dans une série + d'équations numérotées, placer la commande \cmd{\notag} juste avant + la commande de changement de ligne {\bs\bs}. + \begin{demo} + \begin{texample}[0.53\linewidth] +\begin{lstlisting} +\begin{align} + a_1 &= b_1 + c_1 \notag \\ + a_2 &= b_2 + c_2 - d_2 + e_2 +\end{align} +\end{lstlisting} + \producing + \begin{align} + a_1& =b_1+c_1 \notag \\ + a_2& =b_2+c_2-d_2+e_2 + \end{align} + \end{texample} + \end{demo} +\item Les renvois vers des équations numérotées fonctionnent, comme + partout ailleurs en {\LaTeX}, avec le système d'étiquettes et de + références (\autoref{sec:tableaux:floats}). Le paquetage + \pkg{amsmath} fournit également la pratique commande \cmd{\eqref} + qui place automatiquement le numéro d'équation entre parenthèses. + \begin{demo} + \begin{texample} +\begin{lstlisting} +L'équation \eqref{eq:5} du +tableau `\ref*{tab:math:displays}' démontre que... +\end{lstlisting} + \producing + L'équation \eqref{eq:math:5} du tableau + \ref*{tab:math:displays} démontre que\dots + \end{texample} + \end{demo} +\item L'environnement \Ie{split} sert à apposer un seul numéro à une + équation affichée sur plusieurs lignes. Il doit être employé à + l'intérieur d'un autre environnement d'équations hors paragraphe. +\end{itemize} +Consulter le chapitre 3 de la % +\doc{amsldoc}{http://texdoc.net/pkg/amsmath} % +du paquetage \pkg{amsmath} pour les détails sur +l'utilisation des environnements du \autoref*{tab:math:displays}. + +\tipbox{Veillez à respecter les règles suivantes pour la composition + des équations. + \begin{enumerate} + \item Qu'elles apparaissent en ligne ou hors paragraphe, les + équations font partie intégrante de la phrase. Ainsi, les règles + de ponctuation usuelles s'appliquent-elles aux équations. + \item Lorsqu'une équation s'étend sur plus d'une ligne, couper + chaque ligne \emph{avant} un opérateur de sorte que chaque ligne + constitue une expression mathématique complète (voir les troisième + et quatrième exemples du \autoref{tab:math:displays}). + \item Ne numéroter que les équations d'un document auxquelles le + texte fait référence. + \end{enumerate}} + +\begin{exemple} + Nous avons réalisé les deux suites d'équations au début de la + section avec les extraits de code ci-dessous, dans l'ordre. +\begin{lstlisting} +\begin{align} + y &= 2x + 4 \\ + y &= 6x - 1 +\end{align} +\end{lstlisting} +\begin{lstlisting} +\begin{align*} + x_{\text{max}} + &= \sum_{i = 0}^{m - 1} (b - 1) b^i \\ + &= (b - 1) \sum_{i = 0}^{m - 1} b^i \\ + &= b^m - 1. +\end{align*} +\end{lstlisting} + \qed +\end{exemple} + + +\section{Délimiteurs de taille variable} +\label{sec:math:delimiteurs} + +Les délimiteurs en mathématiques sont des symboles généralement +utilisés en paire tels que les parenthèses $(~)$, les crochets $[~]$ +ou les accolades $\{~\}$ et qui servent à regrouper des termes d'une +équation. La taille des délimiteurs doit s'adapter au contenu entre +ceux-ci afin d'obtenir, par exemple, +\begin{equation*} + \left( 1 + \frac{1}{x} \right) +\end{equation*} +plutôt que la peu esthétique composition +\begin{equation*} + (1 + \frac{1}{x}). +\end{equation*} + +La paire de commandes +\begin{lstlisting} +\left`\meta{delim\_g}' ... \right`\meta{delim\_d}' +\end{lstlisting} +définit un délimiteur gauche \meta{delim\_g} et un délimiteur droit +\meta{delim\_d} dont la taille s'ajustera automatiquement au contenu +entre les deux commandes. +\begin{demo} + \begin{texample}[0.55\linewidth] +\begin{lstlisting} +\left( 1 + \frac{1}{x} \right) +\end{lstlisting} + \producing + \begin{equation*} + \left( 1 + \frac{1}{x} \right) + \end{equation*} + \end{texample} + + \begin{texample}[0.55\linewidth] +\begin{lstlisting} +\left( + \sum_{i = 1}^n x_i^2 +\right)^{1/2} +\end{lstlisting} + \producing + \begin{equation*} + \left( + \sum_{i = 1}^n x_i^2 + \right)^{1/2} + \end{equation*} + \end{texample} +\end{demo} +Les commandes \cmd{\left} et \cmd{\right} doivent toujours former une +paire, c'est-à-dire qu'à \emph{toute} commande \cmdprint{\left} doit +absolument correspondre une commande \cmdprint{\right}. Cette +contrainte est facile à oublier! + +\begin{itemize} +\item Il est possible d'imbriquer des paires de commandes les unes à + l'intérieur des autres, pour autant que l'expression compte toujours + autant de \cmdprint{\left} que de \cmdprint{\right}. + \begin{demo} + \begin{texample} +\begin{lstlisting} +\left[ + \int + \left( + 1 + \frac{x}{k} + \right) dx +\right] +\end{lstlisting} + \producing + \begin{equation*} + \left[ + \int + \left( + 1 + \frac{x}{k} + \right) dx + \right] + \end{equation*} + \end{texample} + \end{demo} +% +\item Les symboles \meta{delim\_g} et \meta{delim\_d} n'ont pas à + former une paire logique; toute combinaison de délimiteurs est + valide. + \begin{demo} + \begin{texample} +\begin{lstlisting} +\int_0^1 x\, dx = +\left[ + \frac{x^2}{2} +\right|_0^1 +\end{lstlisting} + \producing + \begin{equation*} + \int_0^1 x\, dx = + \left[ + \frac{x^2}{2} + \right|_0^1 + \end{equation*} + \end{texample} + \end{demo} +% +\item Il arrive qu'un seul délimiteur soit nécessaire. Pour respecter + la règle de la paire ci-dessus, on aura recours dans ce cas à un + délimiteur \emph{invisible} représenté par le caractère «\verb=.=». + \begin{demo} + \begin{texample} +\begin{lstlisting} +f(x) = +\left\{ + \begin{aligned} + 1 - x, &\quad x < 1 \\ + x - 1, &\quad x \geq 1 + \end{aligned} +\right. +\end{lstlisting} + \producing + \begin{equation*} + f(x) = + \left\{ + \begin{aligned} + 1 - x, &\quad x < 1 \\ + x - 1, &\quad x \geq 1 + \end{aligned} + \right. + \end{equation*} + \end{texample} + \end{demo} + (L'environnement \Ie{aligned} utilisé ci-dessus provient de + \pkg{amsmath}.) On notera au passage que l'environnement \Ie{cases} + de \pkg{amsmath} rend plus simple la réalisation de constructions + comme celle ci-dessus. + \begin{demo} + \begin{texample} +\begin{lstlisting} +f(x) = +\begin{cases} + 1 - x, & x < 1 \\ + x - 1, & x \geq 1 +\end{cases} +\end{lstlisting} + \producing + \begin{equation*} + f(x) = + \begin{cases} + 1 - x, & x < 1 \\ + x - 1, & x \geq 1 + \end{cases} + \end{equation*} + \end{texample} + \end{demo} +% +\item La règle de la paire est tout spécialement délicate dans les + équations sur plusieurs lignes car elle s'applique à chaque ligne + d'une équation. Par conséquent, si la paire de délimiteurs s'ouvre + sur une ligne et se referme sur une autre, il faudra ajouter un + délimiteur invisible à la fin de la première ligne ainsi qu'au début + de la seconde. + \begin{demo} + \begin{texample} +\begin{lstlisting} +\begin{align*} + a + &= \left( + b + \frac{c}{d} + \right. \\ + &\phantom{=} \left. + + \frac{e}{d} - f + \right) +\end{align*} +\end{lstlisting} + \producing + \begin{align*} + a + &= \left( + b + \frac{c}{d} + \right. \\ + &\phantom{=} \left. + + \frac{e}{d} - f + \right) + \end{align*} + \end{texample} + \end{demo} +% +\item Quand les choix de taille de délimiteurs de {\LaTeX} ne + conviennent pas pour une raison ou pour une autre, on peut + sélectionner leur taille avec les commandes % + \cmd{\big}, % + \cmd{\Big}, % + \cmd{\bigg} et % + \cmd{\Bigg}. % + Ces commandes s'utilisent comme \cmdprint{\left} et + \cmdprint{\right} en les faisant immédiatement suivre d'un + délimiteur. Le \autoref{tab:math:big_et_al} contient des exemples de + délimiteurs pour chaque taille. + + \begin{table} + \centering + \caption{Tailles des délimiteurs mathématiques} + \label{tab:math:big_et_al} + \begin{tabular}{ll} + \toprule + taille standard & $(~) \quad [~] \quad \{~\}$ \\ + \addlinespace[0.5\normalbaselineskip] + \cmd{\big} & $\big(~\big) \quad \big[~\big] \quad \big\{~\big\}$ \\ + \addlinespace[0.5\normalbaselineskip] + \cmd{\Big} & $\Big(~\Big) \quad \Big[~\Big] \quad \Big\{~\Big\}$ \\ + \addlinespace[0.5\normalbaselineskip] + \cmd{\bigg} & $\bigg(~\bigg) \quad \bigg[~\bigg] \quad \bigg\{~\bigg\}$ \\ + \addlinespace[0.5\normalbaselineskip] + \cmd{\Bigg} & $\Bigg(~\Bigg) \quad \Bigg[~\Bigg] \quad \Bigg\{~\Bigg\}$ \\ + \addlinespace[4pt]\bottomrule + \end{tabular} + \end{table} +\end{itemize} + +La section~14 de la % +\doc{amsldoc}{http://texdoc.net/pkg/amsmath} % +de \pkg{amsmath} traite de divers enjeux typographiques en lien +avec les délimiteurs et on y introduit des nouvelles commandes pour +contrôler leur taille. C'est une lecture suggérée. + +\begin{exemple} + Le développement de la formule d'approximation de Simpson comporte + plusieurs des éléments discutés jusqu'à maintenant: + \begin{align*} + \int_a^b f(x)\, dx + &\approx \sum_{j = 0}^{n - 1} + \int_{x_{2j}}^{x_{2(j + 1)}} f(x)\, dx \\ + &= \frac{h}{3} \sum_{j = 0}^{n - 1} + \left[ + f(x_{2j}) + 4 f(x_{2j + 1}) + f(x_{2(j + 1)}) + \right] + \displaybreak[0] \\ + &= \frac{h}{3} + \left[ + f(x_0) + + \sum_{j = 1}^{n - 1} f(x_{2j}) + + 4 \sum_{j = 0}^{n - 1} f(x_{2j + 1}) + \right. \displaybreak[0] \\ + &\phantom{=} + \left. + \sum_{j = 0}^{n - 2} f(x_{2(j + 1)}) + + f(x_{2n}) + \right] \\ + &= \frac{h}{3} + \left[ + f(a) + + 2 \sum_{j = 1}^{n - 1} f(x_{2j}) + + 4 \sum_{j = 0}^{n - 1} f(x_{2j + 1}) + + f(b) + \right]. + \end{align*} + On compose ce bloc d'équations avec le code source ci-dessous. +\begin{lstlisting} +\begin{align*} + \int_a^b f(x)\, dx + &\approx \sum_{j = 0}^{n - 1} + \int_{x_{2j}}^{x_{2(j + 1)}} f(x)\, dx \\ + &= \frac{h}{3} \sum_{j = 0}^{n - 1} + \left[ + f(x_{2j}) + 4 f(x_{2j + 1}) + f(x_{2(j + 1)}) + \right] \\ + &= \frac{h}{3} + \left[ + f(x_0) + + \sum_{j = 1}^{n - 1} f(x_{2j}) + + 4 \sum_{j = 0}^{n - 1} f(x_{2j + 1}) + \right. \\ + &\phantom{=} + \left. + \sum_{j = 0}^{n - 2} f(x_{2(j + 1)}) + + f(x_{2n}) + \right] \\ + &= \frac{h}{3} + \left[ + f(a) + + 2 \sum_{j = 1}^{n - 1} f(x_{2j}) + + 4 \sum_{j = 0}^{n - 1} f(x_{2j + 1}) + + f(b) + \right]. +\end{align*} +\end{lstlisting} + \qed +\end{exemple} + +\tipbox{De manière générale, il est déconseillé de scinder une suite + d'équations entre deux pages. Le chargement du paquetage + \pkg{amsmath} désactive d'ailleurs cette possibilité. Cependant, + c'est parfois inévitable pour les longs blocs d'équations. + + La commande \cmd{\displaybreak}, placée immédiatement avant {\bs\bs} + dans un environnement comme \Ie{align} permet d'indiquer à {\LaTeX} + la possibilité d'insérer un saut de page après la ligne courante + dans le bloc d'équations. + + La commande accepte en argument optionnel un entier entre $0$ et $4$ + indiquant à quel point un saut de page est désiré: + \cmdprint{\displaybreak[0]} signifie «il est permis de changer de + page ici» sans que ce ne soit obligatoire; + \cmdprint{\displaybreak[4]} ou, de manière équivalente, + \cmdprint{\displaybreak} force un saut de page. + + À moins d'en être vraiment aux toutes dernières étapes d'édition + d'un document, il est conseillé d'utiliser la commande + \cmdprint{\displaybreak} avec parcimonie et avec un argument + optionnel faible.} + + +\section{Caractères gras en mathématiques} +\label{sec:math:gras} + +Les caractères gras sont parfois utilisés en mathématiques, +particulièrement pour représenter les vecteurs et les matrices: +\begin{equation*} + \symbf{A} \symbf{x} = \symbf{b} \Leftrightarrow + \symbf{x} = \symbf{A}^{-1} \symbf{b} +\end{equation*} + +Pourquoi consacrer une section spécialement à cette convention +typographique? Parce que la création de symboles mathématiques en +gras doit certainement figurer parmi les questions les plus +fréquemment posées par les utilisateurs de {\LaTeX}\dots\ et que la +réponse n'est pas unique! + +La commande +\begin{lstlisting} +\mathbf`\marg{symbole}' +\end{lstlisting} +place \meta{symbole} en caractère gras en mode mathématique. C'est +donc l'analogue de la commande \cmd{\textbf} du mode texte. Dans +{\LaTeX} de base, la commande n'a toutefois un effet que sur les +lettres latines et, parfois, les lettres grecques majuscules. +\begin{demo} + \begin{texample}[0.6\linewidth] +\begin{lstlisting} +\theta \mathbf{\theta} + +\Gamma \mathbf{\Gamma} \mathbf{+} +A \mathbf{A} +\end{lstlisting} + \producing + %% ok, ici il faut vraiment tricher pour reproduire avec + %% unicode-math ce qui se produirait avec pdflatex standard + $\theta {\theta} + \Gamma \symbf{\Gamma} {+} A \symbfup{A}$ + \end{texample} +\end{demo} +On remarquera aussi que \verb=\mathbf{A}= produit une lettre +majuscule droite plutôt qu'en italique. + +La manière la plus standard et robuste d'obtenir des symboles +mathématiques (autres que les lettres) en gras semble être, au moment +d'écrire ces lignes, via la commande +\begin{lstlisting} +\bm`\marg{symbole}' +\end{lstlisting} +fournie par le paquetage \pkg{bm} \citep{bm}. +\begin{demo} + \begin{texample}[0.6\linewidth] +\begin{lstlisting} +\theta \bm{\theta} + +\Gamma \bm{\Gamma} \bm{+} +A \bm{A} +\end{lstlisting} + \producing + %% ok, ici il faut vraiment tricher pour reproduire avec + %% unicode-math ce qui se produirait avec pdflatex standard + $\theta \symbf{\theta} + \Gamma \symbfup{\Gamma} \symbf{+} A + \symbf{A}$ + \end{texample} +\end{demo} + +Les utilisateurs de {\XeLaTeX} chargent normalement le paquetage +\pkg{unicode-math} \citep{unicode-math} pour sélectionner la police +pour les mathématiques. Ce paquetage fournit la commande +\begin{lstlisting} +\symbf`\marg{symbole}' +\end{lstlisting} +pour placer un \meta{symbole} mathématique en gras. Le paquetage offre +différentes combinaisons de lettres latines et grecques droites ou +italiques en gras selon la valeur de l'option \code{bold-style}; +consulter la section~5 de la % +\doc{unicode-math}{http://texdoc.net/pkg/unicode-math}. % +\begin{demo} + \begin{texample}[0.6\linewidth] +\begin{lstlisting} +% XeLaTeX + paquetage unicode-math +% avec l'option bold-style=ISO +\theta \symbf{\theta} + +\Gamma \symbf{\Gamma} \symbf{+} +A \symbf{A} +\end{lstlisting} + \producing + $\theta \symbf{\theta} + \Gamma \symbf{\Gamma} \symbf{+} A + \symbf{A}$ + \end{texample} +\end{demo} + +Si le gras est fréquemment utilisé dans un document pour une notation +particulière, il est fortement recommandé de définir une nouvelle +commande\footnote{% + La définition de nouvelles commandes est couvert plus en détail au + \autoref{chap:commandes}.} sémantique plutôt que d'utiliser à +répétition l'une ou l'autre des commandes ci-dessus. Par exemple, si +le gras est utilisé pour les vecteurs et matrices, on pourrait définir +une nouvelle commande \cmdprint{\mat} en insérant dans le préambule du +document +\begin{lstlisting} +\newcommand[1]{\mat}{\bm{#1}} +\end{lstlisting} + +\begin{exemple} + \label{ex:math:matrices} + Le paquetage \pkg{amsmath} fournit quelques environnements qui + facilitent la mise en forme de matrices; ils diffèrent simplement + par le type de délimiteur autour de la matrice. + + Considérer le bloc d'équations suivant: + \begin{align*} + \mat{J}(\mat{\theta}) + &= + \begin{bmatrix} + \dfrac{\partial f_1(\mat{\theta})}{\partial \theta_1} & + \dfrac{\partial f_1(\mat{\theta})}{\partial \theta_2} \\[12pt] + \dfrac{\partial f_2(\mat{\theta})}{\partial \theta_1} & + \dfrac{\partial f_2(\mat{\theta})}{\partial \theta_2} + \end{bmatrix} \\ + &= + \left[ + \frac{\partial f_i(\mat{\theta})}{\partial \theta_j} + \right]_{2 \times 2}, \quad i, j = 1, 2. + \end{align*} + Le code pour composer ces équations est: +\begin{lstlisting} +\begin{align*} + \mat{J}(\mat{\theta}) + &= + \begin{bmatrix} + \dfrac{\partial f_1(\mat{\theta})}{\partial \theta_1} & + \dfrac{\partial f_1(\mat{\theta})}{\partial \theta_2} + \\[12pt] % augmenter l'espace entre les lignes + \dfrac{\partial f_2(\mat{\theta})}{\partial \theta_1} & + \dfrac{\partial f_2(\mat{\theta})}{\partial \theta_2} + \end{bmatrix} \\ + &= + \left[ + \frac{\partial f_i(\mat{\theta})}{\partial \theta_j} + \right]_{2 \times 2}, \quad i, j = 1, 2. +\end{align*} +\end{lstlisting} + On remarquera l'utilisation de la commande \cmd{\dfrac} + (\autoref{sec:math:bases:fractions}) pour composer des grandes + fractions à l'intérieur des matrices. Nous avons également eu + recours à la commande \cmdprint{\mat} ci-dessus. % + \qed +\end{exemple} + + +\notebox{Le paquetage \pkg{unicode-math} offre l'option \code{ISO} + pour le traitement du gras dans les mathématiques. En fait, c'est + toute la composition des mathématiques qui fait l'objet d'un + standard ISO! + + Plusieurs prescriptions du standard --- comme les noms de variables + en italique --- sont déjà prises en compte par {\LaTeX}. Le respect + de certaines autres règles est moins répandu, notamment celle qui + veut que les constantes mathématiques dont la valeur de change pas + (ce sont des constantes, après tout) soient représentées en police + droite. On pense, par exemple, au nombre d'Euler $\mathrm{e}$, au + nombre imaginaire $\mathrm{i} = \sqrt{-1}$. Même chose pour les + opérateurs mathématiques, dont le $\mathrm{d}$ dans les dérivées et + les intégrales. + + Voici un exemple d'intégrale composée avec ces règles: + \begin{equation*} + \int_C \frac{\mathrm{e}^z}{z}\, \mathrm{d}z = 2 \pi \mathrm{i}. + \end{equation*} + Pour en savoir plus sur l'utilisation du standard ISO dans {\LaTeX}, + consulter \citet{Beccari:ISO} ou, pour un sommaire rapide, l'% + \link{https://nickhigham.wordpress.com/2016/01/28/typesetting-mathematics-according-to-the-iso-standard/}{entrée de blogue} % + de Nick Higham.} + + +%%% +%%% Exercices +%%% + +\section{Exercices} +\label{sec:math:exercices} + +\Opensolutionfile{solutions}[solutions-mathematiques] + +\begin{Filesave}{solutions} +\section*{Chapitre \ref*{chap:math}} +\addcontentsline{toc}{section}{Chapitre \protect\ref*{chap:math}} + +\end{Filesave} + +\begin{exercice} + Utiliser le gabarit de document \fichier{exercice\_gabarit.tex} pour + reproduire le texte suivant: + \begin{quote} + La dérivée de la fonction composée $f \circ g(x) = f[g(x)]$ est + $\{f[g(x)]\}^\prime = f^\prime[g(x)] g^\prime(x)$. La dérivée + seconde du produit des fonctions $f$ et $g$ est + \begin{equation*} + [f(x) g(x)]^{\prime\prime} = + f^{\prime\prime}(x) g(x) + 2 f^\prime(x) g^\prime(x) + + f(x) g^{\prime\prime}(x). + \end{equation*} + \end{quote} + \begin{sol} + On trouve la commande pour produire le symbole $\circ$ dans le + \autoref{tab:math:binaires}. On peut produire les symboles de + dérivée $\prime$ avec la commande \cmd{\prime} + (\autoref{tab:math:autres}) ou simplement avec le caractère + \verb='=. +\begin{lstlisting} +La dérivée de la fonction composée $f \circ g(x) = +f[g(x)]$ est $\{f[g(x)]\}^\prime = f^\prime[g(x)] +g^\prime(x)$. La dérivée seconde du produit des +fonctions $f$ et $g$ est +\begin{equation*} + [f(x) g(x)]^{\prime\prime} = + f^{\prime\prime}(x) g(x) + 2 f^\prime(x) g^\prime(x) + + f(x) g^{\prime\prime}(x). +\end{equation*} +\end{lstlisting} + \end{sol} +\end{exercice} + +\begin{exercice} + Composer l'équation suivante avec l'environnement \Pe{align*}: + \begin{align*} + f(x +& h, y + k) + = f(x, y) + + \left\{ + \frac{\partial f(x, y)}{\partial x} h + + \frac{\partial f(x, y)}{\partial y} k + \right\} \\ + &+ + \frac{1}{2} + \left\{ + \frac{\partial^2 f(x, y)}{\partial x^2} h^2 + + \frac{\partial^2 f(x, y)}{\partial x \partial y} kh + + \frac{\partial^2 f(x, y)}{\partial y^2} k^2 + \right\} \\ + &+ + \frac{1}{6} \{\cdots\} + \dots + \frac{1}{n!} \{\cdots\} + R_n. + \end{align*} + Aligner les deuxième et troisième lignes de l'équation sur divers + caractères de la première ligne afin que l'équation ne dépasse pas + les marges du document. + \begin{sol} + Nous avons aligné les lignes de l'équation juste à droite du + premier symbole $+$ à la première ligne. Remarquer l'usage des + commandes \cmd{\cdots} et \cmd{\dots} dans la dernière ligne: + {\LaTeX} choisit correctement la position centrée des points entre les + opérateurs d'addition, mais pas entre les accolades. +\begin{lstlisting} +\begin{align*} + f(x +& h, y + k) = f(x, y) + + \left\{ + \frac{\partial f(x,y)}{\partial x} h + + \frac{\partial f(x,y)}{\partial y} k + \right\} \\ + &+ + \frac{1}{2} + \left\{ + \frac{\partial^2 f(x,y)}{\partial x^2} h^2 + + \frac{\partial^2 f(x,y)}{\partial x \partial y} kh + + \frac{\partial^2 f(x,y)}{\partial y^2} k^2 + \right\} \\ + &+ + \frac{1}{6} \{\cdots\} + \dots + + \frac{1}{n!} \{\cdots\} + R_n. +\end{align*} +\end{lstlisting} + \end{sol} +\end{exercice} + +\begin{exercice} + Composer à l'aide de l'environnement \Ie{cases} + (\autoref{sec:math:delimiteurs}) la définition de la fonction + $\tilde{f}(x)$: + \begin{equation*} + \tilde{f}(x) = + \begin{cases} + 0, & x \leq c_0\\ + \dfrac{F_n(c_j) - F_n(c_{j-1})}{c_j - c_{j-1}} = + \dfrac{n_j}{n (c_j - c_{j - 1})}, & c_{j-1} < x \leq c_j\\ + 0, & x > c_r. + \end{cases} + \end{equation*} + Il est nécessaire d'imposer la taille des fractions dans la seconde + branche de la définition à l'aide des fonctions de la + \autoref{sec:math:bases:fractions}. + \begin{sol} + Il faut utiliser \cmd{\dfrac} pour obtenir des fractions dans une + branche de \Pe{cases} de la même taille que dans une équation hors + paragraphe: +\begin{lstlisting} +\begin{equation*} + \tilde{f}(x) = + \begin{cases} + 0, & x \leq c_0\\ + \dfrac{F_n(c_j) - F_n(c_{j-1})}{c_j - c_{j-1}} = + \dfrac{n_j}{n (c_j - c_{j - 1})}, & + c_{j-1} < x \leq c_j \\ + 0, & x > c_r. + \end{cases} +\end{equation*} +\end{lstlisting} + \end{sol} +\end{exercice} + +\begin{exercice}[nosol] + Le fichier \fichier{exercice\_mathematiques.tex} contient un exemple + complet de développement mathématique. Étudier le contenu du fichier + puis compiler celui-ci tel quel avec {pdf\LaTeX} ou {\XeLaTeX}. + Effectuer ensuite les modifications suivantes. + \begin{enumerate} + \item Charger le paquetage \pkg{amsfonts} dans le préambule, puis + remplacer \verb=$R^+$= par \verb=$\mathbb{R}^+$= à la ligne + débutant par «Le domaine». + \item Dans l'équation du Jacobien de la transformation, remplacer + successivement l'environnement \Ie{vmatrix} par % + \Ie{pmatrix}, % + \Ie{bmatrix}, % + \Ie{Bmatrix} et % + \Ie{Vmatrix}. Observer l'effet sur les délimiteurs de la matrice. + \item Toujours dans la même matrice, composer successivement les + deux fractions avec les commandes \cmd{\frac}, \cmd{\tfrac} et + \cmd{\dfrac}. Observer le résultat. + \item Réduire l'espacement de part et d'autre du symbole + $\Leftrightarrow$ dans la seconde équation hors paragraphe. + \item À l'aide de la fonction Rechercher et remplacer de l'éditeur + de texte, remplacer toutes les occurrences du symbole $\theta$ par + $\lambda$. + \end{enumerate} +\end{exercice} + +\Closesolutionfile{solutions} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "formation-latex-ul" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/notices-diapos.tex b/info/formation-latex-ul/source/notices-diapos.tex new file mode 100644 index 0000000000..b9920b0165 --- /dev/null +++ b/info/formation-latex-ul/source/notices-diapos.tex @@ -0,0 +1,76 @@ +%%% Copyright (C) 2019 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\begin{frame}[t,plain,fragile=singleslide] + \tiny + \vspace*{10mm} + + \begin{adjustwidth}{10mm}{10mm} + \raisebox{-1.4mm}{\includegraphics[height=4mm,keepaspectratio=true]{images/by-sa}} % + Vincent Goulet, {\year} + + {\textcopyright} {\year} par Vincent Goulet. «Rédaction avec + {\LaTeX} --- Premiers pas» est mis à disposition sous licence + \href{https://creativecommons.org/licenses/by-sa/4.0/deed.fr}{% + Attribution-Partage dans les mêmes conditions 4.0 International} + de Creative Commons. En vertu de cette licence, vous êtes autorisé + à: + \begin{itemize} + \item \textbf{partager} --- copier, distribuer et communiquer le + matériel par tous moyens et sous tous formats; + \item \textbf{adapter} --- remixer, transformer et créer à partir du + matériel pour toute utilisation, y compris commerciale. + \end{itemize} + L'Offrant ne peut retirer les autorisations concédées par la licence + tant que vous appliquez les termes de cette licence. + + Selon les conditions suivantes: \par + \begin{tabularx}{\linewidth}{@{}lX@{}} + \raisebox{-5.5mm}[0mm][10mm]{\includegraphics[height=7mm,keepaspectratio=true]{images/by}} + & \textbf{Attribution} --- Vous devez créditer l'œuvre, intégrer + un lien vers la licence et indiquer si des modifications ont été + effectuées à l'œuvre. Vous devez indiquer ces informations par + tous les moyens raisonnables, sans toutefois suggérer que + l'Offrant vous soutient ou soutient la façon dont vous avez utilisé + son œuvre. \\ + \raisebox{-5.5mm}{\includegraphics[height=7mm,keepaspectratio=true]{images/sa}} + & \textbf{Partage dans les mêmes conditions} --- Dans le cas où vous + effectuez un remix, que vous transformez, ou créez à partir du + matériel composant l'œuvre originale, vous devez diffuser l'œuvre modifiée dans + les mêmes conditions, c'est-à-dire avec la même licence avec laquelle + l'œuvre originale a été diffusée. + \end{tabularx} + + \textbf{Code source} \\ + \viewsource{\reposurl} + + \textbf{Couverture} \\ + Suricate (\emph{Suricata suricatta}), parfois surnommé «sentinelle + du désert» (ici un spécimen du zoo de Newquay, en Cornouailles). + Ce petit carnivore vit dans le sud-ouest de l'Afrique. Très + prolifique, le suricate vit en grands groupes familiaux au sein + d'une colonie. + + Crédit photo: {\textcopyright} Francis C.~Franklin + \href{https://creativecommons.org/licenses/by-sa/3.0/deed.fr}{CC + BY-SA 3.0} via + \href{https://commons.wikimedia.org/w/index.php?curid=31209438}{% + Wikimedia Commons}. + + Concept original du titre: Marie-Ève Guérard. + \end{adjustwidth} +\end{frame} + +%%% Local Variables: +%%% TeX-master: "formation-latex-ul-diapos" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/notices.tex b/info/formation-latex-ul/source/notices.tex new file mode 100644 index 0000000000..195c767f13 --- /dev/null +++ b/info/formation-latex-ul/source/notices.tex @@ -0,0 +1,77 @@ +%%% Copyright (C) 2019 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\begingroup +\calccentering{\unitlength} +\begin{adjustwidth*}{\unitlength}{-\unitlength} + \setlength{\parindent}{0pt} + \setlength{\parskip}{\baselineskip} + + \raisebox{-2.5mm}{\includegraphics[height=7mm,keepaspectratio=true]{images/by-sa}} % + {\theauthor}, {\year} + + {\textcopyright} {\year} par {\theauthor}. «\thetitle» est mis à + disposition sous licence + \href{https://creativecommons.org/licenses/by-sa/4.0/deed.fr}{% + Attribution-Partage dans les mêmes conditions 4.0 International} + de Creative Commons. En vertu de cette licence, vous êtes autorisé + à: + \begin{itemize} + \item \textbf{partager} --- copier, distribuer et communiquer le + matériel par tous moyens et sous tous formats; + \item \textbf{adapter} --- remixer, transformer et créer à partir du + matériel pour toute utilisation, y compris commerciale. + \end{itemize} + L'Offrant ne peut retirer les autorisations concédées par la licence + tant que vous appliquez les termes de cette licence. + + Selon les conditions suivantes: \par + \begin{tabularx}{\linewidth}{@{}lX@{}} + \raisebox{-9mm}[0mm][13mm]{\includegraphics[height=11mm,keepaspectratio=true]{images/by}} + & \textbf{Attribution} --- Vous devez créditer l'œuvre, intégrer + un lien vers la licence et indiquer si des modifications ont été + effectuées à l'œuvre. Vous devez indiquer ces informations par + tous les moyens raisonnables, sans toutefois suggérer que + l'Offrant vous soutient ou soutient la façon dont vous avez utilisé + son œuvre. \\ + \raisebox{-9mm}{\includegraphics[height=11mm,keepaspectratio=true]{images/sa}} + & \textbf{Partage dans les mêmes conditions} --- Dans le cas où vous + effectuez un remix, que vous transformez, ou créez à partir du + matériel composant l'œuvre originale, vous devez diffuser l'œuvre modifiée dans + les mêmes conditions, c'est-à-dire avec la même licence avec laquelle + l'œuvre originale a été diffusée. + \end{tabularx} + + \textbf{Code source} \\ + \viewsource{\reposurl} + + \textbf{Couverture} \\ + Suricate (\emph{Suricata suricatta}), parfois surnommé «sentinelle + du désert» (ici un spécimen du zoo de Newquay, en Cornouailles). Ce + petit carnivore vit dans le sud-ouest de l'Afrique. Très prolifique, + le suricate vit en grands groupes familiaux au sein d'une colonie. + + Crédit photo: {\textcopyright} Francis C.~Franklin + \href{https://creativecommons.org/licenses/by-sa/3.0/deed.fr}{CC + BY-SA 3.0} via + \href{https://commons.wikimedia.org/w/index.php?curid=31209438}{% + Wikimedia Commons}. + + Concept original du titre: Marie-Ève Guérard. +\end{adjustwidth*} +\endgroup + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "formation-latex-ul" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/organisation-diapos.tex b/info/formation-latex-ul/source/organisation-diapos.tex new file mode 100644 index 0000000000..e798d71efb --- /dev/null +++ b/info/formation-latex-ul/source/organisation-diapos.tex @@ -0,0 +1,154 @@ +%%% Copyright (C) 2018 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\section{Organisation d'un document} + +\begin{conseil} + Utilisez impérativement les commandes {\LaTeX} pour identifier les + différentes parties (la structure) d'un document. +\end{conseil} + +\subsection{Parties d'un document} + +\begin{frame}[fragile] + \frametitle{Titre et page de titre} + {\LaTeX} peut composer une page de titre automatiquement à partir + des informations pertinentes. + + \begin{lstlisting} +%% préambule +\title{`\meta{Titre du document}'} +\author{`\meta{Prénom Nom}'} +\date{`\meta{31 octobre 2014}'} % automatique si omis + +%% corps du document +\maketitle + \end{lstlisting} +\end{frame} + +\begin{frame}[fragile=singleslide] + \frametitle{Sections} + \begin{itemize} + \item Découpage du document en sections +\begin{lstlisting} +\part{`\meta{titre}'} +\chapter{`\meta{titre}'} +\section{`\meta{titre}'} +\subsection{`\meta{titre}'} +\end{lstlisting} + \item Numérotation automatique + \begin{demo} + \begin{minipage}{0.45\linewidth} +\begin{lstlisting} +\section{Hypothèses} +\end{lstlisting} + \end{minipage} + \hfill + \begin{minipage}{0.45\linewidth} + \includegraphics[height=0.8\baselineskip,keepaspectratio]{images/section-num} + \end{minipage} + \end{demo} + \item Sans la numérotation + \begin{demo} + \begin{minipage}{0.45\linewidth} +\begin{lstlisting} +\section*{Hypothèses} +\end{lstlisting} + \end{minipage} + \hfill + \begin{minipage}{0.45\linewidth} + \includegraphics[height=0.8\baselineskip,keepaspectratio]{images/section-non-num} + \end{minipage} + \end{demo} + \end{itemize} +\end{frame} + +\begin{frame}[fragile=singleslide] + \frametitle{Annexes} + + Les annexes sont des sections ou des chapitres avec une numérotation + alphanumérique (A, A.1, ...) + \begin{itemize} + \item \cs{appendix} identifie les sections suivantes comme des annexes + \item Dans le titre, «Chapitre» changé pour «Annexe» le cas échéant + \end{itemize} +\end{frame} + +\begin{frame}[fragile=singleslide] + \frametitle{Table des matières} + + La commande \cs{tableofcontents} produit automatiquement la table + des matières. + + \begin{itemize} + \item Requiert plusieurs compilations + \item Sections non numérotées pas incluses + \item Avec \pkg{hyperref}, produit également la table des + matières du fichier PDF + \end{itemize} +\end{frame} + +\subsection{Renvois automatiques} + +\begin{frame} + \frametitle{Étiquettes et renvois automatiques} + + Ne \alert{jamais} renvoyer manuellement à un numéro de section, + d'équation, de tableau, etc. + + \begin{itemize} + \item «Nommer» un élément avec \cs{label} + \item Faire référence par son nom avec \cs{ref} + \item Requiert 2 à 3 compilations + \end{itemize} +\end{frame} + +\begin{frame}[fragile=singleslide] + \frametitle{Exemple (code source)} + + \begin{lstlisting}[emph={\label,\ref}] +\section{Définitions} +\label{sec:definitions} + +Lorem ipsum dolor sit amet, consectetur +adipiscing elit. Duis in auctor dui. Vestibulum +ut, placerat ac, adipiscing vitae, felis. + +\section{Historique} + +Tel que vu à la section \ref{sec:definitions}, +on a... +\end{lstlisting} +\end{frame} + +\begin{frame} + \frametitle{Exemple (résultat)} + + \fbox{\includegraphics[viewport=124 550 484 664,clip=true,width=0.98\linewidth]{auxdoc/exemple-renvoi}} +\end{frame} + +\subsection{[~Exercice~]} + +\begin{exercice} + Utiliser le fichier \fichier{exercice\_renvois.tex}. + \begin{enumerate} + \item Insérer dans le texte un renvoi au numéro d'une section. + \item Activer le paquetage \pkg{hyperref} avec l'option + \texttt{colorlinks} et comparer l'effet d'utiliser \cs{ref} ou + \cs{autoref} pour le renvoi. + \end{enumerate} +\end{exercice} + +%%% Local Variables: +%%% TeX-master: "formation-latex-ul-diapos" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/organisation.tex b/info/formation-latex-ul/source/organisation.tex new file mode 100644 index 0000000000..a62f2693ed --- /dev/null +++ b/info/formation-latex-ul/source/organisation.tex @@ -0,0 +1,982 @@ +%%% Copyright (C) 2018 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\chapter{Organisation d'un document} +\label{chap:organisation} + +La maitrise des notions du chapitre précédent permet déjà de composer +un document simple avec {\LaTeX}. Toutefois, la puissance du système +de mise en page se manifeste vraiment lors de la préparation de +documents élaborés comportant plusieurs divisions internes, une table +des matières, des renvois, etc. Le présent chapitre aborde ces aspects +d'organisation d'un document. + +\section{Choix d'une classe} +\label{sec:organisation:classe} + +La toute première chose à faire au moment de se lancer dans la +rédaction d'un document avec {\LaTeX} consiste normalement à choisir +une classe. Nous avons déjà expliqué à la \autoref{sec:bases:classes} +comment spécifier la classe à utiliser. Cette section présente les +différences entre les classes ainsi que les principales options +disponibles. + +Les classes standards sont \class{article}, \class{report}, +\class{book}, \class{letter} et \class{slides}. + +\begin{description} +\item[\normalfont\class{article}] Articles scientifiques et autres + documents de longueur modérée ne nécessitant pas une mise en page + élaborée. Le folio (numéro de page) est placé au centre du pied de + page. Le titre apparait dans le haut de la première page, + immédiatement suivi du texte. +\item[\normalfont\class{report}] Rapports et autres documents plus + longs pouvant être divisés en chapitres. Le titre apparait sur une + page de titre. La mise en page est autrement identique à celle de la + classe \class{article}. +\item[\normalfont\class{book}] Longs documents divisés en chapitres. + La mise en page est conçue pour une impression recto verso. L'entête + de la page (autre que la première du chapitre) contient le folio sur + le bord extérieur et le titre de chapitre (page paire) ou le titre + de section (page impaire). Le titre apparait sur une page de titre. +\item[\normalfont\class{letter}] Lettres et correspondance. Bien que + puissante, cette classe est plus rarement utilisée. Nous n'en traitons + pas davantage dans ce document. +\item[\normalfont\class{slides}] Diapositives simples pour des + présentations. La \autoref{sec:trucs:diapositives} traite plus en + détail de la production de diapositives. +\end{description} + +On trouvera un sommaire des principales caractéristiques des classes +\class{article}, \class{report} et \class{book} dans le +\autoref{tab:organisation:classes}. De plus, les figures +\ref{fig:organisation:classes:article}--\ref{fig:organisation:classes:book} +fournissent des exemples de mise en page pour ces trois classes. + +\begin{table} + \caption{Caractéristiques des principales classes standards} + \label{tab:organisation:classes} + \begin{tabularx}{1.0\linewidth}{XXXXX} + \toprule + Classe & Divisions & Disposition & Entête & Pied de page \\ + \midrule + \class{article} & parties,\newline sections, \dots + & recto & vide & folio centré \\ + \addlinespace[6pt] + \class{report} & parties,\newline chapitres,\newline sections, \dots + & recto & vide & folio centré \\ + \addlinespace[6pt] + \class{book} & parties,\newline chapitres,\newline sections, \dots + & recto verso & folio, titres & vide \\ + \bottomrule + \end{tabularx} +\end{table} + +\begin{figure} + \begin{minipage}{0.49\linewidth} + \fbox{\includegraphics[page=1,width=0.95\linewidth]{auxdoc/exemple-classe-article}} + \end{minipage} + \hfill + \begin{minipage}{0.49\linewidth} + \fbox{\includegraphics[page=2,width=0.95\linewidth]{auxdoc/exemple-classe-article}} + \end{minipage} + \caption{Exemple de mise en page avec la classe \class{article}} + \label{fig:organisation:classes:article} +\end{figure} + +\begin{figure} + \begin{minipage}{0.49\linewidth} + \fbox{\includegraphics[page=1,width=0.95\linewidth]{auxdoc/exemple-classe-report}} + \end{minipage} + \hfill + \begin{minipage}{0.49\linewidth} + \fbox{\includegraphics[page=2,width=0.95\linewidth]{auxdoc/exemple-classe-report}} + \end{minipage} + \caption{Exemple de mise en page avec la classe \class{report}} + \label{fig:organisation:classes:report} +\end{figure} + +\begin{figure} + \begin{minipage}{0.49\linewidth} + \fbox{\includegraphics[page=1,width=0.95\linewidth]{auxdoc/exemple-classe-book}} + \end{minipage} + \hfill + \begin{minipage}{0.49\linewidth} + \fbox{\includegraphics[page=2,width=0.95\linewidth]{auxdoc/exemple-classe-book}} + \end{minipage} + \caption{Exemple de mise en page avec la classe \class{book}} + \label{fig:organisation:classes:book} +\end{figure} + +Cet ouvrage fait une large place à la classe \class{memoir} +\citep{memoir}, une extension de la classe standard \class{book} qui +facilite à plusieurs égards la préparation de documents d'allure +professionnelle dans {\LaTeX}. Nous recommandons d'utiliser cette +classe en lieu et place de la classe \class{book}, ou même de la +classe \class{article} (voir ci-dessous). + +La classe \class{memoir} incorpore d'office plus de 30 des paquetages +les plus populaires\footnote{% + Consulter la section~18.24 de la documentation de \class{memoir} + pour la liste ou encore le journal de la compilation (\emph{log}) + d'un document utilisant la classe.}. % +La classe fait partie des distributions {\LaTeX} modernes; elle +devrait être installée et disponible sur tout système. Elle est livrée +avec une % +\doc{memoir}{http://texdoc.net/pkg/memoir} % +exhaustive: le manuel d'instructions fait près de 600~pages! Il peut +être utile de s'y référer de temps à autre pour réaliser une mise en +page particulière. + +Les auteurs de thèses et de mémoires déposés à l'Université Laval +doivent utiliser la classe \class{ulthese}; voir l'\autoref{chap:ulthese}. + +On rappelle que l'on charge une classe de document au début du +préambule avec la commande +\begin{lstlisting} +\documentclass`\oarg{options}\marg{classe}' +\end{lstlisting} +Les \meta{options} disponibles varient d'une classe à l'autre. Les +plus courantes sont les suivantes. +\begin{description} +\item[\mdseries \code{10pt}, \code{11pt}, \code{12pt}] Taille de la + police du document en points. La valeur par défaut est \code{10pt}. + Nous recommandons d'utiliser plutôt \code{11pt}. C'est la taille par + défaut avec la classe \class{ulthese}. +\item[\mdseries \code{oneside}, \code{twoside}] Disposition du + document en recto seulement ou en recto verso. Ces options ne sont + utiles que pour modifier la disposition par défaut de la classe. Les + thèses et mémoires de l'Université Laval sont produits en recto + seulement. +\item[\mdseries \code{openright}, \code{openany}] Position de la + première page des chapitres toujours à droite (page impaire) ou + immédiatement après la dernière page du chapitre précédent. Avec la + valeur par défaut, \code{openany}, {\LaTeX} insérera une page + blanche dans le document si un chapitre se termine sur une page + impaire. +\item[\mdseries \code{article} (classe \class{memoir} seulement)] Mise + en page comme celle d'un article. Avec cette option, \class{memoir} + peut remplacer la classe \class{article}, ce qui permet d'utiliser + une seule et même classe pour les deux principaux types de document + (article et livre). +\end{description} + +D'autres options permettent de contrôler la position du titre, la +disposition en une ou deux colonnes, ou encore la position des +équations hors paragraphe. \citet{Thurnherr:class-options} offre une +présentation succincte des options standards. Le chapitre~1 de la % +\doc{memoir}{http://texdoc.net/pkg/memoir} % +de \class{memoir} traite en plus des ajouts propres à cette classe. + + + +\section{Parties d'un document} + +Tout document de plus de quelques pages est normalement divisé en +chapitres, sections, sous-sections, etc. Il peut comporter une ou +plusieurs annexes et débuter par un résumé, notamment s'il s'agit d'un +article scientifique. Le document est habituellement coiffé d'un +titre, mais celui-ci est parfois affiché sur une page de titre +séparée. + +Toutes ces considérations relevant essentiellement de la mise en page, +{\LaTeX} s'en charge pour nous. L'auteur n'a qu'à spécifier la +strucure logique du document à l'aide des commandes de la présente +section. + +\subsection{Titre et page de titre} +\label{sec:organisation:parties:titre} + +{\LaTeX} rend très simple la composition du titre d'un article +scientifique ou d'une page de titre simple (classes \class{report}, +\class{book}, \class{memoir}). En premier lieu, on spécifie, +habituellement dans le préambule, le titre du document, le nom du ou +des auteurs et la date de publication avec les commandes suivantes: +\begin{lstlisting} +\title`\marg{Titre du document}' +\author`\marg{Prénom Nom {\bs\bs} Affiliation {\bs\bs} Adresse}' +\date`\marg{Date ou autre texte}' +\end{lstlisting} +Un long titre sera scindé automatiquement. L'auteur peut aussi scinder +le titre manuellement en insérant la commande {\bs\bs} aux points de +coupure. % +Si l'ouvrage comporte deux auteurs ou plus, on insère les informations +dans la commande \cmd{\author} les unes après les autres en séparant +chaque entrée par la commande \cmdprint{\and}. % +La commande \cmd{\date} insère le texte donné en argument (qu'il +s'agisse d'une date ou non) à l'endroit prévu à cet effet par +{\LaTeX}. Si l'on omet la commande, {\LaTeX} insère la date du jour au +moment de la compilation. Pour ne pas afficher la date, on laisse +l'argument vide: +\begin{lstlisting} +\date{} +\end{lstlisting} + +Dans les articles scientifiques, le nom d'un auteur est fréquemment +suivi d'un appel de note renvoyant à des remerciements à un organisme +subventionnaire ou à quelque autre information additionnelle sur +l'auteur. On insère une telle note et son appel à l'endroit approprié +dans les commandes \cmd{\title} ou \cmd{\author} avec la commande +\begin{lstlisting} +\thanks`\marg{Texte}' +\end{lstlisting} + +Les commandes ci-dessus ne permettent que de saisir les informations +relatives au titre. Pour produire le titre il faut, en second lieu, +insérér dans le corps du document la commande +\begin{lstlisting} +\maketitle +\end{lstlisting} + +\begin{exemple} + \label{ex:organisation:titre} + Le code ci-dessous permet de créer un titre d'article standard. La + page composée avec {\XeLaTeX} (puisque nous utilisons le paquetage + \pkg{fontspec}) se trouve à la \autoref{fig:organisation:titre}. + \begin{demo} + \lstinputlisting[lastline=19]{auxdoc/exemple-titre.tex} + \end{demo} + + La date de publication apparaissant dans l'illustration de la + \autoref*{fig:organisation:titre} est celle de la compilation + puisque la commande \cmdprint{\date} n'apparait pas dans le code + source. + + On remarquera également que nous avons placé un symbole de + commentaire \% immédiatement après le nom de l'auteur dans le code + source. Tel qu'expliqué à la \autoref{sec:bases:caracteres:espaces}, + c'est pour éviter que {\LaTeX} ne transforme le retour à la ligne avant + la commande \cmd{\thanks} en une espace entre le nom et l'appel de + note. + + (Le paquetage \pkg{lorem} utilisé dans cet exemple permet + d'insérer du faux texte \link{https://fr.lipsum.com}{Lorem Ipsum} + dans un document \LaTeX.) + \begin{figure} + \centering + \fbox{\includegraphics[width=0.7\linewidth]{auxdoc/exemple-titre}} + \caption{Illustration d'un titre d'article standard.} + \label{fig:organisation:titre} + \end{figure} + \qed +\end{exemple} + +Nous avons mentionné plus haut que {\LaTeX} peut aussi produire +automatiquement la page de titre d'un rapport ou d'un livre. Il est +toutefois peu probable qu'elle convienne, surtout dans le cas d'un +livre. Une option plus flexible existe: les environnements +\Ie{titlepage} (classes standards) et \Ie{titlingpage} (classe +\class{memoir}) permettent de définir librement une page de +titre: +\begin{demo} + \begin{minipage}{0.48\linewidth} +\begin{lstlisting} +\begin{titlepage} + `\meta{Texte de la page de titre}' +\end{titlepage} +\end{lstlisting} + \end{minipage} + \hfill + \begin{minipage}{0.48\linewidth} +\begin{lstlisting} +\begin{titlingpage} + `\meta{Texte de la page de titre}' +\end{titlingpage} +\end{lstlisting} + \end{minipage} +\end{demo} +L'auteur contrôle alors entièrement la disposition et la +composition des éléments de la page de titre. Nous renvoyons le +lecteur au chapitre~4 de la % +\doc{memoir}{http://texdoc.net/pkg/memoir} % +de \class{memoir} pour une liste de bonnes pratiques en matière de +composition de page de titre et pour des exemples détaillés. + +Comme c'est souvent le cas dans les universités, le format de la page +de titre des thèses et mémoires de l'Université Laval est +prédéterminé. La classe \class{ulthese} fournit donc ses propres +commandes de composition; consulter sa % +\doc{ulthese}{http://texdoc.net/pkg/ulthese}. + +\subsection{Résumé} +\label{sec:organisation:parties:resume} + +Les articles scientifiques et les rapports comportent souvent un +résumé, habituellement composé en retrait des marges gauche et droite +et dans une police plus petite. On produit le résumé avec +l'environnement \Ie{abstract} des classes \class{article}, +\class{report} ou \class{memoir}: +\begin{lstlisting} +\begin{abstract} + `\meta{Texte du résumé}' +\end{abstract} +\end{lstlisting} + +Il est plutôt rare que les livres comportent un résumé ou alors, comme +pour les thèses et mémoires de l'Université Laval, celui-ci +est simplement traité comme un chapitre normal non numéroté. + +\subsection{Sections} +\label{sec:organisation:parties:sections} + +Les commandes ci-dessous servent à découper un document en sections +qui seront automatiquement numérotées par {\LaTeX} de manière +séquentielle: +\begin{lstlisting} +\part`\oarg{titre court}\marg{titre}' +\chapter`\oarg{titre court}\marg{titre}' +\section`\oarg{titre court}\marg{titre}' +\subsection`\oarg{titre court}\marg{titre}' +\subsubsection`\oarg{titre court}\marg{titre}' +\paragraph`\oarg{titre court}\marg{titre}' +\subparagraph`\oarg{titre court}\marg{titre}' +\end{lstlisting} +Les commandes forment, dans l'ordre où elles sont données, une +hiérarchie des titres d'un document\footnote{% + Nous n'avons jamais utilisé les niveaux de division + \cmdprint{\paragraph} et \cmdprint{\subparagraph}.}. % +Tel que mentionné précédemment, la commande \cmd{\chapter} n'est pas +disponible avec la classe \class{article}. + +Chaque commande prend en argument obligatoire le \meta{titre} de la +section. Si celui-ci est très long, il peut être utile de fournir en +argument optionnel un \meta{titre court}; c'est ce dernier qui +apparaitra dans la table des matières et dans les entêtes de page, le cas +échéant. + +Toutes les commandes existent en version suivie d'une \verb=*= qui +supprime la numérotation ainsi que l'insertion éventuelle dans la +table des matières (plus de détails à la \autoref{sec:organisation:tdm}). + +\tipbox{Éviter d'utiliser des sous-sous-sections numérotées (commande + \cmdprint{\subsubsection}) dans un livre. Cela résulte en une + numérotation à quatre niveaux qui s'avère difficile à suivre pour le + lecteur.} + +\subsection{Annexes} +\label{sec:organisation:parties:annexes} + +Les annexes sont des sections ou des chapitres avec une numérotation +alphanumérique (A, A.1, ...) plutôt qu'entièrement numérique. On +informe {\LaTeX} que les sections suivantes doivent être traitées +comme des annexes en insérant dans le document la commande +%% [hack ci-dessous pour cacher la commande \appendix à reftex] +\begin{lstlisting} +`\verb=\appendix=' +\end{lstlisting} +En plus de modifier le style de numérotation, la commande a pour effet +de changer le mot clé «Chapitre» pour «Annexe» dans les titres de +chapitre. + +\subsection{Structure logique d'un livre} +\label{sec:oganisation:parties:livre} + +Un livre se compose normalement de trois grandes parties logiques: les +pages liminaires (avant-propos, table des matières, tout ce qui +précède le chapitre premier); le corps du livre (chapitres et +annexes); les parties en fin d'ouvrage (bibliographie, index). Les +commandes +\begin{lstlisting} +\frontmatter +\mainmatter +\backmatter +\end{lstlisting} +qui sont disponibles avec les classes \class{book}, \class{memoir} et +\class{ulthese}, permettent d'identifier ces trois parties. Le +\autoref{tab:organisation:livre} résume l'effet de chaque commande. + +\begin{table} + \centering + \caption{Commandes d'identification de la structure logique d'un + livre et leurs effets} + \label{tab:organisation:livre} + \begin{tabular}{ll} + \toprule + Commande & Effets \\ + \midrule + \cmd{\frontmatter} & numérotation des + pages en chiffres romains (i, ii, ...) \\ + & chapitres non numérotés \\ + \addlinespace[0.5\normalbaselineskip] + \cmd{\mainmatter} & numérotation des pages + à partir de 1 en chiffres arabes \\ + & chapitres numérotés \\ + \addlinespace[0.5\normalbaselineskip] + \cmd{\backmatter} & numérotation des pages + se poursuit \\ + & chapitres non numérotés \\ + \bottomrule + \end{tabular} +\end{table} + + +\section{Table des matières} +\label{sec:organisation:tdm} + +Dans la mesure où l'on a bien identifié les différentes divisions d'un +ouvrage avec les commandes mentionnées à la section précédente, la +production de la table des matières est on ne peut plus simple avec +{\LaTeX}: il suffit d'insérer la commande +\begin{lstlisting} +\tableofcontents +\end{lstlisting} +dans le corps du document à l'endroit où la table des matières doit +apparaitre. C'est tout! + +Lorsque le paquetage \pkg{hyperref} \citep{hyperref} est chargé, la +commande \cmdprint{\tableofcontents} produit également la table des +matières du fichier PDF. Cela permet de naviguer dans le document +directement depuis la visionneuse PDF. La +\autoref{fig:organisation:tdm-dans-pdf} illustre cette fonctionnalité +avec la visionneuse Aperçu de macOS. + +\begin{figure} + \resizebox{\textwidth}{!}{\includegraphics{images/tdm-dans-pdf}} + \caption[Consultation d'un document PDF avec la visionneuse Aperçu + de macOS]{% + Consultation d'un document PDF avec la visionneuse Aperçu + de macOS. La barre latérale de gauche affiche la table des + matières du fichier PDF, ce qui permet de naviguer dans le + document sans devoir revenir à celle du document.} + \label{fig:organisation:tdm-dans-pdf} +\end{figure} + +\importantbox{La production initiale de la table des matières et la + prise en compte de toute modification requiert jusqu'à trois + compilations consécutives du document.} + +Par défaut, une section non numérotée ne figure pas dans la table des +matières. Si l'on souhaite néanmoins l'y insérer, il faut utiliser la +commande suivante: +\begin{lstlisting} +\addtocontentsline{toc}`\marg{niveau}\marg{titre}' +\end{lstlisting} +où \meta{niveau} est le nom de la commande de division sans le +caractère {\bs} (\code{chapter}, \code{section}, etc.) et \meta{titre} +est le texte qui apparaitra dans la table des matières. + +\begin{exemple} + Selon les normes de présentation visuelle de la Faculté des études + supérieures et postdoctorales pour les thèses et mémoires de + l'Université Laval, les résumés, la liste des abbréviations et des + sigles, les remerciements et l'avant-propos doivent être composés + comme des chapitres normaux non numérotés. Cependant, ils doivent + apparaitre dans la table des matières. Pour ce faire, les gabarits + fournis avec la classe \class{ulthese} comportent des lignes de la + forme: +\begin{lstlisting} +\chapter*{Résumé} +\phantomsection\addcontentsline{toc}{chapter}{Résumé} +\end{lstlisting} + La commande \cmd{\phantomsection} est rendue nécessaire (ou + recommandée) par le paquetage \pkg{hyperref} qui est chargé dans le + préambule. % + \qed +\end{exemple} + +Outre une table des matières, les ouvrages scientifiques +comportent parfois une liste des figures et une liste des tableaux. On +obtient celles-ci avec les commandes +\begin{lstlisting} +\listoffigures +\listoftables +\end{lstlisting} + +Dans les classes \class{memoir} et \class{ulthese}, les commandes +ci-dessus insèrent leur propre titre de section dans la table des +matière (autrement dit, la table des matières apparait dans la table +des matières). Les versions +\begin{lstlisting} +\tableofcontents* +\listoffigures* +\listoftables* +\end{lstlisting} +adoptent le comportement des classes standards, soit d'omettre ces +parties dans la table des matières. + + +\section{Renvois automatiques} +\label{sec:organisation:renvois} + +Un document d'une certaine ampleur contiendra souvent des renvois à +une section, un tableau, une équation, voire une page +spécifique. Évidemment, le numéro de la section, du tableau, de +l'équation ou de la page est susceptible de changer au fil de la +rédaction du document. C'est pourquoi l'auteur ne devrait +\emph{jamais} insérer les revois manuellement dans le texte. C'est une +tâche qu'il vaut mieux confier à l'ordinateur. + +\subsection{Étiquettes et renvois} +\label{sec:organisation:renvois:etiquettes} + +Les renvois automatiques dans {\LaTeX} reposent sur un système +d'étiquettes attribuées à des éléments de contenu et de référencement +par ces étiquettes. Ainsi, pour renvoyer le lecteur à un élément de +contenu, il faut d'abord le nommer en insérant la commande +\begin{lstlisting} +\label`\marg{nom}' +\end{lstlisting} +à proximité de l'élément. Le choix du \meta{nom} est tout à fait libre. Il +peut être constitué de toute combinaison de lettres, de chiffres et de +symboles autres que les symboles réservés mentionnés à la +\autoref{sec:bases:caracteres:reserves}. + +Ensuite, il devient possible d'insérer un renvoi à cet élément de contenu +n'importe où dans le document avec la commande +\begin{lstlisting} +\ref`\marg{nom}' +\end{lstlisting} +Pour renvoyer à la page où se trouve l'élément, on utilise la commande +\begin{lstlisting} +\pageref`\marg{nom}' +\end{lstlisting} + +\begin{exemple} + \label{ex:organisation:renvoi} + Le code ci-dessous permet d'insérer un renvoi automatique à un + numéro de section dans un document. Le résultat se trouve à la + \autoref{fig:organisation:renvoi}. +\begin{lstlisting}[emph={\label,\ref}] +\section{Définitions} +\label{sec:definitions} + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. +Duis in auctor dui. Vestibulum ut, placerat ac, adipiscing +vitae, felis. + +\section{Historique} + +Tel que vu à la section \ref{sec:definitions}, on a... +\end{lstlisting} + + \begin{figure} + \fbox{\includegraphics[viewport=124 550 484 664,clip=true,width=0.98\linewidth]{auxdoc/exemple-renvoi}} + \caption{Texte produit par le code de + l'\autoref{ex:organisation:renvoi} illustrant un renvoi + automatique standard} + \label{fig:organisation:renvoi} + \end{figure} + \qed +\end{exemple} + +\tipbox{Un long document contiendra vraisemblablement un grand nombre + d'étiquettes et de renvois. Afin de s'y retrouver et pour éviter les + doublons, adopter une manière systématique et mnémotechnique de + nommer les éléments. + + Pour le présent document, nous avons utilisé un système d'étiquettes + de la forme suivante: + \begin{itemize} + \item \cmdprint{chap:\meta{chapitre}} pour les chapitres; + \item \cmdprint{sec:\meta{chapitre}:\meta{section}} pour + les sections; + \item \cmdprint{tab:\meta{chapitre}:\meta{tableau}} pour + les tableaux; + \item \cmdprint{eq:\meta{chapitre}:\meta{equation}} pour + les équations. + \end{itemize}} + +\subsection{Production des renvois} +\label{sec:organisation:renvois:production} + +La production des renvois requiert deux à trois compilations. +Tant que {\LaTeX} n'a pas complété les renvois, le journal de +compilation contient, vers la toute fin, le message +\begin{verbatim} +LaTeX Warning: Label(s) may have changed. Rerun to get +cross-references right. +\end{verbatim} + +On prendra également garde aux alertes suivantes dans le journal de +compilation. Elles identifient des correctifs à apporter dans le +système d'étiquettes et de renvois. D'abord, le message +\begin{verbatim} +LaTeX Warning: There were undefined references. +\end{verbatim} +indique qu'une ou plusieurs commandes \cmd{\ref} renvoient à un +\meta{nom} qui n'est pas défini avec \cmd{\label}. On trouvera alors +dans le document le caractère \textbf{?} en lieu et place du renvoi. À +l'inverse, le message +\begin{verbatim} +LaTeX Warning: There were multiply-defined labels. +\end{verbatim} +indique que plusieurs commandes \cmdprint{\label} utilisent le même +\meta{nom}. Cela est susceptible de causer des renvois vers le mauvais +élément de contenu. + +\subsection{Renvois avec hyperliens} +\label{sec:organisation:renvois:hyperliens} + +Lorsque chargé dans le document, le paquetage \pkg{hyperref} insère +des hyperliens vers les renvois dans les fichiers PDF. C'est très +pratique en consultation électronique d'un document. + +\begin{exemple} + \label{ex:organisation:renvoi-hyperref} + Avec l'ajout de +\begin{lstlisting} +\usepackage{hyperref} +\end{lstlisting} + dans le préambule, le code de l'\autoref{ex:organisation:renvoi} + produit maintenant le type de renvoi illustré à la + \autoref{fig:organisation:renvoi-hyperref}. Le texte en couleur + contrastante est un hyperlien vers le titre de la section. + + \begin{figure} + \centering + \fbox{\includegraphics[viewport=124 550 484 664,clip=true,width=0.98\linewidth]{auxdoc/exemple-renvoi-hyperref}} + \caption{Texte produit par le code de + l'\autoref{ex:organisation:renvoi} après l'ajout du paquetage + \pkg{hyperref}} + \label{fig:organisation:renvoi-hyperref} + \end{figure} + \qed +\end{exemple} + +L'inconvénient avec la procédure illustrée dans l'exemple précédent, +c'est que seul le numéro de la référence est transformé en hyperlien. +La zone disponible pour cliquer s'en trouve plutôt restreinte. Une +fonctionnalité du paquetage \pkg{hyperref} --- à laquelle nous avons eu +recours dans le présent document --- permet d'agrandir cette zone. La +commande +\begin{lstlisting} +\autoref`\marg{nom}' +\end{lstlisting} +permet de nommer automatiquement le type de renvoi (section, équation, +tableau, etc.) et de transformer en hyperlien à la fois ce texte et le +numéro du renvoi. + +\begin{exemple} + \label{ex:organisation:renvoi-autoref} + On reprend le texte de l'\autoref{ex:organisation:renvoi}, mais en + utilisant cette fois la commande \cmd{\autoref} pour insérer un + renvoi dans le texte. On remarque que le mot «section» a été + supprimé du code source pour laisser à la commande le soin d'insérer + le vocable approprié dans le document. +\begin{lstlisting}[emph={\label,\autoref}] +\section{Définitions} +\label{sec:definitions} + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. +Duis in auctor dui. Vestibulum ut, placerat ac, adipiscing +vitae, felis. + +\section{Historique} + +Tel que vu à la \autoref{sec:definitions}, on a... +\end{lstlisting} + Comme on peut le voir à la + \autoref{fig:organisation:renvoi-autoref}, le mot «section» ainsi + que son numéro forment maintenant l'hyperlien. + + \begin{figure} + \centering + \fbox{\includegraphics[viewport=124 550 484 664,clip=true,width=0.98\linewidth]{auxdoc/exemple-renvoi-autoref}} + \caption{Texte produit par le code de + l'\autoref{ex:organisation:renvoi-autoref}} + \label{fig:organisation:renvoi-autoref} + \end{figure} + \qed +\end{exemple} + +La \autoref{sec:trucs:hyperliens} fournit des détails +additionnels sur la gestion des hyperliens dans un document PDF. + + +\section{Document contenu dans plusieurs fichiers} +\label{sec:organisation:include} + +Lorsque le préambule et le corps du texte demeurent relativement +courts (peu de commandes spéciales et moins d'une vingtaine de pages +de texte), il demeure assez simple et convivial d'en faire l'édition +dans un seul fichier à l'aide de son éditeur de texte favori. + +Cependant, si le préambule devient long et complexe ou, surtout, +lorsque l'ampleur du document augmente jusqu'à compter un grand nombre +de pages sur plusieurs chapitres, il convient de répartir les diverses +parties du document dans des fichiers séparés. + +La segmentation en plusieurs fichiers rend l'édition du texte plus +simple et plus efficace. De plus, durant la phase de rédaction, elle +peut significativement accélérer la compilation des documents très +longs ou comptant plusieurs images. + +\subsection{Insertion du contenu d'un autre fichier} +\label{sec:organisation:include:input} + +La commande \cmd{\input} permet d'insérer le contenu d'un autre +fichier dans un document {\LaTeX}. La syntaxe de la commande est +\begin{lstlisting} +\input`\marg{fichier}' +\end{lstlisting} +où le nom du fichier à insérer est \meta{fichier}\code{.tex}. On +laisse donc tomber l'extension \code{.tex}, qui est implicite. Le +contenu du fichier est inséré tel quel dans le document, comme s'il +avait été saisi dans le fichier qui contient l'appel à \cmd{\input}. + +Le procédé est surtout utile pour sauvegarder séparément des bouts de +code qui gênent l'édition du texte (figures, longs +tableaux) ou qui sont communs entre plusieurs documents (licence +d'utilisation, auteur et affiliation). + +La commande peut aussi être utilisée dans le préambule pour charger +une partie ou l'ensemble de celui-ci. Cela permet de composer un même +préambule pour plusieurs documents. Il suffit alors de faire +d'éventuelles modifications à un seul endroit pour les voir prendre +effet dans tous les documents. + +\subsection{Insertion de parties d'un document} +\label{sec:organisation:include:include} + +Il est recommandé de segmenter tout document d'une certaine ampleur +dans des fichiers \verb=.tex= distincts pour chaque partie --- +habituellement un fichier par chapitre. Le document complet est +composé à l'aide d'un fichier maitre qui contient le préambule +{\LaTeX} et un ensemble d'appels à la commande \cmdprint{\include} +pour réunir les parties dans un tout. + +La syntaxe de \cmd{\include} est +\begin{lstlisting} +\include`\marg{fichier}' +\end{lstlisting} +où le nom du fichier à insérer est \meta{fichier}\code{.tex}. Ici +aussi on laisse tomber l'extension \code{.tex} qui est implicite. + +Comme \cmd{\input}, la commande \cmd{\include} insère le contenu d'un +autre fichier dans un document. Toutefois, l'insertion d'un fichier +avec \cmd{\include} débute toujours une nouvelle page. On utilisera +donc cette commande principalement pour insérer des chapitres entiers +plutôt que seulement des portions de texte. De plus, un fichier inséré +avec \cmd{\include} peut contenir des appels à \cmd{\input}, mais pas +à \cmd{\include}. + +\begin{exemple} + La \autoref{fig:organisation:maitre} présente un exemple type de + fichier maitre. On y utilise la commande \cmd{\include} pour + composer un document chapitre par chapitre. + + \begin{figure} + \centering + \begin{minipage}{0.75\linewidth} +\begin{lstlisting}[numbers=left, numberstyle=\tiny] +\documentclass{ulthese} + [...] + +\begin{document} + +\frontmatter + +\include{introduction} +\tableofcontents* + +\mainmatter +\include{historique} +\include{rappels} +\include{modele} +[...] + +\end{document} +\end{lstlisting} + \end{minipage} + \caption[Structure type d'un fichier maitre]{% + Structure type d'un fichier maitre. Les fichiers + \code{historique.tex}, \code{rappels.tex} et \code{modele.tex} + contiennent le texte des trois premiers chapitres.} + \label{fig:organisation:maitre} + \end{figure} + \qed +\end{exemple} + +Le principal avantage de \cmd{\include} par rapport à \cmd{\input} +réside dans le fait que {\LaTeX} peut préserver entre les compilations +les informations telles que les numéros de pages, de sections ou +d'équations, ainsi que les renvois et les références bibliographiques. +Cela permet, par exemple, de compiler le texte d'un seul chapitre --- +plutôt que le document entier --- et néanmoins obtenir une image +représentative du chapitre. Procéder ainsi accélère significativement +la compilation des documents longs ou complexes. + +\subsection{Compilation partielle} +\label{sec:organisation:include:compilation} + +La commande \cmd{\includeonly}, que l'on utilise exclusivement dans le +préambule, sert à spécifier le ou les fichiers à compiler tout en +préservant la numérotation et les références. Sa syntaxe est +\begin{lstlisting} +\includeonly`\marg{liste\_fichiers}' +\end{lstlisting} +où \meta{liste\_fichiers} contient les noms des fichiers à +inclure dans la compilation, séparés par des virgules et sans +l'extension \code{.tex}. + +\tipbox{Utiliser des noms de fichiers qui permettent de facilement + identifier leur contenu. Par exemple, un nom comme + \fichier{rappels.tex} identifie clairement le contenu du fichier et + il résiste mieux aux changements à l'ordre des chapitres que + \fichier{chapitre1.tex}.} + +Lors de l'utilisation de la commande \cmd{\includeonly}, toute la +numérotation dans les fichiers \meta{liste\_fichiers} suivra celle +établie lors de la compilation précédente. Si l'édition des fichiers +de \meta{liste\_fichiers} cause des changements dans la numérotation +et les références dans les autres parties du document, une nouvelle +compilation de l'ensemble ou d'une partie de celui-ci s'avérera +nécessaire. + +\begin{exemple} + Un document est composé en plusieurs parties avec les commandes + suivantes: +\begin{lstlisting} +\include{historique} % chapitre 1 +\include{rappels} % chapitre 2 +\include{modele} % chapitre 3 +\end{lstlisting} + Les chapitres débutent respectivement aux pages~1, 23 et 41. + \begin{itemize} + \item Si l'on ajoute au préambule du document la commande +\begin{lstlisting} +\includeonly{rappels} +\end{lstlisting} + le numéro du chapitre sera toujours 2 et le folio de + la première page sera toujours 23, même si les 22 pages + précédentes ne se trouvent pas dans le document. + \item Si l'on modifie le fichier \fichier{rappels.tex} de telle + sorte que le chapitre se termine maintenant à la page 46, il + faudra recompiler le document avec au moins les fichiers + \fichier{rappels.tex} et \code{modele.tex} pour que les pages du + chapitre~3 soient numérotées à partir de 47. + \end{itemize} + \qed +\end{exemple} + +L'\autoref{ex:include} illustre mieux le cycle typique +d'utilisation des commandes \cmd{\include} et \cmd{\includeonly}. + + + +%%% +%%% Exercices +%%% + +\section{Exercices} +\label{sec:organisation:exercices} + +\Opensolutionfile{solutions}[solutions-organisation] + +\begin{Filesave}{solutions} +\section*{Chapitre \ref*{chap:organisation}} +\addcontentsline{toc}{section}{Chapitre \protect\ref*{chap:organisation}} + +\end{Filesave} + +\begin{exercice}[nosol] + Utiliser le fichier \fichier{exercice\_parties.tex}. + \begin{enumerate} + \item Étudier la structure du document dans le code source. + \item Ajouter un titre et un auteur au document à l'aide des + commandes \cmdprint{\title} et \cmdprint{\author} se trouvant déjà + dans le préambule. + \item Créer la table des matières du document en le compilant deux à + trois fois. + \item Insérer deux ou trois titres de sections de différents niveaux + dans le document et recompiler. + \item La numérotation cesse à partir des sous-sections. C'est une + particularité de la classe \class{memoir}. Recompiler le document + après avoir ajouté au préambule la commande +\begin{lstlisting} +\maxsecnumdepth{subsection} +\end{lstlisting} + \item Ajouter une annexe au document. + \end{enumerate} +\end{exercice} + +\begin{exercice}[nosol] + Utiliser le fichier \fichier{exercice\_renvois.tex}. + \begin{enumerate} + \item Insérer dans le texte un renvoi au numéro d'une section. + \item Activer le paquetage \pkg{hyperref} avec l'option + \code{colorlinks} et comparer l'effet d'utiliser \cmd{\ref} ou + \cmd{\autoref} pour le renvoi. + \end{enumerate} +\end{exercice} + +\begin{exercice}[nosol] + \label{ex:include} + Cet exercice fait appel au fichier maitre + \fichier{exercice\_include.tex} et à plusieurs fichiers auxiliaires. + Schématiquement, le document est composé ainsi: + + \medskip + \begin{minipage}{\linewidth} + \dirtree{% + .1 exercice\_include.tex. + .2 {\textbackslash}input pagetitre.tex. + .2 {\textbackslash}include rpresentation.tex. + .3 {\textbackslash}includegraphics console-screenshot.pdf. + .2 {\textbackslash}include emacs.tex. + } + \end{minipage} + \medskip + + La commande \cmd{\includegraphics} permet d'insérer une image dans + un document {\LaTeX}. Elle provient du paquetage \pkg{graphicx}. + + \begin{enumerate} + \item Étudier le code source du fichier maitre, puis le compiler + deux à trois fois jusqu'à ce que tous les renvois soient à jour. + Il est normal à ce stade que la figure~1 du document soit vide. + \item Ajouter dans le préambule du fichier maitre la commande +\begin{lstlisting} +\includeonly{emacs} +\end{lstlisting} + puis compiler le document. + + Observer que, malgré l'absence du chapitre~1, la numérotation et + les références demeurent à jour, notamment la table des matières. + \item Remplacer la commande ajoutée en b) dans le préambule du + fichier maitre par la commande +\begin{lstlisting} +\includeonly{rpresentation} +\end{lstlisting} + Vers la fin du fichier \fichier{rpresentation.tex}, activer la + commande +\begin{lstlisting} +\includegraphics[width=\textwidth]{console-screenshot} +\end{lstlisting} + en supprimant le symbole \% au début de la ligne. Compiler de + nouveau le document deux fois. + + Les modifications ont eu pour effet d'ajouter une page au + chapitre~1. Observer que, selon la table des matières, le + chapitre~2 débute toujours à la page~3 alors que celle-ci est + maintenant occupée par la figure~1. + \item Afin de corriger la table des matières, désactiver dans le + préambule du fichier maitre la commande \cmd{\includeonly}, puis + compiler de nouveau le document quelques fois. + \end{enumerate} +\end{exercice} + +\begin{exercice}[nosol] + Déplacer dans un fichier \fichier{preambule.tex} toutes les lignes + du préambule du fichier \fichier{exercice\_include.tex} utilisé à + l'exercice précédent, à l'exception de celles relatives à la page + titre (titre, auteur, date). Insérer le préambule dans + \fichier{exercice\_include.tex} avec la commande \cmd{\input}. +\end{exercice} + +\Closesolutionfile{solutions} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "formation-latex-ul" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/prerequis-diapos.tex b/info/formation-latex-ul/source/prerequis-diapos.tex new file mode 100644 index 0000000000..cc8b916bcc --- /dev/null +++ b/info/formation-latex-ul/source/prerequis-diapos.tex @@ -0,0 +1,59 @@ +%%% Copyright (C) 2018 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\begin{frame} + \frametitle{Fichiers d'accompagnement} + + \begin{adjustwidth}{10mm}{10mm} + Ce document devrait être accompagné des fichiers nécessaires pour + compléter les exercices. + + Si vous n'avez pas obtenu ces fichiers avec le document, vous + pouvez les récupérer dans le site \emph{Comprehensive TeX Archive + Network} (CTAN). + + \begin{center} + \link{\ctanurl}{Accéder aux fichiers dans CTAN} + \end{center} + \end{adjustwidth} +\end{frame} + +\begin{frame} + \frametitle{Prérequis à cette formation} + + \begin{adjustwidth}{8mm}{10mm} + \begin{enumerate} + \item Installer une distribution {\LaTeX} sur votre poste de + travail; nous recommandons la distribution {\TeX}~Live + \begin{itemize} + \item \link{https://youtu.be/uJFbhQkDbU8}{% + Vidéo d'installation sur macOS} + \item \link{https://youtu.be/wO2FlNmye14}{% + Vidéo d'installation sur Windows} + \end{itemize} + \item Composer un premier document très simple de type \emph{Hello + World!} + \begin{itemize} + \normalsize + \item \link{https://youtu.be/1XKh0f6hFks}{% + Démonstration vidéo avec TeXShop sur macOS} + \item \link{https://youtu.be/EIwsQHJhpOQ}{% + Démonstration vidéo avec Texmaker sur Windows} + \end{itemize} + \end{enumerate} + \end{adjustwidth} +\end{frame} + +%%% Local Variables: +%%% TeX-master: "formation-latex-ul-diapos" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/presentation-diapos.tex b/info/formation-latex-ul/source/presentation-diapos.tex new file mode 100644 index 0000000000..d08e4727d4 --- /dev/null +++ b/info/formation-latex-ul/source/presentation-diapos.tex @@ -0,0 +1,182 @@ +%%% Copyright (C) 2018 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\section{Présentation de {\TeX} et {\LaTeX}} + +\subsection{Description sommaire} + +\begin{frame} + \frametitle{Ce que c'est} + \begin{columns} + \begin{column}{.5\textwidth} + \begin{itemize} + \item {\TeX} est un système de mise en page (\emph{typesetting}) + ou de préparation de documents + \item {\LaTeX} est un ensemble de macro-commandes pour faciliter + l'utilisation de {\TeX} + \item Langage de balisage (\emph{Markup Language}) pour indiquer + la mise en forme du texte + \item Accent mis sur la production de documents de grande + qualité à la typographie soignée (surtout pour les + mathématiques) + \end{itemize} + \end{column} + \begin{column}{.5\textwidth} + \centering + \includegraphics[width=\linewidth]{images/knuth} \\ + \footnotesize Donald Knuth, créateur de \TeX + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Ce que ce n'est pas} + \begin{tabular}{lcl} + Un traitement de texte & \faArrowRight & priorité accordée + à la qualité de + la mise en page \\[6pt] + WYSIWYG & \faArrowRight & plutôt What You See Is What + You \emph{Mean} \\[6pt] + Incompatible & \faArrowRight & format identique sur tous + les systèmes d'exploitation \\[6pt] + Instable & \faArrowRight & noyau arrivé à maturité \\[6pt] + Imprévisible & \faArrowRight & {\LaTeX} fait ce qu'on + lui demande, ni plus, ni moins + \end{tabular} +\end{frame} + +\begin{frame} + \frametitle{Quelques choses simples à réaliser avec {\LaTeX}} + + \begin{itemize} + \item Page de titre + \item Table des matières + \item Numérotation des pages + \item Figures et tableaux: disposition, numérotation, renvois + \item Équations mathématiques: disposition, numérotation, renvois + \item Citations et composition de la bibliographie + \item Coupure de mots + \item Document recto verso + \end{itemize} +\end{frame} + +\subsection{Processus de création} + +\begin{frame} + \frametitle{Processus de création d'un document {\LaTeX}} + \Huge + \begin{minipage}[t]{0.6\linewidth} + \begin{minipage}[t]{0.4\textwidth} + \centering + \faFileTextO \\ \bigskip + \footnotesize + rédaction du texte et balisage avec un \emph{éditeur de texte} + \end{minipage} + \hfill\faArrowRight\hfill + \begin{minipage}[t]{0.4\textwidth} + \centering + \faCogs \\ \bigskip + \footnotesize + compilation avec un \emph{moteur} {\TeX} depuis la ligne de commande + \end{minipage} \\ \bigskip + + \onslide<2>{% + \color{alert} + \rule[6pt]{\linewidth}{2pt} \\ + \footnotesize\centering + facilité par l'utilisation d'un \\ + logiciel intégré de rédaction \\ + (Texmaker, TeXShop, Emacs, \dots) + } + \end{minipage} + \begin{minipage}[t]{0.35\linewidth} + \hfill\faArrowRight\hfill + \begin{minipage}[t]{0.7\textwidth} + \centering + \faFilePdfO \\ \bigskip + \footnotesize + visualisation avec visionneuse externe (Aperçu, + SumatraPDF, etc.) + \end{minipage} + \end{minipage} +\end{frame} + +\subsection{[~Exercice~]} + +\begin{exercice} + Démarrer le logiciel \alert{Texmaker} (Windows), \alert{TeXShop} + (macOS) ou tout autre éditeur ou logiciel intégré de rédaction de + votre choix. + + \begin{enumerate} + \item Ouvrir et compiler le fichier \fichier{exercice\_minimal.tex}. + \item Ajouter du texte en français (avec accents) et observer le + résultat. + \end{enumerate} +\end{exercice} + +\subsection{Outils de production} + +\begin{frame} + \frametitle{Moteurs et formats} + \centering + + \begin{tabular}{r} + \\ \addlinespace[8pt] \\ \\ + \color{alert}\faArrowRight \\ + \color{alert}\faArrowRight + \end{tabular} + \hspace{-4mm} + \begin{tabularx}{0.7\linewidth}{Xlc} + \toprule[2pt] + Moteur & Format & Fichier de sortie \\ + \midrule + \texttt{tex} & plain \TeX & DVI \\ + \texttt{tex} (\texttt{latex}) & \LaTeX & DVI \\ + \texttt{pdftex} (\texttt{pdflatex}) & pdf\LaTeX & PDF \\ + \texttt{xetex} (\texttt{xelatex}) & \XeLaTeX & PDF \\ + \bottomrule[2pt] + \end{tabularx} +\end{frame} + +\begin{frame}[fragile=singleslide] + \frametitle{Faits amusants} + \begin{itemize} + \item {\TeX} est aujourd'hui considéré exempt de bogue + \item Récompense si vous en trouvez un! + \item Numéro de version de {\TeX} converge vers $\pi$: +\begin{lstlisting} +$ tex --version +TeX `\textbf{3.14159265}' (TeX Live 2018) +kpathsea version 6.3.0 +Copyright 2018 D.E. Knuth. +[...] +\end{lstlisting} %$ + \end{itemize} +\end{frame} + +\subsection{[~Exercice~]} + +\begin{exercice} + Question de voir ce que {\LaTeX} peut faire, compiler le document + élaboré \fichier{exercice\_demo.tex} de la manière suivante: + \begin{enumerate}[i)] + \item une fois avec \texttt{LaTeX}; + \item une fois avec \texttt{BibTeX}; + \item deux à trois fois avec \texttt{LaTeX}. + \end{enumerate} +\end{exercice} + +%%% Local Variables: +%%% TeX-master: "formation-latex-ul-diapos" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/presentation.tex b/info/formation-latex-ul/source/presentation.tex new file mode 100644 index 0000000000..067ec32683 --- /dev/null +++ b/info/formation-latex-ul/source/presentation.tex @@ -0,0 +1,359 @@ +%%% Copyright (C) 2018 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\chapter{Présentation de {\TeX} et {\LaTeX}} +\label{chap:presentation} + +La production d'un document à l'aide d'un ordinateur comporte toujours +trois grandes étapes: +\begin{enumerate} +\item la saisie du texte dans l'ordinateur; +\item la composition du texte sur la page en lignes de longueur égale + et en paragraphes, ainsi que la disposition des éléments tels que les + figures et les tableaux; +\item la production du document final pour consultation à l'écran ou + pour l'impression. +\end{enumerate} +Les logiciels de traitement de texte combinent les trois étapes de +manière transparente pour l'utilisateur. + +Le système {\LaTeX}, lui, est un logiciel de mise en page qui se +charge uniquement de la seconde étape de production, celle qui était +autrefois réalisée à la main ou à l'aide d'une machine comme la +\link{https://fr.wikipedia.org/wiki/Linotype}{Linotype} par les +typographes. + +La préparation d'un document avec {\LaTeX} requiert d'utiliser trois +outils bien différents, soit un pour chaque étape de production. Nous +verrons rapidement que ce qui peut à priori sembler un inconvénient +constitue en fait un grand avantage. + +{\LaTeX} est l'un des systèmes de mise en page les plus utilisés dans +le monde, particulièrement dans la production de documents +scientifiques intégrant de multiples équations mathématiques, des +graphiques, du code informatique, etc. En fait, le nom {\LaTeX} sert +généralement de terme générique pour toute une famille de programmes. +Ce chapitre explique donc non seulement la philosophie derrière +{\LaTeX}, mais également le lien qui unit ce programme aux autres dont +on croise couramment le nom aujourd'hui: {\TeX}, pdf{\LaTeX}, +{\XeLaTeX}, {\LuaLaTeX}. + +Un peu de phonétique avant d'aller plus loin. La racine {\TeX} est une +transcription en majuscules des lettres grecques $\tau\epsilon\chi$. +La dernière lettre des acronymes ci-dessus n'est donc non pas un X +latin, mais plutôt la lettre grecque khi majuscule, qui est +visuellement identique. Pour cette raison, la terminaison des +acronymes se prononce «tek». Voilà qui devrait déjà vous permettre de +distinguer le système de mise en page du matériau élastique. + +\notebox{L'histoire courte \emph{Paul apprenti typographe} publiée + dans \citet{Rabagliati:1999:campagne} explique formidablement bien + le processus de composation d'un texte avec la Linotype. Quelques + séquences du très recommandable film \emph{The Post} (2017) + illustrent également la composition d'une page de journal.} + + +\section{Description sommaire} +\label{sec:presentation:description} + +À la base de {\LaTeX} et de ses dérivés, il y a toujours le système +{\TeX} développé par Donald Knuth à partir de la fin des années 1970 +alors qu'il travaillait à la rédaction de son {\oe}uvre phare +\emph{The Art of Computer Programming}. Comme il n'était pas satisfait +de la qualité typographique des systèmes de mise en page alors +disponibles, il a tout naturellement décidé d'en créer un à la hauteur +de ses exigences! + +{\TeX} est un système de mise en page (\emph{typesetting}) ou de +préparation de documents. De manière plus technique, {\TeX} est un +langage de programmation spécialisé dans la disposition de caractères +sur une page. Il met l'accent sur la production de documents de grande +qualité à la typographie soignée, surtout pour les mathématiques. + +Comme le système et le langage {\TeX} ne sont pas des plus faciles à +apprendre, Leslie Lamport a créé en 1983 un ensemble de +macro-commandes baptisé {\LaTeX} pour faciliter l'utilisation de +{\TeX}. Le terme en est venu, chez les utilisateurs, à nommer +l'ensemble du système. + +{\TeX} et {\LaTeX} sont des langages de balisage (\emph{Markup + Languages}) qui indiquent la mise en forme du texte à l'intérieur de +celui-ci par le biais de commandes spéciales. + +\begin{exemple} + Les traitements de texte sont d'abord et avant tout conçus pour + respecter le plus fidèlement possible ce que l'utilisateur produit + (d'où l'appellation \emph{What You See is What You Get}, WYSIWYG). + Les systèmes de mise en page, quant à eux, visent à maximiser la + qualité de la mise en page et de la typographie pour un texte donné. + + Voici deux exemples de typographie soignée. D'abord, l'utilisation + de \emph{ligatures} (jonctions) entre certaines lettres. À gauche, + ce que produisent les traitements de texte, qui ne voient qu'une + série de lettres individuelles. À droite, le résultat avec {\LaTeX}, + qui peut analyser le texte et identifier les ligatures. + \begin{demo} + \centering + \begin{minipage}{0.3\linewidth} + \rmfamily f\/f \quad f\/i \quad f\/l \quad f\/f\/i \quad + f\/f\/l + \end{minipage} + \qquad + \begin{minipage}{0.3\linewidth} + \rmfamily ff \quad fi \quad fl \quad ffi \quad ffl + \end{minipage} + \end{demo} + + Ensuite, l'espacement entre les lettres, que {\LaTeX} ajustera selon + le contexte. Comparer la disposition pour du texte normal, à gauche, + à celle pour des mathématiques, à droite. + \begin{demo} + \centering + \begin{minipage}{0.3\linewidth} + \rmfamily xy \quad \emph{xy} + \end{minipage} + \qquad + \begin{minipage}{0.3\linewidth} + $xy$ + \end{minipage} + \end{demo} + \qed +\end{exemple} + +Nous pouvons étoffer ce portrait de {\LaTeX} en relevant ce que le +système \emph{n'est pas}. + +\begin{itemize} +\item Un traitement de texte --- {\LaTeX} impose un mode de travail + qui permet de séparer \emph{structure} et \emph{apparence} du texte. +\item WYSIWYG --- un système de mise en page est davantage qualifié de + \emph{What You See is What You Mean}. +\item Incompatible --- le code source {\LaTeX} peut être lu et le + document reproduit à l'identique sur tous les types de systèmes + informatiques. +\item Instable --- le moteur {\TeX} est considéré exempt de bogues. +\item Imprévisible --- {\LaTeX} fait uniquement et exactement ce que + nous lui demandons, sans prétendre pouvoir deviner ce que nous + voulons faire ou, pire, le savoir mieux que nous. +\end{itemize} + + +\section{Quelques choses simples à réaliser avec {\LaTeX}} + +Quiconque a travaillé un tant soit peu avec un logiciel de traitement +de texte reconnaitra ci-dessous des éléments de mise en page qui ne +sont pas toujours simples à réaliser. C'est tout le contraire avec +{\LaTeX}: quand ce n'est pas le comportement par défaut, il suffit en +général d'insérer une commande dans le code source pour obtenir le +résultat souhaité. + +\begin{itemize} +\item Page de titre standard avec le titre du document, le nom de + l'auteur et la date. +\item Table des matières. +\item Numérotation des pages. +\item Disposition sur la page des figures et tableaux, numérotation et + renvois. +\item Numérotation des équations mathématiques et renvois. +\item Citations et composition de la bibliographie. +\item Coupure de mots. +\item Document recto verso avec marges distinctes pour le recto et le + verso. +\end{itemize} + + +\section{Processus de création d'un document} +\label{sec:presentation:processus} + +Le processus de création d'un document {\LaTeX} compte trois phases: +la rédaction, la compilation (ou composition par le système) et la +visualisation du résultat. On peut le représenter schématiquement +ainsi: +\begin{center} + \begin{minipage}[t]{0.25\linewidth} + \centering + {\Huge\faFileTextO} \\ \medskip + rédaction du texte et balisage avec un \emph{éditeur de texte} + \end{minipage} + \quad{\Large\faArrowRight}\quad + \begin{minipage}[t]{0.25\linewidth} + \centering + {\Huge\faCogs} \\ \medskip + compilation avec un \emph{moteur} {\TeX} depuis la ligne de commande + \end{minipage} + \quad{\Large\faArrowRight}\quad + \begin{minipage}[t]{0.25\linewidth} + \centering + {\Huge\faFilePdfO} \\ \medskip + visualisation avec une visionneuse externe (Aperçu, + SumatraPDF, etc.) + \end{minipage} +\end{center} + +Les logiciels de rédaction intégrés facilitent grandement les deux +premières étapes --- certains intègrent même une visionneuse PDF pour +englober le processus au complet. Il existe plusieurs de ces +logiciels. Mentionnons, par exemple: +\begin{itemize} +\item \link{http://www.xm1math.net/texmaker/index_fr.html}{Texmaker} + (multiplateforme); +\item \link{https://www.tug.org/texworks/}{TeXworks} (multiplateforme); +\item \link{http://www.texshop.org/}{TeXShop} (macOS seulement); +\item \link{http://www.winedt.com}{WinEdt} (Windows seulement); +\item \link{https://kile.sourceforge.io}{Kile} (Linux); +\item \link{https://www.gnu.org/software/emacs/}{GNU~Emacs} + (multiplateforme) et à peu près tous les bons éditeurs de texte pour + programmeur. +\end{itemize} + +\videobox{Visionnez les vidéos qui illustrent comme composer un + document simple de type \emph{Hello, World!} avec + \link{https://youtu.be/1XKh0f6hFks}{TeXShop sur macOS} et avec + \link{https://youtu.be/EIwsQHJhpOQ}{Texmaker sur Windows}.} + + +\section{Outils de production} +\label{sec:presentation:outils} + +Un petit mot d'abord sur les arcanes de {\TeX}. Dans ce monde, il +existe des \emph{moteurs} et des \emph{formats}. Un moteur {\TeX} est +un programme informatique qui transforme du code source en +représentation d'un document sur une page. Un format est simplement un +ensemble de macro-commandes comprises par un moteur et qui est chargé +par défaut lorsque le moteur est invoqué avec un nom de commande +spécifique. + +Le \autoref{tab:presentation:moteurs} dresse la liste des divers +\emph{moteurs} {\TeX} et des formats (ensembles de macro-commandes) +couramment utilisés aujourd'hui. + +\begin{table} + \centering + \begin{tabular}{llc} + \toprule + Moteur & Format & Fichier de sortie \\ + \midrule + \code{tex} & \emph{plain} \TeX & DVI \\ + \code{tex} (\code{latex}) & \LaTeX & DVI \\ + \code{pdftex} (\code{pdflatex}) & pdf\LaTeX & PDF \\ + \code{xetex} (\code{xelatex}) & \XeLaTeX & PDF \\ + \code{luatex} (\code{lualatex}) & \LuaLaTeX & PDF \\ + \bottomrule + \end{tabular} + \caption{Moteurs et formats les plus courants} + \label{tab:presentation:moteurs} +\end{table} + +\begin{itemize} +\item Les formats les plus usuels sont pdf{\LaTeX} et {\XeLaTeX}. +\item Le moteur \code{pdftex} est le moteur par défaut des + distributions {\LaTeX} modernes. Comme son nom l'indique, ce moteur + produit directement un fichier de sortie en format PDF. C'est la + principale différence par rapport au moteur \code{tex}. +\item Le moteur \code{xetex} peut utiliser directement les polices de + caractères du système d'exploitation. La \autoref{sec:trucs:polices} + traite plus en détail de ce sujet. +\item Le moteur \code{luatex} et le format {\LuaLaTeX} offrent les mêmes + avantages que \code{xetex} et {\XeLaTeX} en plus d'intégrer les + fonctionnalités du langage de programmation + \link{https://www.lua.org}{Lua}. +\item Le format de fichier de sortie DVI, qui est antérieur aux + formats PostScript et PDF, permet de décrire la disposition d'un + document exactement telle qu'elle devrait apparaitre à l'écran ou à + l'impression. C'est un format aujourd'hui plus ou moins tombé en + désuétude depuis la standardisation autour du format PDF. +\end{itemize} + +Le système {\LaTeX} est formé d'un grand nombre de composantes réunies +sous forme d'une \emph{distribution}. La plus populaire distribution +aujourd'hui est % +\link{https://www.tug.org/texlive}{{\TeX}~Live}. % +Elle est administrée par le {\TeX} Users Group. C'est la distribution que +recommandent la Bibliothèque et la Faculté des études supérieures de +l'Université Laval. + +La philosophie de {\TeX}~Live: tout installer. Cette façon de faire +est aujourd'hui réalisable puisque l'espace disque est disponible à +profusion dans les ordinateurs. C'est également la plus simple puisque +à peu près tout ce que l'on est susceptible d'utiliser dans un système +{\TeX} est déjà installé. Sur macOS, on installera plutôt la +distribution % +\link{https://www.tug.org/mactex/}{Mac{\TeX}}, % +qui est étroitement dérivée de {\TeX}~Live. + +L'\hyperref[chap:introduction]{introduction} fournit des liens vers +des vidéos expliquant comment installer la distribution {\TeX}~Live +sur macOS et Windows. + +La distribution % +\link{https://miktex.org}{MiK\TeX} % +demeure également très populaire sur Windows. + +\notebox{% + Quelques faits amusants au sujet de {\TeX}. + \begin{itemize} + \item {\TeX} est aujourd'hui considéré exempt de bogue. D'ailleurs, + Donald Knuth vous offre une récompense (symbolique) si vous en + trouvez un! + \item Le numéro de version de {\TeX} converge vers $\pi$. Au moment + d'écrire ces lignes, le numéro de version était \code{3.14159265}. + \end{itemize} + Consultez les liens suivants pour en savoir plus. + \begin{itemize} + \item \link{https://www.tug.org/whatis.html}{Histoire de \TeX} sur + le site du {\TeX} Users Group (en anglais). + \item {\TeX} sur Wikipedia + (\link{https://fr.wikipedia.org/wiki/TeX}{version française}; + \link{https://en.wikipedia.org/wiki/TeX}{version anglaise}, plus + complète). + \item + \link{https://www.tug.org/TUGboat/tb25-1/beebe-2003keynote.pdf}{Texte + de la conférence} de \citet{Beebe:keynote:2004} à l'occasion des + 25 ans de {\TeX} et \textlogo{METAFONT}. + \end{itemize}} + + +%%% +%%% Exercices +%%% + +\section{Exercices} +\label{sec:presentation:exercices} + +\begin{exercice}[nosol] + Composer un premier document très simple de type \emph{Hello World!} + tel qu'expliqué dans les vidéos mentionnées à la + \autoref{sec:presentation:outils}. +\end{exercice} + +\begin{exercice}[nosol] + À l'aide d'un logiciel intégré de rédaction (Texmaker et + TeXShop\footnote{% + Avant d'ouvrir un premier fichier avec TeXShop, aller dans les + préférences de l'application et changer l'encodage par défaut pour + «Unicode (UTF-8)». Redémarrer ensuite l'application.} + constituent des bonnes options pour débuter), ouvrir et compiler le + fichier \fichier{exercice\_minimal.tex}. +\end{exercice} + +\begin{exercice}[nosol] + Question de voir ce que {\LaTeX} peut faire, compiler le document + élaboré \fichier{exercice\_demo.tex} de la manière suivante: une + fois avec {\LaTeX}; une fois avec {\BibTeX}; deux à trois autres + fois avec {\LaTeX}. +\end{exercice} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "formation-latex-ul" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/solutions.tex b/info/formation-latex-ul/source/solutions.tex new file mode 100644 index 0000000000..17ebe301c2 --- /dev/null +++ b/info/formation-latex-ul/source/solutions.tex @@ -0,0 +1,30 @@ +%%% Copyright (C) 2018 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\chapter{Solutions des exercices} +\label{chap:solutions} + +\input{solutions-bases} +% \input{solutions-organisation} +% \input{solutions-apparence} +\input{solutions-boites} +\input{solutions-tableaux+figures} +\input{solutions-mathematiques} +\input{solutions-bibliographie} +\input{solutions-commandes} +\input{solutions-trucs+astuces} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "formation-latex-ul" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/suite-diapos.tex b/info/formation-latex-ul/source/suite-diapos.tex new file mode 100644 index 0000000000..e5dfa5aa4b --- /dev/null +++ b/info/formation-latex-ul/source/suite-diapos.tex @@ -0,0 +1,42 @@ +%%% Copyright (C) 2018 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\section{Et la suite?} + +\begin{frame} + \frametitle{Pour en savoir plus} + + \begin{columns} + \begin{column}{.6\textwidth} + Le document de référence fournit des détails additionnels et + couvre des concepts plus avancés: + \begin{itemize} + \small + \item boites, tableaux et figures + \item équations mathématiques élaborées + \item bibliographie et citations + \item commandes et environnement sur mesure + \item changement de police + \item diapositives + \item etc. + \end{itemize} + \end{column} + \begin{column}{.4\textwidth} + \includegraphics[height=0.8\textheight,frame]{images/formation-latex-ul} + \end{column} + \end{columns} +\end{frame} + +%%% Local Variables: +%%% TeX-master: "formation-latex-ul-diapos" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/sweave-diapos.tex b/info/formation-latex-ul/source/sweave-diapos.tex new file mode 100644 index 0000000000..a18245ae26 --- /dev/null +++ b/info/formation-latex-ul/source/sweave-diapos.tex @@ -0,0 +1,63 @@ +%%% Copyright (C) 2018 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\section{Programmation lettrée} + +\begin{frame}[fragile=singleslide] + \frametitle{Document source combinant {\LaTeX} et code R} + + \fichier{fichier.Rnw} +\begin{lstlisting}[emph={Sexpr}] +... + +L'utilisateur de R interagit avec l'interprète en entrant +des commandes à l'invite de commande: +<>= +2 + 3 +@ +La commande \verb=exp(1)= donne \Sexpr{exp(1)}, +la valeur du nombre $e$. + +... +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile=singleslide] + \frametitle{Après traitement par Sweave dans R} + + \texttt{Sweave("fichier.Rnw")} + $\rightarrow$ \fichier{fichier.tex} +\begin{lstlisting}[emph={Schunk,Sinput,Soutput}] +... + +L'utilisateur de R interagit avec l'interprète en entrant +des commandes à l'invite de commande: +\begin{Schunk} +\begin{Sinput} +> 2 + 3 +\end{Sinput} +\begin{Soutput} +[1] 5 +\end{Soutput} +\end{Schunk} +La commande \verb=exp(1)= donne 2.71828182845905, +la valeur du nombre $e$. + +... +\end{lstlisting} + +\end{frame} + +%%% Local Variables: +%%% TeX-master: "formation-latex-ul-diapos" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/tableaux+figures.tex b/info/formation-latex-ul/source/tableaux+figures.tex new file mode 100644 index 0000000000..8e8157db3e --- /dev/null +++ b/info/formation-latex-ul/source/tableaux+figures.tex @@ -0,0 +1,1183 @@ +%%% Copyright (C) 2018 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\chapter{Tableaux et figures} +\label{chap:tableaux} + +Les tableaux et graphiques ne sont pas les éléments de texte les plus +simples et rapides à créer avec {\LaTeX}. Les traitements de texte +brillent, ici, avec leurs interfaces graphiques permettant de composer +un tableau ou un graphique simple pièce par pièce avec la souris. + +En revanche, pour ce type de contenu comme pour tout autre, {\LaTeX} +fait ce qu'on lui demande, sans tenter de deviner notre pensée ou, +pire, de prétendre savoir mieux que nous ce que nous voulons faire. À +ce chapitre, les traitements de texte ne brillent plus! Quiconque a +déjà eu de la difficulté à contrôler les bordures d'un tableau, la +hauteur des lignes ou la largeur des colonnes dans un traitement de +texte comprendra combien l'exercice de composition d'un tableau avec +ces outils peut rapidement devenir frustrant. + +Avant de discuter de la création ou de l'insertion de tableaux, de +graphiques et d'images dans un document {\LaTeX}, il convient de +présenter très succinctement quelques règles à suivre pour concevoir +des tableaux clairs et faciles à consulter. + + +\section{De la conception de beaux tableaux} +\label{sec:tableaux:booktabs} + +Les tableaux servent à disposer de l'information sous forme de +grille. Par conséquent, le premier réflexe pour les mettre en forme +consiste souvent à mettre en évidence cette grille par le biais de +filets\footnote{% + Terme typographique pour ce qui est communément appelés des «lignes» + dans le langage courant ou des «bordures» dans les logiciels de + traitement de texte. Dans la documentation en anglais, on parle de + \emph{rules}.} % +horizontaux et verticaux. + +C'est une mauvaise idée, une pratique à éviter. Vraiment! + +Comparer les deux tableaux ci-dessous. Le premier est mis en forme +selon une approche classique supportée depuis toujours par {\LaTeX}: +filets doubles en entête et en pied de tableau, filets simples entre +chaque ligne et entre les colonnes. + +\begin{center} + \begin{tabular}{|>{$}c<{$}|>{$}r<{$}|>{$}r<{$}|>{$}r<{$}|>{$}c<{$}|>{$}c<{$}|} + \hline\hline + i & + \multicolumn{1}{c|}{$v$} & + \multicolumn{1}{c|}{$b_i$} & + \lfloor v/b_i \rfloor & v \bmod b_i & x_i \\ + \hline + 0 & \nombre{91492} & 60 & \nombre{1524} & 52 & 52 \\ + \hline + 1 & \nombre{1524} & 60 & 25 & 24 & 24 \\ + \hline + 2 & 25 & 24 & 1 & 1 & 1 \\ + \hline + 3 & 1 & 365 & 0 & 1 & 1 \\ + \hline\hline + \end{tabular} +\end{center} + +Le second tableau tire profit des fonctionnalités du paquetage +\pkg{booktabs} \citep{booktabs} et des recommandations de son auteur: +les filets horizontaux sont d'épaisseur différente selon qu'ils sont +situés dans l'entête et dans le pied du tableau ou entre les lignes, +l'espace autour des filets horizontaux est plus grand et, surtout, il +n'y a pas de filets verticaux. + +\begin{center} + \begin{tabular}{>{$}c<{$}>{$}r<{$}>{$}r<{$}>{$}r<{$}>{$}c<{$}>{$}c<{$}} + \toprule + i & + \multicolumn{1}{c}{$v$} & + \multicolumn{1}{c}{$b_i$} & + \lfloor v/b_i \rfloor & v \bmod b_i & x_i \\ + \midrule + 0 & \nombre{91492} & 60 & \nombre{1524} & 52 & 52 \\ + 1 & \nombre{1524} & 60 & 25 & 24 & 24 \\ + 2 & 25 & 24 & 1 & 1 & 1 \\ + 3 & 1 & 365 & 0 & 1 & 1 \\ + \bottomrule + \end{tabular} +\end{center} + +La seconde version n'est-elle pas la plus aérée et la plus facile à +consulter? N'est-ce pas que, contrairement à ce que l'on pourrait +penser, les filets verticaux ne sont pas du tout requis pour bien +délimiter les colonnes? + +Tel que mentionné ci-dessus, le paquetage \pkg{booktabs} ajoute des +fonctionnalités à {\LaTeX} pour améliorer la qualité typographique des +tableaux. Dans la % +\doc{booktabs}{http://texdoc.net/pkg/booktabs} % +du paquetage, son auteur énonce quelques règles à suivre pour la mise +en forme des tableaux: +\begin{enumerate} +\item ne \emph{jamais} utiliser de filets verticaux. Si l'information + du côté gauche du tableau semble si différente de celle du côté + droit qu'un filet vertical apparait absolument nécessaire, scinder + simplement l'information dans deux tableaux; +\item ne jamais utiliser de filets doubles; +\item placer les unités (\$, cm, {\textdegree}C, etc.) dans le titre + de la colonne plutôt qu'après chaque valeur dans le corps du + tableau; +\item toujours inscrire un chiffre du côté gauche du séparateur + décimal: $0,1$ et non $,1$ (pratique plus répandue en anglais, où le + séparateur décimal est le point); +\item ne pas utiliser un symbole pour représenter une valeur + répétée (comme $''$ ou ---). Laisser un blanc ou répéter la + valeur s'il subsiste une ambiguïté. +\end{enumerate} + +Nous recommandons évidemment de suivre ces règles et c'est pourquoi la +présente documentation ainsi que les fichiers d'exemples font usage +des commandes de \pkg{booktabs}. + +Les fonctionnalités de \pkg{booktabs} sont intégrées à la classe +\class{memoir} et, par conséquent, à \class{ulthese}. Il n'est donc pas +nécessaire de charger le paquetage avec ces deux classes. + + + +\section{Tableaux} +\label{sec:tableaux:tableaux} + +Peu importe l'outil informatique utilisé, la création d'un tableau +requiert toujours de préciser à l'ordinateur le nombre de colonnes que +contiendra le tableau, l'entête du tableau le cas échéant et le contenu +des différentes cellules. Cette dernière étape nécessite à son tour +une convention pour indiquer les passages à la colonne suivante +ainsi que le passage à la ligne suivante. + +On crée des tableaux dans {\LaTeX} principalement avec les +environnements \Ie{tabular}, \Ie{tabular*} et \Ie{tabularx} (ce +dernier fourni par le paquetage \pkg{tabularx} ou par la classe +\class{memoir}). La syntaxe de ces environnements est: +\begin{lstlisting} +\begin{tabular}`\marg{format}' `\meta{lignes}' \end{tabular} +\begin{tabular*}`\marg{largeur}\marg{format}' `\meta{lignes}' \end{tabular*} +\begin{tabularx}`\marg{largeur}\marg{format}' `\meta{lignes}' \end{tabularx} +\end{lstlisting} +La signification des arguments\footnote{% + Nous avons omis un argument optionnel à peu près jamais utilisé + servant à spécifier l'alignement vertical du tableau par rapport à + la ligne de base externe.} % +est la suivante. Nous ne traitons ici que les options les plus souvent +utilisées. Pour une liste plus exhaustive, consulter la % +\doc{memoir}{http://texdoc.net/pkg/memoir} % +de la classe \class{memoir} (chapitre 11) ou % +\citet[section +\link{https://fr.wikibooks.org/wiki/LaTeX/Tableaux}{Tableaux}]{wikilivres:latex}. + +\begin{list}{}{% + \setlength{\labelsep}{1.5ex} + \settowidth{\labelwidth}{\meta{largeur}} + \setlength{\leftmargin}{\labelwidth} + \addtolength{\leftmargin}{\labelsep} + \setlength{\parsep}{0.5ex plus0.2ex minus0.2ex} + \setlength{\itemsep}{0.3ex} + \renewcommand{\makelabel}[1]{\meta{#1}\hfill}} +% +\item[largeur] Largeur hors tout d'un tableau avec les environnements + \Pe{tabular*} et \Pe{tabularx}. Autrement, avec l'environnement + \Pe{tabular}, la largeur d'un tableau est déterminée automatiquement + pour contenir tout le tableau, quitte à dépasser dans la marge de + droite. + + La largeur du tableau est généralement exprimée en fraction de la + largeur du bloc de texte (longueur \cmd{!textwidth}). Par exemple, + les déclarations suivantes définissent respectivement des tableaux + occupant toute la largeur d'une page et 80~\% de la largeur de la + page: +\begin{lstlisting} +\begin{tabular*}{\textwidth}`\marg{format}' +\end{lstlisting} +\begin{lstlisting} +\begin{tabularx}{0.8\textwidth}`\marg{format}' +\end{lstlisting} + L'environnement \Ie{tabular*} joue sur l'espace entre les colonnes + pour parvenir à la largeur prescrite, alors que \Ie{tabularx} joue + sur la largeur des colonnes (voir ci-dessous). + % +\item[format] Le format des colonnes et, par le fait même, le nombre + de colonnes puisque l'argument doit compter un symbole pour chaque + colonne du tableau. Les principaux symboles de mise en forme des + colonnes sont: + \begin{description} + \item[\normalfont\code{l}] contenu de la colonne aligné à gauche; + \item[\normalfont\code{r}] contenu de la colonne aligné à droite; + \item[\normalfont\code{c}] contenu de la colonne centré; + \item[\normalfont\code{p\marg{lgr}}] contenu de la + colonne traité comme un paragraphe de texte de largeur + \meta{lgr}; + \item[\normalfont\code{X}] [environnement \Pe{tabularx} seulement] + colonne dont la largeur peut être ajustée pour obtenir un tableau + de la largeur prescrite; identique à \code{p} par ailleurs. + \end{description} + Par exemple, la déclaration +\begin{lstlisting} +\begin{tabular}{lrp{5cm}} +\end{lstlisting} + définit un tableau à trois colonnes dont le contenu de la première + est aligné à gauche; celui de la seconde est aligné à droite; celui de + la troisième est en texte libre dans une cellule de 5~cm de largeur. + + Avec la déclaration +\begin{lstlisting} +\begin{tabularx}{\textwidth}{lrX} +\end{lstlisting} + la largeur de la troisième colonne sera plutôt adaptée + automatiquement pour que le tableau occupe toute la largeur de la + page. + + Les symboles \verb=|= et \verb=||= dans \textit{format} servent à + insérer des filets verticaux simples et doubles entre les colonnes, + mais nous avons vu à la \autoref{sec:tableaux:booktabs} que c'est + une pratique à proscrire. + % +\item[lignes] Le contenu des cellules du tableau. Les entrées des + cellules sont séparées par le symbole \verb=&= et les lignes par + {\pixbsbs}. Une cellule peut être vide. +\end{list} + +Outre du texte, les lignes de contenu peuvent contenir certaines +commandes spéciales pour contrôler la mise en forme du tableau. En +premier lieu, la commande +\begin{lstlisting} +\multicolumn`\marg{n}\marg{fmt}\marg{texte}' +\end{lstlisting} +permet de fusionner les \meta{n} cellules suivantes en une seule de +format \meta{fmt} et d'y placer \meta{texte}. Cette commande ne peut +apparaitre qu'au début d'une ligne ou après un symbole de changement +de colonne \verb=&=. Elle est souvent utilisée avec une valeur de +\meta{n} égale à 1 pour changer le format d'une cellule, par exemple +pour centrer le titre d'une colonne qui est autrement alignée à gauche +ou à droite. + +Ensuite, les commandes suivantes\footnote{% + Ce sont les commandes de \pkg{booktabs} et \class{memoir} auxquelles + nous faisions référence à la \autoref{sec:tableaux:booktabs}.} % +servent à insérer des filets horizontaux dans un tableau: +\begin{lstlisting} +\toprule +\midrule +\cmidrule`\marg{m-n}' +\bottomrule +\end{lstlisting} +La commande \cmd{\toprule} insère un filet horizontal épais suivi d'un +espace vertical au début d'un tableau; \cmd{\midrule} insère un filet +horizontal mince précédé et suivi d'un espace vertical entre deux +lignes; \cmd{\cmidrule}\marg{m-n} insère un filet horizontal comme +\cmdprint{\midrule} de la gauche de la colonne \meta{m} à la droite de +la colonne \meta{n}; enfin, \cmd{\bottomrule} insère un filet +horizontal épais précédé d'un espace vertical à la fin d'un tableau. +Une fin de ligne {\bs\bs} doit obligatoirement précéder chacune de ces +commandes, sauf évidemment \cmdprint{\toprule}. + +La hauteur des lignes d'un tableau est déterminée automatiquement en +fonction du contenu de celles-ci. + +\begin{exemple} + \label{exemple:tableaux:tabular:1} + Considérer le tableau suivant: + \begin{center} + \begin{tabular}{lrrr} + \toprule + Produit & Quantité & Prix unitaire (\$) & Prix (\$) \\ + \midrule + Vis à bois & 2 & 9,90 & 19,80 \\ + Clous vrillés & 5 & 4,35 & 21,75 \\ + \midrule + TOTAL & 7 & & 41,55 \\ + \bottomrule + \end{tabular} + \end{center} + La largeur du tableau est ajustée au contenu, la première colonne + est alignée à gauche et toutes les autres, à droite. Le code + ci-dessous permet de créer ce tableau. Remarquer comment les lignes + de contenu sont définies. +\begin{lstlisting} +\begin{tabular}{lrrr} + \toprule + Produit & Quantité & Prix unitaire (\$) & Prix (\$) \\ + \midrule + Vis à bois & 2 & 9,90 & 19,80 \\ + Clous vrillés & 5 & 4,35 & 21,75 \\ + \midrule + TOTAL & 7 & & 41,55 \\ + \bottomrule +\end{tabular} +\end{lstlisting} + \qed +\end{exemple} + +\begin{exemple} + \label{exemple:tableaux:tabular:2} + On souhaite modifier le tableau de + l'\autoref{exemple:tableaux:tabular:1} pour obtenir le tableau + suivant: + \begin{center} + \begin{tabularx}{\textwidth}{Xrrr} + \toprule + \multicolumn{1}{c}{Produit} & + \rule[-8pt]{0mm}{24pt} Quantité & Prix unitaire (\$) & Prix (\$) \\ + \midrule + Vis à bois & 2 & 9,90 & 19,80 \\ + Clous vrillés & 5 & 4,35 & 21,75 \\ + \midrule + TOTAL & 7 & & 41,55 \\ + \bottomrule + \end{tabularx} + \end{center} + Le tableau occupe désormais toute la largeur de la page, la largeur + de la première colonne étant ajustée pour combler l'espace + nécessaire. De plus, le titre de la première colonne est centré et + la hauteur de l'entête est augmentée. + + Le code suivant permet de réaliser cette mise en forme. +\begin{lstlisting} +\begin{tabularx}{\textwidth}{Xrrr} + \toprule + \multicolumn{1}{c}{Produit} & + \rule[-8pt]{0mm}{24pt} Quantité & + Prix unitaire (\$) & Prix (\$) \\ + \midrule + Vis à bois & 2 & 9,90 & 19,80 \\ + Clous vrillés & 5 & 4,35 & 21,75 \\ + \midrule + TOTAL & 7 & & 41,55 \\ + \bottomrule +\end{tabularx} +\end{lstlisting} + L'environnement \Ie{tabularx} sert à créer un tableau de largeur + définie et la commande \cmd{\multicolumn}, à centrer le titre de la + première colonne. On augmente la hauteur de l'entête à l'aide d'une + réglure invisible (\autoref{sec:boites:rulebox}). % + \qed +\end{exemple} + + +\section{Figures et graphiques} +\label{sec:tableaux:figures} + +Il est possible de tracer des figures simples directement avec +{\LaTeX}. Par «simple» on entend: des figures se limitant pour +l'essentiel à du texte, des lignes, des flèches, des ronds et des +ovales. C'est parfois amplement suffisant et, en définitive, assez +pratique puisque le code source d'une figure se trouve alors dans le +même format que le reste du document. + +Pour la création de figures et de graphiques plus complexes, on aura généralement +recours à des logiciels spécialisés externes. {\LaTeX} est ensuite en +mesure d'importer des graphiques dans les formats standards tels que PDF, JPEG +ou PNG, voire même d'insérer dans un document une ou plusieurs pages +d'un document PDF. + +Couvrir les détails de la création et de la manipulation d'images +dépasse largement la portée du présent document. Le reste de cette +section ne présente que les principales fonctionnalités. Le lecteur +qui souhaite en savoir plus pourra se référer aux sources de documentation habituelles figurant à la +bibliographie. + + +\subsection{Figures {\LaTeX}} +\label{sec:tableaux:figures:picture} + +L'environnement \Ie{picture} permet de tracer des figures simples +comme des diagrammes à base de texte, des flux logiques ou des +organigrammes. Quelques logiciels spécialisés de création de +graphiques sont même en mesure d'exporter leurs graphiques dans le +format de \Pe{picture}. + +Une fois conçues, les figures réalisées avec \Pe{picture} sont +simples à modifier; nul besoin de recourir à un logiciel externe pour +le moindre petit changement. Autre avantage: la police du texte +de la figure sera le même que celle du document. + +Pour tracer une figure avec l'environnement \Pe{picture}, on crée +d'abord une grille (invisible) d'une dimension quelconque dans l'unité +de mesure de son choix (autrement dit: les lignes de la grille +peuvent être distantes aussi bien de \code{1pt} que de \code{1cm}). +Ensuite, on dispose des éléments sur la grille en donnant les +coordonnées du point d'ancrage et, le cas échéant, les dimensions de +l'élément, la distance à parcourir ou quelqu'autre information pour +compléter l'élément. C'est souvent plus simple d'esquisser d'abord un modèle au +crayon sur du papier quadrillé. + +La figure ci-dessous illustre ce qu'il est possible de faire avec +l'environnement \Pe{picture}. La consultation du code commenté +correspondant devrait permettre de comprendre les principes de base de +la création de figures. Autrement, l'annexe~D de la % +\doc{memoir}{http://texdoc.net/pkg/memoir} % +de \class{memoir} fournit une bonne introduction à \Pe{picture}. + +(Nous avons tracé la grille en filigrane dans la figure afin de +faciliter la comparaison entre le code et le résultat.) + +\setlength{\unitlength}{7mm} +\begin{center} + \begin{picture}(15,9) + \linethickness{0.3pt} \color{lightgray} + \multiput(0,0)(1,0){16}{\line(0,1){9}} + \multiput(0,0)(0,1){10}{\line(1,0){15}} + \color{black} + + %% boites + \put(0,7){% + \framebox(5,1.5){ + \begin{minipage}{35mm} + \centering L'environnement \\ \texttt{picture} + \end{minipage}}} + + \put(1,4.5){\circle{2}} + \put(1,4.5){\makebox(0,0){\small convient}} + \put(4,3){\circle{2}} + \put(4,3){\makebox(0,0){\small bien}} + + \put(8.5,5.7){pour les diagrammes} + + \thicklines + \put(8,1){\dashbox{0.2}(7,1.5){et autres figures simples.}} + + %% lignes + \thinlines + \put(1,7){\vector(0,-1){1.5}} + + \put(14,5.75){\circle*{0.1}} + \put(14,5.75){\vector(-1,-1){3.25}} + + \thicklines + \put(1,3.5){\line(0,-1){0.5}} + \put(1,3){\vector(1,0){2}} + + \qbezier(4,2)(5.5,-0.5)(7,4.25) + \qbezier(7,4.25)(8.5,9)(10,6.5) + \put(10,6.5){\vector(2,-3){0}} + \end{picture} +\end{center} + +\begingroup + \small +\begin{lstlisting} +\setlength{\unitlength}{7mm} % unité de mesure +\begin{picture}(15,9) % grille 15 x 9 + %%% + %%% On trace d'abord toutes les boites + %%% + %% Rectangle "L'environnement picture" + \put(0,7){% % point d'ancrage (0, 7) + \framebox(5,1.5){% % rectangle 5 x 1,5 plein + \begin{minipage}{35mm} % contenu de la boite + \centering L'environnement \\ \texttt{picture} + \end{minipage}}} + + %% Cercles "convient" et "bien" + \put(1,4.5){\circle{2}} % cercle diamètre 2 + \put(1,4.5){\makebox(0,0){\small convient}} % texte centré + \put(4,3){\circle{2}} % autre cercle + \put(4,3){\makebox(0,0){\small bien}} % texte + + %% Texte "pour les diagrammes" + \put(8.5,5.7){pour les diagrammes} % point d'ancrage (8,5, 5,7) + + %% Rectangle pointillé "et autres figures simples." + \thicklines % lignes grasses + \put(8,1){\dashbox{0.2}(7,1.5){ % rectangle 7 x 1,5 pointillé + et autres figures simples.}} + + %%% + %%% On trace ensuite les lignes entre les boites + %%% + %% De "L'environnement picture" à "convient" + \thinlines % retour aux lignes minces + \put(1,7){\vector(0,-1){1.5}} % flèche vers le bas longueur 1,5 + % [couple (0,-1) donne la pente] + + %% De "pour les diagrammes" à "et autres figures simples." + \put(14,5.75){\circle*{0.1}} % petit cercle plein + \put(14,5.75){\vector(-1,-1){3.25}} % flèche vers sud-ouest + % [3.25 = déplacement hor.] + + %% Entre les deux cercles; requiert deux segments + \thicklines % lignes grasses + \put(1,3.5){\line(0,-1){0.5}} % courte ligne vert. sans flèche + \put(1,3){\vector(1,0){2}} % flèche horizontale + + %% Entre "bien" et "pour les diagrammes"; requiert deux courbes + %% de Bézier placées bout à bout pour produire une courbe en S + \qbezier(4,2)(5.5,-0.5)(7,4.25) % bas du S + \qbezier(7,4.25)(8.5,9)(10,6.5) % haut du S + \put(10,6.5){\vector(2,-3){0}} % pointe de flèche seule +\end{picture} +\end{lstlisting} +\endgroup + + +Il existe quelques outils pour tracer des figures plus complexes +directement avec {\TeX}, dont PSTricks \citep{pstricks} +ou le système Ti\emph{k}Z/\textsc{pgf} \citep{tikz}. +Ce dernier gagne beaucoup en popularité depuis quelques années. + + +\subsection{Importation d'images} +\label{sec:tableaux:figures:graphics} + +Il est aujourd'hui simple d'importer des images de source externes +dans un document {\LaTeX} en utilisant l'un ou l'autre des paquetages +\pkg{graphics} ou \pkg{graphicx} \citep{graphicx} en combinaison avec +un moteur {\TeX} moderne tel que pdf{\LaTeX} ou {\XeLaTeX}. Les +fonctionnalités des deux paquetages sont les mêmes, seules les +syntaxes des commandes diffèrent. Nous présenterons les commandes de +\pkg{graphicx}, plus modernes et conviviales. + +La commande de base pour importer des images dans un document {\LaTeX} est +\begin{lstlisting} +\includegraphics`\oarg{options}\marg{fichier}' +\end{lstlisting} +où \meta{fichier} est le nom du fichier à importer. Il n'est pas +nécessaire de préciser l'extension dans le nom de fichier pour les +types d'images usuelles. Avec les moteurs pdf{\LaTeX} et {\XeLaTeX}, +les types d'images automatiquement reconnus sont au moins PDF, JPEG et +EPS. + +Les \meta{options} de \cmd{\includegraphics}, nombreuses, permettent +de redimensionner une image, de la faire pivoter ou encore de n'en +importer qu'une partie. L'exemple ci-dessous présente les principales +fonctionnalités; consulter la % +\doc{grfguide}{http://texdoc.net/pkg/graphics/} % +pour les détails et d'autres options. + +\begin{exemple} + Le fichier \fichier{ul\_p.pdf} contenant le logo de l'Université + Laval en couleur et en format vectoriel est distribué avec la + présente documentation ainsi qu'avec la classe \class{ulthese}. La + simple commande +\begin{lstlisting} +\includegraphics{ul_p} +\end{lstlisting} + insère le fichier en pleine grandeur dans le document: + \begin{demo} + \includegraphics{ul_p} + \end{demo} + + On peut redimensionner l'image en valeur relative avec l'option + \code{scale} ou en valeur absolue avec les options \code{width} ou + \code{height}: + \begin{demo} + \begin{texample}[0.62\linewidth] +\begin{lstlisting} +%% réduction à 40 % de taille réelle +\includegraphics[scale=0.4]{ul_p} +\end{lstlisting} + \producing + \includegraphics[scale=0.4]{ul_p} + \end{texample} + \medskip + + \begin{texample}[0.62\linewidth] +\begin{lstlisting} +%% réduction à 15 mm de haut +\includegraphics[height=15mm]{ul_p} +\end{lstlisting} + \producing + \includegraphics[height=15mm]{ul_p} + \end{texample} + \end{demo} + (Il est préférable d'utiliser une seule de \code{width} ou + \code{height}. Autrement, ajouter l'option + \lstinline|keepaspectratio=true| pour éviter de déformer l'image.) + + L'option \code{angle} permet de faire pivoter l'image dans le sens + inverse des aiguilles d'une montre autour du coin inférieur gauche + de l'image: + \begin{demo} + \begin{texample}[0.72\linewidth] +\begin{lstlisting} +%% réduction à 25 %, rotation à 45 degrés +\includegraphics[angle=45,scale=0.25]{ul_p} +\end{lstlisting} + \producing + \includegraphics[angle=45,scale=0.25]{ul_p} + \end{texample} + \end{demo} + + Enfin, il y a diverses manières de sélectionner une partie seulement + d'une image. L'option \code{bb} (pour \emph{Bounding Box}) prend + quatre mesures en points PostScript (\autoref{tab:bases:longueurs}) + définissant le coin inférieur gauche et le coin supérieur droit de + la zone à inclure: + \begin{demo} + \begin{texample}[0.72\linewidth] +\begin{lstlisting} +%% extraction du logo seul et réduction +\includegraphics[bb=0 0 102 129,clip=true, + scale=0.4]{ul_p} +\end{lstlisting} + \producing + \includegraphics[bb=0 0 102 129, clip=true, scale=0.4]{ul_p} + \end{texample} + \end{demo} + \qed +\end{exemple} + +La commande \cmd{\includegraphics} permet d'appliquer certaines +transformations aux images importées. Ces transformations peuvent +également s'effectuer à l'aide de commandes externes \emph{après} +l'importation. L'avantage de ces commandes, c'est qu'elles sont +valides tout autant pour du texte que pour des images. + +Le paquetage \pkg{graphicx} définit les commandes suivantes: +\begin{lstlisting} +\rotatebox`\oarg{options}\marg{angle}\marg{texte}' +\scalebox`\marg{échelle-h}\oarg{échelle-v}\marg{texte}' +\resizebox`\marg{dim-h}\marg{dim-v}\marg{texte}' +\reflectbox`\marg{texte}' +\end{lstlisting} +Dans tous les cas, \meta{texte} peut être du simple texte ou une boite +quelconque, y compris le résultat de \cmd{\includegraphics}. Ainsi, +\begin{lstlisting} +\rotatebox{45}{\includegraphics{ul_p}} +\end{lstlisting} +et +\begin{lstlisting} +\includegraphics[angle=45]{ul_p} +\end{lstlisting} +donnent le même résultat. + +Avec \cmd{\scalebox}, la mise à l'échelle \meta{échelle-h} s'applique +par défaut autant à l'horizontale qu'à la verticale. Autrement, +\meta{texte} est déformé. Avec \cmd{\resizebox}, on peut spécifier +l'une de \meta{dim-h} ou \meta{dim-v} et \verb=!= pour l'autre valeur +pour éviter de déformer \meta{texte}. + +\begin{exemple} + Voici des exemples d'utilisation des commandes \cmd{\rotatebox}, + \cmd{\scalebox}, \cmd{\resizebox} et \cmd{\reflectbox} avec du texte: + \begin{demo} + \begin{texample}[0.55\linewidth] +\begin{lstlisting} +\rotatebox{135}{texte} +\end{lstlisting} + \producing + \rotatebox{135}{texte} + \end{texample} + + \begin{texample}[0.55\linewidth] +\begin{lstlisting} +\scalebox{1.5}{texte} +\end{lstlisting} + \producing + \scalebox{1.5}{texte} + \end{texample} + + \begin{texample}[0.55\linewidth] +\begin{lstlisting} +\scalebox{1.5}[0.75]{texte} +\end{lstlisting} + \producing + \scalebox{1.5}[0.75]{texte} + \end{texample} + + \begin{texample}[0.55\linewidth] +\begin{lstlisting} +\resizebox{3cm}{!}{texte} +\end{lstlisting} + \producing + \resizebox{3cm}{!}{texte} + \end{texample} + + \begin{texample}[0.55\linewidth] +\begin{lstlisting} +\reflectbox{texte} +\end{lstlisting} + \producing + \reflectbox{texte} + \end{texample} + \end{demo} + \qed +\end{exemple} + + + +\subsection{Insertion de documents PDF} +\label{sec:tableaux:figures:pdfpages} + +Il est parfois utile d'insérer dans un document {\LaTeX} une ou +plusieurs pages d'un autre document en format PDF, et ce, sans avoir à +se soucier des marges respectives des deux documents. Si l'on utilise +les moteurs pdf{\LaTeX} ou {\XeLaTeX}, le très pratique paquetage +\pkg{pdfpages} \citep{pdfpages} fournit la commande +\begin{lstlisting} +\includepdf`\oarg{options}\marg{fichier}' +\end{lstlisting} +Les \meta{options} sont très nombreuses; consulter la % +\doc{pdfpages}{http://texdoc.net/pkg/pdfpages/}. + +\begin{exemple} + Il n'est pas rare que les couvertures avant et arrière d'un document + soient réalisées dans un logiciel spécialisé de création graphique. + Supposons que les deux couvertures sont sauvegardées en format PDF + dans un fichier \fichier{couvertures.pdf}. Pour les utiliser dans le + document, il suffit de placer aux endroits appropriés les commandes +\begin{lstlisting} +\includepdf[pages=1]{couvertures} +\includepdf[pages=2]{couvertures} +\end{lstlisting} + \qed +\end{exemple} + + + +\section{Éléments flottants} +\label{sec:tableaux:floats} + +Dans la terminologie de {\LaTeX}, un élément flottant\footnote{% + \emph{Float} en anglais.} % +est un bloc de contenu (une boite, en fait) que le logiciel pourra +positionner sur la page et dans le document plus ou moins +automatiquement en fonction d'un algorithme prédéfini. C'est une +fonctionnalité très évoluée de {\LaTeX}. + +Pourquoi voudrait-on laisser {\LaTeX} décider où un élément de contenu +devrait se retrouver dans notre document? D'abord et avant tout pour +les tableaux et les figures. + +En effet, les tableaux et les figures occupent souvent beaucoup +d'espace vertical dans la page. S'il ne reste plus assez de place pour +y afficher un tel élément de contenu, {\LaTeX} devra le déplacer au +début de la page suivante et cela risque de produire une page +inesthétique car insuffisamment remplie\footnote{% + \emph{Underful \cs{vbox}} dans le jargon de {\TeX}.}. % +Les traitements de texte génèrent sans rechigner des pages à demi +remplies dans de telles situations. + +En définissant un élément comme flottant, on laisse plutôt à +{\LaTeX} la possibilité de le disposer au meilleur endroit en fonction +de la taille de l'élément, du contenu du document et de diverses +règles typographiques. + +On crée des éléments flottants avec les environnements \Ie{table} +et \Ie{figure}: +\begin{lstlisting} +\begin{table}`\oarg{pos}' `\meta{tableau}' \end{table} +\begin{figure}`\oarg{pos}' `\meta{figure}' \end{figure} +\end{lstlisting} +Ci-dessus, \meta{tableau} et \meta{figure} représentent le code source +d'un tableau ou d'une figure avec possiblement une commande +\cmd{caption}, tel que traité plus loin. + +L'argument optionnel \meta{pos} permet d'indiquer à {\LaTeX} +la ou les positions \emph{souhaitées} pour le tableau ou la figure dans la page. +Lorsqu'il est question d'éléments flottants, il est très difficile de donner des +ordres fermes à {\LaTeX} et l'effet de l'argument \meta{pos} est +souvent déconcertant. Aussi vaut-il souvent mieux ne rien indiquer et +laisser {\LaTeX} faire à sa guise. Le résultat demeure assez +prévisible puisque {\LaTeX} tâchera d'insérer l'élément flottant dans +le document \emph{dès que possible} sous réserve des conditions +suivantes: +\begin{itemize} +\item l'élément flottant ne peut apparaitre dans le document avant la + page où l'élément est défini; +\item l'élément sera placé de préférence dans le haut de la page + courante, puis dans le bas et enfin sur une page séparée ne pouvant + contenir que des éléments flottants, mais pas de texte. +\end{itemize} + +Si la décision de {\LaTeX} ne convient pas, il est possible de +l'infléchir avec une combinaison d'une ou plusieurs des lettres +suivantes dans l'argument \meta{pos}; +\begin{description} +\item[\normalfont\code{b}] placer l'élément au bas (\emph{bottom}) de la page; +\item[\normalfont\code{h}] placer l'élément ici (\emph{here}), à + l'endroit où il est défini dans le code source; +\item[\normalfont\code{p}] placer l'élément sur une page séparée; +\item[\normalfont\code{t}] placer l'élément au haut (\emph{top}) de la page; +\item[\normalfont\code{!}] essayer plus fort de placer l'élément à + l'endroit spécifié dans le reste de l'argument. +\end{description} +La valeur par défaut de l'argument \meta{pos} est \code{tbp}. La +section~10.4 de la % +\doc{memoir}{http://texdoc.net/pkg/memoir/} % +de \class{memoir} explique plus en détail la signification des valeurs +ci-dessus. Le lecteur qui voudrait vraiment \emph{tout} savoir sur la +disposition des éléments flottants pourra consulter +\cite{Mittelbach:floats:2014}. + +\begin{exemple} + On reprend le tableau de l'\autoref{exemple:tableaux:tabular:1}, mais cette + fois défini à l'intérieur d'un environnement \Pe{table}: +\begin{lstlisting} +\begin{table} + \centering + \begin{tabular}{lrrr} + \toprule + Produit & Quantité & Prix unitaire (\$) & Prix (\$) \\ + \midrule + Vis à bois & 2 & 9,90 & 19,80 \\ + Clous vrillés & 5 & 4,35 & 21,75 \\ + \midrule + TOTAL & 7 & & 41,55 \\ + \bottomrule + \end{tabular} +\end{table} +\end{lstlisting} + \begin{table} + \centering + \begin{tabular}{lrrr} + \toprule + Produit & Quantité & Prix unitaire (\$) & Prix (\$) \\ + \midrule + Vis à bois & 2 & 9,90 & 19,80 \\ + Clous vrillés & 5 & 4,35 & 21,75 \\ + \midrule + TOTAL & 7 & & 41,55 \\ + \bottomrule + \end{tabular} + \end{table} + Remarquer où {\LaTeX} a automatiquement placé le tableau dans le + document en fonction des règles précitées. % + \qed +\end{exemple} + +Dans un document soigné, tout tableau et toute figure devrait +comporter une légende ainsi qu'un numéro afin de pouvoir les +annoncer et y faire référence dans le texte («comme l'illustre la +figure~3\dots»). Cela +permet à la fois de guider le lecteur au fil de sa lecture et de +construire une liste des tableaux et des figures\footnote{% + Obtenues respectivement avec les commandes \cmd{\listoftables} et + \cmd{\listoffigures} mentionnées à la + \autoref{sec:organisation:tdm}.} % +dans les pages liminaires d'un long document. + +Pour ajouter une légende à un tableau ou une figure, il suffit +d'utiliser à l'intérieur des environnements \Pe{table} et \Pe{figure} +la commande +\begin{lstlisting} +\caption`\oarg{texte\_court}\marg{texte}' +\end{lstlisting} +où \meta{texte} est le texte de la légende. Si celui-ci est long +(plus d'une ligne), on peut en fournir une version abrégée dans +l'argument optionnel \meta{texte\_court}. C'est cette version abrégée +qui sera utilisée dans la liste des tableaux ou dans la liste des +figures. + +La commande \cmd{\caption} insère, à l'endroit où elle +apparait dans l'environnement, une légende de la forme «\textsc{Table} +\emph{n}~--~\meta{texte}» pour un tableau ou «\textsc{Figure} +\emph{n}~--~\meta{texte}» pour une figure. Le texte de la légende est +centré sur la page lorsqu'il fait moins d'une ligne; dans le cas +contraire il est disposé comme un paragraphe normal. + +\tipbox{Les anciennes version du style français de \pkg{babel} utilisaient + les étiquettes plus neutres «\textsc{Tab.}» et «\textsc{Fig.}» + dans les légendes des tableaux et figures. Pour utiliser --- comme + dans le présent document --- ces versions plutôt que les versions + par défaut ajouter dans le préambule les commandes de la + \autoref{fig:tableaux+figures:captionsfrench}.} + +\begin{figure} +\begin{lstlisting} +\addto\captionsfrench{% + \def\frenchtablename{{\scshape Tab.}}} +\addto\captionsfrench{% + \def\frenchfigurename{{\scshape Fig.}}} +\end{lstlisting} + \caption{Commandes pour modifier les étiquettes des tableaux et des + figures utilisées par \pkg{babel}} + \label{fig:tableaux+figures:captionsfrench} +\end{figure} + +Pour faire référence à un tableau ou à une figure dans le texte, il +faut utiliser le système de renvois automatiques de {\LaTeX} +(\autoref{sec:organisation:renvois}). On attribue une étiquette à l'élément +flottant en plaçant la commande \cmd{\label} dans le texte de la +commande \cmd{\caption} ou dans son voisinage immédiat. Les commandes +\cmd{\ref} ou \cmd{\autoref} servent ensuite à insérer des renvois dans +le texte. + +L'exemple suivant présente finalement la recette complète pour composer +un tableau et une figure dans {\LaTeX}, légende et renvoi inclus. + +\begin{exemple} + Le code source de la \autoref{fig:tableaux:captions} crée + le \autoref{tab:tableaux:captions}. + \begin{figure} +\begin{lstlisting} +\begin{table} + \centering + \caption{Tableau correspondant au code + de la \autoref{fig:[...]}} + \label{tab:[...]} + \begin{tabular}{lrrr} + \toprule + Produit & Quantité & Prix unitaire (\$) & Prix (\$) \\ + \midrule + Vis à bois & 2 & 9,90 & 19,80 \\ + Clous vrillés & 5 & 4,35 & 21,75 \\ + \midrule + TOTAL & 7 & & 41,55 \\ + \bottomrule + \end{tabular} +\end{table} +\end{lstlisting} + \caption{Code source pour créer le \autoref{tab:tableaux:captions}} + \label{fig:tableaux:captions} + \end{figure} + \begin{table} + \centering + \caption{Tableau correspondant au code de la \autoref{fig:tableaux:captions}} + \label{tab:tableaux:captions} + \begin{tabular}{lrrr} + \toprule + Produit & Quantité & Prix unitaire (\$) & Prix (\$) \\ + \midrule + Vis à bois & 2 & 9,90 & 19,80 \\ + Clous vrillés & 5 & 4,35 & 21,75 \\ + \midrule + TOTAL & 7 & & 41,55 \\ + \bottomrule + \end{tabular} + \end{table} + \qed +\end{exemple} + +Les environnements \Pe{table} et \Pe{figure} créent des éléments +flottants qui, par ailleurs, sont des boites verticales standards +(\autoref{sec:boites:parbox}). Il est donc permis d'y mettre à peu +près n'importe quoi, mais surtout plus d'un tableau ou plus d'une +figure (ou même une combinaison des deux). Les environnements +\Pe{minipage} (\autoref{sec:boites:parbox}) se révèlent alors +particulièrement utiles pour disposer les éléments de contenu dans la +boite. + +\begin{exemple} + \label{exemple:tableaux:grille} + La \autoref{fig:tableaux:grille} contient quatre images sous forme + de grille $2 \times 2$. Le code ci-dessous démontre comment parvenir + à cette disposition à l'aide de boites verticales créées avec + l'environnement \Pe{minipage}. + \begin{figure} + \fcolorbox{lightgray}{white}{\begin{minipage}{0.45\linewidth} + \includegraphics[scale=0.4]{ul_p} + \end{minipage}} + \hfill + \fcolorbox{lightgray}{white}{\begin{minipage}{0.45\linewidth} + \reflectbox{\includegraphics[scale=0.4]{ul_p}} + \end{minipage}} + \newline + \fcolorbox{lightgray}{white}{\begin{minipage}{0.45\linewidth} + \includegraphics[scale=0.4,angle=45]{ul_p} + \end{minipage}} + \hfill + \fcolorbox{lightgray}{white}{\begin{minipage}{0.45\linewidth} + \reflectbox{\includegraphics[scale=0.4,angle=45]{ul_p}} + \end{minipage}} + \caption[Exemple de disposition de plusieurs graphiques dans une + même figure flottante]{% + Exemple de disposition de plusieurs graphiques dans une + même figure flottante. Les rectangles en grisé indiquent les + limites des boites verticales.} + \label{fig:tableaux:grille} + \end{figure} +\begin{lstlisting} +\begin{figure} + \begin{minipage}{0.45\linewidth} + \includegraphics[scale=0.4]{ul_p} + \end{minipage} + \hfill + \begin{minipage}{0.45\linewidth} + \reflectbox{\includegraphics[scale=0.4]{ul_p}} + \end{minipage} + \newline + \begin{minipage}{0.45\linewidth} + \includegraphics[scale=0.4,angle=45]{ul_p} + \end{minipage} + \hfill + \begin{minipage}{0.45\linewidth} + \reflectbox{\includegraphics[scale=0.4,angle=45]{ul_p}} + \end{minipage} +\end{figure} +\end{lstlisting} + \qed +\end{exemple} + +Lorsqu'une figure ou un tableau compte plusieurs éléments, comme à +l'exemple précédent, il peut être souhaitable d'ajouter pour chacun +une sous-légende. L'\autoref{ex:tableaux:subcaptions} explique +comment y parvenir. La section~10.9 de la % + \doc{memoir}{http://texdoc.net/pkg/memoir} % +de \class{memoir} comporte de nombreux détails additionnels sur les +sous-légendes. + + +%%% +%%% Exercices +%%% + +\section{Exercices} +\label{sec:tableaux:exercices} + +\Opensolutionfile{solutions}[solutions-tableaux+figures] + +\begin{Filesave}{solutions} +\section*{Chapitre \ref*{chap:tableaux}} +\addcontentsline{toc}{section}{Chapitre \protect\ref*{chap:tableaux}} + +\end{Filesave} + +\begin{exercice} + Reproduire le tableau ci-dessous à l'aide d'un environnement + \Pe{tabular}. Utiliser le gabarit de document + \fichier{exercice\_gabarit.tex}. + + La première colonne est alignée à gauche, la seconde est un bloc de + texte de $7,5$~cm et la troisième est alignée à droite. Le symbole + {\No} dans l'entête est produit par la commande \cmd{\No} de + \pkg{babel}. Le dernier prix est composé avec la commande + \cmd{\nombre} de \pkg{numprint}. + \begin{center} + \begin{tabular}{lp{7.5cm}r} + \toprule + {\No} lot & Description & Prix (\$) \\ + \midrule + U-236 & Ordinateur portable MacBook Air 13~pouces mi-2013, + processeur 1,3~GHz, 8~Go RAM, disque SSD 250~Go & 998 \\ + U-374 & Chaise de bureau ergonomique ajustable de 8 façons, + revêtement de tissu gris foncé & 275 \\ + U-588 & Table de travail en L & \nombre{1125} \\ + \bottomrule + \end{tabular} + \end{center} + \begin{sol} + Les paquetages \pkg{babel} et \pkg{numprint} étant chargés dans le + fichier de gabarit, le code pour créer le tableau est le suivant: +\begin{lstlisting} +\begin{tabular}{lp{7.5cm}r} + \toprule + {\No} lot & Description & Prix (\$) \\ + \midrule + U-236 & Ordinateur [...] & 998 \\ + U-374 & Chaise [...] & 275 \\ + U-588 & Table [...] & \nombre{1125} \\ + \bottomrule +\end{tabular} +\end{lstlisting} + \end{sol} +\end{exercice} + +\begin{exercice} + Apporter au tableau de l'exercice précédent les modifications + suivantes: centrer le titre de la deuxième colonne; ajuster + automatiquement la largeur du tableau au bloc de texte sur la page + avec un environnement \Pe{tabularx}. + \begin{sol} + Pour effectuer les modifications demandées, il faut: + \begin{enumerate}[i)] + \item utiliser la commande \cmd{\multicolumn} dans l'entête du + tableau pour centrer le titre de la deuxième colonne sans + autrement centrer le contenu de la colonne; + \item remplacer l'environnement \Pe{tabular} par l'environnement + \Pe{tabularx} de \class{memoir}, spécifier une largeur de + tableau \cs{textwidth}, changer le format de la deuxième colonne + pour \code{X} afin que la largeur de celle-ci s'ajuste + automatiquement pour combler celle du tableau. + \end{enumerate} +\begin{lstlisting} +\begin{tabularx}{\textwidth}{lXr} + \toprule + {\No} lot & \multicolumn{1}{c}{Description} + & Prix (\$) \\ + \midrule + U-236 & Ordinateur [...] & 998 \\ + U-374 & Chaise [...] & 275 \\ + U-588 & Table [...] & \nombre{1125} \\ + \bottomrule +\end{tabularx} +\end{lstlisting} + \end{sol} +\end{exercice} + +\begin{exercice} + \label{ex:tableaux:subcaptions} + L'\autoref{exemple:tableaux:grille} montre comment intégrer + plusieurs figures (ou tableaux) à l'intérieur d'un même + environnement flottant en les disposant dans des boites verticales. + Dans de tels cas, il peut être souhaitable de fournir une légende + pour l'ensemble du flottant, mais aussi des sous-légendes pour + chaque tableau ou figure. + + Avec les classes \class{ulthese} et \class{memoir}, la production de + sous-légendes requiert d'abord de déclarer, dans le préambule du + document, son intention d'en créer pour les environnements flottants + \Pe{table} ou \Pe{figure} avec, selon le cas, les commandes +\begin{lstlisting} +\newsubfloat{table} +\newsubfloat{figure} +\end{lstlisting} + Ensuite, on utilise la commande +\begin{lstlisting} +\subcaption`\marg{texte}' +\end{lstlisting} + de la même manière que \cmd{\caption}. + + Le fichier \fichier{exercice\_subcaption.tex} contient la structure + de base pour composer deux tableaux côte à côte. Ajouter des + sous-légendes à l'intérieur de l'environnement flottant. + \begin{sol} + Tout d'abord, remarquer que la commande +\begin{lstlisting} +\newsubfloat{table} +\end{lstlisting} + est déjà présente dans le préambule du fichier. Si l'on souhaite + placer des sous-légendes au-dessus de chacun des deux tableaux, le + code du tableau devient: +\begin{lstlisting} +\begin{table} + \caption{Conversion du nombre décimal $23,31$ + en binaire.} + \begin{minipage}[t]{0.45\linewidth} + \subcaption`\marg{texte}' % ajout + \begin{tabular*}{\linewidth}{crrcc} + ... + \end{tabular*} + \end{minipage} + \hfill + \begin{minipage}[t]{0.45\linewidth} + \subcaption`\marg{texte}' % ajout + \begin{tabular*}{\linewidth}{ccccc} + ... + \end{tabular*} + \end{minipage} +\end{table} +\end{lstlisting} + \end{sol} +\end{exercice} + +\begin{exercice} + Utiliser le fichier \fichier{exercice\_gabarit.tex} pour composer un + document qui insère, disons, la page couverture du présent document + à l'aide des fonctionnalités du paquetage \pkg{pdfpages} décrites à + la \autoref{sec:tableaux:figures:pdfpages}. + \begin{sol} + Le préambule du document devrait contenir la déclaration +\begin{lstlisting} +\usepackage{pdfpages} +\end{lstlisting} + pour charger le paquetage \pkg{pdfpages}. Ensuite, à l'endroit où + l'on souhaite insérer la couverture du présent document dans le + document, il s'agit de placer la commande +\begin{lstlisting} +\includepdf[pages=1]{formation-latex-ul} +\end{lstlisting} + \end{sol} +\end{exercice} + +\begin{exercice}[nosol] + Le document \fichier{exercice\_demo.tex} contient plusieurs éléments + flottants, tableaux et figures. Examiner le code et modifier + l'argument optionnel de position d'un flottant pour voir son effet + sur la mise en page du document. +\end{exercice} + +\Closesolutionfile{solutions} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "formation-latex-ul" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/tableaux-diapos.tex b/info/formation-latex-ul/source/tableaux-diapos.tex new file mode 100644 index 0000000000..03bc0c78d4 --- /dev/null +++ b/info/formation-latex-ul/source/tableaux-diapos.tex @@ -0,0 +1,105 @@ +%%% Copyright (C) 2018 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\section{Tableaux} + +\begin{frame} + \frametitle{De la conception de beaux tableaux} + + Lequel de ces deux tableaux est le plus facile à consulter? + \begin{center} + \hfill + \begin{tabular}{|>{$}c<{$}|>{$}r<{$}|>{$}r<{$}|} + \hline\hline + i & + \multicolumn{1}{c|}{$v$} & + \multicolumn{1}{c|}{$b_i$} \\ + \hline + 0 & \nombre{91492} & 60 \\ + \hline + 1 & \nombre{1524} & 60 \\ + \hline + 2 & 25 & 24 \\ + \hline + 3 & 1 & 365 \\ + \hline\hline + \end{tabular} + \hfill + \begin{tabular}{>{$}c<{$}>{$}r<{$}>{$}r<{$}} + \toprule + i & + \multicolumn{1}{c}{$v$} & + \multicolumn{1}{c}{$b_i$} \\ + \midrule + 0 & \nombre{91492} & 60 \\ + 1 & \nombre{1524} & 60 \\ + 2 & 25 & 24 \\ + 3 & 1 & 365 \\ + \bottomrule + \end{tabular} + \hspace*{\fill} + \end{center} + + \pause + Deux règles d'or: + \begin{enumerate} + \item \alert{jamais} de filets verticaux + \item pas de filets doubles + \end{enumerate} +\end{frame} + +\begin{frame}[fragile=singleslide] + \frametitle{Paquetage essentiel} + + \begin{itemize} + \item Vous voulez utiliser le paquetage \pkg{booktabs} +\begin{lstlisting} +\usepackage{booktabs} +\end{lstlisting} + \item Fonctionnalités intégrées dans la classe \class{memoir} + \end{itemize} +\end{frame} + +\begin{frame}[fragile=singleslide] + \frametitle{Exemple de tableau} + + \begin{center} + \begin{tabular}{lcrr} + \toprule + Produit & Quantité & Prix unitaire (\$) & Prix (\$) \\ + \midrule + Vis à bois & 2 & 9,90 & 19,80 \\ + Clous vrillés & 5 & 4,35 & 21,75 \\ + \midrule + TOTAL & 7 & & 41,55 \\ + \bottomrule + \end{tabular} + \end{center} + +\begin{lstlisting} +\begin{tabular}{lcrr} + \toprule + Produit & Quantité & Prix unitaire (\$) & Prix (\$) \\ + \midrule + Vis à bois & 2 & 9,90 & 19,80 \\ + Clous vrillés & 5 & 4,35 & 21,75 \\ + \midrule + TOTAL & 7 & & 41,55 \\ + \bottomrule +\end{tabular} +\end{lstlisting} +\end{frame} + +%%% Local Variables: +%%% TeX-master: "formation-latex-ul-diapos" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/trucs+astuces.tex b/info/formation-latex-ul/source/trucs+astuces.tex new file mode 100644 index 0000000000..ba1d74450d --- /dev/null +++ b/info/formation-latex-ul/source/trucs+astuces.tex @@ -0,0 +1,989 @@ +%%% Copyright (C) 2018 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\chapter{Trucs et astuces divers} +\label{chap:trucs} + +En clôture de l'ouvrage, ce chapitre traite de différents sujets que +même une personne débutant avec {\LaTeX} voudra assez rapidement +aborder, comme le contrôle des sauts de ligne et des sauts de page, la +modification de la police du document, l'utilisation de la couleur ou +l'insertion d'hyperliens dans le fichier de sortie PDF. Nous offrons +également de courtes introductions à des usages plus spécialisés de +{\LaTeX} comme la mise en page de code informatique, la production de +diapositives ou la programmation lettrée. Enfin, nous expliquons +sommairement comme assurer de manière efficace la gestion des versions +de ses documents, surtout dans un contexte de travail collaboratif. + +\section{Contrôle de la disposition du texte} +\label{sec:trucs:controle} + +Des algorithmes élaborés permettent généralement à {\LaTeX} de +disposer le texte harmonieusement sur la page. Néanmoins, il +est parfois nécessaire d'effectuer soi-même de menus ajustements, +notamment pour les sauts de page et la coupure de mots. + +\subsection{Sauts de ligne et de page} +\label{sec:trucs:controle:sauts} + +Il est assez rarement nécessaire avec {\LaTeX} de devoir forcer les +retours à la ligne. Chose certaine, l'on devrait toujours utiliser une +ligne blanche dans le code source pour identifier un changement de +paragraphe. + +Cela dit, les commandes suivantes permettent d'insérer un saut de +ligne manuellement lorsque requis: +\begin{lstlisting} +\\ +\\`\oarg{longueur}' +\newline +\end{lstlisting} +La commande {\pixbsbs} est connue: elle sert aussi à délimiter les +lignes dans les tableaux (\autoref{sec:tableaux:tableaux}) et les lignes +d'une suite d'équations (\autoref{sec:math:align}). L'argument optionnel +\oarg{longueur} permet d'insérer un blanc entre les deux lignes; la +\autoref{sec:bases:longueurs} explique comment spécifier une +longueur. + +Généralement équivalente à {\bs\bs}, la commande \cmd{\newline} est +parfois nécessaire, notamment pour insérer un changement de ligne à +l'intérieur d'une cellule d'un tableau ou à l'intérieur d'un titre de +section. Quand {\bs\bs} ne fonctionne pas, essayer +\cmdprint{\newline}. + +\begin{exemple} + La commande {\bs\bs} est particulièrement utile --- voire nécessaire + --- pour disposer des boites à l'intérieur d'une figure. + L'utilisation de l'argument \meta{longueur} permet alors de + contrôler l'espacement vertical entre les éléments. Comparer les + deux exemples ci-dessous. + \begin{demo} + \begin{texample}[0.55\linewidth] +\begin{lstlisting} +\begin{minipage}{1.0\linewidth} + \framebox[\linewidth]{texte} +\end{minipage} \\ +\begin{minipage}{1.0\linewidth} + \framebox[\linewidth]{texte} +\end{minipage} +\end{lstlisting} + \producing + \begin{minipage}{1.0\linewidth} + \framebox[\linewidth]{texte} + \end{minipage} + \begin{minipage}{1.0\linewidth} + \framebox[\linewidth]{texte} + \end{minipage} + \end{texample} + + \begin{texample}[0.55\linewidth] +\begin{lstlisting} +\begin{minipage}{1.0\linewidth} + \framebox[\linewidth]{texte} +\end{minipage} \\`\textbf{[6pt]}' +\begin{minipage}{1.0\linewidth} + \framebox[\linewidth]{texte} +\end{minipage} +\end{lstlisting} + \producing + \begin{minipage}{1.0\linewidth} + \framebox[\linewidth]{texte} + \end{minipage} \\[6pt] + \begin{minipage}{1.0\linewidth} + \framebox[\linewidth]{texte} + \end{minipage} + \end{texample} + \end{demo} + \qed +\end{exemple} + +Les commandes +\begin{lstlisting} +\newpage +\clearpage +\cleartorecto % classe memoir seulement +\cleartoverso % classe memoir seulement +\end{lstlisting} +permettent d'insérer manuellement un saut de page pour éviter une +coupure malheureuse. La commande de base pour insérer un saut +n'importe où dans la page est \cmd{\newpage}. La commande +\cmd{\clearpage}, quant à elle, va également s'assurer d'afficher tous +les éléments flottants (\autoref{sec:tableaux:floats}) en attente de +disposition. + +Les commandes \cmd{\cleartorecto} et \cmd{\cleartoverso}, propres à la +classe \class{memoir} permettent respectivement de passer +automatiquement à une page recto ou à une page verso. Évidemment, elles +n'ont d'utilité que dans les documents recto verso. + +Moins directives, les commandes +\begin{lstlisting} +\pagebreak`\oarg{n}' +\enlargethispage`\marg{longueur}' +\end{lstlisting} +permettent de seulement aider {\LaTeX} à gérer les sauts de page à un +endroit précis. La commande \cmd{\pagebreak} est intéressante +lorsque utilisée avec son argument optionnel \meta{n}: celui-ci +indique, par le biais d'un nombre entier entre 0 et 4, à quel point +nous \emph{recommandons} à {\LaTeX} d'insérer un saut de page à +l'endroit où la commande apparait (0 étant une faible recommandation +et 4, une forte). + +La commande \cmd{\enlargethispage}, comme son nom l'indique, permet +d'allonger une page de \meta{longueur} pour y faire tenir plus de +texte. C'est une commande particulièrement utile pour éviter que la +toute dernière ligne d'un chapitre ou d'un document se retrouve seule sur +une page. + +\subsection{Coupure de mots} +\label{sec:trucs:controle:coupure} + +La coupure automatique des mots en fin de ligne est toujours active +avec {\LaTeX}. C'est d'ailleurs pourquoi il importe d'indiquer à +{\LaTeX} dans quelle langue est le texte (lorsque ce n'est pas en +anglais) avec les commandes du paquetage \pkg{babel}. + +Il existe deux façons de contrôler la coupure de mots. La première, +principalement utilisée lorsque {\LaTeX} refuse de couper un mot en +fin de ligne, consiste à insérer des \emph{suggestions} d'endroits où +couper le mot avec la commande \cmd{\-}. Par exemple, en écrivant +\verb=vrai\-sem\-blance=, on indique à {\LaTeX} qu'il est possible de +diviser le mot en \emph{vrai-semblance} ou \emph{vraisem-blance}. + +La seconde méthode, celle-là surtout utilisée lorsque {\LaTeX} ne +reconnait pas des mots qui reviennent souvent dans le document, +consiste à fournir dans le préambule une liste d'exceptions avec la +commande +\begin{lstlisting} +\hyphenation`\marg{liste}' +\end{lstlisting} +La \meta{liste} est une suite de mots, séparés par des virgules, des +blancs ou des retours à la ligne, dans lesquels les points de coupure +sont identifiés par un trait d'union. + +\begin{exemple} + La commande suivante, insérée dans le préambule, permet d'ajouter + des points de coupure aux mots «puisque», «constante» et + «vraisemblance» pour l'ensemble du document. +\begin{lstlisting} +\hyphenation{puis-que,cons-tante,vrai-sem-blance} +\end{lstlisting} + \qed +\end{exemple} + +\importantbox{Règle générale, garder les opérations d'ajustements de + la mise en page --- position des éléments flottants, sauts de page, + lignes trop longues, etc. --- pour la toute fin de la rédaction.} + + +\section{Au-delà de la police Computer Modern} +\label{sec:trucs:polices} + +{\CM% + Les documents {\LaTeX} standards sont facilement reconnaissables par + leur police par défaut, Computer Modern --- celle utilisée dans ce + paragraphe. Pour qui souhaitait briser la relative monotonie induite + par cette uniformité, il a longtemps été difficile d'utiliser une + autre police. Fort heureusement, la situation a beaucoup évolué et + il est aujourd'hui assez simple de produire des documents {\LaTeX} + utilisant des polices variées.} + +Avant d'aller plus loin, une mise en garde: si un document contient +plus que quelques équations mathématiques très simples, le choix de +police devient très restreint. La raison: peu de polices comprennent +des symboles mathématiques et les informations nécessaires pour les +assembler selon les hauts standards qualité usuels de {\LaTeX}. + +Cela dit, pour qui souhaite aller au-delà de la police Computer Modern +sans trop se compliquer la vie, il existe deux solutions principales. + +\begin{enumerate} +\item Utiliser l'une ou l'autre des polices PostScript standards + convenant pour du texte normal + ({\Times Times}, % + {\Palatino Palatino}, % + {\Bookman Bookman}, % + {\Charter Charter}, % + {\NewCent New Century Schoolbook}, % + {\Helvet Helvetica}). % + C'est très simple avec toute distribution {\LaTeX} moderne: il + suffit de charger le paquetage approprié. Consulter la % + \doc{psnfss2e}{http://texdoc.net/pkg/psnfss/} % + de l'ensemble de paquetages PSNFSS. +\item Utiliser une police OpenType ou TrueType présente sur son + système avec le moteur {\XeLaTeX}. Seule une poignée de ces polices + offre toutefois un support approprié pour les mathématiques. La + gestion des polices avec {\XeLaTeX} se fait avec le paquetage + standard \pkg{fontspec}; consulter sa % + \doc{fontspec}{http://texdoc.net/pkg/fontspec/}. +\end{enumerate} + +Pour les thèses et mémoires de l'Université Laval, la Faculté des +études supérieures et postdoctorales accepte les polices % +\begin{quote} + \begin{tabbing} + Computer Modern \qquad \= ABCDEF abcdef 1234567890 \kill + {\CM Computer Modern} \> {\CM ABCDEF abcdef 1234567890} \\ + {\Times Times} \> {\Times ABCDEF abcdef 1234567890} \\ + {\Palatino Palatino} \> {\Palatino ABCDEF abcdef 1234567890} + \end{tabbing} +\end{quote} +Pour utiliser ces deux dernières avec pdf{\LaTeX}, charger +respectivement les paquetages \pkg{mathptmx} ou \pkg{mathpazo}. Avec +{\XeLaTeX}, utiliser les polices Termes et Pagella du projet % +\link{http://www.gust.org.pl/projects/e-foundry/tex-gyre/}{TeX~Gyre}. +Ce sont des polices très similaires à Times et Palatino, disponibles +en version OpenType et qui fournissent un bon support pour les +mathématiques via le projet frère % +\link{http://www.gust.org.pl/projects/e-foundry/tg-math/}{TeX~Gyre + Math}. + +\begin{exemple} + \label{ex:trucs:palatino} + Pour utiliser la police PostScript classique Palatino avec {\LaTeX} + tant pour le texte que pour les mathématiques, il suffit d'insérer + dans le préambule de son document la commande +\begin{lstlisting} +\usepackage{mathpazo} +\end{lstlisting} + + Avec le moteur {\XeLaTeX}, il est possible d'utiliser n'importe + quelle police OpenType et TrueType installée dans le système + d'exploitation de l'ordinateur. Pour obtenir un résultat équivalent + à celui de \pkg{mathpazo}, installer les polices TeX~Gyre dans le + système, puis insérer dans le préambule les commandes +\begin{lstlisting} +\usepackage{fontspec} +\setmainfont{TeX Gyre Pagella} +\setmathfont{TeX Gyre Pagella Math} +\end{lstlisting} + \qed +\end{exemple} + +Le texte principal du présent document est en % +\link{https://tug.org/store/lucida/}{Lucida Bright~OT}, % +une police commerciale de très haute qualité offrant également un +excellent support pour les mathématiques. Ses auteurs ont toujours été +proches de la communauté {\LaTeX}. La Bibliothèque de l'Université +Laval détient une licence d'utilisation de cette police. Les étudiants +et le personnel de l'Université peuvent s'en procurer une copie +gratuitement en écrivant à +\href{mailto:lucida@bibl.ulaval.ca}{lucida@bibl.ulaval.ca}. + + + +\section{Couleurs} +\label{sec:trucs:couleurs} + +L'utilisation de couleur dans un document {\LaTeX} requiert de charger +le paquetage \pkg{xcolor} \citep{xcolor}. Celui-ci définit d'abord +plusieurs couleurs que l'on peut utiliser directement; consulter la % +\doc{xcolor}{http://texdoc.net/pkg/xcolor} % +pour en connaitre les différentes listes. Le +\autoref{tab:trucs:couleurs} fournit celle des couleurs toujours +disponibles. + +\begin{table} + \centering + \caption{Couleurs toujours disponibles lorsque le paquetage + \pkg{xcolor} est chargé} + \label{tab:trucs:couleurs} + \begin{tabularx}{1.0\linewidth}{XlXll} + \toprule + \fcolorbox{black}{black}{\phantom{xx}}\, black & + \fcolorbox{black}{blue}{\phantom{xx}}\, blue & + \fcolorbox{black}{brown}{\phantom{xx}}\, brown & + \fcolorbox{black}{cyan}{\phantom{xx}}\, cyan & + \fcolorbox{black}{darkgray}{\phantom{xx}}\, darkgray \\ + \addlinespace[3pt] + \fcolorbox{black}{gray}{\phantom{xx}}\, gray & + \fcolorbox{black}{green}{\phantom{xx}}\, green & + \fcolorbox{black}{lightgray}{\phantom{xx}}\, lightgray & + \fcolorbox{black}{lime}{\phantom{xx}}\, lime & + \fcolorbox{black}{magenta}{\phantom{xx}}\, magenta \\ + \addlinespace[3pt] + \fcolorbox{black}{olive}{\phantom{xx}}\, olive & + \fcolorbox{black}{orange}{\phantom{xx}}\, orange & + \fcolorbox{black}{pink}{\phantom{xx}}\, pink & + \fcolorbox{black}{purple}{\phantom{xx}}\, purple & + \fcolorbox{black}{red}{\phantom{xx}}\, red \\ + \addlinespace[3pt] + \fcolorbox{black}{teal}{\phantom{xx}}\, teal & + \fcolorbox{black}{violet}{\phantom{xx}}\, violet & + \fcolorbox{black}{white}{\phantom{xx}}\, white & + \fcolorbox{black}{yellow}{\phantom{xx}}\, yellow \\ + \bottomrule + \end{tabularx} +\end{table} + +Un peu comme pour les changements d'attributs de police, il existe +deux commandes pour modifier la couleur du texte: +\begin{lstlisting} +\color`\marg{nom}' +\textcolor`\marg{nom}\marg{texte}' +\end{lstlisting} +La première modifie la couleur de tout ce qui suit (à moins d'en +limiter la portée avec des accolades) et la seconde, seulement pour +\meta{texte}. Dans les deux cas, \meta{nom} est le nom d'une couleur. +\begin{demo} + \begin{texample} +\begin{lstlisting} +texte {\color{red} en rouge} +et \textcolor{blue}{en bleu} +\end{lstlisting} + \producing + texte {\color{red} en rouge} et \textcolor{blue}{en bleu} + \end{texample} +\end{demo} + +La commande \cmd{\definecolor} permet de définir de nouvelles couleurs +selon plusieurs systèmes de codage. Le plus usuel demeure \emph{Rouge, + vert, bleu} (RVB ou RGB, en anglais) où une couleur est représentée +par une combinaison de teintes --- exprimées par un nombre entre $0$ +et $1$ --- de rouge, de vert et de bleu. Dans ce cas, la syntaxe de +\cmd{\definecolor} est +\begin{lstlisting} +\definecolor`\marg{nom}'{rgb}`\marg{valeur\_r,valeur\_v,valeur\_b} +\end{lstlisting} +où \meta{valeur\_r}, \meta{valeur\_v} et \meta{valeur\_b} sont +respectivement les teintes de rouge, de vert et de bleu. + +\begin{exemple} + La commande +\begin{lstlisting} +\definecolor{acier}{rgb}{0.3,0.4,0.6} +\end{lstlisting} + définit une nouvelle couleur nommée \code{acier} composée de rouge + 30~\%, de vert 40~\% et de bleu 60~\%: % + \fcolorbox{black}[rgb]{0.3,0,0}{\phantom{xx}} $+$ % + \fcolorbox{black}[rgb]{0,0.4,0}{\phantom{xx}} $+$ % + \fcolorbox{black}[rgb]{0,0,0.6}{\phantom{xx}} $=$ % + \fcolorbox{black}[rgb]{0.3,0.4,0.6}{\phantom{xx}}. % + Une fois la couleur \code{acier} définie dans le préambule, elle + devient disponible pour être utilisée dans les commandes + \cmdprint{\color} et \cmdprint{\textcolor}. % + \qed +\end{exemple} + +La commande \cmd{\colorlet}, dont la syntaxe simplifiée est +\begin{lstlisting} +\colorlet`\marg{nom}\marg{couleur}' +\end{lstlisting} +permet de faire référence à la \meta{couleur} déjà existante par +\meta{nom}. C'est pratique pour assigner un nom sémantique à une +couleur. + + + +\section{Hyperliens et métadonnées de documents PDF} +\label{sec:trucs:hyperliens} + +Nous en avons déjà traité à quelques reprises, notamment à la +\autoref{sec:organisation:renvois}: le paquetage \pkg{hyperref} +\citep{hyperref} permet de transformer les références dans le +texte en hyperliens cliquables lorsque le document est produit avec +pdf{\LaTeX} ou {\XeLaTeX}. C'est très pratique lors de la consultation +électronique d'un document. + +Le paquetage offre une multitudes d'options de configuration; nous +n'en présenterons que quelques unes. On accède aux options de +configuration de \pkg{hyperref} via la commande \cmd{\hypersetup} dans +le préambule. Celle-ci prend en arguments des paires +\code{option=valeur} séparées par des virgules. + +Une des principales choses que l'on pourra souhaiter configurer, c'est +le comportement et la couleur des divers types d'hyperliens. On +trouvera ci-dessous les options de configuration pertinentes, leur +valeur (avec en gras la valeur par défaut) ainsi qu'une brève +explication de chacune. + +\begin{table}[h] + \begin{tabularx}{1.0\linewidth}{@{}p{7em}p{6em}X@{}} + \code{colorlinks} & \code{true}|\code{\textbf{false}} & colorer les + liens selon + leur type \\ + \code{linktocpage} & \code{true}|\code{\textbf{false}} & faire du + numéro de + page + plutôt que + du titre l'hyperlien dans + la table + des + matières \\ + \code{linkcolor} & \meta{couleur} & couleur des liens internes \\ + \code{urlcolor} & \meta{couleur} & couleur des URL externes \\ + \code{citecolor} & \meta{couleur} & couleur des citations \\ + \code{allcolor} & \meta{couleur} & couleur pour tous les types d'hyperliens + \end{tabularx} +\end{table} + +Lorsque la valeur admissible d'une option est \code{true} ou +\code{false}, sa seule mention équivaut à \code{true}. La valeur +\meta{couleur} est le nom d'une couleur telle que définie par +\pkg{xcolor} (\autoref{sec:trucs:couleurs}). + +Les fichiers PDF peuvent contenir diverses métadonnées sur leur +contenu. Le paquetage \pkg{hyperref} permet d'en définir certaines, +notamment le titre ou l'auteur du document. + +\begin{table}[!h] + \begin{tabularx}{1.0\linewidth}{@{}p{7em}p{6em}X@{}} + \code{pdftitle} & texte & titre du document PDF \\ + \code{pdfauthor} & texte & auteur du document PDF + \end{tabularx} +\end{table} + +Consulter la section~3.7 de la % +\doc{hyperref}{http://texdoc.net/pkg/hyperref} % +de \pkg{hyperref} pour obtenir la liste complète des options de +configuration des métadonnées. + +\begin{exemple} + \label{ex:trucs:couleurs} + Le présent document fait appel aux définitions de couleurs + et aux options de configuration de \pkg{hyperref} suivantes: +\begin{lstlisting} +\definecolor{link}{rgb}{0,0.4,0.6} % ~RoyalBlue de dvips +\definecolor{url}{rgb}{0.6,0,0} % rouge foncé +\definecolor{citation}{rgb}{0,0.5,0} % vert foncé +\hypersetup{% + pdfauthor = {Vincent Goulet}, + pdftitle = {Rédaction avec LaTeX}, + colorlinks = true, + linktocpage = true, + urlcolor = url, + linkcolor = link, + citecolor = citation} +\end{lstlisting} + \qed +\end{exemple} + +\begin{exemple} + Les gabarits de thèses et de mémoires livrés avec la classe + \class{ulthese} contiennent dans le préambule la ligne suivante: +\begin{lstlisting} +\hypersetup{colorlinks,allcolors=ULlinkcolor} +\end{lstlisting} + Tous les liens de la thèse ou du mémoire seront donc de la même + couleur, \code{ULlinkcolor} \fcolorbox{black}{ULlinkcolor}{\phantom{xx}}, + une couleur définie par la classe. % + \qed +\end{exemple} + +\tipbox{L'interaction du paquetage \pkg{hyperref} avec les autres est + parfois (voire souvent) délicate. Pour cette raison, il est + fortement recommandé que \pkg{hyperref} soit le tout dernier + paquetage chargé dans le préambule.} + + + +\section{Présentation de code informatique} +\label{sec:trucs:listings} + +L'environnement standard \Ie{verbatim} de {\LaTeX} permet de présenter +du texte tel qu'il est entré dans le code source du document. C'est un +environnement particulièrement utile pour afficher du code +informatique puisque le texte est composé en police non +proportionnelle et que sa disposition exacte est respectée. + +\begin{demo} + \begin{texample} +\begin{lstlisting}[deletetexcs={int,include}] +\begin{verbatim} +/* Hello World en C */ +#include + +int main() +{ + printf("Hello world\n"); + return 0; +} +\end{verbatim} +\end{lstlisting} + \producing +\begin{verbatim} +/* Hello World en C */ +#include + +int main() +{ + printf("Hello world\n"); + return 0; +} +\end{verbatim} + \end{texample} +\end{demo} + +Si un document doit contenir beaucoup de code informatique et que l'on +souhaite exercer un fin contrôle sur sa disposition et sa mise en +forme, il vaut mieux se tourner vers un paquetage spécialisé comme +\pkg{listings} \citep{listings}. La % +\doc{listings}{http://texdoc.net/pkg/listings} % +du paquetage compare ses fonctionnalités à celles de plusieurs autres +paquetages similaires. + +Le paquetage \pkg{listings} peut effectuer automatiquement le marquage +des mots-clés de nombreux langages de programmation, ajouter des +numéros de ligne, importer du code de fichiers externes ou même +indexer les mots-clés des extraits de code. À titre d'illustration, en +utilisant l'environnement \Ie{lstlisting} de \pkg{listings} plutôt que +\Ie{verbatim}, l'extrait de code C ci-dessus pourrait se présenter +ainsi: +\begin{demo} + \begin{texample} + \begin{vglisting} +\begin{lstlisting} +/* Hello World en C */ +#include + +int main() +{ + printf("Hello world\n"); + return 0; +} +\end{lstlisting} + \end{vglisting} + \producing +\begin{lstlisting}[language=C,% + deletetexcs={int,include}, + frame=single,% + backgroundcolor=\color{Azure2},% + rulecolor=\color{black},% + framerule=0.4pt,% + numbers=left,% + numberstyle=\tiny\sffamily,% + stringstyle=\color{orange}\itshape,% + identifierstyle=\color{cyan}\mdseries,% + xleftmargin=12pt,% + keywordstyle=\color{blue}\bfseries, + index=] +/* Hello World en C */ +#include + +int main() +{ + printf("Hello world\n"); + return 0; +} +\end{lstlisting} + \end{texample} +\end{demo} + +Il serait trop long et nettement hors de la portée du présent ouvrage +d'expliquer les nombreuses fonctionnalités de \pkg{listings}. +Précisons simplement que le paquetage a servi pour composer ses +extraits de code et pour construire une grande partie de son index. + +\begin{exemple} + \label{ex:trucs:listings} + Pour parvenir à la présentation des extraits de code source {\LaTeX} + de ce document, le paquetage \pkg{listings} est configuré dans le + préambule de la manière suivante: +\begin{lstlisting} +%% Couleurs +\definecolor{comments}{rgb}{0.7,0,0} + +%% Configuration de listings +\lstset{language = [LaTeX]TeX, + basicstyle = \ttfamily\NoAutoSpacing, + keywordstyle = \mdseries, + commentstyle = \color{comments}\slshape, + extendedchars = true, + showstringspaces = false, + backgroundcolor = \color{LightYellow1}, + frame = lr, + rulecolor = \color{LightYellow1}, + xleftmargin = 3.4pt, + xrightmargin = 3.4pt} +\end{lstlisting} + (La couleur \code{LightYellow1} est définie par \pkg{xcolor} lorsque + le paquetage est chargé avec l'option \code{x11names}.) + \qed +\end{exemple} + + + +\section{Production de rapports avec l'analyse intégrée} +\label{sec:trucs:sweave} + +Les publications scientifiques reposent souvent sur une forme ou une +autre d'analyse numérique ou statistique, la production de code +informatique, une simulation stochastique, etc. La portion +développement et analyse est alors produite avec un certain outil +et la publication, avec un outil d'édition séparé --- {\LaTeX} dans le cas +qui nous occupe. Or, tous les auteurs ont vécu cette situation: les +résultats de l'analyse changent et il faut modifier le rapport en +conséquence, refaire les tableaux et les graphiques, retracer cette +valeur isolée au fil du texte directement tirée de l'analyse\dots\ +Seule la quantité de temps perdu rivalise avec le risque d'erreur. + +Il existe pourtant une meilleure façon de travailler. + +Cette meilleure façon de faire, tirée du concept de +\emph{programmation lettrée}, consiste à combiner dans un seul et même +document l'analyse et le rapport, puis de produire automatiquement une +partie du second à partir de la première. + +Les utilisateurs du système statistique R bénéficient d'une mise en +œuvre simple et élégante du concept ci-dessus avec l'outil Sweave +\citep{Sweave}. Un fichier Sweave est à la base un document {\LaTeX} +dans lequel on a inséré du code R à l'intérieur de balises spéciales +\verb|<<>>=| et \verb|@| tirée de la syntaxe \code{noweb} +\citep{noweb}, comme ceci: +\begin{lstlisting} +\section{Commandes R} + +L'utilisateur de R interagit avec l'interprète en entrant +des commandes à l'invite de commande: +<<>>= +2 + 3 +pi +cos(pi/4) +@ +La commande \verb=exp(1)= donne \Sexpr{exp(1)}, +la valeur du nombre $e$. +\end{lstlisting} + +Par convention, on enregistre un tel document sous un nom se terminant +par l'extension \code{.Rnw}. Sa compilation s'effectue +en deux étapes: +\begin{enumerate} +\item Le fichier \code{.Rnw} est passé à la commande \code{Sweave()} + de R. Celle-ci retrace les extraits de code et les remplace par des + environnements {\LaTeX} contenant, par défaut, les expressions R et + leur résultat dans des environnements \Ie{Sinput} et \Ie{Soutput}. + Elle évalue également les expressions R se trouvant dans les + commandes \cmd{\Sexpr} pour les remplacer par leur résultat. Cela + produit un fichier \code{.tex}: +\begin{lstlisting} +\section{Commandes R} + +L'utilisateur de R interagit avec l'interprète en entrant +des commandes à l'invite de commande: +\begin{Schunk} +\begin{Sinput} +> 2 + 3 +\end{Sinput} +\begin{Soutput} +[1] 5 +\end{Soutput} +\begin{Sinput} +> pi +\end{Sinput} +\begin{Soutput} +[1] 3.141593 +\end{Soutput} +\begin{Sinput} +> cos(pi/4) +\end{Sinput} +\begin{Soutput} +[1] 0.7071068 +\end{Soutput} +\end{Schunk} +La commande \verb=exp(1)= donne 2.71828182845905, +la valeur du nombre $e$. +\end{lstlisting} +\item On compile le fichier \code{.tex} comme d'habitude. +\end{enumerate} + +Sweave se révèle particulièrement utile pour créer des graphiques à +partir de R: tout ce que l'on doit conserver dans son fichier +\code{.Rnw}, c'est le code pour créer le graphique. Il est également +possible de contrôler l'exécution des blocs de code et l'affichage du +code source et des résultats par le biais d'options placées à +l'intérieur de la balise d'ouverture \verb|<<>>=|. Consulter la % +\link{https://leisch.userweb.mwn.de/Sweave/Sweave-manual.pdf}{documentation} % +de Sweave pour les détails. + +\link{http://mpastell.com/pweave/}{Pweave} est un système similaire à +Sweave pour le langage Python. + +Inspiré de Sweave, knitr \citep{knitr} permet également d'entrelacer +du code {\LaTeX} et du code R. Cet outil offre plus d'options de +traitement que Sweave, mais au prix d'une complexité accrue. + +En terminant, rappelons que Sweave n'est qu'un exemple de système de +programmation lettrée. Il en existe plusieurs autres. Il appartient +dès lors au lecteur de trouver le système qui correspond le mieux à +ses besoins. + +\notebox{On doit le concept de programmation lettrée au créateur de + {\TeX}, Donald Knuth. En fait, tout le code source de {\TeX} est + écrit en programmation lettrée! La % + \link{https://fr.wikipedia.org/wiki/Programmation_lettrée}{page + Wikipedia} % + consacrée au sujet offre un très bon survol de l'historique et de la + nature du concept. + + Le lecteur intéressé pourra consulter, par exemple, le % + \link{https://www.ctan.org/pkg/ulthese}{code source} % + de la classe \class{ulthese}. La documentation de la classe, le + code {\LaTeX}, les gabarits, tout se trouve entrelacé + dans le seul fichier \code{ulthese.dtx}.} + + +\section{Diapositives} +\label{sec:trucs:diapositives} + +Il n'est pas rare qu'une publication scientifique fasse l'objet d'une +présentation dans le cadre d'un colloque ou d'un séminaire. Lorsque le +texte a été rédigé avec {\LaTeX}, il est tout naturel de souhaiter le +réutiliser pour la préparation de diapositives --- surtout si le texte +comporte de nombreuses équations mathématiques qu'il serait +extrêmement long de retranscrire dans un logiciel de présentation +comme PowerPoint. + +Fort heureusement, il est tout à fait possible de composer ses +diapositives avec {\LaTeX}. La classe standard \class{slides} produit +des diapositives élégantes, quoique minimalistes, qui conviendront à +l'auteur qui ne recherche rien de plus que du texte noir sur fond +blanc. + +Cependant, l'outil devenu le standard \emph{de facto} pour la +production de diapositives est la classe \class{beamer} +\citep{beamer}. Celle-ci compte un grand nombre de thèmes et de +gabarits élaborés, rend très simple l'insertion d'animations d'une +diapositive à l'autre, gère automatiquement la table des matières +et\dots\ produit des diapositives en couleur. + +Quelle que soit la classe utilisée, les diapositives produites avec +{\LaTeX} se présentent sous forme de fichier PDF. On les projette avec +une liseuse PDF en mode plein écran. + +Nous n'irons pas plus loin sur le sujet dans ce document. Consulter +la % +\doc{beamer}{http://texdoc.net/pkg/beameruserguide} % +de \class{beamer} pour apprendre à utiliser la classe. Produire des +diapositives de grande qualité avec les gabarits fournis avec la +classe se révèle simple et rapide. + + + +\section{Gestion des versions et travail collaboratif} +\label{sec:trucs:cvs} + +Plusieurs personnes travaillent sur un même fichier, ou encore, une +seule personne y travaille, mais de plusieurs postes de travail +différents. Quelle est la plus récente version du fichier? Un ajout +fait hier dans le fichier a-t-il été pris en compte par une collègue +aujourd'hui? Une modification apportée au fichier n'est plus +nécessaire; comment retourner en arrière facilement? + +Les informaticiens ont résolu ce genre de problèmes il y a des +dizaines d'années avec les systèmes de gestion de versions. Les +systèmes les plus populaires en ce moment sont Subversion +\citep{subversion} et Git \citep{git}. + +Bien que développés à l'origine pour la gestion du code source de +logiciels, les systèmes de contrôle de versions conviennent +parfaitement pour les sources {\LaTeX}. L'utilisation d'un tel système +permet de: +\begin{itemize} +\item toujours savoir quelle est la plus récente version d'un fichier; +\item travailler à plusieurs personnes simultanément sur un même + fichier; +\item revenir aisément à une version antérieure d'un fichier; +\item comparer deux versions d'un fichier pour connaitre les + modifications qui y ont été apportées; +\item gérer automatiquement les éventuels conflits de modification + d'un fichier; +\item disposer en tout temps d'une copie de secours de son travail + lorsque l'on a recours à un serveur central (obligatoire avec + Subversion; optionnel avec Git\footnote{% + Si ce n'est que pour le volet de sauvegarde, nous recommandons + d'utiliser avec Git un dépôt central tel que + \link{https://gitlab.com}{GitLab}, un serveur public qui héberge + déjà des millions de projets.}.) +\end{itemize} +Un système de gestion de versions est un outil qui permet d'augmenter +considérablement sa productivité ou celle de son équipe de +travail au moment de rédiger un ouvrage scientifique. + +La % +\link{https://fr.wikipedia.org/wiki/Gestion_de_versions}{page Wikipedia} % +sur le sujet offre une bonne introduction aux systèmes de gestion de +versions. Les membres de la communauté de l'Université Laval qui +souhaitent mettre sur pied un dépôt pour un projet pourront +consulter leur équipe de soutien informatique facultaire. + +\notebox{La présente documentation est conservée dans un dépôt Git + public d'où l'on peut toujours obtenir la plus récente version. + Consulter la page des notices de copyright au début du document pour + accéder au dépôt.} + + + +%%% +%%% Exercices +%%% + +\section{Exercices} +\label{sec:trucs:exercices} + +\Opensolutionfile{solutions}[solutions-trucs+astuces] + +\begin{Filesave}{solutions} +\section*{Chapitre \ref*{chap:trucs}} +\addcontentsline{toc}{section}{Chapitre \protect\ref*{chap:trucs}} + +\end{Filesave} + +\noindent% +Pour les exercices +\nolink{\ref{exercice:trucs:1}}--\nolink{\ref{exercice:trucs:n}}, +utiliser le fichier \fichier{exercice\_trucs.tex}. Celui-ci reprend +une partie de la documentation de la classe \class{ulthese}. De plus, +on remarquera que le document: +\begin{itemize} +\item doit être compilé avec pdf{\LaTeX} puisqu'il charge les + paquetages \pkg{inputenc} et \pkg{fontenc}; +\item définit des nouvelles commandes \cmdprint{\class} et + \cmdprint{\fichier} pour composer, respectivement, les noms de + classe et les noms de fichier; +\item utilise la commande \cmdprint{\doc} de + l'\autoref{ex:commandes:doc}; +\item charge le paquetage \pkg{hyperref}, ce qui transforme les titres + de la table des matières, les renvois aux notes de bas de page et + les liens externes en hyperliens. +\end{itemize} +\medskip + +\begin{exercice} + \label{exercice:trucs:1} + Compiler et visualiser le fichier sans aucune modification. Le texte + est composé dans la police par défaut Computer Modern. + + Ensuite, modifier le préambule du document pour composer le document + dans la police Palatino, tel qu'expliqué à + l'\autoref{ex:trucs:palatino}. Charger également le paquetage + \pkg{helvet} afin d'utiliser Helvetica pour le texte en police sans + empattements (\cmdprint{\textsf}). + \begin{sol} + On doit ajouter dans le préambule les commandes +\begin{lstlisting} +\usepackage{mathpazo} +\usepackage{helvet} +\end{lstlisting} + La police Helvetica est très grande. Tel que mentionné dans la % + \doc{psnfss2e}{http://texdoc.net/pkg/psnfss/} % + de PSNFSS (section~4), il est généralement préférable de charger + le paquetage \pkg{helvet} avec, par exemple, +\begin{lstlisting} +\usepackage[scaled=0.92]{helvet} +\end{lstlisting} + pour que le texte en Helvetica se marie mieux à celui dans une + autre police. + \end{sol} +\end{exercice} + +\begin{exercice} + Configurer le paquetage \pkg{hyperref} pour que les hyperliens dans + la table des matières soient ancrés aux numéros de page plutôt + qu'aux titres de section. + \begin{sol} + Tel qu'expliqué à la \autoref{sec:trucs:hyperliens}, on doit + insérer dans le préambule du document la commande +\begin{lstlisting} +\hypersetup{linktocpage=true} +\end{lstlisting} + ou, plus simplement, +\begin{lstlisting} +\hypersetup{linktocpage} +\end{lstlisting} + \end{sol} +\end{exercice} + +\begin{exercice} + Charger le paquetage \pkg{xcolor} et ajouter l'option + \code{colorlinks} à \pkg{hyperref}, puis recompiler le document. + Observer les changements. + \begin{sol} + En conservant l'ajout de l'exercice précédent, on a dans le + préambule la commande +\begin{lstlisting} +\hypersetup{colorlinks, linktocpage} +\end{lstlisting} + Les hyperliens se présentent maintenant en couleur selon les + paramètres par défaut de \pkg{hyperref}. + \end{sol} +\end{exercice} + +\begin{exercice} + En s'inspirant de l'\autoref{ex:trucs:couleurs}, modifier la couleur + des liens internes et externes. + \begin{sol} + On peut soit utiliser des couleurs prédéfinies de \pkg{xcolor} + (\autoref{tab:trucs:couleurs}), soit en définir de nouvelles avec + \cmd{\definecolor}. On fait ensuite appel aux couleurs choisies + pour les options \code{linkcolor} (liens internes) et + \code{urlcolor} (liens externes) de \pkg{hyperref}. + + Exemple utilisant des couleurs prédéfinies: +\begin{lstlisting} +\hypersetup{colorlinks, linktocpage, + linkcolor=brown, urlcolor=blue} +\end{lstlisting} + + Exemple avec de nouvelles couleurs: +\begin{lstlisting} +\definecolor{link}{rgb}{0,0.4,0.6} +\definecolor{url}{rgb}{0.6,0,0} +\hypersetup{colorlinks, linktocpage, + urlcolor=url, linkcolor=link} +\end{lstlisting} + \end{sol} +\end{exercice} + +\begin{exercice} + \label{exercice:trucs:n} + Charger le paquetage \pkg{listings} et modifier l'environnement + \Pe{verbatim} que l'on trouve dans le document pour un environnement + \Pe{lstlisting}. En s'inspirant de l'\autoref{ex:trucs:listings}, + configurer la présentation des extraits de code pour utiliser une + police non proportionnelle (\cmdprint{\ttfamily}) et un arrière-plan + de la couleur standard \code{lightgray}. + \begin{sol} + S'il y avait plusieurs extraits de code dans le document, mieux + vaudrait les configurer tous à l'identique dans le préambule du + document avec +\begin{lstlisting} +\lstset{basicstyle=\ttfamily, + backgroundcolor=\color{lightgray}} +\end{lstlisting} + Ensuite, +\begin{vglisting} +\begin{lstlisting} +latex ulthese.ins +\end{lstlisting} +\end{vglisting} + donne le résultat demandé. + + Pour un seul extrait, il est également possible de simplement + charger le paquetage dans le préambule et d'effectuer la + configuration à l'ouverture de l'environnement, comme ceci: +\begin{vglisting} +\begin{lstlisting}[basicstyle=\ttfamily, + backgroundcolor=\color{lightgray}] +latex ulthese.ins +\end{lstlisting} +\end{vglisting} + \end{sol} +\end{exercice} + +\Closesolutionfile{solutions} + + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "formation-latex-ul" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/ulthese-diapos.tex b/info/formation-latex-ul/source/ulthese-diapos.tex new file mode 100644 index 0000000000..5845fed19e --- /dev/null +++ b/info/formation-latex-ul/source/ulthese-diapos.tex @@ -0,0 +1,57 @@ +%%% Copyright (C) 2018 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\section{Classe ulthese} + +\begin{frame} + \frametitle{Un document conforme en un tournemain} + + \begin{itemize} + \item \class{ulthese} livrée dans {\TeX}~Live donc déjà + installée sur votre ordinateur + \item Mise en page conforme aux règles de présentation de la FESP + \item Basée sur la classe \class{memoir} + \item Quelques nouvelles commandes pour la création de la page de + titre + \item Partir d'un gabarit (classés avec la documentation dans + {\TeX}~Live) + \item Utiliser des fichiers séparés pour chaque chapitre de la thèse + ou du mémoire + \end{itemize} +\end{frame} + +\subsection{[~Exercice~]} + +\begin{exercice} + Utiliser le fichier \fichier{exercice\_ulthese.tex} --- qui est basé + sur le gabarit \texttt{gabarit-doctorat.tex} livré avec + \class{ulthese}. + + Ce fichier insère \fichier{b-a-ba-math.tex} dans le document avec la + commande \cs{include}. + \begin{enumerate} + \item Étudier le code source des deux fichiers et identifier à quel + endroit \texttt{b-a-ba-math.tex} est chargé dans le document. + \item Activer les paquetages \pkg{amsmath} et \pkg{icomma}, puis + compiler \texttt{exercice\_ulthese.tex}. + \item Modifier un environnement \texttt{align*} pour \texttt{align} + dans \texttt{b-a-ba-math.tex} et observer le résultat dans la + compilation de \texttt{exercice\_ulthese.tex}. + \item Compiler de nouveau le fichier en utilisant une police + différente. + \end{enumerate} +\end{exercice} + +%%% Local Variables: +%%% TeX-master: "formation-latex-ul-diapos" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: diff --git a/info/formation-latex-ul/source/ulthese.tex b/info/formation-latex-ul/source/ulthese.tex new file mode 100644 index 0000000000..2646c61c03 --- /dev/null +++ b/info/formation-latex-ul/source/ulthese.tex @@ -0,0 +1,59 @@ +%%% Copyright (C) 2018 Vincent Goulet +%%% +%%% Ce fichier fait partie du projet +%%% «Rédaction avec LaTeX» +%%% https://gitlab.com/vigou3/formation-latex-ul +%%% +%%% Cette création est mise à disposition sous licence +%%% Attribution-Partage dans les mêmes conditions 4.0 +%%% International de Creative Commons. +%%% https://creativecommons.org/licenses/by-sa/4.0/ + +\chapter{Classe pour les thèses et mémoires de + l'Université Laval} +\label{chap:ulthese} + +La classe \class{ulthese} \citep{ulthese} permet de composer des +thèses et mémoires immédiatement conformes aux règles générales de +présentation matérielle de la Faculté des études supérieures et +postdoctorales de l'Université Laval. Ces règles définissent +principalement la présentation des pages de titre des thèses et +mémoires ainsi que la disposition du texte sur la page. La classe est +compatible tant avec {\LaTeX} qu'avec {\XeLaTeX}. + +La classe \class{ulthese} est basée sur la classe \class{memoir}. +L'intégralité des fonctionnalités de \class{memoir} se retrouve donc +disponible dans \class{ulthese}. Les deux classes sont livrées avec la +distribution {\TeX}~Live. + +Outre \class{memoir}, la classe charge par défaut un certain nombre de +paquetages, notamment les essentiels pour la rédaction en français. Il +n'est donc pas nécessaire de charger de nouveau les paquetages +suivants: \pkg{babel}, \pkg{numprint}, \pkg{natbib} \pkg{fontspec} +(moteur {\XeLaTeX} seulement), \pkg{graphicx}, \pkg{xcolor}, +\pkg{textcomp}. Le paquetage \pkg{geometry} est incompatible avec la +classe à cause de sa mauvaise interaction avec \class{memoir}. Son +chargement dans le préambule du document cause une erreur lors de la +compilation. + +Afin de faciliter la rédaction, la classe est livrée avec un ensemble +de gabarits sur lesquels se baser pour: +\begin{itemize} +\item les fichiers maitres de divers types de thèses et mémoires + (standard, sur mesure, en cotutelle, en bidiplomation, en + extension, etc.); +\item les fichiers des parties les plus usuelles (résumés français + et anglais, avant-propos, introduction, chapitres, conclusion, + etc.). +\end{itemize} +Ces gabarits comportent des commentaires succincts pour guider +l'utilisateur dans la préparation de son document. La +\doc{ulthese}{http://texdoc.net/pkg/ulthese} % +de la classe explique en détail le contenu des gabarits. + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "formation-latex-ul" +%%% TeX-engine: xetex +%%% coding: utf-8 +%%% End: -- cgit v1.2.3