[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico] [volume] [parte]
XMLTeX (1) è un sistema per comporre file XML attraverso TeX; PassiveTeX (2) è un insieme di fogli di stile aggiuntivi, che in particolare consentono a XMLTeX di elaborare file XSL-FO.
XMLTeX è un sistema che si affianca normalmente a LaTeX per trasformare un file XML in un documento pronto per la stampa, attraverso un metodo di trasformazione degli elementi e degli attributi del file di origine in comandi di LaTeX. Per fare questo occorre predisporre un «file di configurazione» nel quale si dichiarano queste sostituzioni. Viene proposto il solito esempio di file XML molto semplice, dove in particolare l'attributo linguaggio contiene un nome valido per LaTeX:
|
Supponendo di dare a questo file il nome relazione.xml
, si può realizzare il file relazione.cfg
, con l'indicazione delle trasformazioni da apportare:
|
Come si vede si tratta di comandi TeX con cui si dichiarano gli abbinamenti tra elementi e attributi con comandi corrispondenti di LaTeX.
\XMLelement{nome_elemento}{[dichiarazione_attributi]}{codice_iniziale}{codice_finale} |
\XMLelement{nome_elemento}{[dichiarazione_attributi]}{\xmlgrab}{codice_complessivo} |
Il comando \XMLelement consente di dichiarare la trasformazione dei marcatori di un elemento in comandi LaTeX: gli ultimi due argomenti contengono rispettivamente il codice LaTeX di apertura e il codice di chiusura dell'elemento. Tuttavia, se nell'argomento destinato a ospitare il codice LaTeX di apertura si inserisce soltanto il comando \xmlgrab, si può mettere tutto nell'argomento finale, usando la sigla #1 per fare riferimento al contenuto dell'elemento.
Nel secondo argomento del comando \XMLelement si possono inserire comandi \XMLattribute per prelevare le informazioni sugli attributi:
\XMLattribute{nome_attributo}{nome_comando_tex}{[valore_predefinito]} |
Osservando l'esempio del file relazione.cfg
si può vedere che nella dichiarazione riferita all'elemento relazione appare l'associazione dell'attributo linguaggio al comando \mylanguageattribute, che poi viene usato successivamente. In pratica, il comando di LaTeX che nel file relazione.cfg
appare come la riga seguente, è come se venisse sostituito con quella successiva:
|
|
Nel file di configurazione, ovvero il file .cfg
, possono essere collocati altri comandi importanti; fortunatamente molte indicazioni essenziali fanno già parte della configurazione generale, che potrebbe trovarsi nel file /etc/texmf/xmltex/xmltex.cfg
. Eventualmente si può approfondire la cosa leggendo la documentazione originale di XMLTeX.
Disponendo del file di configurazione per la trasformazione del documento XML, prima di passare alla composizione con LaTeX, si deve realizzare un piccolo file di collegamento, denominato, in questo caso, relazione.tex
:
|
Si può passare così alla composizione di questo file relazione.tex
:
$
latex relazione.tex
[invio]
This is TeX, Version 3.14159 (Web2C 7.4.5) (./relazione.tex LaTeX2e <2001/06/01> Babel <v3.7h> and hyphenation patterns for american, french, german, ngerman, d anish, dutch, finnish, greek, italian, latin, spanish, nohyphenation, loaded. (/usr/share/texmf/tex/xmltex/base/xmltex.tex xmltex version: 2002/06/25 v1.9 (Exp) Encoding = utf-8 (/usr/share/texmf/tex/xmltex/config/xmltex.cfg) (./relazione.cfg) (./relazione.xml Default: relazione linguaggio="" (/usr/share/texmf/tex/latex/base/article.cls Document Class: article 2001/04/21 v1.4e Standard LaTeX document class (/usr/share/texmf/tex/latex/base/size10.clo)) (/usr/share/texmf/tex/latex/base/fontenc.sty (/usr/share/texmf/tex/latex/cyrillic/ot2enc.def) (/usr/share/texmf/tex/latex/base/ot1enc.def)) (/usr/share/texmf/tex/generic/babel/babel.sty (/usr/share/texmf/tex/generic/babel/italian.ldf (/usr/share/texmf/tex/generic/babel/babel.def))) (./relazione.aux) (/usr/share/texmf/tex/latex/cyrillic/ot2cmr.fd) [1] (./relazione.aux) ) ) ) Output written on relazione.dvi (1 page, 692 bytes). Transcript written on relazione.log. |
Si ottiene così il file relazione.dvi
, da cui si può generare facilmente un file PostScript:
$
dvips -o relazione.ps relazione.dvi
[invio]
This is dvips(k) 5.92b Copyright 2002 Radical Eye Software (www.radicaleye.com) ' TeX output 2003.08.09:1533' -> relazione.ps <texc.pro><f7b6d320.enc><texps.pro>. <cmr10.pfb><cmbx12.pfb>[1] |
In modo analogo si può ottenere una composizione in formato PDF, utilizzando pdflatex:
$
pdflatex relazione.tex
[invio]
Eventualmente, entrambe le cose si possono fare in modo più semplice, senza bisogno di realizzare il file relazione.tex
, con i comandi seguenti, che servono a ottenere, rispettivamente, la composizione in formato DVI e PDF:
$
latex "&xmltex" relazione.tex
[Invio]
$
pdflatex "&pdfxmltex" relazione.tex
[Invio]
Nel caso dovessero essere presenti riferimenti incrociati, è necessario eseguire la composizione con LaTeX per tre volte di seguito (sempre con lo stesso comando). |
Per concludere viene mostrato il risultato della composizione dell'esempio:
|
Come accennato all'inizio del capitolo, PassiveTeX è un insieme di fogli di stile da usare con XMLTeX per comporre direttamente file XSL-FO, attraverso LaTeX. Viene ripreso un esempio già apparso in un altro capitolo di file XSL-FO:
|
In modo molto semplice, si arriva alla composizione di questo file con il comando seguente, supponendo che si tratti del file esempio-014.fo
:
$
latex "&xmltex" esempio-014.fo
[Invio]
In questo modo si genera il file esempio-014.dvi
, dal quale si può ottenere un file PostScript nel modo consueto:
$
dvips -o esempio-014.ps esempio-014.dvi
[Invio]
Ovviamente si può anche eseguire una composizione in formato PDF direttamente con il comando seguente:
$
pdflatex "&pdfxmltex" esempio-014.fo
[Invio]
Nel caso dovessero essere presenti riferimenti incrociati, sarebbe necessario eseguire la composizione con LaTeX per tre volte di seguito. |
Ecco il risultato della composizione:
|
David Carlisle, xmltex: A non validating (and not 100% conforming) namespace aware XML parser implemented in TeX*
Sebastian Rahtz, PassiveTeX
Appunti di informatica libera 2006.07.01 --- Copyright © 2000-2006 Daniele Giacomini -- <daniele (ad) swlibero·org>
2) PassiveTeX Software libero con licenza speciale
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome xmltex_e_passivetex.htm
[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico]