Outils pour utilisateurs

Outils du site


issue202:latex

We finished with the cookbook last issue and I said we would explore some of the pre-installed packages in this issue and several more issues in the future. With over two thousand to explore, we could be busy for a long time. I could put the list of installed packages into several columns over a few pages and submit that as my article. However I suspect the editor would not be pleased with me if I did that. One of my interests is typesetting, particularly font use and page design. I start my exploration of the installed packages with some font packages. There are twenty-two packages that contain the word “font” and which name a particular font, a set of definitions for character shapes which can be used to make words in most cases. There are a few fonts which are sets of icons and other shapes. I am lazy and did not review the complete list of packages looking for font names I recognize. I can tell you there are over one hundred pages of fonts in volume 2 (pages 11 – 126) of The Latex Companion (Mittelbach and Fischer, ISBN 978-0-201-36300-5).

Nous en avons terminé avec le livre de cuisine dans le dernier numéro et j’ai dit que nous explorerions certains des paquets préinstallés dans ce numéro et dans les suivants. Avec plus de deux mille paquets à explorer, nous pourrions être occupés pendant longtemps. Je pourrais mettre la liste des paquets installés dans plusieurs colonnes sur quelques pages et soumettre cela comme mon article. Cependant, je soupçonne que le rédacteur en chef ne serait pas content de moi si je le faisais.

L’un de mes intérêts est la composition, en particulier l’utilisation de fontes (polices) et la conception de pages. Je commence mon exploration des paquets installés avec certains paquets de polices. Il y a vingt-deux paquets qui contiennent le mot « fonte » [Note de Bab : en français on nomme aussi les polices des fontes comme en anglais, avec un e en plus] et qui nomment une police particulière, un ensemble de définitions pour les formes de caractères qui peuvent être utilisées pour faire des mots dans la plupart des cas. Il y a quelques polices qui sont des ensembles d’icônes et d’autres formes. Je suis paresseux et n’ai pas passé en revue la liste complète des paquets à la recherche de noms de polices que je reconnais. Je peux vous dire qu’il y a plus d’une centaine de pages de polices dans le volume 2 (pages 11 à 126) de The LaTeX Companion (Mittelbach et Fischer, ISBN 978-0-201-36300-5).

These pages contain discussion of the features of almost two hundred different fonts which work in Latex. With only two exceptions (Cambria and Lucida), all of these fonts are free. If you use Windows or MS Office products, you already have a license to use Cambria. I realize many will be offended that I mention Microsoft in FCM. However many of you have devices using different operating systems, and remember Latex / Tex is operating system agnostic. So Cambria is probably already installed on your “other” computer. Lucida is available to purchase from TUG.org (tug.org/store/lucida). Individual licenses are US$110 if you are a TUG member, and US$190 if you are a non-member. If you think this is expensive, check the prices of licensed fonts from commercial font foundries. Fonts can be used in two ways. The entire document can be formatted using a particular font or font family. That is what I did with the cookbook: \usepackage{notosans}. Or, set a document font and use one or more other fonts as required, something like putting a circle of red paint on a yellow background. There is an example in figure 1. Shown above are the Latex instructions for that example.

Ces pages contiennent une description des caractéristiques de près de deux cents polices différentes qui fonctionnent dans LaTeX. À deux exceptions près (Cambria et Lucida), toutes ces polices sont gratuites. Si vous utilisez des produits Windows ou MS Office, vous avez déjà une licence pour utiliser Cambria. Je me rends compte que beaucoup seront offensés que je mentionne Microsoft dans le FCM. Cependant, beaucoup d’entre vous ont des appareils qui utilisent des systèmes d’exploitation différents et rappelez-vous que LaTeX/TeX est indépendant du système d’exploitation. Cambria est probablement déjà installé sur votre « autre » ordinateur. Lucida est disponible à l’achat sur TUG.org (tug.org/store/lucida). Les licences individuelles sont de 110 $ US si vous êtes un membre de TUG, et de 190 $ US si vous êtes un non-membre. Si vous pensez que cela coûte cher, vérifiez les prix des polices sous licence commerciale.

Les polices peuvent être utilisées de deux façons. Le document entier peut être formaté en utilisant une police ou une famille de polices particulière. C’est ce que j’ai fait avec le livre de recettes : usepackage{notosans}. Ou, vous définissez une police de document et vous utilisez une ou plusieurs autres polices au besoin, quelque chose comme mettre un cercle de peinture rouge sur un fond jaune. Ci-dessus, ce sont les instructions LaTeX pour cet exemple.

