IMC!


Contenuti


Foto

 







Curiosando...
Novita  Novità Link  Link Blog  Blog English  Español 
Convertire documenti Latex in Html

Latex è un linguaggio descrittivo per la scrittura di testi. Viene usato soprattutto in ambito scientifico, grazie alla possibilità di organizzare in modo ordinato e preciso il contenuto e per il supporto di caratteri e espressioni non standard, come le formule matematiche. Nonstante svolga sostanzialmente la stessa funzione dell'html, cioè indicare come impaginare un testo, ho trovato grandissime difficoltà a convertire adeguatamente in html un testo scritto in latex. Ho deciso quindi di scrivere questa breve guida, per far risparmiare tempo a chi si trova nella mia stessa situazione.

Convertire latex in html non è difficile, in rete si trovano numerosi software, sia a riga di comando che grafici. Ma hanno un limite: le formule matematiche. Non esistono infatti nell'html sufficienti tag (comandi) per mostrare correttamente tali formule; le soluzioni possibili sono due:
  1. Cercare di rappresentare le formule con i tag html a disposizione. E' la soluzione adottata da quasi tutti i convertitori latex - html. I risultati sono pessimi.
  2. Convertire le formule in immagini, e includerle come tali nei documenti html. E' la soluzione più elegante, e viene adotatta da html2latex, il principale convertitore disponibile.
In questa guida prenderemo in considerazione html2latex. Questo convertitore a codice libero scritto in Perl si appogga a programmi esterni per effettuare la conversione, e putroppo non viene più mantenuto da vari anni. Come risultato si verificano vari problemi di compatibità com gli interpreti Perl attuali o i software esterni. In quesa guida cercheò di mostrare come aggirare questi problemi.

Materiale occorrente
  • Microsoft Windows: è una scelta obbligata, dato che sotto Linux (Ubuntu) non sono riuscito a far funzionare latex2html, nonostante l'ampia disponibilità di pacchetti. Per scrivere questa guida è stato usato Windows Vista.
  • MiKTEX: è la principale distribuzione Latex sotto Windows. Per il resto della guida, supporrò che sia installato in C:\MiKTEX. Per scrivere questa guida è stata usato MikTex 2.7.3224 (scaricata a Giugno 2009). Ricordo che MiKTEX è un grande pacchetto per compilare documenti in latex. Come editor, suggerisco TexnicCenter.
  • Ghostscript: un programma libero per la creazione di file PS e PDF. Per questa guida è stato usato Ghostscript 8.63
  • netpbm per Windows: un pacchetto di piccoli strumenti per modificare le immagini da riga di comando. Per questa guida è stata usato netpbm 10.27 (scaricato a Marzo 2010).
  • Latex2Html: il software originale è scritto in Perl, ed è stato aggiornato per l'ultima volta nel 2001. Tuttavia, ne esistono varie implementazioni, anche per Windows. In questa guida useremo latex2html-2008.tar.gz, ma consiglio di controllare nella cartella http://saftsack.fs.uni-bayreuth.de/~latex2ht/current/ per verificare se ne esiste una versione più recente.
  • ActivePerl: eh già, sotto Windows non è implementato nativamente un interprete Perl, e così dobbiamo installarlo. Per questa guida è stato installato ActivePerl 5.10.1.1007
Attenzione!
  1. Esistono varie incompatibilità tra le varie versioni di latex2html, netpbm, Perl, ecc. E' importante usare esattamente le versioni indicate di Perl, netpbm, latex2html.
  2. E' importante installare tutti i programmi in cartelle senza spazi. La cartella C:\Program Files non va bene! Otterrete errori strani. Consigio C:\MiKTEX per MiKTEX e C:\Texutils per tutti gli altri programmi (Latex2html, netpbm, GhostScript). D'ora in poi nella guida supporremo che tutti i software siano installati in queste cartelle


