Comment perdre 3h avec linuxdoc ?

Comment perdre 3h avec linuxdoc ? - Logiciels - Linux et OS Alternatifs

Marsh Posté le 03-12-2004 à 16:10:19    

Choisir un format de documentation sous linux est un sujet délicat
dans une entreprise.
D'aucun pourront argumenter que tel ou tel format n'est pas assez
ouvert, pas assez répandu, trop difficile à convertir, trop compliqué
à apprendre...
 
Après avoir longtemps utilisé LaTeX et texinfo, je décidais de me
tourner vers le sgml. Ici, linudoc avait ses adeptes. Pourquoi pas me
dis-je ? Au moins je n'aurais pas à me soucier de la présentation.
 
Pour commencer, je m'inspire d'un document écrit par un collègue.
Tout se passe bien jusqu'au moment où j'essaie d'intégrer des schémas.
Je tente bêtement un :

Code :
  1. [img src="exploit.png"]


J'obtiens un message d'erreur lors de la conversion en HTML mais
l'image s'affiche quand même.
 
Je consulte donc la documentation de linuxdoc, au format info.
Rien.
Pas la moindre trace du quart du commencement de l'insertion d'une
image. Je tente une petite recherche sur google. Peine perdue, je
tombe au mieux sur des astuces pour docbook (un autre format de
documentation sgml). J'essaie de regarder un peu ce que j'ai à ma
disposition en local :
 

Code :
  1. $ dpkg -L linuxdoc-tools
  2. [...]
  3. /usr/share/doc/linuxdoc-tools/
  4. [...]


 
Je décide d'aller faire un tour dans ce répertoire. Là je découvre un
fichier "example.sgml". Je l'ouvre. Oh joie, oh bonheur, une section
"Tables and Figures" se tiens juste devant mes yeux !
Pour inclure une figure, il faut donc faire :
 

Code :
  1. <figure>
  2. <eps file="logo.eps">
  3. <img src="logo.png">
  4. <caption>The Penguin Logo of the Linux</caption>
  5. </figure>


 
linuxdoc se chargera tout seul de choisir le format eps ou png selon
le format de sortie choisi. L'auteur nous met cependant en garde :
"One more point.  Please remember that text only documents can be listened
by a blind person, while the heavy graphical documents can't."
C'est vrai, pensons un peu à tous les aveugles qui lisent les
documentations linux et privons nous de schéma pour eux !
Ensuite on pourra penser un peu à tous les dyslexiques, beaucoup plus
nombreux, et on créera un document avec des mots sans b ni d, ou alors
avec uniquement des b ou uniquement des d. On précisera au début du
document, "attention, ce document contient des 'd'".
Comme ça tout le monde sera à égalité devant la documentation.
 
