Introduction à Texinfo Benjamin Drieu v0.1 - 25 septembre 1997 Ce document est une introduction à Texinfo, le format de documentation adopté par GNU. Son but est de présenter Texinfo en quelques pages et de permettre de débuter dans ce format, en aucun cas fournir une documentation exhaustive sur le sujet. Si vous cherchez une documentation plus complète sur Texinfo (mais en langue anglaise) reportez vous au manuel fourni avec toute distribution de Texinfo, au format Texinfo, bien sûr :-). Vous trouverez l'ensemble des fichiers exemples de ce document sur le site web de l'association APRIL à l'url . Qu'est-ce que Texinfo ?

Vous avez une documentation à faire mais vous aimeriez qu'elle soit consultable sous forme hypertextuelle et en même temps qu'elle soit imprimable ? Vous n'aimez pas le WYSIWYG ni le look-and-feel ? Vous trouvez les manuels de GNU sublimes ?

Alors sans aucun doute, Texinfo est fait pour vous ! C'est un formateur de texte, massivement utilisé par GNU (tous les manuels GNU ou presque sont au format Texinfo), qui permet une sortie consultable par exemple sous Emacs à l'aide du mode Info ou imprimable avec l'aide de TeX.

A quoi celà ressemble t'il ? Petit exemple

Voici un exemple minimal de fichier Texinfo. Il sera étoffé tout au long de ce document, et figurera en version complète à sa fin. L'exemple est traditionnel: c'est le manuel d'une machine à café.

\input texinfo @c -*-texinfo-*- @c %**start of header @setfilename cafe.info @settitle Manuel Machine @`a caf@'e @c %**end of header @titlepage @title Machine @`a caf@'e @subtitle v1.2 - 25 septembre 1997 @author Benjamin Drieu @end titlepage Ce manuel va vous expliquer comment utiliser la machine @`a caf@'e. @bye

Heu... là j'ai pas tout compris

Le principe d'un document Texinfo est qu'il est composé d'un en-tête, suivi du corps du document.

Une ligne peut comporter une commande Texinfo qui commence toujours par '@', et peut comporter des arguments.

Décortiquons ligne-à-ligne l'exemple ci-dessus:

'\input texinfo @c -*-texinfo-*-' charge les macros Texinfo lors du formatage par TeX. Celà se fait par le chargement du fichier texinfo.tex au moment du formatage. Si vous voulez personnaliser la mise en page de vos documents Texinfo formatés (par exemple franciser les titres), vous pouvez éditer ce fichier qui est au format TeX. '@c commentaire' ligne de commentaire: tout ce qui est compris en '@c' et le caractère de fin de ligne ne sera pas formaté. Les commentaires '%**start of header' et '%**end of header' sont destinés à Emacs. '@setfilename nom de fichier' spécifie le nom de fichier en sortie lors du formatage par TeX (voir plus loin). '@settitle titre' spécifie le titre du document '@titlepage' tout ce qui suit initialise la page de titre: on entre dans la section titlepage. '@title titre' spécifie le titre de la page qui sera imprimé en page de couverture dans le cas d'un formatage par TeX. '@subtitle sous-titre' spécifie un sous-titre qui sera imprimé sur la page de couverture après le titre. Plusieurs sous-titres peuvent être spécifiés. '@author auteur' spécifie l'auteur du document. Plusieurs auteurs peuvent être spécifiés. '@end titlepage' permet de sortir de la section titlepage pour revenir dans le corps du document. Les choses sérieuses peuvent commencer. '@bye' spécifie au formateur de textes de s'arrèter lorsqu'il rencontrera cette ligne. Remarquons l'insertion de commandes telles que '@`a' au milieu du texte. Ces commandes ont pour but d'insérer un caractère accentué à l'endroit ou elles se trouvent.

Formattons ce document Sortie papier

Effectuer une sortie papier est relativement simple. Elle est faite par le biais de la commande texi2dvi puis de la commande dvips.

L'appel de la commande texi2dvi est tout simplement : texi2dvi fichier.texi

Si tout s'est bien passé, un fichier fichier.dvi a été créé dans le répertoire courant. Il s'agit d'un fichier au format dvi (DeVice Independant), qui est une étape intermédiaire vers l'impression du document.

L'étape suivante consiste à convertire ce fichier en PostScript, ce qui s'effectue par la commande :

dvips fichier.dvi -o fichier.ps.

Un fichier PostScript devrait être généré à partir du fichier .dvi, ce qui permet ensuite une impression. (Notez que l'appel de dvips sans les arguments -o fichier.ps envoie directement le résultat à l'imprimante).

Il existe de plus un programme visionneur de fichiers dvi : xdvi.

Sortie Info

Le plus simple est d'ouvrir le fichier texinfo dans un buffer d'Emacs (voir ), puis d'effectuer un M-x texinfo-format-buffer. Ceci génèrera un nouveau buffer qui est la sortie info de ce fichier.

Document plus complexe Structure en noeuds

Un document Texinfo est généralement structuré comme un arbre: chacune des sections du document est un noeud qui possède un père et des fils. De plus, chaque noeud pointe vers le noeud suivant ainsi que le noeud précédent. Celà permet une navigation linéaire mais aussi par exemple en profondeur dans un chapitre.

Un noeud est créé grâce à la commande '@node'.

Exemple

@c Noeud, Suivant, Précédent, Père @node Sommaire, , , (dir) @menu *Description:: Qu'est-ce qu'une machine à café ? *Utilisation:: Comment l'utiliser *Index:: Index du document @end menu La première ligne est un commentaire destiné à rappeler quels sont les arguments passés à la commande '@node'. Le noeud Sommaire n'a pas de noeud suivant ou précédent. Ils sont donc laissés en blanc.

Le père du noeud sommaire est (dir), c'est à dire la page Texinfo du système. Le document sera donc incorporé à l'arborescence info du système.

La commande '@menu' englobe une liste des noeuds "fils" du noeud Sommaire. Ici: Description, Utilisation, et Index.

Suite du document

@c Noeud, Suivant, Précédent, Père @node Description, Utilisation, Sommaire, Sommaire @chapter Ce qu'est une machine @`a caf@'e @cindex machine @`a caf@'e @cindex description @cindex caf@'e Une machine @`a caf@'e est un instrument complexe essentiel dans la vie d'un programmeur. Elle lui fournit de quoi survivre lors des heures de programmation, de la chaleur et de l'amiti@'e, et constitue l'@'epicentre de la vie sociale de tout d@'epartment informatique. '@node noeud, suivant, précédent, père' cette commande spécifie le noeud courant et ses liens. '@chapter nom de chapitre' cette commande crée un nouveau chapitre. Elle n'a un effet que dans la version du manuel formatée avec TeX. Les commandes '@section nom de section' et '@subsection nom de section' ont un effet approchant: elles créent une nouvelle section ou sous-section. '@cindex mot-clef' cette commande ajoute une entrée dans l'index conceptuel avec un lien vers le noeud courant. D'autres index peuvent être utilisés en changeant de commande: @vindex: index des variables @findex: index des fonctions @kindex: index des clefs @pindex: index des programmes @dindex: index des types de données