I used Noto as the default because it is installed on my machine. However, it is not one of the fonts installed by default. So this code will not work on your machine unless you install Noto. If you remove or comment out the instruction \usepackage{noto}, then the second paragraph will be displayed in the default font which was developed by Donald Knuth and called Computer Modern. If you are not interested in fonts, you have probably had enough discussion about font packages! Next, we will look at page layout, in particular what are the defaults built into Latex and how to alter those values using the geometry package. Quoting from the documentation file for the geometry package:

J’ai utilisé Noto par défaut car il est installé sur ma machine. Cependant, ce n’est pas l’une des polices installées par défaut. Donc, ce code ne fonctionnera pas sur votre machine à moins que vous n’installiez Noto. Si vous supprimez ou commentez l’instruction \usepackage{noto}, le deuxième paragraphe sera affiché dans la police par défaut qui a été développée par Donald Knuth et appelée Computer Modern.

Si les polices ne vous intéressent pas, vous en avez probablement assez de la discussion des paquets de polices !

Ensuite, nous examinerons la mise en page, en particulier les valeurs par défaut intégrées dans LaTeX et comment modifier ces valeurs à l’aide du paquet geometry. Je cite le fichier de documentation pour le paquet geometry (voir ci-contre).

Paper width and height are determined in the first line of every TEX document. The documentclass instruction dictates paper size and also sets printing as one-sided or two-sided. As with many Latex instructions, there are defaults. Documentclass has five document types: article, book, report, slides, letter. Base font size options are 10pt, 11pt and 12pt. Paper sizes can be letterpaper, legal paper, executive paper, A4, A5 and B5. By default, paper is printed in portrait format but can be landscape. There is a draft printing option. Printing on one side of the paper is the default except for book class which is two-sided. Articles, books and reports can be two columns if desired. There are some other options, and some packages can be loaded which will give other choices (for example the memoir document class). All of these choices can be set as options in documentclass. Each choice automatically determines many of the other dimensions of the page. An easy example is paper size. It determines the text area in the document which automatically sets the margin sizes. (It might be more accurate to say the paper size sets the margin sizes which then dictate the text height and width.) As noted above, if the document is a book, it will automatically be published two-sided, which means the margin names become inside and outside. Normally, inside margins are wider than outside margins to allow for the space required when the book is bound. The geometry package allows the writer to customize the page layout, to override the defaults, to suit their particular requirements.

La largeur et la hauteur du papier sont déterminées à la première ligne de chaque document TEX. L’instruction documentclass dicte la taille du papier et définit également l’impression recto ou recto-verso. Comme avec de nombreuses instructions LaTeX, il y a des valeurs par défaut. Documentclass a cinq types de documents : article, livre, rapport, diapositives, lettre. Les options de taille de police de base sont 10pt, 11pt et 12pt. Les formats de papier peuvent être papier letter, papier legal, papier executive, A4, A5 et B5. Par défaut, le papier est imprimé en format portrait, mais peut être en format paysage. Il y a une option d’impression « brouillon ». L’impression sur un côté du papier est la valeur par défaut, sauf pour la classe de livre qui est recto-verso. Articles, livres et rapports peuvent avoir deux colonnes si désiré. Il y a d’autres options et certains paquets qui donneront d’autres choix peuvent être chargés (par exemple la classe de document mémoire). Tous ces choix peuvent être définis comme options dans documentclass. Chaque choix détermine automatiquement de nombreuses autres dimensions de la page.

Un exemple facile est la taille du papier. Il détermine la zone de texte dans le document ce qui définit automatiquement les tailles de marge. (Il pourrait être plus précis de dire que la taille du papier définit les tailles de marge qui dictent ensuite la hauteur et la largeur du texte.) Comme indiqué ci-dessus, si le document est un livre, il sera automatiquement publié recto-verso, ce qui signifie que les noms des marges deviennent « intérieur » et « extérieur ». Normalement, les marges intérieures sont plus larges que les marges extérieures pour permettre la reliure. Le paquet geometry permet à l’auteur de personnaliser la mise en page et de remplacer les valeurs par défaut, en fonction de ses exigences particulières.