Trêve de plaisanterie, il me faut mon document dans plusieurs formats
et au minimum le HTML et le PDF (ici c'est comme ça !).
Je lance la génération du PDF. Damned ! l'image est trop grosse.
Je décide donc de la réduire un peu et édite mon makefile :
 

Code :
  1. exploit.eps: exploit.fig
  2. fig2dev -L ps -m 0.8 $< $@


 
re-damned ! Après re-génération du PDF, elle n'a pas bougée. Je
re-vérifie tout. Bizarre. Commence à m'énerver ce truc !
Je m'étonne qu'il n'y ait pas d'option pour préciser la taille de la
figure. Je décide de chercher un peu plus de documentation pour avoir
une liste complète des tags linuxdoc disponibles.
 

Code :
  1. $ locate linuxdoc | grep dtd
  2. [...]
  3. /usr/share/sgml/dtd/linuxdoc.dtd
  4. [...]


 
Après visualisation du fichier et recherche de "figure", il s'avère
qu'un attribut "height" est disponible.
Après quelques essais infructueux, je me décide à chercher de nouveau
un peu de documentation sur google.
Je fini par trouver un Linuxdoc-Reference.pdf.
Enfin une référence complète avec tous les tags.
Enfin presque complète, je ne suis visiblement pas le seul à avoir du
mal avec linuxdoc et on trouve dans ce document beaucoup de :
"Again I can't explain this one. If you can, please mail."
Rassurant.
 
Quelques tests plus tard, je m'aperçois finalement que linuxdoc
utilise le .png et non le .eps pour générer mon PDF.
J'essaie de créer un PS au lieu d'un PDF pour voir. C'est bien le
schéma au format .eps qui est utilisé. Par contre si je veux créer un
PDF à partir du PS, je n'ai pas d'index (normal). Cette solution ne
me convient donc pas.
 
Je décide de mettre un peu à jour ma debian, on ne sait jamais, dès
fois qu'un bug quelconque soit corrigé :
 

Code :
  1. apt-get update
  2. apt-get -y upgrade


 
Mal m'en a prit, dia est maintenant incapable de générer des schémas
en noir et blanc :
 

Code :
  1. $ dia -e bdd.png bdd.dia
  2. ** (dia-python:1452): WARNING **: Can't color_convert in \
  3. non-interactive app (w/o color_init())
  4. [...]


 
Je me retrouve avec un schéma vert sur fond noir qui sera du plus bel
effet sur mon document HTML. Pour l'instant il défigure également mon
PDF car ce dernier intègre toujours le .png et non le .eps.
Note pour plus tard : mettre à jour sa debian le moins souvent possible.
 
Bien décider à résoudre le problème, je vais regarder les sources de
linuxdoc. Par chance c'est du perl, ça ira vite. Il suffit d'éditer
LinuxDocTools.pm. Je rajoute quelques "print STDERR" bien placés pour
avoir les différentes commandes lancés. Je commente la suppression des
fichiers temporaires. Trois fichiers temporaires sont utilisés à chaque
fois. Et je n'ai pas compté les différentes commandes...
 
J'arrive assez vite à identifier le problème en lançant les commandes
à la main. C'est dans le dernier fichier temporaire que je me retrouve
avec un .png au lieu de mon .eps. Le fichier
"linuxdoc/latex2e/mapping" est utilisé. Je l'ouvre. Bingo c'est là que
sont insérés les commandes latex destinées à pdflatex, utilisé pour la
création du PDF, qui permettent de créer les figures. Je commente
quelques lignes et c'est reparti pour un test. pdflatex m'en veut :
 

Code :
  1. $ linuxdoc --language=fr --charset=latin -B latex --output=pdf admin.sgml
  2. [...]
  3. ! LaTeX Error: Unknown graphics extension: .eps.
  4. [...]


 
Nouvelle recherche sur google. pdflatex ne sait pas inclure de schéma
au format .eps (rha pourquoi ils ne le disent pas dans la doc de
linuxdoc ?). Il faut les convertir en .pdf avant. On se croirait
encore en 1980. Pourquoi chercher à inventer des machines à voyager  
dans le temps alors qu'il suffit d'installer linux sur un PC ?
Je rajoute vite fait une règle au Makefile.
Allélouia ! ça marche ! J'ai enfin mon schéma dans le PDF.
Le titre de la figure n'apparaît pas (alors que dans le .ps c'était
bon) mais je laisse ce détail de coté pour l'instant.
 
Ce qui m'intéresse pour le moment c'est que linuxdoc prenne le .png
pour générer la sortie HTML et le .pdf pour la sortie PDF.
Par chance, linuxdoc utilise un préprocesseur et dispose d'un "<#if>".
J'avais remarqué lors de mes pérégrinations précédentes que l'option
"pdflatex=yes" était passé au préprocesseur et je modifie donc la
ligne :
 

Code :
  1. <img src="exploit.pdf">


 
en :
 

Code :
  1. <!--
  2. <img src="exploit.pdf">
  3. -->
  4. <img
  5. src="exploit.<#if pdflatex=yes>pdf</#if><#unless pdflatex=yes>png</#unless>">


 
Ça semble fonctionner : j'ai bien l'image .pdf dans mon PDF.
Par contre je l'ai aussi dans mon HTML...
Vérifications faites, il s'avère que le préprocesseur considère que
"pdflatex=yes" est vrai si "pdflatex" n'est pas défini :
 

Code :
  1. $ cat admin.sgml | sgmlpre | grep exploit.pdf
  2. <img src="exploit.pdf">
  3. src="exploit.pdf">


 
Notons la section "SEE ALSO" du man de sgmlpre que je trouve très
explicite :
"For a complete description, see the header in the source archive."
J'opte pour le passage d'une option "-D png=no" à linuxdoc lors de la
création du PDF et change la ligne du .sgml en :
 

Code :
  1. <img
  2. src="exploit.<#if png=yes>png</#if><#unless png=yes>pdf</#unless>">


 
Ça fonctionne.
Fort de ce succès, je supprime la ligne que j'avais commenté et
poursuis l'écriture de mon document.
Mal m'en a pris. Quelques minutes plus tard, j'essaie de recompiler.
Pas moyen :
 

