Lout

Lout est un système de formatage de documents conçu et programmé par Jeffrey Kingston.

Le système utilise un haut niveau de description de documents semblable à LaTeX et génère des fichiers PostScript que l'on peut imprimer sur la plupart des imprimantes laser ou afficher sur des périphériques en sortie-écran. Une sortie purement en texte est possible, ainsi que le format PDF.

Lout est multilingue et fonctionne sur la plupart des UNIX, Windows et Mac OS X.

Comme LaTeX, Lout se focalise sur le contenu, l'organisation avec des modèles de mise en page structurés et complexes. La mise en page, le choix des fontes, etc. sont d'utilisations simples. C'est un logiciel WYSIWYM.

Historique 
Lout a débuté en 1984 comme projet de recherche dans l'élaboration d'un langage de formatage de documents de haut niveau. Au début du projet le nom était « Document Layout » (Mise en page de document), la terminologie restant, le nom devint Lout. La fin du projet de recherche en octobre 1991 correspond à la première version publique.

Fonctionnalités 
 Grande qualité typographique
 Styles de documents prédéfinis pour les livres, les rapports techniques, lettres, etc.
 Supports des tableaux, diagrammes, graphiques, dessins.
 Gestion automatique des tables des matières, index, glossaires, etc.
 Support des langues (i18n).
 Petit (2 Mb)
 Mûr (Lout a été créé dans les années 1990)
 Ne gère pas l'UTF-8 (pas d'édition du texte en UTF-8)