Suite ... (références)

@c Noeud, Suivant, Précédent, Père @node Utilisation, Index, Description, Sommaire @chapter L'utilisation de la machine @`a caf@'e @cindex utilisation de la machine @`a caf@'e @cindex obtention d'un caf@'e L'utilisation d'une machine @`a caf@'e est relativement simple. L'obtention d'un caf@'e se fait par l'introduction d'une pi@`ece de monnaie suivie de la pression de la touche "cafe". @xref{Description} pour plus d'informations sur une machine @`a caf@'e.

L'insertion d'une référence se fait par le biais de trois commandes:

'@xref{ noeud}' cette commande génère une référence au noeud spécifié en argument. Dans la version Info, un lien hypertexte sur le texte passé en argument emmènera au noeud spécifié. Dans la version formatée par TeX, une phrase de la forme "See section section, page page" sera générée. Si vous préférez une version française, vous devriez éditer le fichier texinfo.tex fournit avec la distribution de Texinfo.

Vous pouvez éventuellement modifier le texte inséré dans le fichier info ou formaté par TeX en passant des arguments suplémentaires à la commande '@xref'.

La syntaxe est alors: '@xref{ noeud, description pour Info, description pour TeX}'.

La description pour Info apparaîtra dans le fichier info généré, et description pour TeX dans le fichier formaté par TeX. Il est possible de laisser n'importe lequel de ces deux arguments vide.

Vous pouvez de plus faire référence à un autre manuel Info en ajoutant un quatrième argument qui sera le nom de ce manuel.

'@pxref{ noeud}' le comportement de cette commande est le même que celui de la précédente, hormis que la phrase générée commence par une mot en minuscules (see), et finit par un point dans la version info).

'@xref{ noeud, description pour info, nom du fichier}' cette commande fait spécifiquement référence à un fichier Info, y compris dans la version formatée par TeX. Dans le format formaté par TeX, cette référence sera de la forme "See Info file 'nom du fichier 'node 'nom du noeud' ".

Et fin ! (Index et table des matières)

@c Noeud, Suivant, Précédent, Père @node Index, , Utilisation, Sommaire @unnumbered Index conceptuel @printindex cp @shortcontents @contents @bye '@unnumbered nom de l'index' cette commande agit comme la commande @'chapter: elle génère une entrée dans la table des matières et crée une page de chapitre pour l'index. '@printindex indice' cette commande imprime l'index spécifié par un code de deux lettres. Ces deux lettres peuvent être: cp: index conceptuel vr: index des variables fn: index des fonctions ky: index des clefs pg: index des programmes tp: index des types de données '@shortcontents' cette commande génère une brève table des matières, qui ne contient que les chapitres et les appendices. Seuls les gros manuels peuvent avoir besoin de cette commande. '@contents' cette commande génère une table des matières complète à partir des commandes '@chapter', '@section', et '@subsection'. '@bye' cette commande dit poliment au revoir à Texinfo. Son but est de spécifier à TeX ou Info que le document est terminé.

