Previous: 10 Maple
Up: Applyx 045
Next: 12 Graphisme
  Contents
Subsections
Vu l'incapacité du monde latex à fournir un plugin permettant de visualiser
les équations dans les navigateurs web, un certain nombre de contournements
se sont mis en place. Le fait qu'il y en ait plusieurs prouve que
ces contournements ne fonctionnent pas si bien que cela.
11.1 pdf, url et hyperref
- Avec la version
, on constate un changement de comportement
de la commande "\url", qui
ne se comporte plus "verbatim". Un caractère
apparaissant dans le champ "adresse" est considéré
comme introduisant une commandes et, en plus, les "url"
débordent bêtement de la page.
- Pour
, la commande latex pointait vers l'exécutable :
/usr/share/texmf/teTeX/bin/i386-linux-libc6/tex. Depuis la
, cette commande pointe finalement vers /usr/share/texmf/teTeX/bin/i586-linux/pdfetex,
l'objectif étant d'obtenir un *.dvi modifié de façon à générer un
*.pdf avec des liens html.
- Le package url a été modifié, et ne transcrit plus verbatim.
Au contraire, les paramètres sont recodés "à la manière d'une
équation". Et donc, par défaut, les espaces sont supprimés.
- Lorsque le package url est seul actif, les urls sont transcrites
par des équations, police "code", avec une gestion
bien faite des coupures.
- Lorsque le package hyperref s'en mèle, les urls sont transcrites
par des liens actifs dans les fichiers *.dvi ou *.pdf. Ce package
est appelé automatiquement par le package html (et donc latex2html
est lui aussi concerné). Pour que les liens actifs soient sécables,
il faut spécifier a4paper, breaklinks, hypertex comme options
du package (les placer dans les options de documentclass).
- Si l'on utilise le driver standard (dvips) au lieu du driver hypertex,
breakurls ne fonctionne réellement qu'avec une sortie directe en *.pdf
(option pdflatex). Avec une sortie en *.dvi, les urls ne sont coupées
qu'aux espaces et aux soulignés.
- Mise à jour depuis ctan : ftp://cam.ctan.org/tex-archive/macros/latex/contrib/hyperref.zip.
Décompresser, donne un répertoire hyperref. Exécuter latex hyperref.ins,
qui engendre tout ce qu'il faut (docstrip). Recopier tout cela dans
un répertoire accessible par latex. On remarquera que les tests sont
exécutés en *.pdf et que les urls sont juste assez petites pour
ne pas avoir besoin d'etre coupées.
- Nécessite kvoptions et un refcount actualisé.
- Dans le présent document, nous utilisions :
\let\weburl\url
\DeclareUrlCommand\url{\urlstyle{sf}}
\DeclareUrlCommand\code{\urlstyle{tt}}
- Mais rien n'est jamais vraiment simple. Se reporter au §§ 8
de latex2html.
Cet ensemble de modifications fonctionne très bien, ce pourquoi de
nombreux auteurs préfèrent désormais se limiter à publier des fichiers
*.pdf. Tant pis pour l'encombrement du web et le manque de confort
des lecteurs, qui doivent charger un fichier complet avant d'en examiner
l'intéret.
- Configurer Netscape (netscape nous broute).
- Batch à télécharger http://hutchinson.belmont.ma.us/tth/Xfonts.html
- Il faut "use document-specified fonts".
- Comment régler la taille de la police symbol (lorsque l'on change
la police proportionnelle) ?
- Comment changer la police proportionnelle en corps 16 ?
- Principe de base : tth n'utilise pas tex. Donc rien
ne fonctionne en dehors de ce qui est strictement prévu.
- On peut prévoir des macros à double détente, les commentaires %%tth:
étant pris en compte par tth.
- Gros avantage : la vitesse et la taille. En échange, on perd beaucoup
sur les maths inline. Par exemple, ni vecteurs ni matrices.
C'est un compromis.
- Problèmes pour les algorithmes. Comment capturer les paramètres optionnels,
par exemple
\begin{algorithmic}[1], ou bien les commentaires
\IF[comment]{condition} ?
- Comment indenter en cascade (on dispose de compteurs, mais pas de
boucles) ?
L'idée générale est d'écrire les choses simples en html ordinaire
et "les choses trop compliquées" en images.
- La version 1.70 (2002-2-1) est livrée avec
. Les adresses
sont /usr/bin/latex2html pour l'exécutable, /usr/share/latex2html
pour l'arborescence des fichiers (sauf la config), /usr/lib/latex2html/l2hconf.pm
pour la configuration générale et /usr/share/doc/packages/latex2html/
pour la documentation.
- La version 1.43 (1999-2-8) était livrée avec
. La documentation
se trouvait en /usr/share/doc/packages/l2h/ et arborescence
+ configuration en /usr/share/latex2html.
- La page d'accueil http://www.latex2html.org/
date de 2001,
mais contient un lien vers http://saftsack.fs.uni-bayreuth.de/~latex2ht/current/
qui contient la version 2002-11-29 (dans des répertoires datés 2004-10-25.
Seul fichier semblant avoir été changé : latex2html.pin,v 1.71 2004/01/06
23:49:54 RRM. La maintenance semble avoir été arretée.
- La doc existe sous deux versions : *.html et *.ps. Lorsqu'un serveur
web existe sur une machine, il est bien que http://localhost/doc contienne
un pointeur vers cette arborescence d'aide.
- Pour ce qui est de la documentation imprimable, il faut pouvoir la
lire (
Elle se trouve en /usr/share/doc/packages/l2h/manual.ps.gz.
Décompresser avec karchiveur. La liste des fichiers reste vide, mais
l'extraction se fait quand même. Le nom à fournir est un nom de répertoire,
le terminer par une barre. Ce document postscript est mal paginé :
il comporte 3 zones numérotées différemment (titre, intro, corps du
texte), qu'il est impossible de séparer avec pstops ou avec kghostview
pour une impression recto-verso (sur une imprimante mono-face). Contournement
: le transférer sous winxx, et l'imprimer avec ghostview (pair/impair).
Par suite des ahurissantes prétentions du gang compu$erve sur les
images *.gif, les images ont par la suite été codées en *.png.
Plus de détails à ce sujet http://lpf.ai.mit.edu/Patents/Gif/Gif.html
et sur http://dogma.net/DataCompression/GIF.shtml.
- A peu près tout le barnum doit être modifié peu ou prou, et l'endroit
pertinent pour les modifications n'apparaît pas souvent du premier
coup. Par conséquent, commencer par déplacer les scripts (exécutables
perl) latex2html et pstoimg vers /usr/lib/latex2html (et placer
un lien dans /usr/bin). Donner les droits d'écriture (garder
une copie read only).
- Documenter les changements, avec des dates et des "# #¶¶¶
...". Les deux # sont indispensables (le premier for
the line to be commented out, le second pour que cette ligne soit
conservée lors d'un strip du fichier et le "¶¶¶"
sert à retrouver tout cela par un grep ou par le traitement
de texte.
- Il y a quatre niveaux de configuration possible :
- [config1] Configuration pour le site entier par le fichier l2hconf.pm.
Son adresse complète est inscrite dans le script lors de l'installation.
Chargé comme module perl (étant dans le chemin). Peut être remplacé
par un autre fichier, en donnant son chemin complet dans la variable
d'environnement L2HCONFIG.
- [config2] Configuration pour un utilisateur donné par le fichier
~/.latex2html-init (s'il existe). Un exemple est donné
LISTING 32.
- [config3] Configuration pour une exécution donnée par le fichier
./.latex2html-init (autrement dit dans le répertoire en cours).
- [config4] Dernier niveau : ce qui est passé en argument dans la
ligne de commande.
- Comme d'habitude : éviter de placer les modifications durables dans
le fichier de configuration générale, cela se perd dans les changements
de version.
- Dans une même page web, il est utile de coder par la même image tous
les morceaux identiques.
- Lors d'une recompilation d'une page, il est plus rapide de ne recalculer
que les images aynat changé.
- Mais les tables ne se codent plus correctement : convertir en images
- Mais les listings n'ont plus le bon numéro, car ce qui est codé dans
l'image est le numéro lors de l'exécution différentielle.
En résumé, le patch final et définitif, obtenu après divers succès
partiels, consiste à remplacer /usr/share/texmf/dvips/misc/alt-rule.pro
par un fichier vide. En détail :
- L'idée générale avons nous dit est d'écrire les choses simples en
html ordinaire et "les choses trop compliquées"
en images. Le problème se pose alors de l'alignement de ces images
par rapport au texte. Il y a donc "ce qui ne passe pas dessous"
et qui est aligné "bottom", tandis que "ce
qui passe dessous" est aligné "center"
et doit donc avoir une taille précise.
- Entre autres choses, latex2html crée un fichier images.tex qui est
compilé en un fichier images.dvi. Chaque image se voit dotée (par
images.tex) de deux barres noires, une à gauche et une en bas. Cette
adjonction permet de définir la bonne bounding box pour l'image (LISTING 33).
- Le fichier est alors transmis à dvips par la commande
/usr/bin/dvips -S1 -i -Ppdf -E -o/tmp/l2h12445/image ./images.dvi
le résultat étant du postscript (-Ppdf) avec une nouvelle page par
section (-i), pas plus d'une page par section (-S1), le tout allant
dans le répertoire indiqué par -o. On obtient l'image donnée à droite
du LISTING 33.
- Les messages de dvips étant, à notre goût, mal mis en page, nous modifions
(line 3909) le script latex2html pour que la commande soit
filtrée par :
... 2>&1 | tr -d '\\n\\r'
| \\
sed -e 's¶^¶\\n¶
; s¶\$¶\\n\\n¶
; s¶(->¶\\n(->¶; s¶(->¶\\n(->¶g'
On obtient alors exactement un message d'une ligne par image. Ce qui
s'affiche est la liste des modules utilisés /usr/share/texmf/dvips.
- Puis le script pstoimg est appelé sur chaque image. Pour l'image 007,
cela donne :
-
- /usr/bin/perl /usr/bin/pstoimg -type png -debug -tmp /tmp/l2h12445 -discard
-interlace -antialias -depth 1 -scale 1.637
-geometry 68x16 -margins 134,125
-crop abls -transparent -out img7.png /tmp/l2h12445/image007.ps
- On constate que :
- Les valeurs de
étant données par le fichier
*.log (du TEX spécial lancé par L2H), la relation :
- La largeur de la boundingbox est exactement 7 points de plus que celle
de geometry. Pour ce qui est de la hauteur, l'écart est 4, 5 ou 6
points.
- margins vaut toujours la même chose, et la bounding box est toujours
133 xxx xxx 668.
- La première action est la mise au format de l'image *.eps en utilisant
gs. L'image fait (geometry) 68x16 et sa bounding box fait
73x23. Multiplié par l'échelle et arrondi à l'entier voisin, cela
donne 120x38.
- Puis l'image est rognée en utilisant pnmcrop, en plusieurs
passages. Le principe est que :
- pnmcrop -sides : rogne le bord blanc sur les quatre côtés (et donc
venant en butée sur les barres noires) : top=1, bot=2, left=1, right=2
- pnmcrop -bot -sides : enlève la barre noire du bas (il n'y a plus
de pixels blancs à cette hauteur-là à cause du rognage précédent)
: bot=2
- pnmcrop -left -sides : enlève la barre noire de gauche (même remarque)
: left=2
- Puis on teste s'il reste un tout petit peu de blanc en bas (cas des
équations alignées above ???), au quel cas on enlève.
- En tout, il a été enlevé top=1, bot=4, left=3, right=2
- Enfin l'image est mise au format *.png en utilisant ppmquant pour
mettre l'image au format *.png (avec création d'un fond transparent).
- En fait (
) la barre noire de gauche déborde légèrement vers
le bas. Le premier rognage rate la deuxième ligne du bas car elle
contient un pixel noir, les autres étant blancs. Le deuxième rognage
ne fait rien. Le troisième enlève la barre de gauche. Le rognage "shave"
enlève la ligne blanche du bas. Et il reste la barre noire du bas,
juste au bord. Il faudrait un deuxième rognage "shave"...
FIG. 9:
Avatars et barres noires
|
|
- On voit donc que quatre programmes doivent coopérer : dvips,
latex2html, pstoimg et pnmcrop. Lorsque
cette coopération est rompue, les barres noires apparaissent.
- Le diagnostic habituellement porté sur les listes de diffusion est
une désynchronisation dans les versions des deux programmes du package.
Cette hypothèse repose entre autres sur le fait que les commandes
latex2html -v et pstoimg -v donnent des numéros de version...
qui n'ont rien à voir entre eux (à part une commune date de release).
Hors propos.
- Pour de vieilles versions, il fallait améliorer la coopération entre
pstoimg et pnmcrop en ajoutant quelques "black"
en trois bons endroits du script pstoimg.
$croparg = '-bot -black' ;
$croparg = "-$edge -black"
;
if(&do_cmd_norename("$PNMCROP -bot -black
< $in",$tmp))
- Pour la version actuelle, le problème vient de dvips, dont les calculs
sont désormais conduits en virgule flottante. Comme la barre de gauche
est tracée de haut en bas, une erreur d'arrondi fait que cette barre
dépasse au-delà de la barre noire du bas. Il faut donc modifier le
fichier /usr/share/texmf/dvips/misc/alt-rule.pro.
- TVZ affirme qu'il vaut mieux tracer les traits avec stroke
plutôt qu'avec fill. Mais il en oublie d'arrondir à l'entier
le plus proche. Une modif est donc d'insérer :
-
- gsave newpath
transform round exch round exch itransform
/ruleY X /ruleX X
- En fait alt-rule.pro est un vieux truc, datant de 1999, qui s'appliquait
à dvips_5.85. Comme maintenant (
) on en est à dvips_5.95
datant de 2005, le meilleur patch est de remplacer le fichier alt-rule.pro
par un fichier vide.
Reconfigurer les procédures définissant les barres de navigation dans
l'un des fichiers de configuration. Le LISTING 34
donne un exemple de reconfiguration des barres hautes et basses.
- L'objectif est de disposer d'un fichier unique, lisible par les deux
interpréteurs latex et latex2html. En principe,
tout se passe tout seul. Et quand bien meme quelque chose irait mal,
les commandes
latex... et
html... permettent
de s'adresser à l'un ou l'autre des deux interpréteurs.
- Mais, dans la pratique, il faut forcer la main dans de nombreuses
situations. Ne rien faire à la main. Il faut tout encapsuler dans
des fichiers de commande. En particulier, les détails de configuration
se règlent par un fichier .latex2html-init placé dans le répertoire
courant. Commander tout cela depuis le répertoire fantome placé dans
/qublic_bin/azor pour commander les fichiers placés en /public_html/azor
(éviter les exécutables dans l'arborescence html)
- Exporter le fichier $nom$version.lyx sous forme de fichier *.tex.
Avec KLYX, il y avait le choix du nom de destination et [space][return]
permettait de valider un nom par défaut. Avec LYX, ce choix a disparu
et la commande
fournit $nom$version.lyx.
Lorsqu'il y a des fichiers LYX inclus, ils se trouvent exportés
aussi (dans leurs répertoires respectifs). Dans ce cas, il est utile
de numéroter les copies, plutot que les originaux.
- Se placer dans le répertoire destination, et y recopier les fichiers
utiles : $nom.tex et ./figures/*.eps. Il convient de raboter
le numéro de version, car le nom des sous-répertoires dépend (par
défaut) du nom du fichier principal. A la fin du processus, tout rebalancer
dans le répertoire $nom attribué au document, de façon à laisser
propre le répertoire principal.
- Quand quelque chose se passe mal, commencer par détruire le répertoire
$nom, qui contient les anciennes images (à cause de $REUSE=2)
et les fichiers de configuration latex.
- Rien ne va entre prettyref (Subsection 8.2) et
latex2html : recoder toutes les références lors de la recopie
des fichiers *.tex.
- Exécuter (si besoin) BibTEX après un premier passage de LATEX.
Pour cela, le batch de commande consulte le fichier $nom.aux.
- Nous aurions besoin d'une double définition des
url, soit :
\def\myurl#1{\latex{\url{#1}}\html{\htmladdnormallink{#1}{#1}}}
Mais alors, sous LYX, les url apparaitraient sous forme d'un ERT
"LyxCode" et non sous la forme efficace d'un encadré
spécialisé. Par conséquent, nous utilisons url dans LYX, et nous
recodons les \url{http: en \myurl{http:...
et nous introduisons la bonne définition lors de la recopie des fichiers
*.tex. Faire la meme chose aux fichiers générés par NatBiB.
- Prévoir deux passages de LaTex (en tout, ou bien après l'exécution
de BibTEX) pour générer les tables des matières et les index. Avec
les versions récentes de LYX, l'indexation se fait spontanément.
- Situation à étudier : sous konqueror, on a l'impression visuelle du
manque d'un espace après les équations.
- Taille des pages.
- [$PAPERSIZE='a4'] {$width = 595 -144; $length= 842-288 } pt
- [$PAPERSIZE='plouf'] "$_ unknown, using LATEX's
size"
- Sainte Ursule a décidé que la taille des pages A4 serait
.
Par conséquent, l'utilisation d'encadrés de taille supérieure engendre
un "encadré vide correspondant à un saut de page".
Bilan, toutes les images sont décalées d'un cran. Contournement :
s¶length= 842¶length= 1191¶ qui modifie la description de la page
A4 pour lui donner la hauteur d'une page A3 (en fait
donne 1190, mais on veut pouvoir faire de la transcription inverse).
- Le chat est coupé en morceaux.
Ligne 920 : print "Running $cmd > $out\n"
;
permet de voir la commande qui est en cours. Il y a un crop qui ne
se fait pas bien. Et ???
- La présence d'un $ dans un encadré gris "url" plante
la traduction.
- les paragraphes LyxCode (indentés ou non) sont imprimés en double
interligne. Pour supprimer ce double interligne, on peut les séparer
par des retours requis. Mais cela n'a pas d'effet dans la visionneuse
dvi... On constate que le paragraphe LyxCode engendre des tags <P>
dont un avec un espace requis (anormal), tandis que le line_break
engendre un tag <BR> unique (normal).
11.11 Guerre des quotes
Description de la fameuse guerre des quotes (
). Sainte
Ursule, qui prie pour nous, n'aime pas les quotes mixtes: il ne peut
y avoir que des citations ouvrantes et des citations fermantes (et
des tailleurs pour hommes ou bien pour femmes).
Donc toute "double quote" est LYX-reconvertie
en "ouvrez-les quotes" (c'est à dire "grave-grave")
ou "fermez-les-quotes" (c'est à dire "zaigu-zaigu").
Tant pis pour les infidèles qui prétendent utiliser des "quotequotes"
dans un programme informatique. D'ailleurs le clavier permet tout
juste d'introduire le caractère maudit (ctrl-").
La compilation usuelle lyx-tex-dvi-ps se passe sans incidents (majeurs),
mais la compilation lyx-tex-html laisse des scories désagréables.
On a en effet les transcriptions suivantes :
Il est donc nécessaire de réécrire les "quotquotes"
par une commande sed portant sur le fichier *.tex. Pendant qu'on
y est, on recode les backslash en un diacritique inutilisé (Aacute)
pour qu'ils passent au travers (le codage par $\backslash$
produit un bitmap et pas un \...). Il faut évidemment
modifier latex2html en conséquence. Voici donc script pour contourner
tout cela :
-
- # script sed_html (before an html compil)
s/\\char`\\"{}/"/g
s/\\char`\\\\{}/\\'A/g
Ces embrouilles semblent avoir été réglées avec la livraison suivante
.
Previous: 10 Maple
Up: Applyx 045
Next: 12 Graphisme
  Contents
douillet@ensait.fr
2007-12-06