Suivant: table, Précédent: quotation & quote, Monter: Environments [Table des matières][Index]
tabbing
Synopsis :
\begin{tabbing} lgn1col1 \= lgn1col2 ... \\ lgn2col1 \> lgn2col2 ... \\ ... \end{tabbing}
L’environnement tabbing
fournit une technique pour aligner du
texte en colonnes. Il fonctionne en réglant des taquets et en tabulant
jusqu’à eux à la façon dont on le faisait avec une machine à écrire
ordinaire.
L’environnement tabbing
est peu utilisé, car en général, pour
formater du code informatique on utilise un environnement verbatim
(voir verbatim). À noter également, pour mettre en vedette la
syntaxe, les paquetages algorithm2e
pour du pseudo-code, et
fancyvrb
, listings
ou minted
pour du vrai code.
Et pour faire un tableau, on préfère les environnements tabular
(voir tabular) ou array
(voir array) pour un petit tableau
qu’on met dans un flottant table
(voir table) et
l’environnement longtable
fourni par le paquetage
longtable
pour un tableau pouvant être coupé sur plusieurs pages.
La description suivante n’est donc fournie que être complet.
Dans l’exemple suivant la première ligne sert à régler les taquets à des
largeurs explicites, elle se termine par une commande \kill
(décrite plus bas) :
\begin{tabbing} \hspace{3cm}\=\hspace{2.5cm}\=\kill Navire \>Armement \>Année \\ \textit{Sophie} \>14 \>1800 \\ \textit{Polychrest} \>24 \>1803 \\ \textit{Lively} \>38 \>1804 \\ \textit{Surprise} \>28 \>1805 \\ \end{tabbing}
Le résultat ressemble à cela :
Navire Armement Année Sophie 14 1800 Polychrest 24 1803 Lively 38 1804 Surprise 28 1805
L’environnement tabbing
se distingue de tabular
notamment
parce qu’avec tabbing
l’utilisateur est obligé de régler la
position des taquets, et le contenu des colonnes est toujours composé
en mode LR et s’étend sur la colonne suivante s’il est plus large que la
colonne courante, alors qu’avec tabular
, l’utilisateur peut selon
le spécificateur de colonne, soit composer le contenu des cellules en
mode LR et laisser LaTeX déterminer la largeur de colonne
automatiquement pour que le contenu ne sorte jamais de la colonne, soit
fixer la largeur et composer le contenu des cellules dans une
parbox
. Une autre différence est que tabular
permet de
faire des filets, notamment de border les colonnes par des filets
verticaux, et d’avoir un espace \tabcolsep
entre le contenu et la
bordure de colonne. Une autre distinction est que un tabbing
peut
être coupé sur plusieurs pages, alors que tabular
génère une
boîte, l’environnement longtable
du paquetage longtable
étant préféré à tabbing
pour les longs tableaux.
Finalement, alors que tabular
peut être utilisé dans n’importe
quel mode, tabbing
ne peut être utilisé qu’en mode paragraphe, et
il démarre un nouveau paragraphe.
De plus, comme l’illustre l’exemple donné plus haut, il n’est pas
nécessaire d’utiliser la forme étoilée de la commande \hspace
au
début d’une ligne tabulée. La marge de droite de l’environnement
tabbing
est la fin de ligne, de sorte que la largeur de
l’environnement est \linewidth
.
L’environnement tabbing
contient une suite de lignes
tabulées, la première ligne tabulée commence immédiatement après
\begin{tabbing}
et chaque ligne se termine par \\
ou
\kill
. Il est possible d’omettre le \\
pour la dernière
ligne et de terminer juste par \end{tabbing}
.
L’environnement tabbing
a un motif courant de taquets de
tabulation qui est une séquence de n taquets, avec n
> 0, numérotés 0, 1, etc. Ceci crée n colonnes
correspondantes. Le taquet № 0 est toujours la marge de gauche
définie par l’environnement englobant. Le taquet numéro i est
réglé quand on lui assigne une position horizontale sur la page avec la
commande \=
. Le taquet numéro i ne peut être réglé que si
les autres taquets 0, …, i-1 ont déjà été réglés.
L’un des taquets du motif courant ayant été réglé comme le taquet
courant, par défaut tout texte composé par la suite au sein de
l’environnement tabbing
est composé en drapeau droit avec le fer à
gauche sur ce taquet, c’est à dire qu’il est aligné à gauche dans la
colonne courante. La composition est faite en mode LR.
Par ailleurs l’environnement tabbing
a un taquet de début de
ligne courant. Par défaut, immédiatement après \begin{tabbing}
c’est le taquet № 0, et on peut le changer pour les lignes suivantes
avec les commandes \+
et \-
. Au début de chaque ligne tabulée, le taquet
courant est initialement égal au taquet de début de ligne courant.
Lorsque le motif de taquets est modifié par une commande \=
,
alors le taquet de début de ligne redevient le taquet № 0 à partir de la
ligne suivante, à moins qu’une commande \+
le change de nouveau
avant le changement de ligne par \\
ou \kill
. La commande
\pushtabs
sauvegarde non seulement les positions de taquets, mais
aussi le taquet de début de ligne, et inversement \poptabs
le
restaure.
La marge de droite de l’environnement tabbing
est la fin de
ligne, c.-à-d. que la largeur de l’environnement est de longueur
\linewidth
. Il n’y a pas par défaut de taquet correspondant à la
marge de droite, même s’il serait possible avec un peu de calcul d’en
définir un à cette position (voir exemples ci-après).
En ce qui concerne la marge de gauche, ou autrement dit le taquet № 0,
contrairement à l’environnement tabular
, il n’est pas nécessaire
de mettre un \noindent
devant \begin{tabbing}
pour
éviter un renfoncement : un environnement tabbing
commence
toujours un nouveau paragraphe sans renfoncement. De plus il est inutile
d’étoiler une commande \hspace
en début de ligne tabulée pour que
l’espace soit pris en compte.
Normalement, au sein du motif de taquets de tabulation, l’ordre des
taquets correspond à des positions allant de gauche à droite. Il est
cependant possible de positionner n’importe quel taquet, hormis le
taquet № 0 à n’importe quelle position en utilisant des espacements
négatifs ou nuls. En réalité, le fait de ne pas pouvoir changer la
position du taquet № 0 n’est pas restrictif, car on peut utiliser à la
place comme taquet de début de ligne le taquet № 1 grâce à la commande
\+
. Ainsi dans l’exemple ci-dessous, alors qu’on a le même
contenu de l’environnement tabbing
que dans l’exemple précédent,
la première et la troisième colonne ont été interverties en changeant
uniquement le motif de taquets dans la première ligne se terminant en
\kill
.
\begin{tabbing} \hspace{5.5cm}\=\hspace{-2.5cm}\=\hspace{-3cm}\=\+\kill Navire \>Armement \>Année \\ \textit{Sophie} \>14 \>1800 \\ \textit{Polychrest} \>24 \>1803 \\ \textit{Lively} \>38 \>1804 \\ \textit{Surprise} \>28 \>1805 \\ \end{tabbing}
Le résultat ressemble donc à cela :
Année Armement Navire 1800 14 Sophie 1803 24 Polychrest 1804 38 Lively 1805 28 Surprise
Les commandes suivantes peuvent être utilisées au sein d’un
environnement tabbing
:
\\ (tabbing
)
Finit une ligne tabulée et la compose. Après cette commande une nouvelle ligne tabulée commence, et donc le taquet courant redevient le taquet courant de début de ligne.
\= (tabbing
)
Règle le prochain taquet à la position courante, et fait de lui le
taquet courant. Si le taquet courant est le taquet № n, alors une
commande \=
règle la position du taquet № n+1 et
fait de lui le taquet courant. Si on avait déjà au moins
n+2 taquets, ceci redéfinit la position du taquet
№ n+1. Sinon, le nombre de taquets dans le motif courant
était à ce moment (n+1), c’est à dire que dernier des
taquets en numéro d’ordre était le № n, alors la commande
\=
en définissant le taquet № n+1, porte le nombre
de taquets de n+1 à n+2.
La position des taquets peut être définie avec plus de liberté que ce qui se passait avec un machine à écrire ordinaire. En effet il est possible de définir à la même position deux taquets de № n et № m distincts, voire de faire en sorte que les taquets № n et № m, avec n<m, soient à des positions telles que le taquet № m soit avant le taquet № n.
\> (tabbing
)
Change le taquet courant au taquet suivant dans l’ordre logique, c.-à-d. si le taquet courant est le taquet № n, alors, en supposant qu’il y ait au moins n+2 taquets définis, on passe au taquet № n+1, sinon cette commande provoque une erreur.
\<
Change le taquet courant au taquet précédent dans l’ordre logique. Cette commande ne peut être utilisée qu’au début d’une ligne tabulée, et que lorsque le taquet de début de ligne courant est le taquet № n avec n>0. Le taquet courant devient alors le taquet № n-1.
Il est en fait possible d’avoir m commandes \<
consécutives
à condition que m≤n, le taquet courant devient
alors le taquet № (n-m). Si par contre
m>n, alors la n+1 commande \<
provoque une erreur.
Il est possible, même si c’est absurde, d’avoir ensuite des commandes
\>
qui défont ce qu’on fait les commandes \<
. Ainsi en
supposant qu’au début d’une ligne tabulée le taquet de début de ligne
courant soit le taquet № 2, faire commencer la ligne par \<\<\>\>
n’a aucun effet. Par contre, \<\<\<\>\>\>
provoquera une erreur,
parce que la troisième commande \<
est illicite. Dans les mêmes
conditions faire \<\>\<\>
provoque également une erreur, car la
seconde commande \<
n’est pas consécutive de la première, elle
n’est donc pas, au sens où on l’entend, utilisée en début de ligne.
\+
Change le taquet de début de ligne courant au taquet suivant dans
l’ordre logique pour la ligne tabulée suivante, et toutes celles qui
suivent tant qu’une autre commande ne vient pas le modifier. La notion
de taquet suivant dans l’ordre logique suit le même principe que pour la
commande \>
, c’est à dire que s’il n’y a que n+1
taquets définis, et que le taquet de début de ligne courant est le
taquet № n, alors cette commande provoque une erreur. La
commande \+
peut être invoquée n’importe où dans la ligne
tabulée, et on peut avoir plusieurs commandes \+
au sein de la
même ligne, du moment que pour chacune d’elle un nombre suffisant de
taquets est déjà défini. Par exemple le code suivant provoque une erreur
parce que bien qu’à la fin de la première ligne on ait trois taquets
définis, au moment où la commande \+
est invoquée le nombre de
taquets définis ne vaut que 1, on ne peut donc pas passer du taquet
№ 0 au taquet № 1 :
\begin{tabbing} Vive \+\=la \=France\\ Vive \>la\>République\\ \end{tabbing}
En revanche le code suivant fonctionne, car lorsque la commande
\+
est passée on a trois taquets définis, les taquets № 0 à 2, on
peut donc passer du taquet № 0 au taquet № 1.
\begin{tabbing} Vive \=la \=France\+\\ Vive \>la\>République\\ \end{tabbing}
C’est pourquoi l’usage est que la ou les commandes \+
sont
toujours invoquées juste avant la fin de ligne \\
ou \kill
.
Il est possible, même si cela est absurde, d’avoir sur la même ligne à
la fois des commandes \+
et \-
s’annulant l’une l’autre,
du moment qu’aucune d’elle ne fasse passer sur un taquet non défini.
\-
Change le taquet de début de ligne courant au taquet précédent dans
l’ordre logique pour la ligne tabulée suivante, et toutes celles qui
suivent tant qu’une autre commande ne vient pas le modifier. C’est à
dire que si le taquet de début de ligne courant est le taquet № n,
et qu’on a m commandes \-
avec m≥n,
alors le taquet de début de ligne courant de la ligne suivante devient
le taquet № n-m. Par contre, si
m>n, alors la (n+1)ième commande
\+
provoque une erreur.
\' (tabbing
)
Déplace tout ce que vous avez tapé jusqu’alors dans la colonne courante,
c.-à-d. tout ce qui suit la plus récente commande \>
,
\<
, \'
, \\
, ou \kill
, aligné à droite dans
la colonne précédente, le fer à droite étant espacé du taquet courant
d’une longueur \tabbingsep
. Voir aussi \`
.
\` (tabbing
)
Vous permet de placer du texte justifié à droite en face de n’importe
quel taquet, y compris le taquet 0. Les commandes \`
et \'
alignent toutes deux le texte à droite, toutefois elles se distinguent
fortement par deux aspects :
\`
, le
texte qui suit la commande \`
et qui va jusqu’à la fin de la
ligne tabulée, c.-à-d. jusqu’à \\
ou \end{tabbing}
.
Il ne doit y avoir aucune commande \>
ou \'
entre le
\`
et la commande \\
ou \end{tabbing}
qui termine
la ligne. Dans le cas de la commande \'
au contraire, c’est le
texte qui précède la commande \'
.
\'
l’alignement se fait sur un taquet et avec
un espacement relatif de \tabbingspace
, alors qu’avec \`
l’alignement se fait sur la marge de droite et sans espacement relatif.
\a (tabbing
)
Dans un environnement tabbing
, les commandes \=
, \'
et \`
ne produisent pas d’accents comme d’habitude
(voir Accents). À leur place, on utilise les commandes \a=
,
\a'
et \a`
.
\kill
Règles les taquets sans produire de texte. Fonctionne tout comme
\\
à ceci près que la ligne courante est jetée au lieu de
produire une sortie. L’effet de toute commande \=
, \+
ou
\-
dans cette ligne demeure en vigueur.
\poptabs
Restaure les positions de taquets et le taquet de début de ligne
sauvegardés par le dernier \pushtabs
.
\pushtabs
Sauvegarde dans une pile dédiée à cet effet le motif courant de taquets
de tabulation ainsi que le taquet de début de ligne. C’est utile pour
changer temporairement les positions de taquets au milieu d’un
environnement tabbing
. Après un \pushtabs
, on a un nouveau
motif vierge, c.-à-d. ne contenant qu’un seul taquet, le taquet № 0 à
la position de début de ligne. Pour toute commande \pushtabs
il
doit y avoir une commande \poptabs
avant la fin de
l’environnement, c’est à dire que la pile doit être explicitement vidée
avant le end{tabbing}
.
\tabbingsep
Distance du texte déplacé par \'
à la gauche du taquet courant.
Il est à noter que les espaces en début de ligne, où après \=
,
\>
ou \<
sont gobés, qu’il s’agisse d’espaces produits par
la macro \space
ou par le caractère espace. Par contre l’espace
produit par la le caractère de contrôle espace (\
, c.-à-d.
une controblique suivie d’un caractère espace) n’est pas gobé.
Cet exemple compose une fonction en Pascal dans un format traditionnel :
{\ttfamily \begin{tabbing} function \= fact(n : integer) : integer;\+\\ begin \=\+\\ if \= n $>$ 1 then\+\\ fact := n * fact(n-1)\-\\ else\+\\ fact := 1;\-\-\\ end;\\ \end{tabbing}}
Le résultat ressemble à cela :
function fact(n : integer) : integer; begin if n > 1 then fact := n * fact(n-1); else fact := 1; end;
Voici un autre exemple où le taquet № 2 est entre le taquet № 0 et le taquet № 1 :
{\ttfamily \begin{tabbing} 12\=34\=\kill 12345678\=9\\ 1\>2\>3\\ \end{tabbing}}
Le résultat ressemble à cela :
123456789 1 3 2
Voici un exemple où les taquets № 0 et № 1 sont confondus, ainsi que les
taquets № 2 et № 3, ce qui permet de superposer le texte aux taquets
impairs sur celui au taquets pairs, par exemple pour souligner ou barrer
comme avec une machine à écrire, en superposant un caractère _
ou
un caractère -
. Évidemment ce n’est qu’une illustration de
la flexibilité des taquets, et non une méthode convenable pour souligner
ou barrer un mot, d’une part parce que tabbing
en soi commençant
un nouveau paragraphe ne permet pas d’agir sur un seul mot, et d’autre
part, parce que le paquetage soul
fait cela beaucoup mieux.
{\ttfamily \begin{tabbing} \=souligne \=\=\kill soulign\a'e\> \_{}\_{}\_{}\_{}\_{}\_{}\_{}\_{}\> barr\a'e\>{--}{--}{--}{--}{--}{--}\\ \end{tabbing}}
Finalement, voici un exemple où on a placé le taquet № 5 décalé d’une
longueur \tabbingsep
à droite de la marge de droite.
{\ttfamily \begin{tabbing} \hspace{1cm}\=\hspace{1cm}\=\hspace{1cm}\=\hspace{1cm}\= \hspace{\dimexpr\linewidth-4cm+\tabbingsep}\=\kill 1\>2\>X\'3\>4\>5\>\a`a gauche de de la marge de droite avec \textbackslash'\'\\ 1\>2\>X\'3\>4\>5\`\a`a gauche de de la marge de droite avec \textbackslash`\\ \end{tabbing}}
Le résultat ressemble à cela :
1 2 X 3 4 5 à gauche de la marge de droite avec \' 1 2 X 3 4 5 à gauche de la marge de droite avec \`
Suivant: table, Précédent: quotation & quote, Monter: Environments [Table des matières][Index]