Les tableaux simples avec tabulate

Fleuron

Un premier tableau

L'environnement tabulate permet de créer des tableaux peu complexe intégrés au texte, sa syntaxe est proche de celle des tableaux sous LaTeX.

\starttabulate[ ] . . . \stoptabulate

Les colonnes sont délimitées par | et l'alignement du texte est défini par c (centré), l (aligné à gauche, left) et r (aligné à droite, right)

\starttabulate[|l|r|c|] . . . \stoptabulate
\starttext
\starttabulate[|r|l|]
\HL
\NC {\bf Nom} \NC {\bf Caractéristique} \NC\NR
\HL
\NC Robert \NC Le plus vert \NC\NR
\NC Ginette \NC La plus chouette \NC\NR
\NC Raymond \NC Le plus con \NC\NR
\NC Roland \NC Le plus lent \NC\NR
\HL
\stoptabulate
\stoptext

D'autres alignements du texte sont possibles.

Aux trois précédents alignements c, l et r, s'ajoute :

\starttext
\starttabulate[|w(4cm)|p(6cm)|]
\HL
\NC {\bf Nom} \NC {\bf N'importe quoi} \NC\NR
\HL
\NC Robert \NC Thus, I came to the conclusion that the designer of a new system must not only be the implementer and first large--scale user; the designer should also write the first user manual.\NC\NR
\NC Ginette\NC The separation of any of these four components would have hurt TEX significantly.\NC\NR
\NC Raymond \NC Once the initial design is complete and fairly robust, the real test begins as people with many different viewpoints undertake their own experiments.\NC\NR
\HL
\stoptabulate
\stoptext

\starttext
\starttabulate[|w(4cm)|p|]
\HL
\NC {\bf Nom} \NC {\bf N'importe quoi} \NC\NR
\HL
\NC Robert \NC Thus, I came to the conclusion that the designer of a new system must not only be the implementer and first large--scale user; the designer should also write the first user manual.\NC\NR
\NC Ginette\NC The separation of any of these four components would have hurt TEX significantly.\NC\NR
\NC Raymond \NC Once the initial design is complete and fairly robust, the real test begins as people with many different viewpoints undertake their own experiments.\NC\NR
\HL
\stoptabulate
\stoptext

Tu peux combiner les différentes options :

\starttext
\starttabulate[|cw(4cm)|rp|]
\HL
\NC {\bf Nom} \NC {\bf N'importe quoi} \NC\NR
\HL
\NC Robert \NC Thus, I came to the conclusion that the designer of a new system must not only be the implementer and first large--scale user; the designer should also write the first user manual.\NC\NR
\NC Ginette\NC The separation of any of these four components would have hurt TEX significantly.\NC\NR
\NC Raymond \NC Once the initial design is complete and fairly robust, the real test begins as people with many different viewpoints undertake their own experiments.\NC\NR
\HL
\stoptabulate
\stoptext

Voilà tu en sais assez pour utiliser tabulate dans la majorité des cas. Si tu veux faire des choses plus complexe il vaut mieux utiliser TABLE. Mais bon Hans Hagen à quand même prévu d'autres petites choses.

Type de colonnes

Voici d'autre type de colonnes :

Changer la fonte

\starttext
\starttabulate[|B|T|]
\HL
\NC Nom \NC {\bf Caractéristique} \NC\NR
\HL
\NC Robert \NC Le plus vert \NC\NR
\NC Ginette \NC La plus chouette \NC\NR
\NC Raymond \NC Le plus con \NC\NR
\NC Roland \NC Le plus lent \NC\NR\HL
\stoptabulate
\stoptext

Tu peux combiner plusieurs caractéristiques

\starttext
\starttabulate[|cIw(6cm)|Rr|]
\HL
\NC Nom \NC {\bf Caractéristique} \NC\NR
\HL
\NC Robert \NC Le plus vert \NC\NR
\NC Ginette \NC La plus chouette \NC\NR
\NC Raymond \NC Le plus con \NC\NR
\NC Roland \NC Le plus lent \NC\NR\HL
\stoptabulate
\stoptext

Mode mathématique

Là je te laisse essayer tout seul, j'ai arrêté les maths en terminal, çà fait un bail.

Ajouter un espace horizontal

Il est possible d'augmenter l'espace à gauche, à droite et des 2 côtés entre le texte et le bord de la colonne à l'aide des types de colonnes suivant :

n est un nombre (coefficient multiplicateur). La valeur par défaut de l'espace entre le texte et le bord de la colonne est de 0,5em.

\starttext
\starttabulate[|li3|rj5|]?
\HL
\NC Nom \NC {\bf Caractéristique} \NC\NR?
\HL
\NC Robert \NC Le plus vert \NC\NR?
\NC Ginette \NC La plus chouette \NC\NR
\NC Raymond \NC Le plus con \NC\NR?
\NC Roland \NC Le plus lent \NC\NR?\HL?
\stoptabulate
\stoptext

Tu peux modifier la valeur de l'espace par défaut (0,5em) avec \setuptabulate[unit=dimension]

Avec :

\setuptabulate[unit=1cm]

Le tableau ci-dessus devient :

Modifier encore la fonte

Si les commandes vue précédemment ne te suffise pas tu peux utiliser ceci :

f{\commande}

\commande est une commande de changement de fonte (dans les anciennes versions de ConTeXt les {} n'étaient pas nécessaires mais depuis la version de ConTeXt livrée avec la TeXlive2012 elles sont indispensable). Un exemple :

f{\tfxx}

Ceci ne suffit pas il faut aussi encadrer de {} le texte des cellules concernées et utiliser \HC au-lieu de \NC pour déclarer la cellule :

\starttext
\starttabulate[|lf{\tfxx}|rf{\tfd}|]
\HL
\NC Nom \NC {\bf Caractéristique} \NC\NR
\HL
\HC {Robert} \HC {Le plus vert} \NC\NR
\HC {Ginette} \HC {La plus chouette} \NC\NR
\HC {Raymond} \HC {Le plus con} \NC\NR
\HC {Roland} \HC {Le plus lent} \NC\NR\HL
\stoptabulate
\stoptext

Appliquer une commande

Dans le même principe que ci-dessus

h{\commande}

permet d'appliquer une commande ConTeXt, dans l'exemple suivant \framed qui dessine un cadre autour de l'objet :

\starttext
\starttabulate[|lh{\framed}|r|]
\HL
\NC Nom \NC {\bf Caractéristique} \NC\NR
\HL
\HC {Robert} \NC Le plus vert \NC\NR
\HC {Ginette} \NC La plus chouette \NC\NR
\HC {Raymond} \NC Le plus con \NC\NR
\HC {Roland} \NC Le plus lent \NC\NR\HL
\stoptabulate
\stoptext

Un autre exemple un peu plus fun :

\def\barre#1{\blackrule[width=#1em]}
\starttext
\starttabulate[|l|lh{\barre}|]
\HL
\NC Nom \NC {\bf Litres de bière ingurgités} \NC\NR
\HL
\HC {Robert} \HC{ 5} \NC\NR
\HC {Ginette} \HC{ 7} \NC\NR
\HC {Raymond} \HC{ 16} \NC\NR
\HC {Roland} \HC{ 2} \NC\NR\HL
\stoptabulate
\stoptext

Ajouter des trucs avant ou après les cellules

\starttext
\starttabulate[|l|a{)}b{(}r|]
\HL
\NC Nom \NC {\bf Caractéristique} \NC\NR
\HL
\HC {Robert} \NC Le plus vert \NC\NR
\HC {Ginette} \NC La plus chouette \NC\NR
\HC {Raymond} \NC Le plus con \NC\NR
\HC {Roland} \NC Le plus lent \NC\NR\HL
\stoptabulate
\stoptext

Aligner le texte des cellules par rapport à un élément

Par exemple pour aligner les chiffres d'une cellule sur la décimale : g{,} en France et g{.} en Angleterre. Il faut aussi utiliser \NG :

\starttext
\starttabulate[|l|cg{,}|]
\HL
\NC Nom \NC {\bf Litres de bière ingurgités} \NC\NR
\HL
\HC {Robert} \NG{ 5,75} \NC\NR
\HC {Ginette} \NG{ 7,2} \NC\NR
\HC {Raymond} \NG{ 16,5} \NC\NR
\HC {Roland} \NG{ 2,001} \NC\NR
\NC {\bf Total}\NC \overbar{31,451} \NC\NR
\stoptabulate
\stoptext

Remarque l'utilisation de \overbar{ } pour ajouter un trait pour l'addition (Attention il faut utiliser \NC et non \NG.

Tu peux aligner sur ce que tu veux par exemple sur un e:

\starttext
\starttabulate[|lg{e}|l|]
\HL
\NC Nom \NC {\bf Caractéristique} \NC\NR
\HL
\HC {Robert} \NC Le plus vert \NC\NR
\HC {Ginette} \NC La plus chouette \NC\NR
\HC {Annie} \NC Qui aime les sucettes \NC\NR
\HC {Hervé} \NC Le plus énervé \NC\NR\HL
\stoptabulate
\stoptext

D'autre type de séparateur de cellule

\EQ permet de séparer les cellules avec un symbole, deux points : par défaut :

\starttext
\starttabulate[|l|l|]
\HL
\NC Nom \NC {\bf Caractéristique} \NC\NR
\HL
\NC Robert \EQ Le plus vert \NC\NR
\NC Ginette \EQ La plus chouette \NC\NR
\NC Raymond \EQ Le plus con \NC\NR
\NC Roland \EQ Le plus lent \NC\NR\HL
\stoptabulate
\stoptext

Comme tu peux le voir les : sont un peu trop collés à Raymond, donc l'utilisation d'un j n sera utile :

\starttext
\starttabulate[|lj1|l|] \HL
\NC Nom \NC {\bf Caractéristique} \NC\NR
\HL
\NC Robert \EQ Le plus vert \NC\NR
\NC Ginette \EQ La plus chouette \NC\NR
\NC Raymond \EQ Le plus con \NC\NR
\NC Roland \EQ Le plus lent \NC\NR\HL
\stoptabulate
\stoptext

Tu peux également utiliser le type de colonne e qui produit le même effet pour tous les élément de la colonne, entête compris (pas forcement très bien venu dans notre exemple).

\starttext
\starttabulate[|lej1|l|]
\HL
\NC Nom \NC {\bf Caractéristique} \NC\NR
\HL
\NC Robert \NC Le plus vert \NC\NR
\NC Ginette \NC La plus chouette \NC\NR
\NC Raymond \NC Le plus con \NC\NR
\NC Roland \NC Le plus lent \NC\NR\HL
\stoptabulate
\stoptext

Tu peux modifier le : à l'aide de :

\setuptabulate[EQ={texte}]

par exemple avec =

\setuptabulate[EQ={=}]
\starttext
\starttabulate[|lj1|l|]?
\HL
\NC Nom \NC {\bf Caractéristique} \NC\NR?
\HL
\NC Robert \EQ Le plus vert \NC\NR
\NC Ginette \EQ La plus chouette \NC\NR
\NC Raymond \EQ Le plus con \NC\NR
\NC Roland \EQ Le plus lent \NC\NR\HL
\stoptabulate
\stoptext

Si tu veux utiliser à la foi une commande avec h{\commande} et un séparateur de colonne comme : ou = tu dois utiliser \HQ comme début de cellule

Traits verticaux

\VL permet de tracer un trait vertical séparant les cellules :

\setuptabulate[EQ={=}]
\starttext
\starttabulate[|l|l|]? \HL
\NC Nom \NC {\bf Caractéristique} \NC\NR?
\HL
\NC Robert \VL Le plus vert \NC\NR
\NC Ginette \NC La plus chouette \NC\NR
\NC Raymond \VL Le plus con \NC\NR
\NC Roland \VL Le plus lent \NC\NR\HL
\stoptabulate
\stoptext

Là encore l'utilisation de n j n ou de n i n est nécessaire. Je te rappelle que tabulate est fait pour des tableaux simples et si tu veux des filets verticaux il vaut mieux utliser d'autre environnement de tableaux.

Modifier la taille des filets horizontaux

Tu utilises une option de \setuptabulate

\setuptabulate[rulethickness=dimension]

Un exemple :

\setuptabulate[rulethickness=0.5em] \starttext
\starttabulate[|l|l|]
\HL
\NC {\bf Nom} \NC {\bf Caractéristique} \NC\NR
\HL
\NC Robert \NC Le plus vert \NC\NR
\NC Ginette \NC La plus chouette \NC\NR
\NC Raymond \NC Le plus con \NC\NR
\NC Roland \NC Le plus lent \NC\NR
\HL
\stoptabulate
\stoptext

Régler l'espace entre les filets et le texte

Tu utilises une option de \setuptabulate

\setuptabulate[distance=valeur]

valeur peut être : blank, grid, depth, une dimension, small, medium, big et none

Avec :

\setuptabulate[distance=2em]

le tableau précédent devient :

La couleur

Colorier le texte des cellules

Tu emploies les commandes standards pour la colorisation :

\starttext
\starttabulate[|l|l|]
\HL
\NC {\bf Nom} \NC {\bf Caractéristique} \NC\NR
\HL
\NC Robert \NC {\green Le plus vert} \NC\NR
\NC Ginette \NC {\red La plus chouette} \NC\NR
\NC Raymond \NC Le plus con \NC\NR
\NC Roland \NC Le plus lent \NC\NR
\HL
\stoptabulate
\stoptext

Colorier les traits horizontaux

Tu utlises une option de \setuptabulate

\setuptabulate[rulecolor=nom de la couleur]

Un exemple :

\setuptabulate[rulecolor=red]
\starttext
\starttabulate[|l|l|]
\HL
\NC {\bf Nom} \NC {\bf Caractéristique} \NC\NR
\HL
\NC Robert \NC Le plus vert \NC\NR
\NC Ginette \NC La plus chouette \NC\NR
\NC Raymond \NC Le plus con \NC\NR
\NC Roland \NC Le plus lent \NC\NR
\HL
\stoptabulate
\stoptext

Colorier les traits verticaux

Il suffi d'ajouter une option à \VL

\setuptabulate[rulecolor=red]
\starttext
\starttabulate[|lj1|l|]
\HL
\NC {\bf Nom} \NC {\bf Caractéristique} \NC\NR
\HL
\NC Robert \VL[green] Le plus vert \NC\NR
\NC Ginette \VL[red] La plus chouette \NC\NR
\NC Raymond \VL[red] Le plus con \NC\NR
\NC Roland \VL[blue] Le plus lent \NC\NR
\HL
\stoptabulate
\stoptext

Colorier le fond des cellules

Tu utilises les types de colonnes suivants :

\setuptabulate[rulecolor=red]
\starttext
\starttabulate[|lk1CR{red}|lk1CC{green}|]
\HL
\NC {\bf Nom} \NC {\bf Caractéristique} \NC\NR
\HL
\NC Robert \NC Le plus vert \NC\NR
\NC Ginette \NC La plus chouette \NC\NR
\NC Raymond \NC Le plus con \NC\NR
\NC Roland \NC Le plus lent \NC\NR
\HL
\stoptabulate
\starttabulate[|lk1CM{red}|lk1CL{green}|]
\HL
\NC {\bf Nom} \NC {\bf Caractéristique} \NC\NR
\HL
\NC Robert \NC Le plus vert \NC\NR
\NC Ginette \NC La plus chouette \NC\NR
\NC Raymond \NC Le plus con \NC\NR
\NC Roland \NC Le plus lent \NC\NR
\HL
\stoptabulate
\stoptext

\starttext
\starttabulate[|c|c|c|c|c|]
\NC l \NC e \NC s \NC c \NC h \NC \NR
\NC t \NC i \NC c \CM[green] e\NC s \NC \NR
\NC l \NC e \NC s \NC p \CM[green] l \NC \NR
\NC u \NC s \CM[green] c \CM[green] h \CM[green] o \NC \NR
\NC u \NC e \NC t \NC t \NC e \NC \NR
\stoptabulate
\stoptext

Définir ses tableaux

Comme beaucoup d'environement ConTeXt tu peux définir tes tableaux :

\definetabulate[identifiant][type de colonnes]

Tu l'appelles par

\startidentifiant
...
\stopidentifiant

Et tu le modifies par :

\setuptabulate[identifiant][option1, option2,...]

Un exemple :

\definetabulate[monBeauTableau][|lk1CM{red}|lk1CL{green}|]
\\setuptabulate[monBeauTableau][rulethickness=0.5em]

\startmonBeauTableau
\HL
\NC {\bf Nom} \NC {\bf Caractéristique} \NC\NR
\HL
\NC Robert \NC Le plus vert \NC\NR
\NC Ginette \NC La plus chouette \NC\NR
\NC Raymond \NC Le plus con \NC\NR
\NC Roland \NC Le plus lent \NC\NR
\HL
\stopmonBeauTableau

Étendre le contenu d’une cellule sur plusieurs

À partir de la version du 3 septembre 2021 de la LMTX, Hans Hagen a ajouté une nouvelle commande qui permet de placer du contenu sur plusieurs cellules :

\NS[nombre de cellules impliquées][position]

position prend 3 valeurs r pour right (à droite) l pour left (à gauche) et c pour centré.

Un exemple :

\starttabulate[|c|c|c|]
\NC 1 \NC deuxième colonne \NC troisième colonne \NC \NR
\NC 2 \NC seconde \NC troisième \NC \NR
\NC 3 r \ NS[1][r]seconde & troisième \NC \NR
\NC 3 c \NS[1][c]seconde & troisième \NC \NR
\NC 3 l \NS[1][l]seconde & troisième \NC \NR
\stoptabulate

Voila je t'ai donné toutes les possibilités offertes par tabulate, mais il est préférable de l'utiliser pour des tableaux simples et si tu veux faire des choses plus complexe il vaut mieux utiliser d'autres environnements comme TABLE ou xtables.