Avec l'interface graphique
Cette interface graphique rudimentaire et optionnelle fonctionne sur toutes les plateformes, du moment que le module tkinter de python est installé. Nous ne nous étendrons pas dessus, il suffit juste de choisir le fichier à convertir, les options et le format d'exportation souhaités. Dans le cas où l'entête contient déjà des directives sur les options et le format d'exportation, ils seront déjà prédéfinis dans l'interface.
En ligne de commande
L'utilisation de la ligne de commande est bien plus rapide pour traiter rapidement des conversions de documents.
Sous Windows
Un petit fichier nommé
convertir.bat contenant le code :
Code : Autre1
| python txt2tags.py mon_document.t2t |
permettra de générer directement votre document sous windows.
Vous pouvez également créer un convertisseur automatique, qui vous permettra de glisser-déposer un document txt2tags sur le fichier .bat, et de le convertir au format souhaité (défini dans son entête, comme on verra juste ensuite).
Le code du fichier batch, à adapter selon votre cas, sera :
Code : Autre1
2
3
| Set CURRENTDIR=%CD%
python.exe "C:\Documents and Settings\Utilisateur\Mes documents\Chemin_vers_txt2tags\txt2tags.py" %1
pause |
Sous Unix (Linux, BSD, Mac OS X)
Nous vous recommandons d'utiliser un makefile, bien qu'il soit tout à fait possible d'invoquer simplement une conversion avec la commande :
Code : Autre1
| txt2tags mon_document.t2t |
Un makefile simple pourra être de cette forme :
Code : Autre1
2
3
4
5
6
7
8
9
10
| DOCUMENT = mon_document
TXT2TAGS = txt2tags
html:
$(TXT2TAGS) -t xhtml --toc --outfile $(DOCUMENT).html $(DOCUMENT).t2t
pdf:
$(TXT2TAGS) -t tex --outfile $(DOCUMENT).tex $(DOCUMENT).t2t
-pdflatex -interaction batchmode $(DOCUMENT).tex |
make html générera donc le document html, tandis que
make pdf, exportera en fichier .tex puis en pdf via la commande pdflatex.
Syntaxe
La structure du document
À de rares exceptions près, les documents txt2tags sont structurés sous cette forme :
- Entêtes (3 lignes contenant le titre, l'auteur, et éventuellement un sous-titre)
- Configuration (options)
- Corps du text
Ce qui donne :
Code : Autre1
2
3
4
5
6
7
8
9
10
11
12
| Le titre du document
L'auteur
Dernière mise à jour (ligne optionnelle) : %%mtime(%c)
%!target : html
%!style : mon_style.css
%!encoding: utf-8
%!options : --toc --outfile mon_document.html
Ceci est le début de mon document, le corps de texte.
Bonne continuation avec txt2tags... |
Les balises
Dans txt2tags, la plupart des balises sont créées avec des symboles encadrant le texte, ce qui est très pratique. De plus, toutes les balises pour la mise en forme de base (gras, souligné, barré, italique) vont toujours par paire de 2 symboles.
Mettre en forme :
D'autres wiki concurrents utilisent pour toutes les mises en forme un symbole unique (par exemple l'apostrophe), mais répétés de façon différente à chaque fois, par exemple :
'''gras (pas valable pour txt2tags)''' et ''italique (pas valable non plus pour txt2tags)''
'''''Gras et italique (heureusement pas utilisé dans txt2tags)'''''
Des choses amusantes se passent si on utilise en plus de vrais apostrophes dans son texte, cela devient rapidement l'''anarchie''... Et dire que cette syntaxe est utilisée sur un des sites les plus consultés au monde...
La règle est donc que dans txt2tags, tout ce qui est
**gras**,
__souligné__,
--barré-- ou
//italique// se trouve toujours entre 2 paires de symboles.
Hiérarchiser > Les titres :
On a également d'autres wiki qui utilisent pour la mise en forme des entêtes un soulignement du texte, par exemple :
Exemple de titre niveau 1 que l'on ne trouvera pas dans txt2tags
=========================================================
Et le titre niveau 2 qui va avec (pas valable non plus pour txt2tags)
----------------------------
ou encore en précédant uniquement le titre avec des symboles d'un seul côté :
++ Titre niveau 2 (pas valable pour txt2tags)
+++ Titre niveau 3 (pas valable pour txt2tags)
Cela rend malheureusement les documents utilisant cette syntaxe wiki plus difficiles à analyser syntaxiquement (pour modifier du texte lors de l'exportation par exemple).
Évoquons rapidement certains qui font cela à l'envers :
====== Titre 1 (pas avec txt2tags) ======
===== Titre 2 (pas avec txt2tags) =====
Cela peut sembler plus pratique pour mieux voir un titre (il a plus d'importance, donc il prend plus de signes), mais ce n'est pas très logique ni facile à retenir (titre 1 c'est 6 ou 5 signes déjà ?)
Dans txt2tags, le nombre de = pour qualifier un titre est en fonction du niveau de ce titre (titre niveau 2 implique 2 signes
égal de chaque côté du titre). Il est également possible de rajouter un nom à la suite de ce titre, entre crochets et collé au dernier signe =, et cela sera utilisé pour la création d'ancres pour les liens nommés, par exemple un titre simple
== Titre niveau 2 == pourra être indiqué
== Titre niveau 2 : la compilation du code ==[compil]
Hiérarchiser > Les listes :
Les listes dans txt2tags dérogent à la règle des symboles qui entourent le formatage, mais les éléments de celles-ci on rarement besoin d'être reformatés avant d'être exportés, et au pire des cas on peut toujours faire précéder et suivre la liste entière avec des marquages spéciaux si nécessaire. On débute chaque élément par un tiret (-) ou un plus (+), selon que l'on souhaite une liste non ordonnée ou ordonnée. On peut rajouter des tirets avec un décalage d'un espace pour créer des sous-éléments.
Lier au monde extérieur :
Enfin, pour les liens, ceux-ci suivent tout le temps la partie à mettre en lien, et là aussi c'est plus pratique et logique lors de la relecture, car au lieu de [http://fr.wikipedia.org/wiki/Utilisabilit%C3%A9 buter sur un lien comme sur certains wiki], d'aller au bout du lien, et de continuer la lecture pour voir ce à quoi il se rapporte, on a directement le texte, [dans une forme immédiatement accessible http://fr.wikipedia.org/wiki/Utilisabilit%C3%A9], même si on rajoute des choses après ce lien.
Autres possibilités (images, tableaux) :
Il est possible de rajouter des images (nom du fichier entre crochets, comme un lien, par exemple [zozor.png]), d'entrer du texte tel quel (verbatim ou raw text), entre `` ou "".
Pour les tableaux, cela se fait à l'aide du symbole "pipe" |, comme ceci :
Code : Autre1
2
3
4
| || Titre de colonne | Titre de l'autre colonne |
| contenu de tableau | encore du texte |
| lorem ipsum | etc... |
| etc... | etc... | |
Il existe encore d'autres subtilités, mais vous devriez plutôt vous référer au
manuel complet en ligne pour cela, car cela dépasse le cadre de ce tutoriel qui se focalise plutôt sur la création de documents.
Mémo
Voici donc un résumé des points les plus important de la syntaxe :
- **gras** : gras
- //italique// : italique
- __soulignage__ : soulignage
- --barré-- : barré
- = titre = (à différents niveaux, on a ainsi == titre 2 ==, === titre 3 === etc)
- - liste
- + liste numérotée
- ``code``
- [image.jpg]
- [lien vers un site http://www.site.com] : lien vers un site
- | table |
Premier exemple de remplacements
On peut d'ailleurs même tester txt2tags directement depuis son site internet.
Copiez donc ce code dans le formulaire en ligne
http://txt2tags.sourceforge.net/online.php :
Code : Autre1
2
3
4
| %!preproc: 'MYBESTFRIEND' 'Nathalie'
Ce matin j'ai fait la rencontre de MYBESTFRIEND en me baladant dans le parc.
MYBESTFRIEND y faisait du footing. |
Le résultat sera donc :
Code : Console | Ce matin j'ai fait la rencontre de Nathalie en me baladant dans le parc. Nathalie y faisait du footing. |
Ici je mets exprès de côté le formatage en gras, italique, souligné, qui est facile à comprendre et que vous pouvez tester avec la page par défaut du formulaire en ligne.
Ainsi on a vu la manière la plus basique de créer un remplacement de texte. Si dans un document on a de nombreuses références à un mot (voire même un lien internet) appelé à changer ou à être modifié par la suite, on peut créer cette sorte de variable pour la remplacer au dernier moment.
Il n'est pour le moment pas possible d'entrer des lettres accentuées dans ce formulaire de test, c'est un bug dans la conception de la page, et non pas dans txt2tags.
L'indication preproc signifie que le texte sera remplacé avant tout autre remplacement habituel de la syntaxe txt2tags (avant d'être converti en html par exemple), tandis que postproc permet de remplacer le texte après qu'il ait été converti par txt2tags. En utilisant ces 2 possibilités, cela permet de jongler avec tous les cas de figure possible, comme on va le voir ensuite.
Le schéma de remplacements de txt2tags est donc :
tous les remplacements preproc (dans l'ordre d'apparition, et ligne par ligne)
⇓
conversion html (ou tex, ou mediawiki etc)
⇓
tous les remplacements postproc (dans l'ordre d'apparition, et ligne par ligne)
Maintenant, on va par exemple vouloir remplacer un mot, mais également l'entourer avec un effet de texte (titre visible lorsqu'on passe la souris au-dessus), et cela uniquement lors d'une exportation en html (on indique donc html entre parenthèses après le preproc). Pour cela, tapez :
Code : Autre1
2
3
4
5
6
| %!preproc(html): 'MYBESTFRIEND' <span title="Oui, MYBESTFRIEND c'est ma meilleure amie !">MYBESTFRIEND</span>
%!preproc: 'MYBESTFRIEND' 'Natacha'
Ce matin j'ai fait la rencontre de MYBESTFRIEND en me baladant dans le parc.
MYBESTFRIEND y faisait du footing. |
Petit problème, car on obtient maintenant :
Code : Console | Ce matin j'ai fait la rencontre de <span title="Oui, Natacha c'est ma meilleure amie !">Natacha</span>
en me baladant dans le parc.
<span title="Oui, Natacha c'est ma meilleure amie !">Natacha</span> y faisait du footing. |
En effet, dans ce que l'on a généré, txt2tags a compris que l'on voulait vraiment obtenir l'affichage des caractères < et >, et il a donc remplacé < par < et > par >
On pourrait donc résoudre cela simplement en indiquant une nouvelle balise qui signifierait "je veux que ce qui se trouve à l'intérieur de cette balise soit remplacé par un titre dans un span". Mais cela fait appel à des expressions régulières que je ne veux pas encore expliquer pour le moment.
On peut donc plus simplement remplacer après coup tous les symboles d'affichage html < et > par le véritable symbole < et >, en utilisant la directive postproc.
Malgré tout c'est un peu moins rigoureux comme méthode, c'est à dire qu'en 'bidouillant' cela, cela peut se retourner contre nous à un moment ou un autre, si par exemple on veut justement afficher un < ou > à un autre endroit du texte. Mais dans la majorité des cas, cette astuce va quand même fonctionner correctement.
Code : Autre1
2
3
4
5
6
7
8
9
| %!preproc(html): 'MYBESTFRIEND' <span title="Oui, MYBESTFRIEND c'est ma meilleure amie !">MYBESTFRIEND</span>
%!preproc: 'MYBESTFRIEND' 'Natacha'
%!postproc(html): '<' '<'
%!postproc(html): '>' '>'
Ce matin j'ai fait la rencontre de MYBESTFRIEND en me baladant dans le parc.
MYBESTFRIEND y faisait du footing. |
Ainsi avec le nouveau postproc (qui ne touche ici que l'exportation html), lorsque tout a été remplacé dans la conversion html, txt2tags passe encore une fois pour faire les derniers remplacements.
Pour information, voici la méthode avec des expressions régulières (regex), que nous verrons en détail au chapitre suivant :
Code : Autre1
2
3
4
5
| %!preproc: 'MYBESTFRIEND' 'Natacha'
%!postproc: '@@titre@@([^ ].*?)@@/titre@@' <i><span title="Oui, c'est ma meilleure amie !">\1</span></i>
Ce matin j'ai fait la rencontre de @@titre@@MYBESTFRIEND@@/titre@@ en me baladant dans le parc.
@@titre@@MYBESTFRIEND@@/titre@@ y faisait du footing. |
Ici on a donc créé les nouvelles balises :
Code : Autre
qui servent à définir notre nouvelle syntaxe. J'utilise souvent ces 2 arobases (@) lorsque je veux créer de nouvelles balises, car cela a l'avantage de ressortir du reste du texte tout en restant facile et rapide à écrire. On aurait pu l'indiquer entre < > mais on se retrouvait dans le cas de figure évoqué plus haut, avec le remplacement des < > par '<' et '>'
Mais cessons donc nos balades et courses dans le parc, et revenons à notre sujet.