In the example copied from the geometry package documentation, there is the instruction usepackage[margin=1.5in]{geometry}. No matter what class of document is being written, this instruction makes all margins the same size. The previous instruction \usepackage[text={7in,10in},centering]{geometry}, makes the text area to be 7 inches wide and 10 inches high. In addition, the text area will be centred on the page. This instruction forces Latex to calculate the appropriate margins for whatever page size is being used. These settings will cause problems for A5 and B5 paper sizes since these sizes of paper are too small for a 7 inch x 10 inch text area. The geometry package has a number of complex options. The Latex Companion book (Mittelbach and Fischer, 2023, ISBN 978-0-13-465894-0) discusses them in some detail in five pages, and there are references to the package on several other pages. I am not going to copy the information from the book, I suggest you take a look for yourself or at least download and review the documentation for the geometry package found at ctan.org. As a starting point here is the example from p. 377 of the book (shown top right).

Dans l’exemple copié à partir de la documentation du paquet geometry, il y a l’instruction usepackage[margin=1.5in]{geometry}. Quelle que soit la classe de document à écrire, cette instruction rend toutes les marges de la même taille. L’instruction précédente \usepackage[text={7in,10in},centering]{geometry}, fait la zone de texte de 7 pouces de large et 10 pouces de haut. De plus, la zone de texte sera centrée sur la page. Cette instruction oblige LaTeX à calculer les marges appropriées pour la taille de page utilisée. Ces paramètres causeront des problèmes pour les formats de papier A5 et B5, car ces formats de papier sont trop petits pour une zone de texte de 7 pouces x 10 pouces.

Le paquet geometry a un certain nombre d’options complexes. Le livre LaTeX Companion (Mittelbach et Fischer, 2023, ISBN 978-0-13-465894-0) les traite en détail sur cinq pages, et il y a des références au paquet sur plusieurs autres pages. Je ne vais pas copier l’information du livre, je vous suggère d'y jeter un œil vous-même ou au moins de télécharger et examiner la documentation pour le paquet geometry trouvé à ctan.org. Comme point de départ, voici l’exemple tiré de la page 377 du livre (montré en haut à droite).

Notice the parameters are defined before the package name is specified. Notice the parameters are shown as key=value pairs (except for landscape). Notice the top margin, the left margin and the margin ratio are specified but not the right margin or the bottom margin, neither has the size of the text area. The sizes not specified are calculated by the package from the information given by the paper size and these three parameters. The package will check to make sure what is entered meets certain criteria. If not, then the user is warned and at least one of the selected criteria will be ignored. For example the package will not allow the left and right margins to overlap. The paper parameter accepts a0 paper to a6 paper, b0 paper to b6 paper, c0 paper to c6 paper, plus b0j to b6j for Japanese users, and letterpaper, legal paper and executive paper for those users not using ISO standard paper sizes. Paper sizes can be indicated without the key name, for example just a4 paper instead of papersize=a4paper. Custom paper sizes can be entered using the keys paperwidth and paperheight. Paper can be two-side, as well as landscape or portrait. If a portion of the paper will be consumed during binding, a value for binding offset can be added. This will be added to any inner margin. Type can be displayed as two-column, and the space between columns set using columnsep.

Notez que les paramètres sont définis avant que le nom du paquet ne soit spécifié. Notez que les paramètres sont affichés comme des paires clé=valeur (sauf pour le paysage). Notez que la marge supérieure, la marge gauche et le ratio de marges sont spécifiés, mais pas la marge droite ou la marge inférieure, ni la taille de la zone de texte. Les tailles non spécifiées sont calculées par le paquet à partir des informations fournies par la taille du papier et ces trois paramètres. Le paquet vérifiera pour s’assurer que ce qui est entré répond à certains critères. Sinon, l’utilisateur est averti qu'au moins un des critères sélectionnés sera ignoré. Par exemple, le paquet ne permettra pas aux marges gauche et droite de se chevaucher.

Le paramètre paper (papier) accepte a0 à a6, b0 à b6, c0 à c6, plus b0j à b6j pour les utilisateurs japonais, et le papier letter, le papier legal et le papier executive pour les utilisateurs n’utilisant pas les formats de papier standard ISO. Les formats de papier peuvent être indiqués sans le nom de la clé, par exemple seulement du a4 au lieu de papersize = a4paper. Les formats de papier personnalisés peuvent être saisis à l’aide des options paperwidth et paperheight. La page peut être recto-verso, ainsi que paysage ou portrait. Si une partie de la page est utilisée pour la reliure, une valeur de décalage de reliure peut être ajoutée. Elle sera ajoutée à toute marge intérieure. Le type peut être affiché en deux colonnes, et l’espace entre les colonnes défini à l’aide de columnsep.

