Les tableaux utilisent les mêmes macros que les listes, à un détail
près : on utilise
.Ta
pour séparer les colonnes et
.It
pour séparer les lignes, comme dans l'exemple qui suit :
.Bl -t table -columns |ll| .It Pommes .Ta 1 .It Poires .Ta 60 .El
Comment faire des tableaux plus compliqués ?
Pour les tableaux compliqués, il suffit d'utiliser les macros
Bf
et
Ef
et d'écrire le tableau en LaTeX ou HTML directement, n'oubliant pas
d'ajouter un "e" après chaque backslash :
.Bf -f latex \ebegin{tabular}{|l|l|} \ehline \emulticolumn{2}{|c|}{Ma première ligne en deux cellules} \e\e \ehline Première cellule & Deuxième cellule \e\e \eend{tabular} .Ef
Par contre, il ne faut pas oublier, si l'on utilise des paquets LaTeX
type
multirow
,
par exemple, d'ajouter le package au préambule LaTeX, lequel devra alors
être
inclus à la main.
Il est également possible d'introduire le tableau HTML ou LaTeX dans
un bloc
.Bd
pour lui donner un style en HTML. On peut également introduire le contenu du
tableau dans une table invoquée à l'aide d'un
.Bl -t table Titre
« vide » pour profiter de la génération automatique de la liste des tables
et profiter des références.
.\" le tableau en HTML et EPUB .Bl -t table -columns |l|l| Titre .Bf -f xhtml,epub <tr> <td rowspan="2">Cellule 1</td> <td>Cellule 2</td> </tr> <tr> <td>Cellule 3</td> </tr> .Ef .El .\" le tableau en LaTeX .Bl -t table |l|l| .Bf -f latex \multirow{2}{*}{Cellule 1} & Cellule 2 \\ & Cellule 3 \\ .Ef .El
Pour les références croisées, on utilisera la macro
Sx
.
Pour se réferrer à une partie, à un chapitre, à une section ou une
sous-section, on reprendra le titre donné à ceux-ci :
.Ch "Introduction" .Ch "Mon premier chapitre" Comme dit en .Sx Introduction , …
L'on pourra changer le texte du lien avec l'option
-name
:
Comme dit .Sx -name "ici" Introduction .
Pour faire références aux titres des tableaux ou des figures, il suffira
d'ajouter le type (lot ou lof) grâce à l'option
-t
:
.Sx -t lof "Titre de ma figure" .
Comment créer une référence vers un mot hors chapitre/section/… ?
Il est possible de donner un
id
à un
Sm
ou à ses variantes multilignes, ainsi qu'à un
Bd
.
On pourra référencer par la suite ce texte ou bloc de texte, toujours
grâce à la macro
Sx
:
Les .Sm -id label-rhinocéros -t animal rhinocéros sont des animaux féroces. .P … .P Nous avons parlé des .Sx -id -name rhinocéros label-rhinocéros .
La macro
Tc
permet de créer une table de matière ainsi qu'une liste des figures ou une liste
des tableaux.
Avec cette macro, on peut également spécifier que l'on veut une table des
matières générale de peu de profondeur avec l'option
-summary
.
L'option
mini
est à utiliser lors d'une invocation en début de chapitre, et crée une table
des matières qui contiendra les sections et sous-sections du dit chapitre.
.Tc -summary .Ch "Mon premier chapitre" .Tc -mini .Sh "Ma section"
Pour ne pas répéter les même morceaux de textes trop souvent et améliorer la
maintenabilité de ses documents, il est possible de définir des
variables
avec
.#dv
,
ou des
macros,
avec
.#de
.
Variables Par exemple, pour ne pas répéter tout le temps le chemin vers les images :
.#dv img /long/chemin/vers/un/dossier/contenant/les/images .\" On peut ensuite se contenter d'écrire: .Im \*[img]/mon-image.jpg .\" La séquence d'échappement \*[img] est remplacée par la valeur de la .\" variable.
De plus, de cette façon, si l'on choisit de changer le nom du dossier contenant
les images, il suffira de changer la variable
img
pour changer les chemins dans toutes les invocations de
Im
.
Il peut être également utile d'utiliser des variables pour ne pas répéter tout le temps un même bout de texte.
.#dv chaperon-bleu "«Les histoires terribles et incroyables du Chaperon Bleu»" .\" Et on pourra utiliser la variable de la façon qui suit: Aujourd'hui nous allons analyser \*[chaperon-bleu].
L'on peut également trouver cela utile lorsque l'on a par exemple deux documents partageant une même page de titre personnalisée (c'est-à-dire dans le cas où celle par défaut ne suffit pas). On définit les variables dans les deux documents :
.\" dans le premier document .#dv titre "Titre document 1" .#dv auteur "Auteur document 1" .\" puis on inclut avec un .If (Include file) la page du titre: .If page-titre.frundis
.\" dans le deuxième document .#dv titre "Titre document 2" .#dv auteur "Auteur document 2" .If page-titre.frundis
On pourra ensuite utiliser ces variables dans un fichier commun.
.\" dans le fichier appelé «page-titre.frundis» ... .Bd -t titlepage .Bm -t titre \*[titre] .Em .Bm -t auteur \*[auteur] .Em .Ed
Macros
Les macros définies avec
#de
peuvent être utilisées à beaucoup de fins. Un cas d'utilisation simple peut être :
.#de Note .P Note. .#.
qui permet ensuite d'écrire :
.Note Texte descriptif…
et ainsi utiliser la même macro pour introduire toutes les « Notes ». Si au lieu de « Note. » avec un point, on veut plus tard « Note : » avec deux points, il suffit de modifier à un seul endroit (cette macro est utilisée pour les notes de cette FAQ).
Il s'agit donc du cas où l'on a des
mtags
et
dtags
,
des définitions de macros et divers paramètres de configuration globaux
que l'on veut réutiliser pour divers documents distincts.
Une première méthode consiste à inclure dans chaque fichier source à l'aide de la macro
If
le fichier contenant les déclarations en précisant le chemin absolu, ou relatif
au dossier courant.
Une méthode plus pratique est d'utiliser la variable d'environnement FRUNDISLIB pour dire à frundis de chercher des fichiers donnés par des chemins relatifs à d'autres dossiers que le dossier courant.
On pourra, par exemple, écrire dans la configuration du shell (.bashrc, .kshrc, etc.) :
export FRUNDISLIB=~/chemin/vers/mes/packages/frundis
Alors, dans le fichier source du document dans lequel on veut inclure ces déclarations, on écrit :
.If fichier-commun-01.frundis
Pour cela, il existe deux paramètres,
xhtml-top
et
xhtml-bottom
,
qui permettent d'inclure un fichier HTML au début et à la fin de chaque
page. Il suffira d'écrire dans le fichier frundis :
.X set xhtml-top "mon-xhtml-top.html" .X set xhtml-bottom "mon-xhtml-bottom.html"
Comment éliminer les espaces entre du texte et une macro ou entre macro et macro ? Lorsqu'on écrit :
Je crois qu' .Sm -t latin "a priori" , c'est ça.
il y a un espace entre l'apostrophe et le texte en latin de la macro.
Pour l'enlever il est possible d'utiliser l'option
ns
(no space) dans la macro pour enlever cet espace. L'option est
valable pour
Sm
(et ses variantes multilignes),
Lk
,
Sx
et, en général, toute macro ayant pour but de marquer du texte à l'intérieur
d'un paragraphe.
Si l'on veut éliminer totalement les espaces ajoutés entre les macros,
il est possible de modifier la valeur du flag
ns
(mode no space) de la macro
#fl
,
et de la fixer à 1 :
.#fl ns 1
Il ne faudra pas oublier de refixer la valeur à zéro lorsque nécessaire.
Comment insérer à la main un espace en fin de ligne ?
frundis
donne toujours un warning lorsqu'il y a des espaces en fin de ligne (en général
ils ne servent à rien, car un retour à la ligne est inséré automatiquement).
Pour éviter ce warning il suffit d'ajouter le caractère spécial
\&
en fin de ligne, après l'espace ajouté.
Comment éviter l'ajout d'espaces insécables automatique en français ?
Lorsque le paramètre
lang
est fixé à “fr”,
frundis
ajoute automatiquement des espaces devant toute la ponctuation où ils
sont, généralement, nécessaires. Pour enlever cet espace on pourra tout
simplement ajouter le caractère spécial
\&
devant cette ponctuation :
.D Comment ça?\&? —s'exclama la vieille sorcière.
Le premier point d'interrogation sera traité tandis que le second sera collé au premier.
S'il s'agit d'un gros bloc que l'on veut ne pas être traité par l'ajout
automatique d'espaces insécables, il est possible d'utiliser la macro
#fl
qui peut modifier le statut du drapeau (flag)
fr-nbsp-auto
:
.#fl fr-nbsp-auto 0 Mon gros bloc que je ne veux pas échapper. .\" puis je refixe à 1 le paramètre: .#fl fr-nbsp-auto 1