Code :
  1. $ linuxdoc --language=fr --charset=latin -B latex --output=pdf admin.sgml
  2. [...]
  3. LaTeX Warning: File `exploit.pdf' not found on input line 51.
  4. [...]


 
Je n'y comprends plus rien. J'annule mes récentes modification avec
quelques "undo" Emacs. Je relance la compilation : ça fonctionne !
Après plusieurs minutes d'essai, je comprends que c'est la ligne en
commentaire qui change tout !
Petit test :
 

Code :
  1. mkdir zyz
  2. touch zyz/toto


 
Rajout de la ligne '<img src="zyz/toto">' en commentaire
uniquement. Recompilation :
 

Code :
  1. $ ltrace make admin.pdf 2>&1 | grep zyz
  2. strlen("zyz" )                                    = 3
  3. memcpy(0x8071623, "zyz", 4)                      = 0x8071623


 
Super !
Quand on crée un PDF, linuxdoc recherche apparemment les 'img src="X"'
et teste l'existence des fichier "X" ("apparemment" car je n'ai pas
poussé plus loin mes investigations, il était déjà tard).
Je me dis qu'il ne doit pas prendre en compte les sauts de ligne et
que c'est pour cela que mon fichier n'est pas trouvé. J'essaie donc :
 

Code :
  1. <img src="exploit.<#if png=yes>png</#if><#unless png=yes>pdf</#unless>">


 
Cela ne fonctionne plus !
J'ai un :
 

Code :
  1. $ make admin.pdf
  2. [...]
  3. can not copy graphics
  4. [...]


 
Linuxdoc effectue donc cette recherche avant l'appel au préprocesseur !
J'en entend déjà certains me dire que c'est du logiciel libre, que les
développeurs ne sont payés, que je râle et que je ne fait rien...
Qu'ils aillent au diable.
 
J'ai finalement dans mon fichier :
 

Code :
  1. <figure loc="p">
  2. <eps file="exploit.eps" height="25cm">
  3. <!--
  4. Ne pas supprimer ce commentaire !!!
  5. <img src="exploit.pdf">
  6. Ne pas supprimer le saut de ligne après "img" !
  7. -->
  8. <img
  9. src="exploit.<#if png=yes>png</#if><#unless png=yes>pdf</#unless>">
  10. <caption>Environnement de production</caption>
  11. </figure>


 
Et voilà, 3 heures pour insérer une image dans un linuxdoc à l'aide
d'une bidouille digne d'un programmeur visual basic.
Et encore, je n'ai toujours pas de titre pour les figures du PDF...
 
Ne perdons pas espoir, la prochaine fois j'essaie le docbook.


Message édité par arsunik le 03-12-2004 à 16:20:43
Reply

Marsh Posté le 03-12-2004 à 16:10:19   

Reply

Marsh Posté le 03-12-2004 à 16:22:03    

:ouch:


---------------
:: Light is Right ::
Reply

Marsh Posté le 03-12-2004 à 22:00:01    

oula  
pour ne pas perdre du temps, ecris dans un vrai format, le .doc par exemple :p
bonne chance

Reply

Marsh Posté le 03-12-2004 à 22:15:53    

Hmm non, je l'ai utilisé de 1995 à 1998 (avant je faisais des .wks) et j'étais très content de passer à LaTeX.

Reply

Marsh Posté le 04-12-2004 à 01:51:52    

En tout cas, sur les 3 heures, y'a quelques minutes a écrire le post :D

Reply

Marsh Posté le 04-12-2004 à 19:50:58    

C'était quoi la question ?


---------------
-~- Libérez Datoune ! -~- Camarade, toi aussi rejoins le FLD pour que la flamme de la Révolution ne s'éteigne pas ! -~- A VENDRE
Reply

Marsh Posté le 04-12-2004 à 19:53:16    

Stephen a écrit :

Rassure-moi, tu as compris que le propos de l'auteur était de dire que lorsqu'une alternative texte était valable, il fallait la préférer ? :D


[:dawa] je connais un mec qui aurait pu écrire la phrase citée !!

Reply

Marsh Posté le 04-12-2004 à 21:34:33    

Stephen a écrit :

Rassure-moi, tu as compris que le propos de l'auteur était de dire que lorsqu'une alternative texte était valable, il fallait la préférer ? :D


 
Inutile de te rassurer, je pense que tu connais la réponse à ta question.
Enfin j'espère :sweat:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed