Depuis plusieurs années, j’utilise [txt2tags http://txt2tags.org]
pour traduire des fichiers textuels vers [LaTeX latex.html] et html
.
Les fichiers LaTeX sont ensuite compilés pour produire du PDF.
Malgré un marquage beaucoup plus léger que celui de LaTeX,
on arrive à produire des documents assez jolis si on prend un peu de temps
pour mettre au point des fichiers de style : .sty
pour LaTeX,
et .css
pour html
.
De plus, on peut également définir des filtrages preproc
et postproc
pour ajouter de nouvelles constructions.
Voilà quelques exemples de ma configuration actuelle.
Présentation rapide
Un document t2t
est un fichier textuel où les trois premières lignes sont une
entête généralement utilisées de la façon suivante :
Titre du document
Auteur ou sous-titre
Version et/ou date
Mais on peut aussi laisser ces lignes vides si on n’en a pas l’usage.
Viennent ensuite des lignes contenant des directives de configuration. Dans le cas le plus simple, il n’y en a pas, mais on verra plus loin à quoi ça peut servir.
Puis, vient le contenu du document. La syntaxe du marquage est très simple. Ce site donne plus d’exemple, et la page sur les inclusions est particulièrement utile.
Et c’est tout : on peut se concentrer sur le contenu, et utiliser son éditeur préféré.
Traduction
txt2tags propose tout un tas de langage de sortie,
mais comme je l’ai dit, j’utilise juste tex
et xhtml
.
Xhtml
%.html : %.t2t
txt2tags -t xhtml -o $@ $<
Voir aussi t2t_math_ml : mon petit outil pour traduire les formules en MathML.
LaTeX
%.tex : %.t2t
txt2tags -t tex -o $@ $<
sed -i "s/documentclass{article}/documentclass[a4paper,twoside,12pt]{article}/" $@
%.pdf : %.tex
rubber --pdf $<
mv $@ $@.tmp
rubber --pdf --clean $<
mv $@.tmp $@
Serveur trac
J’ai aussi déjà utilisé moin
pour mettre automatiquement les documents
sur un serveur trac.
Compilation :
%.moin : %.t2t
txt2tags -t moin --no-headers -o $@.tmp $<
echo "= WARNING =" > $@
echo "**DO NOT EDIT** this page since it is automatically updated." \
>> $@
cat $@.tmp >> $@
rm $@.tmp
Mise à jour :
trac-upd: index.moin
trac-admin $(HOME)/Trac/Projet wiki import UserManual $<
Fichier de configuration
Dans tous mes fichiers t2t
, j’inclus un fichier commun txt2tagsrc
.
Pour cela, il suffit d’ajouter la ligne suivante
dans la partie de configuration (après les trois lignes de titre, donc) :
%!includeconf: txt2tagsrc
Il y a des éléments communs à tous les formats :
%!encoding: UTF-8
%!preproc: (Ocaml) [\1 http://caml.inria.fr/ocaml/index.en.html]
et des directives spécialisées, comme par exemple :
% A line that will only appear in html version
%!preproc(xhtml): "%html% " ""
% A line that will only appear in tex version
%!preproc(tex): "%tex% " ""
ou encore :
%!options(xhtml): --style txt2tags.css --css-sugar
%!options(tex): --style txt2tags.sty
qui indique les fichiers de style. Il faut donc ensuite que ces fichiers soient cohérents avec ce qu’on définit.
J’ai par exemple ajouté la possibilité d’ajouter des blocs spécialisés :
%!preproc(xhtml): ENDMINIVERB "</div>"
%!preproc(xhtml): MINIVERB '<div class="tipdiv">'
%!preproc(tex): "ENDMINIVERB" "\end{tip}"
%!preproc(tex): "MINIVERB" "\\begin{tip}"
ce qui me permet d'écrire par exemple :
''' TIP
Penser à faire le ménage...
''' ENDTIP
Et de voir le texte apparaître dans une jolie boite. Mais pour cela, il faut définir les styles correspondants.
Style .css pour html
J’ai un fichier partagé txt2tags.css
, mais il faut noter que l’on peut le
surcharger si on a des styles spécifiques à un document.
Pour tipdiv
défini ci-dessus, j’ai par exemple :
.tipdiv {
border: thin solid;
border-left: 5px solid #910c29;
padding: 1ex;
padding-left: 2ex;
margin: 2ex 2cm;
box-shadow: 4px 4px 4px #CCC;
}
Style .sty pour LaTeX
- TODO : ajouter un exemple de style LaTeX correspondant
Et les maths
J’ai commencé à développer une petite extension t2t_math_ml : pour gérer les formules mathématiques, mais il y a encore un peu de travail pour mettre tout ça au propre…
Voir aussi :
- Afficher un pourcentage dans une page HTML
- VNC : Virtual Network Computing
- Git : déménagement d'un dépôt
- Quelques liens au sujet de l'analyse statique
- Ocaml: mon principal langage de développement
- Disque dur externe
- Les profiles dans Firefox
- Cryptographie et mail sous Android
- Quelques liens au sujet du C
- Git rebase : pour diviser un commit