Mise en forme du document Mise en forme de caractères

Texinfo permet de mettre en forme des caractères du document. Il y parvient au moyen de commandes dont l'argument est le texte à mettre en forme, tout comme TeX. Parmis ces commandes, les plus courantes sont: '@code{texte}' le texte passé en argument sera formaté comme étant un code source. La police de ce texte sera une police de type courier dans le cas d'un formatage par TeX, et entourée par des guillemets dans le cas d'un fichier Info. '@samp{texte}' le texte passé en argument sera formaté comme étant un exemple, typiquement en italiques. '@file{texte}' le texte passé en argument est le nom d'un fichier. '@kbd{texte}' le texte passé en argument est une séquence de touches tapée au clavier. '@ctrl{texte}' le texte passé en argument est un caractère de contrôle ASCII. Par exemple, '@ctrl{C}' produit '^C'. '@dfn{texte}' le texte passé en argument est est un terme technique. '@i{texte}' le texte passé en argument est mis en italique dans le manuel formaté par TeX. '@b{texte}' le texte passé en argument est mis en gras dans le manuel formaté par TeX. '@t{texte}' le texte passé en argument est mis en police courier dans le manuel formaté par TeX.

Caractères spéciaux

Certains caractères tels qu'@ ont une signification pour Texinfo, ou ne peuvent pas être entrés au clavier. Il existe des séquences spéciales pour les produire: '@' est produit par '@@' '{' est produit par '@{' '}' est produit par '@}' un rond est produit '@bullet{}' '...' est produit par '@dots{}' 'TeX' est produit par '@TeX{}' 'é' est produit par '@'e' 'è' est produit par '@`e' 'ê' est produit par '@^e' 'î' est produit par '@^i' 'à' est produit par '@`a'

Mise en forme de paragraphes

Texinfo permet de mettre en page des paragraphes afin de forcer les sauts de ligne ou au contraire empecher du texte de passer à la page. '@*' ou '@br': force un saut de ligne dans le manuel formaté avec TeX, mais pas dans le manuel Info. '@sp': génère un saut de ligne dans le manuel formaté avec TeX ainsi que dans le fichier Info. '@w{texte}': empèche l'insertion d'un saut de ligne dans le texte passé en argument. Cette commande n'a aucun effet dans le cas d'un manuel Info. '@page': insère un saut de page dans la version du manuel formatée avec TeX. '@group: empèche un saut de page tant que la commande '@end group' n'est pas rencontrée.

Manuel "machine à café" complet

Vous trouverez le manuel "machine à café" complet au format Texinfo, html, et PostScript sur le site web d'APRIL à l'url . \input texinfo @c On commence l'en-tête @setfilename cafe.info @settitle Manuel Machine @`a caf@'e @c Fin de l'en-tête @titlepage @title Machine @`a caf@'e @subtitle v1.2 - 25 septembre 1997 @author Benjamin Drieu @end titlepage @c Noeud, Suivant, Précédent, Père @node Sommaire, , , (dir) @menu *Description:: Qu'est-ce qu'une machine à café ? *Utilisation:: Comment l'utiliser *Index:: Index du document @end menu @c Noeud, Suivant, Précédent, Père @node Description, Utilisation, Sommaire, Sommaire @chapter Ce qu'est une machine @`a caf@'e @cindex machine @`a caf@'e @cindex description @cindex caf@'e Une machine @`a caf@'e est un instrument complexe essentiel dans la vie d'un programmeur. Elle lui fournit de quoi survivre lors des heures de programmation, de la chaleur et de l'amiti@'e, et constitue l'@'epicentre de la vie sociale de tout d@'epartment informatique. @c Noeud, Suivant, Précédent, Père @node Utilisation, Index, Description, Sommaire @chapter L'utilisation de la machine @`a caf@'e @cindex utilisation de la machine @`a caf@'e @cindex obtention d'un caf@'e L'utilisation d'une machine @`a caf@'e est relativement simple. L'obtention d'un caf@'e se fait par l'introduction d'une pi@`ece de monnaie suivie de la pression de la touche "cafe". @xref{Description} pour plus d'informations sur une machine @`a caf@'e. @c Noeud, Suivant, Précédent, Père @node Index, , Utilisation, Sommaire @unnumbered Index conceptuel @printindex cp @shortcontents @contents @bye

Copyright

Ce document est placé sous copyright © 1997 de Benjamin Drieu, association APRIL. Ce document peut être reproduit et distribué dans son intégralité ou partiellement, par quelque moyen physique que ce soit. Il reste malgré tout sujet aux conditions suivantes : La mention du copyright doit être conservée, et la présente section préservée dans son intégralité sur toute copie intégrale ou partielle. Si vous distribuez ce travail en partie, vous devez mentionner comment obtenir une version intégrale de ce document et être en mesure de la fournir.