[>a2181.html>] [<a2179.html<] [^a2.html^]
Sgmltexi è un DTD e un sistema frontale per la composizione in Texinfo a partire da un formato SGML. L'idea alla base di Sgmltexi è quella di avere la possibilità di scrivere un documento Texinfo attraverso la semplificazione e la guida che può dare un sistema SGML.
All'interno di Sgmltexi, la gestione dei nodi di Texinfo può avvenire in modo automatico e trasparente, generando un menù Info unico nel nodo Top. I nomi dei nodi, quando sono generati automaticamente, usano stringhe del tipo «cap 1», «app A»,...
Sgmltexi ha uno schema preciso: ci possono essere una o più introduzioni iniziali; nella parte centrale c'è un corpo che può essere scomposto in vario modo; ci possono essere delle appendici; al termine possono apparire degli indici analitici. Il corpo è organizzato in capitoli, che possono essere raggruppati in parti ed eventualmente anche in tomi. In tal modo, si possono gestire facilmente anche documenti di grandi dimensioni.
Sgmltexi è un lavoro derivato dall'esperienza fatta con ALtools e Alml, ovvero i sistemi di composizione di Appunti Linux e di Appunti di informatica libera.
Sgmltexi è composto da due eseguibili Perl: sgmltexi e sgmltexi-sp2texi. Questi due file devono essere collocati in una directory in cui possono essere avviati senza bisogno di indicare il percorso; in pratica in una directory elencata all'interno della variabile di ambiente PATH.
Evidentemente, è necessario l'interprete Perl; precisamente questi programmi cercano il file /usr/bin/perl
. Se il proprio sistema operativo è organizzato diversamente, è necessario intervenire modificando la prima riga dei due eseguibili:
#!/usr/bin/perl #...
Sgmltexi si aspetta di trovare alcuni file:
/etc/sgmltexi/sgmltexi.catalog
/etc/sgmltexi/sgmltexi.dcl
/etc/sgmltexi/sgmltexi.dtd
/etc/sgmltexi/sgmltexi.ent
Tutti questi file dovrebbero trovarsi esattamente dove previsto; in alternativa si devono realizzare almeno dei collegamenti per ricreare i percorsi stabiliti.
I messaggi di Sgmltexi possono essere tradotti. Per installare i file PO già esistenti è necessario compilarli come nell'esempio seguente:
$
msgfmt -vvvv -o sgmltexi.mo it.po
In questo esempio, il file it.po
viene compilato generando il file sgmltexi.mo
. Questo file può essere collocato in /usr/share/locale/it/LC_MESSAGES/
, o in un'altra posizione analoga in base agli standard del proprio sistema operativo.
Se non è disponibile il modulo Perl-gettext, che serve a Sgmltexi per accedere alle traduzioni, è possibile eliminare il suo utilizzo e simulare la funzione di Gettext. In pratica si commentano le istruzioni seguenti:
# We *don't* want to use gettext. #use POSIX; #use Locale::gettext; #setlocale (LC_MESSAGES, ""); #textdomain ("sgmltexi");
Inoltre, si tolgono i commenti dalla dichiarazione della funzione fittizia gettext(), come si vede qui:
sub gettext { return $_[0]; }
È il caso di riepilogare le dipendenze di Sgmltexi da altri applicativi:
dal momento che si tratta di un programma scritto in Perl, deve essere presente l'interprete relativo;
per l'analisi SGML occorre il programma nsgmls che fa parte del pacchetto SP o anche del pacchetto Jade;
per accedere ai messaggi tradotti del programma, è necessario il modulo Perl-gettext, salva la possibilità di escluderne l'utilizzo come è già stato mostrato;
per arrivare a una composizione finale è necessario ovviamente disporre di Texinfo, che potrebbe già essere integrato nella propria distribuzione TeX (di solito si tratta di teTeX).
Una volta preparato il sorgente Sgmltexi, bisogna utilizzare il programma sgmltexi per controllare l'elaborazione SGML e gli altri applicativi di composizione di Texinfo.
Di solito, la cosa migliore per iniziare lo studio di un sistema di composizione, è partire da un esempio banale, funzionante, che consenta di apprendere l'uso elementare degli strumenti relativi.
<!DOCTYPE Sgmltexi PUBLIC "-//GNU//DTD Sgmltexi//EN"> <sgmltexi lang="it"> <head> <admin> <setfilename content="esempio.info"> <settitle content="Esempio"> </admin> <titlepage> <title>Esempio</title> <subtitle>Un esempio per un documento in formato Sgmltexi</subtitle> <abstract> <p>Questo è solo un esempio di un documento scritto utilizzando Sgmltexi.</p> </abstract> <author>Pinco Pallino <ppinco@dinkel.brot.dg></author> <legal> <copyright>Copyright © 2000 Pinco Pallino</copyright> <license> <p>Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".</p> </license> </legal> </titlepage> <contents> </head> <body> <h1>Esempio generale</h1> <p>Questo è l'esempio tipico di un capitolo di Sgmltexi...</p> <p>Non c'è molto da scrivere in questo caso...</p> </body> </sgmltexi>
Supponendo di avere installato correttamente Sgmltexi (e anche Texinfo), supponendo inoltre che il file si chiami prova.sgml
, si possono usare i comandi seguenti:
$
sgmltexi --sgml-check prova.sgml
per verificare la correttezza formale dell'SGML;
$
sgmltexi --texi prova.sgml
per ottenere semplicemente il file prova.texinfo
, in formato Texinfo;
$
sgmltexi --info prova.sgml
$
sgmltexi --dvi prova.sgml
$
sgmltexi --ps prova.sgml
$
sgmltexi --pdf prova.sgml
$
sgmltexi --html prova.sgml
La sintassi di sgmltexi è quella che si vede nello schema seguente:
sgmltexi [opzioni] sorgente_sgml
In generale, è bene che il nome del file sorgente Sgmltexi abbia l'estensione standard .sgml
.
--help
Mostra una guida sintetica e termina di funzionare.
--version
Mostra le informazioni sulla versione e termina di funzionare.
--force
Quando il contesto lo consente, forza le situazioni. Può essere utile in particolare per la composizione in formato Info, per passare la stessa opzione al programma makeinfo.
--clean
Elimina i file intermedi che non servono, abbinati al nome del sorgente.
--deriv=derivazione
Definisce il nome della derivazione. In mancanza di questa indicazione si sottintende MAIN.
--sgml-include=entità_parametrica | --include=entità_parametrica
Assegna la parola chiave INCLUDE all'entità parametrica indicata. Questo serve ad abilitare l'inclusione di porzioni di sorgente SGML che sono controllate in questo modo.
--paper=formato_composizione
Serve a definire in qualche modo il formato finale stampato di composizione. Sono disponibili le parole chiave seguenti: letter, a4, a4wide, a4latex e small.
--sgml-syntax | --sgml-check
Controlla la correttezza formale del sorgente SGML, mostrando gli errori trovati.
--sp
Genera un risultato «post-SP», nel senso che restituisce soltanto quanto ottenuto dall'analizzatore SGML, a scopo diagnostico.
--texi | --texinfo
--dvi
Compone generando un risultato in formato DVI.
--ps | --postscript
Compone generando un formato in PostScript.
Compone generando un formato PDF.
--info
Generate un risultato in formato Info.
--text
Genera un risultato in formato testo puro.
--html
$
sgmltexi --sgml-syntax prova.sgml
Analizza la validità formale del sorgente prova.sgml
.
$
sgmltexi --ps prova.sgml
Genera un risultato in formato PostScript attraverso l'aiuto di texi2dvi e di dvips.
Daniele Giacomini, Sgmltexi