L'objectif de ce tutoriel est de montrer la construction en temps réel d'un projet de plusieurs livres en plusieurs langues à l'aide de l'outil frundis, en s'inspirant de l'exemple du Cycle de Shaedra : nous allons tout d'abord considérer l'exemple d'un seul livre et lui passer les déclarations et paramètres nécessaires ; puis nous allons rajouter le deuxième livre du cycle et constater les différences en essayant de factoriser le plus possible. Enfin, nous montrerons qu'il est possible d'assembler une série de tomes traduits en plusieurs langues basée sur une même structure et sur des fichiers communs.
On va tout d'abord commencer par un seul fichier où l'on définira d'abord toutes les déclarations nécessaires pour l'export vers les trois formats LaTeX, XHTML et EPUB :
.\" Définitions des variables, qui pourront être interpolées dans le .\" texte en écrivant \*[nom-de-la-variable] .#dv date "version du 25/02/2056" .#dv titre "La véritable histoire de Barbe Bleue" .#dv auteur "L'auteur" .#dv cycle "Le Cycle des exemples" .#dv tome "Tome 1" .\" Déclarations des paramètres .X set document-author \*[auteur] .X set document-title \*[titre] .X set document-date \*[date] .X set epub-css stylesheet.css .X set xhtml-css /css/style-xhtml.css .X set latex-preamble preamble-tex-fr.tex .X set lang fr .X set epub-subject "Fiction, Aventures" .X set xhtml-bottom xhtml-bottom-fr.xhtml .\" tags qui seront utilisés dans le livre .\" tags pour latex .X mtag -t dialogue -f latex -c emph -b « -e » .X mtag -t emph -f latex -c emph .X mtag -t textup -f latex -c textup .X mtag -t important -f latex -c textbf .X dtag -t right -f latex -c flushright .X dtag -t titlepage -f latex -c titlepage .X dtag -t center -f latex -c center .\" tags pour xhtml .X mtag -t dialogue -f xhtml,epub -c em -b « -e » .X mtag -t emph -f xhtml,epub -c em .X mtag -t textup -f xhtml,epub .X mtag -t important -f xhtml,epub -c strong .X mtag -t tome -f xhtml,epub -c span .X mtag -t titre -f xhtml,epub -c span .X mtag -t cycle -f xhtml,epub -c span .X mtag -t auteur -f xhtml,epub -c span .X dtag -t right -f xhtml,epub .X dtag -t titlepage -f xhtml,epub -c div .X dtag -t center -f xhtml,epub .\" FIN des DECLARATIONS ============ .Ch "Prologue" Mon document…
On pourra ajouter, avant le prologue, la page de titre pour LaTeX et EPUB, qui seront inclus par exemple ainsi :
.\" ========= pour LaTeX ======== .Bf -f latex \enewpage \ethispagestyle{empty} .Ef .Bd -t titlepage .Bd -t center .Bf -f latex \evspace*{0.1\etextheight} {\ebfseries{\eHuge\etextsc{ .Ef \*[titre] .Bf -f latex }}} \evspace{0.05\etextheight} {\eLarge .Ef .Bm -t emph \*[cycle] .Em .Bf -f latex } \evspace{0.05\etextheight} {\ehuge .Ef \*[tome] .Bf -f latex } \evspace{0.05\etextheight} {\elarge .Ef \*[auteur] .Bf -f latex } \evspace{0.02\etextheight} \efootnotesize{ .Ef \*[date] .Bf -f latex } .Ef .Ed .Ed . .\" ========= pour EPUB et XHTML ======== .Bf -f epub,xhtml .Bd -t titlepage .Bm -t tome \*[tome] .Em .P .Bm -t titre \*[titre] .Em .P .Bm -t cycle \*[cycle] .Em .P .Bm -t auteur \*[auteur] .Em .P \*[date] .Ed .Ef
Vu la longueur des déclarations et de ces pages de titre personnalisées, on préférera peut-être les inclure depuis des fichiers à part :
.\" dans le fichier 01-livre-fr.frundis .\" inclure le fichier des déclarations .If declarations.frundis .\" inclure la page de titre pour LaTeX .If -f latex titre-tex.frundis .\" inclure la page de titre pour Epub et XHTML .If -f epub,xhtml titre-xhtml.frundis .Ch "Prologue" Mon document…
On pourrait même inclure avec un
If
les pages de titres dans le fichier
declarations.frundis
,
ce qui nous facilitera la tâche si, finalement, on se retrouve avec un
deuxième tome.
Nous avons ainsi structuré le projet de façon suffisante pour un seul
livre exporté vers trois formats. Mais voilà, un deuxième tome a été
écrit ! Coup de chance : nous avons déjà utilisé des variables pour le
titre… Problème : elles sont dans le fichier
declarations.frundis
que nous voulons utiliser comme fichier commun. Il nous suffira de
changer de place les variables qui diffèrent et de les placer aussi bien
dans le premier que dans le deuxième tome pour régler le problème et
utiliser les mêmes fichiers communs :
.\" dans le fichier 02-livre-fr.frundis .#dv date "version du 15/08/2056" .#dv titre "La véritable histoire de Blanche-Neige" .#dv tome "Tome 2" .If declarations.frundis .Ch "Prologue" Mon document…
Remarquons que l'on inclut les déclarations après définir les variables, car ces variables seront utilisées dans la page du titre, qui doit être donc placée après.
Et voilà,
Le Cycle des exemples
a été traduit en espagnol, ce qui va nous mener à modifier de nouveau le
fichier commun et à créer un autre fichier commun à chaque langue. Les
variables en français qui sont encore restées dans le fichier
declarations.frundis
,
car communes à chaque tome, doivent alors être déplacées dans un fichier
que l'on va appeler par exemple
preambule-fr.frundis
,
auquel on rajoutera plusieurs paramètres qui ne sont valables que pour
le français, tels ceux-ci :
.X set latex-preamble preamble-tex-fr.tex .X set lang fr .X set epub-subject "Fiction, Aventures" .X set xhtml-bottom xhtml-bottom-fr.xhtml
Ce nouveau préambule français devra être inclus, de même que le fichier
declarations.frundis
,
dans les fichiers des tomes en français.
Si le document était traduit à davantage de langues, l'on pourrait bien évidemment créer une variable telle que :
.\" dans le fichier preambule-fr.frundis .#dv lang fr .\" dans le fichier preambule-es.frundis .#dv lang es
puis écrire quelque chose dans ce genre pour peu que l'on soit rigoureux dans les noms des fichiers :
.X set latex-preamble preamble-tex-\*[lang].tex .X set lang \*[lang] .X set xhtml-bottom xhtml-bottom-\*[lang].xhtml
Voilà ! Nous avons réussi à factoriser au maximum et maintenant tous les
tomes d'un cycle dans plusieurs langues partagent un fichier racine
declarations.frundis
et les tomes de chaque langue ont leur propre préambule commun. Chaque
tome ne définit que ses variables uniques (titre, numéro de tome et date
de modification, …).
Aller plus loin : utiliser la variable FRUNDISLIB. Notons qu'il est possible d'utiliser une variable pour indiquer le chemin vers un dossier où l'on placerait tous les fichiers communs à plusieurs documents frundis. Voir la Faq de frundis pour en savoir plus.