The area on the page that will contain the text can be specified by setting the “outside” sizes (margins, header, footer, etc), or by setting the ”inside” size with textwidth and textheight, and the geometry package will do its best to calculate the other values. If you specify both margins and text body sizes, and they overlap, geometry assumes the margins are correct and reduces the text body size. You probably noticed the key “margin ratio”. This is the ratio of left:right and top:bottom margins. In the case of the sample, the left margin is set to 52pt so the right margin is twice that or 104pt (1,4 inches or 37mm). Since the top margin is set to 62pt, the bottom margin is 132pt or 46mm. In some limited ways, it is possible to reset page geometry part way through a document. This is done with the newgeometry command. This command issues a clearpage command, which finishes the current page and starts a new page. The new page initially has all its key=value pairs set to the defaults except for keys in the preamble specifying the physical paper. To return to the original settings, use the command restoregeometry, which also closes the current page and starts a new page with the settings from the preamble. If a document has several layouts, it is possible to save each variant with a name using the savegeometry{name} command after the newgeometry command. Then use the load geometry{name} to use the saved layout.

La zone de la page qui contiendra le texte peut être spécifiée en définissant les tailles « extérieures » (marges, en-tête, pied de page, etc.), ou en définissant la taille « intérieure » avec textwidth et textheight, et le paquet geometry fera de son mieux pour calculer les autres valeurs. Si vous spécifiez des marges et des tailles de corps de texte, et qu’elles se chevauchent, geometry suppose que les marges sont correctes et réduit la taille du corps de texte.

Vous avez probablement remarqué l'option « ratio de marge ». Il s’agit du ratio des marges gauche-droite et haut-bas. Dans le cas de l’exemple, la marge de gauche est réglée à 52 pts, donc la marge de droite est deux fois plus ou 104 pts (1,4 pouces ou 37 mm). Puisque la marge supérieure est définie à 62 pts, la marge inférieure est 132 pts ou 46 mm.

De manière limitée, il est possible de réinitialiser la géométrie de la page à mi-chemin dans un document. Cela se fait avec la commande newgeometry. Cette commande émet une commande clearpage, qui termine la page active et démarre une nouvelle page. La nouvelle page a initialement toutes ses paires key=value définies sur les valeurs par défaut à l’exception des clés dans le préambule spécifiant le papier physique. Pour revenir aux paramètres d’origine, utilisez la commande restoregeometry, qui ferme également la page active et démarre une nouvelle page avec les paramètres du préambule. Si un document a plusieurs mises en page, il est possible d’enregistrer chaque variante avec un nom en utilisant la commande savegeometry{name} après la commande newgeometry. Utilisez ensuite la commande load geometry{name} pour utiliser la disposition enregistrée.

By default, it is not possible to insert a landscape page into a Latex document when the preamble says portrait. The “problem” of inserting a landscape page into a portrait document is solved with the lscape package. This situation often occurs when inserting spreadsheet information (i.e. large tables in Latex). Lscape issues the clearpage command when invoked so that the landscape section starts on a new page no matter how much text is on the previous portrait page. Of course, when the landscape content is finished, it issues another clearpage command when returned to portrait mode. I hope this article helps move you further along in your knowledge of Latex. I have included two graphics with this article to show you names of the key/value pairs used in the geometry package. More fun with Latex next issue.

Par défaut, il n’est pas possible d’insérer une page paysage dans un document LaTeX lorsque le préambule indique portrait. Le « problème » d’insertion d’une page paysage dans un document portrait est résolu avec le paquet lscape. Cette situation se produit souvent lors de l’insertion d’informations de tableur (c.-à-d. de grands tableaux dans LaTeX). Lscape émet la commande clearpage lorsqu’elle est invoquée afin que la section paysage commence sur une nouvelle page, quelle que soit la quantité de texte sur la page de portrait précédente. Bien sûr, lorsque le contenu paysage est terminé, il émet une autre commande clearpage lorsqu’il revient en mode portrait.

J’espère que cet article vous aidera à approfondir vos connaissances sur LaTeX.

Plus de plaisir avec Latex prochain numéro.

issue202/latex.txt · Dernière modification : 2024/02/29 07:25 de d52fr