Outils pour utilisateurs

Outils du site


issue182:latex

Tables were introduced in Part 5. To review, here (top right) is a simplified version of the code needed to produce the table on p. 23 of FCM#171. This will produce a table without the title and without the column for minimum temperatures. There are also no Fahrenheit temperatures and no degree symbols. There is one column for each of the four months and one row for each municipality. To get the fancier features we have at least two choices. We could code the fancy features in LaTeX or we could build the table in a spreadsheet and export it to LaTeX. Since the point of these articles is to help you learn LaTeX we will choose the first alternative.

Les tableaux ont été présentés dans la partie 5. Pour réviser, voici (en haut à droite) une version simplifiée du code nécessaire pour produire le tableau de la page 23 du FCM n° 171.

Cela produira un tableau sans le titre et sans la colonne des températures minimales. Il n'y a pas non plus de températures Fahrenheit ni de symboles de degrés. Il y a une colonne pour chacun des quatre mois et une ligne pour chaque municipalité. Pour obtenir des fonctions plus sophistiquées, nous avons au moins deux possibilités. Nous pouvons coder ces fonctions dans LaTeX ou construire le tableau dans un tableur et l'exporter vers LaTeX. Puisque le but de ces articles est de vous aider à apprendre LaTeX, nous choisirons la première solution.

Converting tables to LaTeX: • For those who like using spreadsheets there is an Add-In for Excel that will export a selected block of cells into a CSV file that is compatible with LaTeX. • There is an extension for LibreOffice Calc called calc2latex but it has not been updated since 2008. Apparently it worked with LibreOffice 2. I tried it in LibreOffice 7. First it refused to run because of a coding error and then it crashed Calc. • You could build the table in Calc and then Save As a csv file. Then import the csv file into LaTeX. • You could build the table in Calc and export into a graphic file format, jpeg/jpg or pdf are acceptable in LaTeX. Then import the graphic into your LaTeX document. • You can build this table in LibreOffice Write since it is just text and values. (Tables that require calculations cannot be built in Write.) The WritertoLatex extension works well in Write although it will generate a tex file that may contain more complex LaTeX instructions than required. In this example (above) I have replaced the code from Part 5 with the same table built in Calc and saved as a csv file.

Convertir des tableaux en LaTeX : ••Pour ceux qui aiment utiliser des feuilles de calcul, il existe un module complémentaire pour Excel qui exporte un bloc de cellules sélectionné dans un fichier CSV compatible avec LaTeX. ••Il existe une extension pour LibreOffice Calc appelée calc2latex, mais elle n'a pas été mise à jour depuis 2008. Apparemment, elle fonctionnait avec LibreOffice 2. Je l'ai essayée dans LibreOffice 7. D'abord, elle a refusé de s'exécuter à cause d'une erreur de codage, puis elle a fait planter Calc. ••Vous pouvez créer le tableau dans Calc, puis l'enregistrer sous un fichier csv. Puis importer le fichier csv dans LaTeX. ••Vous pouvez construire le tableau dans Calc et l'exporter dans un format de fichier graphique ; jpeg/jpg ou pdf sont acceptables dans LaTeX. Importez ensuite le graphique dans votre document LaTeX. ••Vous pouvez construire ce tableau dans LibreOffice Write puisqu'il s'agit simplement de texte et de valeurs. (Les tableaux qui nécessitent des calculs ne peuvent pas être construits dans Write.) L'extension WritertoLatex fonctionne bien dans Write bien qu'elle génère un fichier tex qui peut contenir des instructions LaTeX plus complexes que nécessaire.

Dans cet exemple (ci-dessus), j'ai remplacé le code de la partie 5 par le même tableau construit en Calc et enregistré sous un fichier csv.

I replaced the commas in the generated CSV file with space&space. Do that in a text editor in the CSV file so you do not replace commas in other parts of your LaTeX document. As noted in earlier issues, Tex / LaTeX requires either two back slashes or two presses of the <Enter> key to generate a line break. In a table, a line break moves down to the next row in the table. This is an adequate table, roughly 50% of the desired result. The goal is a table like this (above). (If we wanted to get very fancy we could add the Fahrenheit temperatures as a separate line in each cell.) Two things to do next: • Set the widths of all the columns. • Merge the pairs of columns for each month. To set column widths, this code is altered: \begin{tabular}{||l|c|c|c|c|c|c|c|c|}

J'ai remplacé les virgules dans le fichier CSV généré par des espaces&espace. Faites-le dans le fichier CSV avec un éditeur de texte afin de ne pas remplacer les virgules dans d'autres parties de votre document LaTeX. Comme indiqué dans les numéros précédents, Tex/LaTeX exige soit deux barres obliques inverses, soit deux pressions sur la touche <Entrée> pour générer un saut de ligne. Dans un tableau, un saut de ligne permet de passer à la ligne suivante du tableau.

Il s'agit d'un tableau adéquat, qui correspond à environ 50 % du résultat souhaité. L'objectif est un tableau comme celui-ci (ci-dessus). (Si nous voulions être très sophistiqués, nous pourrions ajouter les températures en Fahrenheit sur une ligne distincte dans chaque cellule.)

Deux choses à faire ensuite : ••Définir la largeur de toutes les colonnes. ••Fusionner les paires de colonnes pour chaque mois.

Pour définir la largeur des colonnes, on modifie ce code : \begin{tabular}{|l|c|c|c|c|c|c|c|c|}

Keep the alignment instructions, the “l” and the “c”, and add a new instruction “p” with a size and a unit. I am going to set the Max and Min columns to 1.5 cm and the remaining width to the left hand column. (Other units are available, investigate those yourself.) \begin{tabular}{|lp{2.4cm}|cp{1.5cm}|cp{1.5cm}|cp{1.5cm}|cp{1.5cm}|cp{1.5cm}|cp{1.5cm}|cp{1.5cm}|cp{1.5cm}|} If you do not like the vertical lines between columns remove the “|” in the \begin{tabular} command. Now comes the tricky part: merging the four pairs of Max-Min columns and keeping the eight columns of temperatures in the correct places. Here is the start of the new line of code with explanation. Municipality& \multicolumn{2}{c}{January}& Municipality is the text for the current Row 1 Column 1 cell. ( R1C1). The ampersand “&” indicates the start of the next cell in this row. \multicolumn is followed by three arguments. • The first argument {2} indicates how many columns are to be merged. • The second one {c} indicates the alignment of the text (l, c, r are possible). • The third {January} is the contents of this multicolumn cell.

Gardez les instructions d'alignement, le « l » et le « c », et ajoutez une nouvelle instruction « p » avec une taille et une unité. Je vais définir les colonnes Max et Min à 1,5 cm et laisser la largeur restante pour la colonne de gauche. (D'autres unités sont disponibles, étudiez-les vous-même.)

\begin{tabular}{|lp{2.4cm}|cp{1.5cm}|cp{1.5cm}|cp{1.5cm}|cp{1.5cm}|cp{1.5cm}|cp{1.5cm}|cp{1.5cm}|cp{1.5cm}|}

Si vous n'aimez pas les lignes verticales entre les colonnes, supprimez le « | » de la commande \begin{tabular}.

Voici la partie délicate : fusionner les quatre paires de colonnes Max-Min et garder les huit colonnes de températures aux bons endroits. Voici le début de la nouvelle ligne de code avec une explication.

Municipalité& \multicolumn{2}{c}{January}&

Municipalité est le texte de la cellule actuelle de la rangée 1 et de la colonne 1. ( R1C1). L'esperluette « & » indique le début de la cellule suivante dans cette rangée.

\multicolumn est suivi de trois arguments. ••Le premier argument {2} indique combien de colonnes doivent être fusionnées. ••Le deuxième {c} indique l'alignement du texte (l, c, r sont possibles). ••Le troisième {Janvier} est le contenu de cette cellule multi-colonne.

Now you should understand everything in the following line of code. The other three columns, April, July and October, follow the same pattern as January. Municipality&\multicolumn{2}{c}{January}&\multicolumn{2}{c}{April}&\multicolumn{2}{c}{July}&\multicolumn{2}{c}{October}
(Remember the double back-slash indicates the end of the row.) Make sure the total number of merged and not-merged columns in the row with the multicolumn command matches the number of columns in the \begin{tabular} command. In this row we have 1+2+2+2+2 = 9 and the \begin{tabular} command has 1 – l and 8 – c which also equals 9. We need to add a title to our table and then we will be done. That can be done using the \caption command. That will automatically add the word “Table” and a sequence number, something like “Table 1”. Since this is a one page – one table document, we do not need Table numbering. It can also be done by adding a multicolumn row before the line starting “Municipality”

Vous devriez maintenant comprendre tout ce que contient la ligne de code suivante. Les trois autres colonnes, avril, juillet et octobre, suivent le même schéma que janvier.

Municipality&\multicolumn{2}{c}{January}&\multicolumn{2}{c}{April}&\multicolumn{2}{c}{July}&\multicolumn{2}{c}{October}

(N'oubliez pas que la double barre oblique inversée indique la fin de la ligne.)

Assurez-vous que le nombre total de colonnes fusionnées et non fusionnées dans la ligne avec la commande multicolumn correspond au nombre de colonnes dans la commande \begin{tabular}. Dans cette ligne, nous avons 1+2+2+2+2 = 9 et la commande \begin{tabular} a 1 - l et 8 - c, ce qui, de même, est égal à 9.

Nous devons ajouter un titre à notre tableau et nous aurons terminé. Cela peut être fait en utilisant la commande \caption. Celle-ci ajoutera automatiquement le mot « Table » et un numéro de séquence, comme « Table 1 ». Puisqu'il s'agit d'un document d'une page et d'un tableau, nous n'avons pas besoin de numéroter les tableaux. Il est également possible d'ajouter une ligne multicolonne avant la ligne commençant par « Municipalité ».

\multicolumn{9}{c}{Average Temperatures in Four BC Locations} should work. The test is always: will the code compile and generate the desired layout in the PDF file. Please note: The \multicolumn command applies only to the row in which it appears. There is a \multirow command which requires the use of the multirow package. You can investigate that if you wish. There are at least two other ways to merge cells in a Tex table. Next issue: packages in LaTeX / Tex

\multicolumn{9}{c}{Températures moyennes dans quatre endroits de la Colombie-Britannique} devrait fonctionner.

Le test est toujours le suivant : le code sera-t-il compilé et générera-t-il la mise en page souhaitée dans le fichier PDF ?

Veuillez noter :

La commande \multicolumn s'applique uniquement à la ligne dans laquelle elle apparaît. Il existe une commande \multirow qui nécessite l'utilisation du pacquet multirow. Vous pouvez l'étudier si vous le souhaitez.

Il existe au moins deux autres façons de fusionner les cellules d'un tableau Tex.

Dans le prochain numéro : les paquets dans LaTeX / Tex

issue182/latex.txt · Dernière modification : 2022/06/30 16:00 de andre_domenech