Exemple de document 
 
 @SysInclude { report } # Forme du document final et des commandes.
 
 @Report # Début du rapport.
  @Title { Titre du rapport } # Titre du rapport.
  @Author { Nom de l'auteur } # Nom de l'auteur.
  @Institution { Etablissement"/"adresse de l'auteur } # Etablissement ou adresse.
  @DateLine { Yes } # Date du rapport. Yes c'est la date de compilation sinon forme textuelle comme 00 février 2000.
  @InitialLanguage { French } # Document en langue française.
 // # Fin des informations sur le rapport.
 
 @Section # Début de la section du rapport.
  @Title { Titre de la première section } # Titre de la section.
 
  @Begin # Début du contenu de la section.
   @PP # Début d'un paragraphe dans la section.
    Du texte et rien que du texte. # Du texte.
  @End # Fin du contenu de la section.
 
 @Section # Fin de la section.

L'édition du document doit être faite en ISO/CEI 8859.

Exemple de génération d'un document PDF 

 lout -PDF test.lout -o resultat.pdf
ou
 lout -PDF test.lout > resultat.pdf

Fonctions de base

Les Balises 

Les balises Lout sont de la forme @balise { données }. Les données de la balise sont délimitées par des accolades. Si ces accolades sont omises, alors seulement le mot qui suit sera interprété comme une donnée. Attention Lout est sensible à la casse (majuscule/minuscule).

Exemple :
 "Une phrase @B en gras." donne "Une phrase en gras."
 "Une phrase @B { en gras }." donne "Une phrase en gras."

Les sections 

Ce sont des balises qui ont besoin d'une balise fermante.

Exemple:
 @Section
 @Title { Titre de la section }
 ...
 @Begin
 ...
 @End @Section

pour faire des sous-sections, il faut utiliser les balises @BeginSubSections pour débuter, et fermer avec @EndSubSections. Une sous-sous-section sera formée par @BeginSubSubSections et @EndSubSubSections. La structure des sous-sections et des sous-sous-sections à l'intérieur de ces balises s'organise comme une section.

Exemple:
 @Section
 @Title { Titre de la section 1 }
 ...
 @Begin
  @PP Du texte.
  ...
  @BeginSubSections
   @SubSection
   @Title { Titre de la sous-section 1-1 }
   ...
   @Begin
    @PP Du texte
    ...
    @BeginSubSubSections
     @SubSubSection
     @Title { Titre de la sous-sous-section 1-1-1 }
     ...
     @Begin
      @PP Du texte
      ...
     @End @SubSubSection
     
     @SubSubSection
     @Title { Titre de la sous-sous-section 1-1-2 }
     ...
     @Begin
      @PP Du texte
      ...
     @End @SubSubSection
    @EndSubSubSections
   @End @SubSection
   
   @SubSection
   @Title { Titre de la sous-section 1-2 }
   ...
   @Begin
    @PP Du texte
    ...
    @BeginSubSubSections
     @SubSubSection
     @Title { Titre de la sous-sous-section 1-2-1 }
     ...
     @Begin
      @PP Du texte
      ...
     @End @SubSubSection
    @EndSubSubSections
   @End @SubSection
  @EndSubSections
 @End @Section
 
 @Section
 @Title { Titre de la section 2 }
 ...
 @Begin
  @PP Du texte.
  ...
 @End @Section

La gestion des gros documents 

Tout est prévu pour faire des documents de volume important. La fonction @Include permet simplement d'inclure un fichier dans un autre.

Exemple:
 @SysInclude { report } # Forme du document final et des commandes.
 
 @Report # Début du rapport.
  @Title { Titre du rapport } # Titre du rapport.
  @Author { Nom de l'auteur } # Nom de l'auteur.
  @Institution { Etablissement"/"adresse du l'auteur } # Etablissement ou adresse.
  @DateLine { Yes } # Date du rapport. Yes c'est la date de compilation sinon forme textuelle comme 00 février 2000.
  @InitialLanguage { French } # Document en langue française.
 // # Fin des informations sur le rapport.
 
 @Include { introduction.lout } # Inclusion de l'introduction contenue dans le fichier "introduction.lout".
 @Include { première_section.lout } # Inclusion de la première section contenu dans le fichier "première_section.lout".
 @Include { seconde_section.lout } # Inclusion de la seconde section contenu dans le fichier "seconde_section.lout".
 # @Include { troisième_section.lout } # Non-inclusion de la troisième section contenue dans le fichier "troisième_section.lout".
 @Include { conclusion.lout } # Inclusion de la conclusion contenu dans le fichier "conclusion.lout".

Vous pouvez ajouter ou supprimer des sections d'un document en les commentant.

Les commentaires 

Nous pouvons écrire des commentaires après le caractère #.

Exemple:
 Le texte # commentaires.
 c'est l'expression d'une pensée.
donne
 Le texte c'est l'expression d'une pensée.

Les caractères spéciaux 

Certains caractères ont une signification spéciale dans Lout comme :
 ", #, &, /, \, @, ^, {, }, |, ~
Pour les représenter nous devons les placer entre guillemets. Les guillemets protègent le texte de l'interprétation en caractères spéciaux.
Donc dans un document lout nous devons les écrire comme suit :
 "\"", "#", "&", "/", "\\", "@", "^", "{", "}", "|", "~"

Le retour à la ligne et la gestion des espaces 
D'une manière générale pour commencer une nouvelle ligne avec Lout, vous devez commencer un nouveau paragraphe @PP.

Exemple:
 @PP
 Mon premier paragraphe.
 @PP
 Mon second paragraphe.

donne
 Mon premier paragraphe.
 Mon second paragraphe.

Par défaut dans Lout les espaces entre deux mots sont affichés. Deux autres conventions pour gérer les espaces sont possibles, troff (voir Troff) et TeX (voir TeX). troff est comme la convention Lout, c'est seulement à la fin de ligne qu'un espace est généré. TeX remplace des séquences de plus de deux espaces par un espace, et comme troff, il rajoute un espace en fin de ligne.

Exemple:
 @SysInclude{ doc }
 @Document
 @InitialSpace{ lout }
 #@InitialSpace{ troff }
 #@InitialSpace{ tex }
 @Text @Begin
 ...
 @End @Text

La pagination

Types de documents 
Lout est fourni avec des modèles de documents. C'est ce modèle que l'on indique dans @SysInclude{ modèle }. Ces modèles de documents déterminent la structure globale tant au niveau logique (chapitres, sections, etc.) qu'au niveau de la mise en forme (polices, allure des titres, etc.).
Lout permet de créer ses propres modèles de documents. Les modèles standard sont doc pour un document ordinaire, report pour un document technique, book pour un livre et slides pour des transparents.

Le type Ordinaire est de conception simple et se compose de pages complètes et numérotées. Pour réaliser un document de type ordinaire, il faut utiliser la balise @Doc ou @Document:
 @SysInclude{doc}
 @Doc
 ...
 //
 @Text @Begin
 ...corps du document
 @End @Text

Le type Technique est un document qui se réalise avec la balise @Report:
 @SysInclude{report}
 @Report
 ...
 //
 @Section
 ...corps du document
 @End @Section

Le type Livre est un document qui se réalise avec la balise @Book:
 @SysInclude{book}
 @Book
 ...
 //
 @Preface
 @Title{À propos de ce livre}
 @Begin
 ...corps du document
 @End @Preface
 @Introduction
 @Begin
 ...corps du document
 @End @Introduction
 @Chapter
 @Title{Titre du chapitre}
 @Begin
 ...corps du document
 @End @Chapter

Le type transparent est un document qui se réalise avec la balise @OverheadTransparencies:
 @SysInclude{slides}
 @OverheadTransparencies
 ...
 //
 @Overhead
 ...corps du document
 @End @Overhead
 @Overhead
 ...corps du document
 @End @Overhead
 ...

Les polices de caractères 

Les polices de caractères PostScript sont utilisables dans un document Lout. Pour les TrueType, elles sont utilisables après conversion avec l'utilitaire ttf2pfa.

Les polices disponibles dans Lout 

La version de base de Lout inclut une liste de familles de fontes avec leurs styles de forme.

Ajouter une police dans Lout 

Vous pouvez utiliser d'autres fontes en installant de nouvelles polices PostScript. Pour ce faire, vous devez posséder la police avec une extension « .pfa » ou « .pfb » et le fichier de métrique de cette fonte « .afm ».
Dans le répertoire d'installation de Lout (exemple sous Unix : /usr/share/lib/lout), vous devez avoir un répertoire « font » dans lequel vous devez copier les fichiers de fontes. Dans le répertoire include éditez le fichier « fontdefs ». La syntaxe générale est alors :
 fontdef « Famille Lout » « Style Lout » « Nom PostScript » « Fichier métrique » « Fichier table de caractères » « Recode/NoRecode »
Famille Lout:
C'est le nom de famille de la police qui sera utilisé dans Lout.
Style Lout:
C'est le style de fonte (Base, Slope, Bold, BoldSlope...).
Nom PostScript :
C'est le nom officiel de la police (voir dans le fichier .afm).
Fichier métrique :
C'est le nom du fichier de métrique « .afm » de la police de caractères.
Fichier table de caractères :
Précise à Lout où est situé sur la table chaque caractère.
Recode/NoRecode:
Précise si Lout doit utiliser la table de caractères.

La mise en forme

Fonctions de base 
Pour mettre un texte en italique il faut utiliser @I{ texte } :

 Voici un @I{ texte en italique }.

ce qui donne
 Voici un texte en italique.

Pour mettre un texte en gras il faut utiliser @B{ texte } :

 Voici un @B{ texte en gras }.

ce qui donne
 Voici un texte en gras.

Pour souligner un texte il faut utiliser @Underline{ texte } :

 Voici un @Underline{ texte souligné }.

ce qui donne
 Voici un .

Pour mettre un texte en taille fixe il faut utiliser @F{ texte } :

 Voici un @F{ texte en taille fixe }.

ce qui donne
 Voici un texte en taille fixe.

Les listes 

Pour créer une liste il faut utiliser @List @ListItem{ Texte } @EndList :

 Voici une liste
 @List
 @ListItem{ Premier cas }
 @ListItem{ Deuxième cas }
 @EndList
 

ce qui donne
 Voici une liste
 1 Premier cas
 2 Deuxième cas

Les tableaux 
Pour créer un tableau il faut utiliser @Tbl @aformat{ } @Cell @Rowa :

 @SysInclude { tbl } # Gestion des tableaux
 ...
 Voici un tableau
 @Tbl
 aformat { @Cell A | @Cell B }
 {
 @Rowa
 A { cel1 }
 B { cel2 }
 @Rowa
 A { cel3 }
 B { cel4 }
 }

Liens externes 
  Site officiel
  Jeffrey Kingston
  Lout2 et les langages à balise
  Gestion de l'UTF8

Logiciel libre sous licence GPL
Logiciel de PAO
Logiciel pour Windows
Logiciel pour Unix