Configurazione iniziale
Procediamo all'installazione dei software secondo quanto descritto in precedenza. Alla fine, dovremo trovarci in una configurazione del tipo:
  • MiKTEX installato in C:\MiKTEX. Eseguimamo una installazione completa.
  • Ghostscript installato in C:\texutils\gs.
  • netpbm installato in C:\texutils\netpbm. Utilizziamo, come installer, il file eseguibile di setup (non l'archivio contenente i file binari: in questo modo non installeremmo le librerie).
  • Latex2Html estratto in C:\texutils\l2h_inst.
  • ActivePerl installato nella cartella di default proposta dal setup. Attenzione, nell'ultima fase di installazione ricordiamoci di associare l'interprete Perl ai file relativi e di aggiungere il suo percorso ai percorsi di sistema. In questo modo scrivendo perl da riga di comando possiamo subito lanciare l'interprete.
Configurazione di latex2html
  1. Apriamo il file di configurazione di latex2html, che si trova in C:\texutils\l2h_inst\prefs.pm. Alla riga 125 e seguenti troviamo il seguente codice:

    # Specify any additional search paths here, use `:' or `;´ as delimiter
    $prefs{'EXTRAPATH'} = '';

    # This is where the installation will take place. On UNIXish systems
    # $prefs{'PREFIX'} = '/usr/local';
    # is preferred. On DOS/Win, you might say
    # $prefs{'PREFIX'} = 'C:\\progs\\latex2html';
    $prefs{'PREFIX'} = '';

    Dobbiamo cambiare tale codice in

    # Specify any additional search paths here, use `:' or `;´ as delimiter
    $prefs{'EXTRAPATH'} = 'C:\\texutils\\gs\\bin;C:\\texutils\\netpbm\\bin';

    # This is where the installation will take place. On UNIXish systems
    # $prefs{'PREFIX'} = '/usr/local';
    # is preferred. On DOS/Win, you might say
    # $prefs{'PREFIX'} = 'C:\\progs\\latex2html';
    $prefs{'PREFIX'} = 'C:\\texutils\\l2h';

    Stiamo cioè aggiungendo i percorsi per MikTEX e netpbm, e stiamo specificando la cartella di installazione finale di latex2html.
    Attenzione a usare le barre dopppie per i percorsi!
  2. Apriamo il terminale nella cartella C:\texutils\l2h_inst e lanciamo il file config.bat. Questo file configurerà il necessario per latex2html. Ignoriamo gli errori dell'interprete Perl: la configurazione andrà ugualmente a buon fine. Come esempio, riporto il risultato del mio file config.bat:

    Starting Configuration...

    config.pl, Release 2008 (Revision 1.49)
    Accompanies LaTeX2HTML, (C) 1999 GNU Public License.

    checking for old config file (cfgcache.pm)... not found (ok)
    checking for platform... MSWin32 (Windows 32 bit)
    checking for C:\Perl\bin\perl.exe... C:\Perl\bin\perl.exe
    checking perl version... 5.010001
    checking if perl supports some dbm... yes
    checking if perl globbing works... yes
    checking for tex... C:\MikTex\miktex\bin\tex.exe
    checking for latex... C:\MikTex\miktex\bin\latex.exe
    checking for initex... C:\MikTex\miktex\bin\initex.exe
    checking for kpsewhich... C:\MikTex\miktex\bin\kpsewhich.exe
    checking for kpsewhich syntax... ok (style=1)
    checking for TeX include path... /MikTex/tex\latex\latex2html
    checking for mktexlsr... C:\MikTex\miktex\bin\mktexlsr.exe
    checking for dvips... C:\MikTex\miktex\bin\dvips.exe
    checking dvips version... 5.96d
    checking if dvips supports the combination of -E and -i -S 1... yes
    checking for html4-check... no
    checking for gswin32c... \texutils\gs\bin\gswin32c.exe
    checking for ghostscript version... 8.63
    checking for ghostscript portable bitmap device... pnmraw
    checking for full color device for anti-aliasing... ppmraw
    checking for ghostscript library and font paths... built-in paths are correct
    checking for pnmcrop... \texutils\netpbm\bin\pnmcrop.exe

    \texutils\netpbm\bin\pnmcrop.exe -verbose yes
    checking for pnmflip... no
    Warning: You may need to rely on LaTeX to generate images with  effects.
    checking for ppmquant... no
    checking for pnmfile... \texutils\netpbm\bin\pnmfile.exe
    checking for pnmcat... \texutils\netpbm\bin\pnmcat.exe
    checking for pbmmake... \texutils\netpbm\bin\pbmmake.exe
    checking for ppmtogif... \texutils\netpbm\bin\ppmtogif.exe
    yes
    checking if ppmtogif can make interlaced GIFs... yes
    checking for pnmtopng... \texutils\netpbm\bin\pnmtopng.exe
    checking for ppmtojpeg... \texutils\netpbm\bin\ppmtojpeg.exe
    checking for pnmcut... \texutils\netpbm\bin\pnmcut.exe
    checking for pnmpad... \texutils\netpbm\bin\pnmpad.exe
    checking for pnmrotate... \texutils\netpbm\bin\pnmrotate.exe
    checking for pnmscale... \texutils\netpbm\bin\pnmscale.exe
    checking for giftopnm... \texutils\netpbm\bin\giftopnm.exe
    checking for jpegtopnm... \texutils\netpbm\bin\jpegtopnm.exe
    checking for pngtopnm... C:\MikTex\miktex\bin\pngtopnm.exe
    checking for tifftopnm... C:\MikTex\miktex\bin\tifftopnm.exe
    checking for picttoppm... no
    Warning: You cannot directly translate/modify graphics of  format.
    checking for anytopnm... no
    Warning: You cannot directly translate/modify graphics of  format.
    checking for bmptoppm... \texutils\netpbm\bin\bmptoppm.exe
    checking for pcxtoppm... C:\MikTex\miktex\bin\pcxtoppm.exe
    checking for sgitopnm... \texutils\netpbm\bin\sgitopnm.exe
    checking for xbmtopbm... \texutils\netpbm\bin\xbmtopbm.exe
    checking for xwdtopnm... \texutils\netpbm\bin\xwdtopnm.exe
    checking if multiple pipes work... no
    Unfortunately multiple pipes are not reliable on this OS.
    checking for temporary disk space... C:\Users\Isacco\AppData\Local\Temp
    creating cfgcache.pm
    creating test.bat
    creating install.bat
    Note: Will install...
          ... executables to   : C:\texutils\l2h\pippo\bin
          ... shared library items to : C:\texutils\l2h\pippo
          ... unshared library items to : C:\texutils\l2h\pippo
    Starting build...
    ... building latex2html
    build.pl (Revision 1.6)
    Building "latex2html.bat" from "latex2html.pin"
    ... building pstoimg
    build.pl (Revision 1.6)
    Building "pstoimg.bat" from "pstoimg.pin"
    ... building texexpand
    build.pl (Revision 1.6)
    Building "texexpand.bat" from "texexpand.pin"
    ... building configuration module
    build.pl (Revision 1.6)
    Building "l2hconf.pm" from "l2hconf.pin"
    Configuration procedure finished
     

  3. Apriamo il file C:\texutils\l2h_inst\pstoimg.bat. Questo script si occupa di convertire i file PS normalmente usati nei documenti Latex in file PNG, adatti al web. Si appoggia a netpbm per effettuare le conversioni, ma poichè quest'ultimo si è evoluto nel tempo, si verifica una piccola incompatibilità nello specificare, a riga di comando, la trasparenza dei file PNG. Cambiamo la riga 1253:

    $trans_color = $TRANSPARENT_COLOR||'gray85';

    nel seguente modo:

    $trans_color = $TRANSPARENT_COLOR||'#d9d9d9';

    A questo punto latex2html dovrebbe essere pronto.
  4. Lanciamo il file C:\texutils\l2h_inst\test.bat per effettuare un test. Se tutto va a buon fine, nella cartella C:\texutils\l2h_inst\tests\l2h\test ci sarà un documento html convertito. Possiamo verificare in tale documento che tabelle, caratteri, immagini, formule, siano stati convertiti correttamente.
  5. Se tutto è andato a buon fine, possiamo finalmente installare latex2html con il comando C:\texutils\l2h_inst\install.bat nella cartella C:\texutils\l2h.
  6. Per convertire i nostri file, utilizziamo latex2html.bat contenuto nella cartella C:\texutils\l2h\bin\. Per evitare problemi di percorso, conviene copiare in questa cartella tutti i file utilizzati dal nostro file latex (foto, .tex inclusi, ecc).
Infine, non dimenticate che latex2html, come tutti gli strumenti a riga di comando, ha un'infinità di opzioni specificabili a riga di comando. Per conoscerle, possiamo consultare il suo sito, oppure scrivere:

latex2html -h

Un esempio di utilizzo esteso di opzioni a riga di comando può essere:

latex2html nome_file_tex -info 0 -image_type gif -antialias -antialias_text -long_titles 6 -short_extn -top_navigation -contents_in_navigation -index_in_navigation -split +2 -show_section_numbers


Link utili e approfondimenti
Se volete approfondire l'argomento, potete consultare questi link, ai quali ho fatto riferimento per la scrittura di questa guida:






Commenti

1 - mbistatoMar 22 Lug 2014 - 19:21:09  

risolto! il problema stava nell'incompatibilità del pacchetto miktex a 64 bit che avevo installato. Funziona perfettamente con miktex a 32 bit.


2 - mbistatoSab 19 Lug 2014 - 23:01:44  

Ciao, innanzitutto ti ringrazio per la favolosa guida.
Ho seguito tutti i passi che hai spiegato fino al punto 4 ma quando vado a verificare i file html generati, non tutti gli elementi sono stati convertiti in maniera corretta.
Ad esempio, in una delle pagine html in cui ci dovrebbe essere una formula, in realtà appare la seguente stringa al centro:
#math9# #displaymath105#

Da che cosa può dipendere?

Grazie mille ancora!


Scrivi un commento

Pui scrivere quì sotto un commento all'articolo che hai appena letto. Non sono abilitate smile, immagini e link. La lunghezza massima del commento è 4000 caratteri. La buona educazione è benvenuta, tutti i commenti offensivi saranno cancellati.

Your comment (lascia bianco!):
Utente (max 25 caratteri, obbligatorio)
Sito web (max 255 caratteri, facoltativo)
e-Mail (max 255 caratteri, facoltativa, non sarà pubblicata) Your opinion (lascia bianco!):
Commento (max 4000 caratteri, obbligatorio):





Valid HTML 4.01 Transitional
E-Mail - 118.83 ms

Valid HTML 4.01 Transitional