hhartmann@libero.it
e Vieri Giugni
v.giugni@gmail.com
, revisione a cura di Elisabetta Galli
lab@kkk.it
Copyright © 1997-2000 by Uwe Böhme. This document may be distributed under the terms set forth in the Linux Documentation Project License at LDP. Please contact the authors if you are unable to get the license. This is free documentation. It is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose.
Questo documento non fa parte di ldp (anche se è stato usato il loro tipo di licenza). Ancora non ne faccio parte.
Questo documento nasce dal tentativo di imparare di più sulla scrittura di testi su un sistema Linux. L'unico sistema che sembrava adatto alle mie necessità era sgml-tools l'organizzazione SGML-Tools e il linuxdoc dtd.
Nella [SGML-Tools Guida dell'Utente 1.0 ($Revision: 1.1 $)] (vedere la sezione Riferimenti) la struttura generale è descritta in modo facile e piacevole. Anche [Esempi rapidi di SGML, v1.0] (vedere la sezione Riferimenti) è stata utile, ma:
Molte caratteristiche non sono menzionate.
Cercando di imparare di più, ho incontrato la [Definizione del tipo di documento qwertz] (vedere la sezione Riferimenti). È dettagliata come speravo, ma non è pensata per il di linuxdoc (anche se linuxdoc è basato su qwertz).
Ho tentato un nuovo approccio: osservare il file stesso dtd
dtd = definizione del tipo di documento, e tentare di comprenderlo.
Con il passare del tempo ho notato di essermi dimenticato alcune cose o, almeno, di non averle fatte notare abbastanza. Questo cambierà con la prossima revisione.
Ogni commento sarà il benvenuto (in particolare ogni aiuto con l'ortografia o la grammatica inglese) via e-mail, all'indirizzo Uwe Böhme.
Il principio di ogni documento sgml (linuxdoc, docbook, html) è più o meno lo stesso:
Non scrivere come dovrebbe apparire, ma scrivere cos'è.
Questo è un approccio diverso rispetto allo standard "wysiwyg"
Quello che si vede è quello che (forse) si ottiene (se si ha molta fortuna e il proprio computer vince la guerra contro il software bacato)one
Si potrebbe chiamarlo per esempio
wysiwym
, cio\ "What you see is what you mean" (quello che
si vede è quello che significa)
. Non si dice al programma che
questa riga dovrebbe essere scritta in un carattere più grande,
per apparire come un titolo.
Ciò che si fa è dire che questa riga è un titolo.
Non si tenta di far apparire il proprio documento come se fosse
un report, ma lo si etichetta per essere un report.
Così si etichetta il testo con il <tag> adatto.
I grandi vantaggi di questo approccio sono:
Se si è già tentato di riutilizzare un documento scritto in un layout wysiwy specalizzato in html allora si sa già di cosa si sta parlando.
In aggiunta, in tutti i documenti in stile sgml si potranno trovare i simboli speciali. Questo è un concetto di espansione del set di caratteri del documento per evitare inconsistenze nelle decisioni dell'analizzatore, nell'interpretazione o mappatura di alcuni caratteri speciali.
Come potrebbe l'analizzatore sapere se un carattere <
indica l'inizio di un tag o se deve essere stampato direttamente?
Questo problema viene risolto dal carattere nominato lt.
Scrivendo <
si otterrà <
nel proprio
testo.
Per un elenco dei simboli speciali vedere
Simboli speciali.
Potrebbe essere una buona idea scaricare questo documento non solo come documento dvi o ps, ma scaricare anche il sorgente sgml. Questo darà la possibilità di osservare i sorgenti: si potrebbe trovare in questo articolo qualcosa di adatto alle proprie necessità.
In questa sezione si troverà ciò di cui si avrà bisogno per creare un documento minimale conforme al dtd di linuxdoc. Vuole essere un primo contatto. Si può saltare questa sezione, se si conoscono già i fondamenti.
I passi da fare per creare un grazioso documento linuxdoc e mapparlo nella forma desiderata sono:
iniziare.sgml
.sgmlcheck iniziare.sgml
.I messaggi di errore di
sgmlcheck
daranno un suggerimento sul tipo di errore, insieme alla
riga e alla colonna in cui è avvenuto.
digitare | per ottenere |
sgml2html start.sgml | Linguaggio di markup di ipertesti per browser web |
sgml2lyx start.sgml | Formato di testo Lyx o KLyx WYSIWYG |
sgml2info start.sgml | Pagina info per UN*X info |
sgml2latex start.sgml | Output DVI |
sgml2latex --output=tex start.sgml | Output in puro tex |
sgml2latex --output=ps start.sgml | Output postscript |
sgml2rtf start.sgml | Formato rich text |
sgml2txt start.sgml | Puro testo |
Si inizierà con un semplice documento (i numeri e i due punti all'inizio della riga sono solo esplicativi, non vanno digitati):
1: <!doctype linuxdoc system> 2: <notes> 3: <title>Un piccolo esempio di Linuxdoc</title> 4: <p>Ciao <em>mondo</em>.</p> 5: <p><bf>Ci</bf> siamo.</p> 6: </notes>
Ora si darà un'occhiata alle singole righe:
<notes>
, che crea una nota indicante un semplice documento non
strutturato.
<title>
.
<p>
, contenente la parola
mondo
che è testo inline enfatizzato dal tag
<em>
.
<bf>
.
Lo stesso esempio può essere scritto più brevemente eliminando i tag automaticamente posizionati dall'analizzatore, e utilizzando tag abbreviati:
1: <!doctype linuxdoc system> 2: <notes> 3: <title>Un piccolo esempio Linuxdoc 4: <p>Ciao <em/mondo/. 5: 6: <Ci bf/siamo/. 7: </notes>
Ora rivediamo ogni singola riga:
p
nella riga
successiva lo chiude implicitamente.
/
. Il paragrafo non è
chiuso esplicitamente in questa riga.
Ora lavorare con i tag dovrebbe essere un pò più chiaro.
<!element linuxdoc o o (sect | chapt | article | report | book | letter | telefax | slides | notes | manpage ) >
sect
e chapt
(vedere la sezione
Creare le sezioni) non hanno alcun senso presi
singolarmente, nonostante siano inclusi come parti di classi di documento
più, complete: dunque saranno descritti successivamente come parte di altre
classi di documento. È meglio decidere prima quale delle classi di documento
menzionate sopra è adatta al tipo di documento che si vuole scrivere.
Per una dettagliata descrizione delle classi di documento vedere la tabella Classi di documento.
Capitolo | Tag della classe |
Tag per l'articolo | <atricle> |
Tag per il report | <report> |
Tag per il libro | <book> |
Tag per la lettera | <letter> |
Tag per il telefax | <telefax> |
Tag per le slide | <slides> |
Tag per le note | <notes> |
Tag per le pagine di manuale | <manpage>
|
Per me la classe article è la piùimportante, ecco perché è descritta per prima e molto dettagliatamente.
<!element article - - (titlepag, header?, toc?, lof?, lot?, p*, sect*, (appendix, sect+)?, biblio?) +(footnote)> <!attlist article opts cdata "null">
L'attributo options (opts
) accetta un elenco separato da virgole di
differenti fogli di stile (LaTeX .sty
) da includere nel documento.
<!element titlepag o o (title, author, date?, abstract?)>
titlepag
) è implicitamente inserito all'inizio
della propria classe di documento . Non è necessario scriverlo
esplicitamente. Si noti comunque che il tag è obbligatorio. Il suo scopo
è quello di descrivere l'impaginazione e gli elementi dei titoli delle
pagine.
<!element title - o (%inline, subtitle?) +(newline)>
<title>
. Non
è necessario chiuderlo.
Un titolo può contenere un sottotitolo che inizia con il tag
<subtitle>
.
Se si osserva l'intestazione di questo documento si vedrà che è mappato dai tag:
<title>Linuxdoc Reference <subtitle>Un'introduzione al dtd di linuxdoc
<!element author - o (name, thanks?, inst?, (and, name, thanks?, inst?)*)>
<author>
.
Se non lo si annota, il tag name
è inserito implicitamente.
L'autore ha anche degli elementi opzionali che possono essere etichettati
all'interno del tag author
.
Se si desidera fare dei ringraziamenti a qualcuno (potrebbe essere qualcuno
che ha fornito delle informazioni utili), inserirlo all'interno del tag
<thanks>
.
Inoltre, se si sta scrivendo il proprio documento come membro dello staff di una
istituzione, inserirlo all'interno del tag <inst>
.
Il tag <and>
ripete le stesse cose, come se si fosse inserito un secondo
tag author
. Chiaramente serve per i coautori.
Volendo, si può marcare il proprio documento con una data usando il tag
<date>
.
Non è possibile verificare la validità della data inserita, quindi meglio non abusare di questo tag.
Questo tag è destinato ad un riassunto della descrizione del proprio
documento. Non si confonda il tag <abstract>
con l'introduzione, che
\ più probabile vada inserita nella prima sezione del proprio
documento (vedere la sezione
Creare le sezioni).
<!element header - - (lhead, rhead) > <!element lhead - o (%inline)> <!element rhead - o (%inline)>
<header>
specifica cosa dovrebbe essere stampato nella
parte più alta di ogni pagina.
Esso consiste di una intestazione sinistra cioè <lhead>
e una
intestazione destra cioè <rhead>
). Entrambi gli elementi sono
obbligatori se si usa un'intestazione, ma possono essere lasciati vuoti: in questo
modo si puo' facilmente ottenere l'effetto di avere solo un'intestazione sinistra
o solo un'intestazione destra.
Come si vedrà, l'intestazione iniziale può essere inserita dopo il titolo della pagina. In seguito può essere aggiunta una nuova intestazione per ogni nuovo capitolo o sezione. L'intestazione stampata su una pagina è quella che ha effetto alla fine della pagina attuale. In questo modo l'intestazione sarà quella dell'ultima sezione della pagina.
Usando il tag <toc>
, verrà generato un
indice, osservando l'intestazione della sezione e aggiungendo i riferimenti.
In un documento con collegamenti ipertestuali si vedranno i collegamenti, in un documento LaTeX si vedranno i numeri di pagina.Verranno incluse solo le sezioni superiori alla
sect3
.
Usando il tag <lof>
, verrà generato un
elenco di illustrazioni, osservando le didascalie delle illustrazioni e
aggiungendo i riferimenti.
Usando il tag <lot>
, verrà generata una
lista di tabelle, osservando le didascalie delle tabelle e aggiungendo i
riferimenti.
Qui si inseriscono varie sezioni stando a quanto dice la sezione Creare le sezioni. Non c'è un tag body. Il corpo del testo inizia dal primo capitolo, sezione o paragrafo.
Alla fine dell'articolo si può inserire il tag <appendix>
Veramente non e' che la gente (per esempio m.d.s.) vi sbudellerà., che apre un'area di sezioni aggiuntive. Il tag
appendix
implica un tipo di numerazione delle sezioni diverso per i
successivi tag di sezione.
È destinato a raccogliere tutte le <cites>
e
<ncites>
usate all'interno del proprio documento. Il tag
<biblio>
sarà sostituito da una bibliografia a seconda
del tipo di mappatura del documento, a volte tramite collegamenti
ipertestuali, a volte tramite numeri di sezione o qualunque cosa possa essere utile.
Fino ad ora non sono stato in grado di creare un file .bbl
, dunque
non ho potuto verificare.
Una nota a piè di pagina può essere messa in ogni punto del
proprio documento. Per la precisione, si dovrebbe piazzare il tag
<footnote>
nel punto del proprio documento in cui dovrebbe essere
visualizzato il testo etichettato.
Questo tag dovrebbe essere usato per informazioni aggiuntive, che non sono
necessarie per comprendere gli scopi principali del proprio documento ma potrebbero
essere utili, interessanti o divertenti.
D'altra parte l'ultima non è sempre vera, anche se ci si prova.dovunque all'interno dell'articolo.
<!element report - - (titlepag, header?, toc?, lof?, lot?, p*, chapt*, (appendix, chapt+)?, biblio?) +(footnote)>
<report>
il livello
più alto è raggruppato dal tag <chapt>
(vedere
Creare le sezioni). Il resto della struttura è identico alla
classe article
Il tag Article.
<!element book - - (titlepag, header?, toc?, lof?, lot?, p*, chapt*, (appendix, chapt+)?, biblio?) +(footnote) >
<book>
.
<!entity % addr "(address?, email?, phone?, fax?)" > <!element letter - - (from, %addr, to, %addr, cc?, subject?, sref?, rref?, rdate?, opening, p+, closing, encl?, ps?)>
<letter>
se si vuole
scrivere una lettera.
I tag della lettera sono descritti nella tabella Tag in una lettera
tag | obbligatorio | che cos'è |
from | si | mittente |
address | no | indirizzo del mittente |
no | email del mittente | |
phone | no | telefono del mittente |
fax | no | fax del mittente |
to | si | destinatario |
address | no | indirizzo del destinatario |
no | email del destinatario | |
phone | no | telefono del destinatario |
fax | no | fax del destinatario |
cc | no | copia per conoscenza |
subject | no | oggetto della lettera |
sref | no | riferimenti del mittente |
rref | no | riferimenti del destinatario |
rdate | no | data di ricevimento?? |
opening | si | apertura |
paragraphs | si | vedere Paragrafi |
closing | si | chiusura |
encl | no | allegato |
ps | no | post scriptum |
<!element telefax - - (from, %addr, to, address, email?, phone?, fax, cc?, subject?, opening, p+, closing, ps?)>
<telefax>
il tag del destinatario <fax>
diventa obbligatorio.
Il perché dovrebbe essere ovvio.
<!element slides - - (slide*) >
<slides>
è molto semplice: contiene singole slide che iniziano con
un tag <slide>
. Niente altro. Se non esplicitamente scritto, il primo tag
slide inizia implicitamente.
<!element slide - o (title?, p+) >
<slide>
è permesso solo all'interno della classe di
documento slides.
Una slide può contenere:
Un titolo (vedere la sezione Il tag Title) e uno o più paragrafi (vedere la sezione Paragrafi). Questo è tutto.
<!element notes - - (title?, p+) >
<notes>
, sono permessi
solo un titolo (vedere la sezione
Il tag Title) e uno
o più paragrafi (vedere la sezione
Paragrafi).
<!element manpage - - (sect1*) -(sect2 | f | %mathpar | figure | tabular | table | %xref | %thrm )>
man
.
In un documento classificato dal tag <manpage>
il tag di sezione di
livello più alto è il tag sect1
(vedere la sezione
Creare le sezioni), per un facile inserimento di pagine di manuale
all'interno di una classe di documento article o book. L'eccezione alla
normale creazione di sezioni è che viene permesso un solo livello di
sottosezione (sect2
).
<!entity % inline " (#pcdata | f| x| %emph; |sq| %xref | %index | file )* " >
Il parsed character data è semplicemente testo normale all'interno del flusso che può contenere altri inline.
Formule matematiche inline secondo il maths.dtd
. Vedere
Il tag Formula.
Il tag external aggira l'analizzatore. I dati nei tag finiscono direttamente nel file mappato. Vedere il capitolo Il tag External per informazioni dettagliate.
Enfatizzazione del testo. Vedere il capitolo Enfatizzazione.
Citazioni nel flusso di testo. Vedere il capitolo Il tag Short Quote.
XRiferimenti nel testo o riferimenti esterni. Vedere il capitolo Etichette e Riferimenti.
Anche questo non lo so spiegare. Se ne sapete di più, scrivetemi.
Anche questo non lo so spiegare (posso solo supporre riguardi file di immagine eps). Se ne sapete di più, scrivetemi.
<!element chapt - o (%sect, sect*) +(footnote)> <!element sect - o (%sect, sect1*) +(footnote)> <!element sect1 - o (%sect, sect2*)> <!element sect2 - o (%sect, sect3*)> <!element sect3 - o (%sect, sect4*)> <!element sect4 - o (%sect)>
Anche il tag chapt
è un tag che crea
sezioni.
si ottiene tramite elementi concordi che formano l'albero delle sezioni.
Servono a unire i vari paragrafi del nostro documento, formando un grazioso albero.
Il tag di livello più alto e la profondità ammessa varia a seconda
della classe di documento (vedere la sezione
La classe di documento).
La normale gerarchia prevede:
chapt sect sect1 sect2 sect3 sect4
Si prenda un libro e si guardi l'indice per vederlo.
Ciascuno dei tag tra le sezioni ha più o meno la stessa sintassi.
Ognuno di essi ha un'intestazione.
Il tag intestazione
è implicito se non lo si annota.
Inoltre ogni tag che crea sezioni può contenere un tag intestazione
, che
modifica l'intestazione attuale del documento (vedere la sezione
Il tag Header).
In esso si possono posizionare sezioni subordinate e paragrafi (vedere Paragrafi).
Alcuni dei tag che creano sezioni possono apparire soltanto in speciali classi di documento ( Classi di documento).
È cosa saggia posizionare un tag etichetta dopo il testo del tag sezione, anche se non si vuole fare riferimento alla sezione Etichette e riferimenti. Più avanti, quando il proprio documento aumenterà di dimensioni, si potrebbe volerlo.
<!entity % sectpar " %par; | figure | tabular | table | %mathpar; | %thrm; | %litprog; "> <!entity % par " %list; | comment | lq | quote | tscreen " > <!entity % litprog " code | verb " >
Ciascuno dei tag qui descritti forma un paragrafo.
Per ovvie ragioni, un paragrafo normalmente
Qui si spiega il comportamento delle eccezioniinizia e finisce con una riga vuota.figure
etabular
.
In quale altro modo si potrebbe sapere che è un paragrafo?
Ci sono alcuni tag che formano sempre un paragrafo, e un modo per formare implicitamente un paragrafo. Ci sono vari tipi di paragrafi, perchè non tutti i tipi di paragrafo possono apparire in ogni classe di documento, in ogni posto.
I diversi tipi di paragrafi sono spiegati nelle prossime sezioni. Per maggiori
dettagli su %litprog;
si veda
Programmazione istruita.
Un paragrafo normale può essere creato in due modi:
Il tag <p>
inizia un nuovo paragrafo.
Questo tag è obbligatorio se si vuole terminare un'intestazione
di sezione senza chiudere esplicitamente il tag sect
.
In questo caso il tag <p>
chiude automanticamente il tag
<sect>
.
Una riga vuota tra due paragrafi inizia implicitamente un nuovo
paragrafo.
Si faccia attenzione con gli elenchi descrittivi
. In questo caso un tag
<tag>
vuoto non diventerà un paragrafo usando una riga vuota.
<!entity % list " list | itemize | enum | descrip " >
<!element item o o ((%inline; | %sectpar;)*, p*) >
<!element list - - (item+)>
Il tag list verrà mappato come un elenco spoglio senza punti, numeri o altre cose.
Per vederlo, ecco un piccolo esempio:
<list> <item>Un punto <item>Un altro <item>L'ultimo </list>
Si vedrà (a seconda della mappatura) qualcosa come:
<!element itemize - - (item+)>
Il tag itemize verrà mappato come un elenco puntato, che viene solitamente usato per elenchi nei quali l'ordine delle voci non è importante.
Un piccolo esempio:
<itemize> <item>Un punto <item>Un altro <item>L'ultimo </itemize>
Si vedrà (a seconda della mappatura) qualcosa come:
<!element enum - - (item+)>
Il tag enum verrà mappato come una lista numerata.
Un piccolo esempio:
<enum> <item>Un punto <item>Un altro <item>L'ultimo </enum>
Si vedrà (a seconda della mappatura) qualcosa come:
<!element descrip - - (tag?, p+)+ >
Il tag descrip verrà mappato come un elenco descrittivo. Il concetto in questo caso è leggermente diverso rispetto agli altri tipi di elenchi citati prima.
Qui si posiziona un tag (questa volta il nome del tag è
letteralmente tag
), che è descritto più avanti.
Un piccolo esempio:
<descrip> <tag/sgml/structured general markup language. <tag/html - hypertext markup language/ Una implementazione di sgml. Contiene alcuni concetti su come collegare informazioni in modo molto conveniente. È questo che lo ha reso tanto importante, nonchè lo standard per i documenti pubblicati tramite internet. <tag/internet/Una internet connessa globalmente (internet intesa come termine tecnico) </descrip>
Si vedrà (a seconda della mappatura) qualcosa come:
structured general markup language.
Una implementazione di sgml. Contiene alcuni concetti su come collegare informazioni in un modo molto conveniente. È questo che lo ha reso tanto importante, nonchè lo standard per i documenti pubblicati tramite internet.
Una internet connessa globalmente (internet intesa come termine tecnico)
I tag <figure>
e <table>
creano paragrafi molto speciali.
Non sempre sono inseriti nel normale flusso di testo.
Entrambi i tag possono contenere un attributo loc
(location) che indica
come manipolare il flusso di questo paragrafo particolare.
Il valore dell'attributo loc
è una stringa di quattro lettere al
massimo, in cui ogni lettera dichiara una posizione nella quale l'illustrazione o
la tabella può apparire, come descritto nella tabella
Posizioni della tabella.
h | here | Nella stessa posizione del file SGML |
t | top | All'inizio di una pagina |
b | bottom | Alla fine di una pagina |
p | page | In una pagina separata con sole illustrazioni e tabelle |
Il valore predefinito dell'attributo loc è top
.
<!element table - - (tabular, caption?) >
Come si può vedere, una tabella consiste nello stesso tag
<table>
, che include un tag <tabular>
e opzionalmente un tag
<caption>
.
Il tag <tabular>
può anche essere posizionato senza un
tag <table>
, come descritto in dettaglio nella sua sezione (si veda
Il tag Tabular).
Il tag caption si usa anche per posizionare la voce per l' elenco delle tabelle, se ne è stato dichiarato uno (si veda Il tag lista di tabelle).
Un breve esempio mostrerà come lavorano insieme.
<table loc="ht"> <tabular ca="lcr"> Guarda|questa|tabella@ Non|è|carina@ 1.234|colonne|miste </tabular> <caption>Una tabella di esempio </table>
Guarda | questa | tabella |
Non | è | carina |
1.234 | colonne | miste |
Il caption "Una tabella di esempio" sarebbe il nome nella lista delle tabelle.
<!element figure - - ((eps | ph ), img*, caption?)>
<figure>
è equivalente a quello del
tag <table>
.
Invece del tag <tabular>
si può utilizzare o il tag
<eps>
o il tag <ph>
.
<!attlist eps file cdata #required height cdata "5cm" angle cdata "0">
<eps>
serve a includere un file esterno in formato
encapsulated postscript(TM) nel documento.
Gli attributi del tag <eps>
sono:
L'attributo file
richiede il nome di un file encapsulated
postscript(TM) che termini con il suffisso .ps
. Il suffisso obbligatorio
.ps
non deve essere scritto.
L'altezza dello spazio che il file andrà ad occupare. Se non lo si
specifica, il valore predefinito sarà 5 cm. Si faccia attenzione a non
inserire spazi tra il numero e l'unità di misura (i
,
cm
).
L'angolo viene indicato in gradi sessagesimali (0-360) e all'aumento del numero il file viene ruotato in senso orario.
Un esempio:
<figure loc="here"> <eps file="logo" height="4cm" angle="15"> <img src="logo.gif"> <caption>Inclusione di un encapsulated postscript(TM) </figure>
Il tag img verrà ignorato dalla mappatura LaTeX e sarà utile per l'html, poichè molti browser non riconoscono l'eps.
Il tag caption andrà nella lista delle illustrazioni come descritto nella sezione Il tag lista di immagini.
<!attlist ph vspace cdata #required>
vspace
assegna lo spazio lasciato libero.
Caveat: L'argomento numerico dell'attributo vspace
necessita
di un'unità di misura direttamente dietro al numero. Non si lasci
uno spazio (come detto per l'attributo height
in
Il tag Encapsulated Postscript(TM).
<figure loc="ht"> <ph vspace="5cm"> <caption>Uno spazio vuoto. </figure>
Restituisce:
A questo punto potrebbe essere il caso di cercare forbici e colla.
<!element tabular - - (hline?, %tabrow, (rowsep, hline?, %tabrow)*, caption?) >
<tabular>
viene interpretato come un paragrafo a se
stante, se viene scritto da solo.
Insieme al tag <table>
diventa parte del paragrafo del tag
<table>
(vedere
Il tag Table).
All'interno del tag tabular
possono esserci righe e colonne che separano il
testo.
Devono esserci almeno una colonna e una riga.
Altrimenti non risulterebbe molto utile.
Il tag <tabular>
ha un attributo ca
obbligatorio per
l'allineamento di colonna.
L'allineamento di colonna contiene un solo carattere per ogni colonna nel loro
ordine da sinistra a destra.
I caratteri che si possono posizionare per colonna sono descritti nella tabella
Allineamento di colonna
carattere | allineamento |
l | left (sinistra) |
c | centered (centrato) |
r | right (destra) |
In teoria si dovrebbe poter posizionare un | nell'attributo
ca
per disegnare una linea orizzontale di separazione per due colonne.
Il problema: non funziona.
L'analizzatore lo accetta bene, solo che l'output in LaTeX mapperà
|
come {$|$}
, che naturalmente è l'impostazione di quattro colonne
erroneamente allineate per tutte e quattro le colonne.
Proverò a capire come risolverlo.
Le colonne all'interno del tag <tabular>
sono separate da un
separatore di colonna, il tag <colsep>
. Il carattere
|
viene tradotto come <colsep>
, così lo si può usare al
suo posto.
Meno battitura, più divertimento.
Ciò che vale per le colonne vale anche per le righe. Si separano le righe
con un separatore di riga, il tag <rowsep>
.
Il carattere @
viene tradotto con <rowsep>
.
Opzionalmente si può posizionare una linea orizzontale con
il tag <hline>
.
Si faccia attenzione a questo tag:
gli strumenti SGML lo trasformeranno correttamente sia posizionandolo davanti alla riga che si
vuole sotto la linea, che dietro la fine della riga che si vuole al di sopra. Ma
l'unico modo per scriverlo senza provocare un "errore" dell'analizzatore
è scriverlo direttamente e senza spazi o riga vuota dietro il separatore di
riga.
<tabular ca="lcr"> Guarda|questa|tabella@<hline> Non|è|gradevole@ 1.234|colonne|miste@ </tabular>
I risultati sono visibili nella tabella Esempio di tabella per il tag Tabular
Guarda | questa | tabella |
Non | è | gradevole |
1.234 | colonne | miste |
nella mappatura per LaTeX tutto funziona bene se si posiziona un tag tabular senza un tag table; solo nelle altre mappature (per esempio html) verrà disordinato.
<!entity % mathpar " dm | eq " >
Un paragrafo matematico consiste o di una formula visualizzata tramite un
tag <dm>
,
No, scusate, non per il marco tedesco! ;-)o di una equazione tramite il tag
<eq>
.
Lavorano entrambi allo stesso modo.
Entrambi i tag contengono una formula matematica. Vedere Formule matematiche per i tag validi.
Poichè nè Netscape nè Microsoft hanno ritenuto necessario aggiungere la mappatura matematica ai loro browser (come richiesto e definito da w3c), non c'è in html un modo piacevole di mappare, o almeno di mostrare a video, i simboli matematici. Quindi, guardando la versione online, ci si può liberamente meravigliare di questo controsenso. Forse si vorrà dare uno sguardo alla versione postscript.
Questo tag mostra una formula matematica come un paragrafo. La formula viene mappata al centro come linea singola.
Non ci sono garanzie per questo. Si sa, la mappatura è una questione di gusti.
<dm>(a+b)<sup/2/=a<sup/2/+2ab+b<sup/2/</dm>Viene mappato come:
<dm>(a+b)<sup/2/=a<sup/2/+2ab+b<sup/2/</dm>Viene mappato come:
<!entity % thrm " def | prop | lemma | coroll | proof | theorem " > <!element def - - (thtag?, p+) > <!element prop - - (thtag?, p+) > <!element lemma - - (thtag?, p+) > <!element coroll - - (thtag?, p+) > <!element proof - - (p+) > <!element theorem - - (thtag?, p+) >
thtag
.
Per tutte le altre versioni il thtag
fornisce il tag del paragrafo
teorema.
Si provi a utilizzare solo questo, che è adatto al significato di ciò che si sta digitando.
<thrm> <thtag>Alexander's thrm</thtag> Sia <f><fi/G/</f> un insieme di obiettivi secondari ottenibili non banali, e μ un ordinamento su <f><fi/G/</f>. μ \ astrattamente indicativo se e solo se è una linearizzazione di <f><lim><op>μ</op><ll><fi/G/</ll><ul>*</ul></lim></f>. </theorema>
thrm
viene rimpiazzato dal tag adeguato.
Forse qualcuno esperto di matematica rimarrà scioccato dal mio abuso dei tipi, ma sono pigro e ho semplicemente copiato gli esempi:
Definizione ( Sia def
):
*
Proposizione ( Sia prop
):
*
Lemma ( Sia lemma
):
*
Corollario ( Sia coroll
):
*
Sia *
La riprova è questa, senza thtag
:
Sia *
Sono entrambi tag di un paragrafo e con un comportamento molto simile. All'interno di questi tag molti caratteri speciali non necessitano della forma nominata come nella sezione Simboli speciali. Le eccezioni sono:
fine del
tag aperto
A differenza della normale mappatura di un paragrafo, gli spazi vuoti e gli a capo verranno mappati letteralmente (come saranno scritti nel sorgente).
Inoltre (con riferimento al layout manuale), il tipo di carattere per la mappatura sarà non-proporzionale.
Si veda la differenza tra IIWW e
IIWW
.
Ripeto, non sono un oratore nato e nemmeno amo molto la matematica. Così ho solo scritto alcuni controsensi, che possono provocare il mal di testa e far venire i capelli grigi alle persone che vogliono utilizzare questo documento per imparare a formulare teorie matematiche o fisiche.
Ci si senta liberi di inviare esempi migliori.
<!element code - - rcdata>
Si utilizzi il tag code per scrivere un esempio di codice sorgente all'interno del testo.
Un esempio di codice
<code>
#include <stdio.h> int main() { printf("Ciao mondo"); return 1; }
<!element verb - - rcdata>
Si utilizzi il tag verbatim per qualunque cosa che non sia codice sorgente (si utilizzi Il tag code per questo) che necessita la buona vecchia spaziatura, tipo la stampata del terminale, la grafica ASCII ecc.
Un esempio di verbatim:
<verb>
///////// | * * | | | | | <---> | \_____/</verb>
Qui gli inline astratti vengono spezzati finchè restano solo tag reali e utilizzabili. Si richiami alla mente:
<!entity % inline " (#pcdata | f| x| %emph; |sq| %xref | %index | file )* " >
<!entity % emph " em|it|bf|sf|sl|tt|cparam " >
L'enfatizzazione \ la riunione di tag per enfatizzare il testo inline.
Diversi tipi di enfatizzazione sono:
em
-> Il tag Emphasize Odio essere ridondante ma devo ripetere:
il tag emphasize si usa per enfatizzare il testo, che normalmente
verrà mappato in italico.
Quindi scrivendo la frase <em/un testo enfatizzato/
, verrà mappata
come un testo enfatizzato.
it
-> Il tag Italic Il tag italic si usa per la mappatura in corsivo. Scrivendo la frase
<it/un testo in italico /
, verrà mappata come
un testo in italico.
bf
-> Il tag BoldfaceIl tag boldface si usa per la mappatura in grassetto. Scrivendo la frase
<bf/un testo in grassetto/
, verrà mappata come un testo in
grassetto.
sf
-> Il tag SwissfontTom Gordon del GMD afferma che questo è il tag
sans serif
.
La mia interpretazione del tag sf è swissfont, che per me è
più facile da ricordare.
Questo mapperà il testo inline a un font non appartente alla famiglia
helvetica.
Quindi la frase <sf/un testo swissfont/
verrà mappata come
sl
-> Il tag SlantedPenso che salterò la spiegazione. <sl/un testo slanted /
verrà mappato come un testo slanted.
tt
-> Il tag Terminaltype Il testo etichettato con il tag terminaltype verrà inserito inline,
proprio come tutto il resto del testo all'interno di un paragrafo. Non verrà
incluso nell'output del sorgente si si stà lavorando come descritto nella
sezione
Programmazione istruita, perfino se appare come
codice scritto.
<tt/Un testo scritto al terminale/
verrà mappato come
un testo scritto al terminale
.
Normalmente questo tag dovrebbe essere visualizzato allo stesso livello dei tag emphasize, ma la definizione del dtd di linuxdoc lo mette allo stesso livello della enfatizzazione, e così mi sono comportato.
Il tag shortquote
è una citazione inline che non forma un proprio
paragrafo. Il testo <sq/una breve citazione/
verrà mappato come
"una breve citazione".
Il tag formula permette di prendere nota di una formula matematica all'interno
del testo normale, che non appare in una propria riga. Quindi il testo
<f>x=y<sup>2</sup></f>
verrà visualizzato come
x=y2. Vedere
Formule matematiche per i
tag validi all'interno di formula.
Il tag external fa passare i dati così etichettati direttamente dall'analizzatore, senza modificarli. Un esempio è LaTeX.
Possono apparire all'interno dei tag elencati nella tabella Posizioni delle formule matematiche
tag | descrizione | vedere |
f | formula inline | il tag Formula |
dm | formula visualizzata | paragrafo matematico |
eq | equazione | paragrafo matematico |
Guardando questo documento mappato in html, si noterà che l'html non ha un modo gradevole per visualizzare le formule matematiche.
Dopo una piccola trasformazione manuale il contenuto di un tag matematico assomiglierà a:
<!element xx - - (((fr|lim|ar|root) | (pr|in|sum) | (#pcdata|mc|(tu|phr)) | (rf|v|fi) | (unl|ovl|sup|inf))*)>
xx
sta per f
, dm
o eq
. Sono tutti la stessa cosa.
Poichè nè Netscape nè Microsoft hanno ritenuto necessario aggiungere la mappatura matematica ai loro browser (come richiesto e definito da w3c), non c'è in html un modo piacevole di mappare, o almeno di mostrare a video, i simboli matematici. Quindi, guardando la versione online, ci si può liberamente meravigliare di questo controsenso. Forse si vorrà dare uno sguardo alla versione postscript.
<!element fr - - (nu,de) > <!element nu o o ((%fbutxt;)*) > <!element de o o ((%fbutxt;)*) >
Come si può vedere, una frazione consiste di un tag numeratore e di un tag denumeratore, ognuno dei quali può contenere una formula matematica.
Un esempio dirà di più:
<dm><fr><nu/7/<de/13/</fr></dm>
risulterà come:
In caso si voglia posizionare 1/2 invece del numeratore senza ripulirlo, si digiterà:
<dm><fr><nu><fr><nu/1/<de/2/</fr></nu><de/13/</fr></dm>
che risulterà come:
<!element pr - - (ll,ul,opd?) > <!element in - - (ll,ul,opd?) > <!element sum - - (ll,ul,opd?) >
Ciascuno di essi ha un limite inferiore (il tag ll
), un
limite superiore (il tag ul
) e un operando opzionale,
e ciascuno di essi può consistere in una formula.
I tag sono simili nella sintassi, come mostrato nella tabella
Tag con limite superiore, limite inferiore e operatore.
nome | esempio | risultato |
Prodotto | <f>y=<pr><ll>i=1<ul>n<opd>x<inf/i/</pr></f> | y=
|
Integrale | <f>y=<in><ll>a<ul>b<opd>x<sup/2/</in></f> | y=
|
Sommatoria | <f>y=<sum><ll>i=1<ul>n<opd>x<inf/i/</sum></f> | y=
|
<!element lim - - (op,ll,ul,opd?) > <!element op o o (%fcstxt;|rf|%fph;) -(tu) > <!element ll o o ((%fbutxt;)*) > <!element ul o o ((%fbutxt;)*) > <!element opd - o ((%fbutxt;)*) >
Questo tag si può usare per operatori con limite superiore e inferiore
diversi da prodotti, somme o integrali. Per gli altri tipi definiti operatori
è assegnato mediante il tag op
, che può a sua volta contenere una
formula matematica.
n
<!element ar - - (row, (arr, row)*) > <!attlist ar ca cdata #required > <!element arr - o empty > <!element arc - o empty > <!entity arr "<arr>" > <!entity arc "<arc>" >
ar
) è annotato come equivalente a un
tabular (vedere la sezione
Il tag Tabular).
Le differenze di gestione sono:
<hline>
.ca
|
.colsep
ma dal tag arc
(colonna di array).rowsep
ma dal tag arr
(riga di
array).|
e @
vengono mappati con l'adeguato tag
di separazione, in questo modo si può davvero annotare un array come
tabular.
<dm><ar ca="clcr"> a+b+c | uv <arc> x-y | 27 @ a+b | u+v | z | 134 <arr> a | 3u+vw | xyz | 2,978 </ar></dm>
Viene mappato come:
<!element root - - ((%fbutxt;)*) > <!attlist root n cdata "">
root
, che contiene un attributo n
contenente il valore per "n'th" root.
<dm><root n="3"/x+y/</dm>
viene mappato come:
<!element fi - o (#pcdata) >
Con il tag figure si possono posizionare figure matematiche. I caratteri così marcati sono mappati direttamente come figura matematica. Si può sapere quale carattere viene mappato a quale figura guardando Figure matematiche.
<!element rf - o (#pcdata) >
Non sono proprio sicuro su rf
. Cosa dovrebbe essere?
Le formule non sono permesse in questo tag.
<dm><rf/Binom:/ (a+b)<sup/2/=a<sup/2/+2ab+b<sup/2/</dm>
viene mappato come:
I rimanenti tag modificano semplicemente la formula marcata, senza richiedere altri tag. L'effetto è mostrato nella tabella Tag matematici senza tag inclusi
nome | tag | esempio | risultato | |
vector | v | <f><v/a/×<v/b/=<v/0/</f> | -> | |
overline | ovl | <f><ovl/1+1/=<ovl/2/</f> | -> | |
underline | unl | <f><unl/1+1/=<unl/2/</f> | -> | |
superior | sup | <f>e=m×c<sup/2/</f> | -> | e=m×c2 |
inferior | inf | <f>x<inf/i/:=2x<inf/i-1/+3</f> | -> | xi:=2xi-1+3 |
<!entity % xref " label|ref|pageref|cite|url|htmlurl|ncite " >
Un documento più sofisticato necessiterà di riferimenti ad altri punti all'interno del documento.
<!element label - o empty> <!attlist label id cdata #required>
Un esempio potrebbe essere:
<sect1>Benvenuti all'articolo<label id="intro"> <p>...
<!element ref - o empty> <!attlist ref id cdata #required name cdata "<@@refnam>">
Con questo tag è possibile fare riferimento a un punto del proprio documento etichettato come in Il tag Label.
Il modo in cui il riferimento verrà mappato nel proprio documento dipende anche in questo caso dal mappatore. Può apparire come collegamento ipertestuale (HTML) o come numero di sezione (LaTeX).
<!element pageref - o empty> <!attlist pageref id cdata #required>
Un esempio per pageref:
<pageref id="intro">
Nella mappatura HTML pageref non è utilizzabile, perché non ci sono numeri di pagina. Nella mappatura LaTeX il tag verrà mappato al numero di pagina dell'etichetta di riferimento.
<!element url - o empty> <!attlist url url cdata #required name cdata "<@@urlnam>" >
Un esempio per un url:
<url url="http://www.gnu.org" name="Organizzazione GNU">
La mappatura HTML visualizza un collegamento ipertestuale nel proprio documento. Il riferimento è il valore dell'attributo url, il testo presente nel collegamento ipertestuale è il valore dell'attributo name .
La mappatura LaTeX visualizza il nome seguito dall'url.
<!element htmlurl - o empty> <!attlist htmlurl url cdata #required name cdata "<@@urlnam>" >
<htmlurl url="http://www.gnu.org" name="Organizzazione GNU">
La sola differenza tra questo tag e il Tag Url è nella mappatura LaTeX.
La mappatura LaTeX semplicemente elimina l'attributo url ed evidenzia il nome.
In tutti gli altri casi è assolutamente identico al tag url.
<!element cite - o empty> <!attlist cite id cdata #required>
Per quanto ne so questo tag necessita di bibTeX per funzionare bene. Quindi mi spiace, ma non sono stato capace di usarlo. Per questa ragione sicuramente non sono la persona giusta per spiegare qualcosa al riguardo.
<!element ncite - o empty> <!attlist ncite id cdata #required note cdata #required>
Uguale al Tag Cite.
<!entity % index "idx|cdx|nidx|ncdx" > <!element idx - - (#pcdata)> <!element cdx - - (#pcdata)> <!element nidx - - (#pcdata)> <!element ncdx - - (#pcdata)>
tag | la mia traduzione |
idx | indice analitico |
cdx | indice analitico a carattere normale |
nidx | indice analitico invisibile |
ncdx | indice analitico invisibile con carattere a spaziatura fissa |
I tag index servono a creare un indice analitico del proprio documento. Sono utili solo se si vuole la mappatura in LaTeX. Differiscono leggermente come accennato nella tabella Elementi indice analitico.
Ci sono due modi per includere un indice nel proprio documento. Si guardino entrambi per decidere.
<article
opts="makeidx">
.sgml2latex -m ilmiodocumento.sgml
.miodocumento.idx
aggiuntivo.miodocumento.idx
con il comando makeindex
, così:
makeindex miodocumento.idx
.miodocumento.ind
aggiuntivo.sgml2latex -o tex -m miodocumento.sgml
.miodocumento.tex
.miodocumento.tex
con il proprio editor preferito.\end{document}
(dovrebbe essere da qualche parte verso la fine
del file) e inserire il testo \printindex
davanti a questa riga.latex miodocumento.tex
.miodocumento.dvi
finale che, di nuovo, si
può elaborare con il comando dvips
per generare un documento postscript.Attualmente sto lavorando a una patch per gli strumenti sgml per automatizzare l'inclusione e la generazione di un indice. Per saperne lo stato attuale, vedere http://www.bnhof.de/~uwe/lnd/indexpatch/index.html.
<!entity % litprog " code | verb " >
Si pensi a perlpod
.
, ma scrivere un grosso documento e poi
estrarne il codice.
Chi non ama documentare il proprio codice non l'apprezzerà.Il principio è: tutto il testo all'interno dei tag
verb
e code
verrà riunito in un
file sorgente.
Questo è tutto, perché al momento non ricordo il nome dello strumento che fa questo.
Norman Welsh
Matt Welsh e Greg Hankins e Eric S. Raymond
Matt Welsh, <mdw@cs.cornell.edu>
Quest è una lista leggermente modificata presa da [SGML-Tools Guida dell'Utente 1.0 ($Revisione: 1.1 $)]. Se si nota qualche mancanza non si esiti a inviarmi una mail. Molti caratteri nominati mostrati nella tavola Caratteri nominati sono gli stessi del dtd di html.
AElig | Æ | Aacute | Á | Acirc | Â | Ae | Ä | Agrave | À | Atilde | Ã |
Auml | Ä | Ccedil | Ç | Eacute | É | Egrave | È | Euml | Ë | Iacute | Í |
Icirc | Î | Igrave | Ì | Iuml | Ï | Ntilde | Ñ | Oacute | Ó | Ocirc | Ô |
Oe | Ö | Ograve | Ò | Oslash | Ø | Ouml | Ö | Uacute | Ú | Ue | Ü |
Ugrave | Ù | Uuml | Ü | Yacute | Ý | aacute | á | acirc | â | ae | ä |
aelig | æ | agrave | à | amp | & | apos | ' | aring | å | arr | -v |
ast | * | atilde | ã | auml | ä | bsol | \ | bull | • | ccedil | ç |
cir | ○ | circ | ^ | clubs | ♣ | colon | : | comma | , | commat | @ |
copy | © | darr | -v | deg | ° | diams | ♦ | divide | ÷ | dollar | $ |
dquot | " | eacute | é | ecirc | ê | egrave | è | equals | = | etago | </ |
euml | ë | excl | ! | frac12 | 1/2 | frac14 | 1/4 | frac18 | 1/8 | frac34 | 3/4 |
frac38 | 3/8 | frac58 | 5/8 | frac78 | 7/8 | gt | > | half | 1/2 | hearts | ♥ |
hellip | ... | horbar | ― | hyphen | - | iacute | í | icirc | î | iexcl | ¡ |
igrave | ì | iquest | ¿ | iuml | ï | laquo | « | larr | <- | lcub | { |
ldquo | “ | lowbar | _ | lpar | ( | lsqb | [ | lsquo | ‘ | lt | < |
mdash | — | micro | µ | middot | · | mu | µ | ndash | – | not | ¬ |
ntilde | ñ | num | # | oacute | ó | ocirc | ô | oe | ö | ograve | ò |
ohm | Ω | ordf | ª | ordm | º | oslash | ø | otilde | õ | ouml | ö |
para | ¶ | percnt | % | period | . | plus | + | plusmn | ± | pound | £ |
quest | ? | quot | " | raquo | » | rarr | -> | rcub | } | rdquo | ” |
reg | ® | rpar | ) | rsqb | ] | rsquo | ’ | sect | § | semi | ; |
sol | / | spades | ♠ | sup1 | ^1 | sup2 | ^2 | sup3 | ^3 | sz | ß |
szlig | ß | tilde | ~ | times | × | trade | (TM) | uacute | ú | uarr | -^ |
ucirc | û | ue | ü | ugrave | ù | uuml | ü | verbar | | | yacute | ý |
C'è: un piccolo numero di "comunque li si vogliano chiamare". L'apparenza è simile ai caratteri nominati, ma verranno stampati solo alcune volte, o addirittura per niente.
Spazio sottile:
d D
->d D
Spazio evidenziato:
d D
-> d D
Spazio normale: /d D/ -> d D
Spazio non interrotto:
Uno spazio al quale la linea non può essere interrotta. Due parole separate
dal nbsp
verranno trattate dall'analizzatore e mappatore come una lunga unica
parola.
Trattino suggerito:
Se il mappatore sta per interrompere una parola che ha al suo interno il tag
shy
, probabilmente interromperà la parola dove c'è il tag
shy
e metterà al suo posto un trattino. Se non è necessaria alcuna
interruzione di parola, il tag shy
non espande niente.
| ― |
La mappatura speciale per i caratteri utilizzabili per costruire figure matematiche sono mostrate nella tabella Figure matematiche.
È il linuxdoc.dtd
usato per analizzare questo documento. Il registro di
revisione, i commenti di revisione e alcune altre righe ridondanti sono state tolte
per risparmiare carta e spazio dello schermo.
<!-- This is a DTD, but will be read as -*- sgml -*- --> <!-- ================================================= --> <!-- $Id: Linuxdoc-Reference.sgml,v 1.1 2001/04/02 13:52:31 gferg Exp $ This is LINUXDOC96 DTD for SGML-Tools. This was LINUXDOC.DTD, a hacked version of QWERTZ.DTD v1.3 by Matt Welsh, Greg Hankins, Eric Raymond, Marc Baudoin and Tristan Debeaupuis; modified from QWERTZ.DTD by Tom Gordon. <!entity % emph " em|it|bf|sf|sl|tt|cparam " > <!entity % index "idx|cdx|nidx|ncdx" > <!-- url added by HG; htmlurl added by esr --> <!entity % xref " label|ref|pageref|cite|url|htmlurl|ncite " > <!entity % inline " (#pcdata | f| x| %emph; |sq| %xref | %index | file )* " > <!entity % list " list | itemize | enum | descrip " > <!entity % par " %list; | comment | lq | quote | tscreen " > <!entity % mathpar " dm | eq " > <!entity % thrm " def | prop | lemma | coroll | proof | theorem " > <!entity % litprog " code | verb " > <!entity % sectpar " %par; | figure | tabular | table | %mathpar; | %thrm; | %litprog; "> <!element linuxdoc o o (sect | chapt | article | report | book | letter | telefax | slides | notes | manpage ) > <!-- `general' entity replaced with ISO entities - kwm --> <!entity % isoent system "isoent"> %isoent; <!entity urlnam sdata "urlnam" > <!entity refnam sdata "refnam" > <!entity tex sdata "[tex ]" > <!entity latex sdata "[latex ]" > <!entity latexe sdata "[latexe]" > <!entity tm sdata "[trade ]" > <!entity dquot sdata "[quot ]" > <!entity ero sdata "[amp ]" > <!entity etago '</' > <!entity Ae 'Ä' > <!entity ae 'ä' > <!entity Oe 'Ö' > <!entity oe 'ö' > <!entity Ue 'Ü' > <!entity ue 'ü' > <!entity sz 'ß' > <!element p o o (( %inline | %sectpar )+) +(newline) > <!entity ptag '<p>' > <!entity psplit '</p><p>' > <!shortref pmap "&#RS;B" null "&#RS;B&#RE;" psplit "&#RS;&#RE;" psplit -- '"' qtag -- "[" lsqb "~" nbsp "_" lowbar "#" num "%" percnt "^" circ "{" lcub "}" rcub "|" verbar > <!usemap pmap p> <!element em - - (%inline)> <!element bf - - (%inline)> <!element it - - (%inline)> <!element sf - - (%inline)> <!element sl - - (%inline)> <!element tt - - (%inline)> <!element sq - - (%inline)> <!element cparam - - (%inline)> <!entity ftag '<f>' -- formula begin -- > <!entity qendtag '</sq>'> <!shortref sqmap "&#RS;B" null -- '"' qendtag -- "[" lsqb "~" nbsp "_" lowbar "#" num "%" percnt "^" circ "{" lcub "}" rcub "|" verbar > <!usemap sqmap sq > <!element lq - - (p*)> <!element quote - - ((%inline; | %sectpar;)*, p*)+ > <!element tscreen - - ((%inline; | %sectpar;)*, p*)+ > <!element itemize - - (item+)> <!element enum - - (item+)> <!element list - - (item+)> <!shortref desmap "&#RS;B" null "&#RS;B&#RE;" ptag "&#RS;&#RE;" ptag "~" nbsp "_" lowbar "#" num "%" percnt "^" circ "[" lsqb "]" rsqb "{" lcub "}" rcub "|" verbar > <!element descrip - - (tag?, p+)+ > <!usemap desmap descrip> <!element item o o ((%inline; | %sectpar;)*, p*) > <!element tag - o (%inline)> <!usemap desmap tag> <!usemap global (list,itemize,enum)> <!entity space " "> <!entity null ""> <!-- <!shortref bodymap "&#RS;B&#RE;" ptag "&#RS;&#RE;" ptag '"' qtag "[" lsqb "~" nbsp "_" lowbar "#" num "%" percnt "^" circ "{" lcub "}" rcub "|" verbar> --> <!element figure - - ((eps | ph ), img*, caption?)> <!attlist figure loc cdata "tbp" caption cdata "Caption"> <!-- eps attributes added by mb and td --> <!element eps - o empty > <!attlist eps file cdata #required height cdata "5cm" angle cdata "0"> <!element ph - o empty > <!attlist ph vspace cdata #required> <!element img - o empty> <!attlist img src cdata #required> <!element caption - o (%inline)> <!shortref oneline "B&#RE;" space "&#RS;&#RE;" null "&#RS;B&#RE;" null -- '"' qtag -- "[" ftag "~" nbsp "_" lowbar "#" num "%" percnt "^" circ "{" lcub "}" rcub "|" verbar> <!usemap oneline tag> <!usemap oneline caption> <!entity % tabrow "(%inline, (colsep, %inline)*)" > <!element tabular - - (hline?, %tabrow, (rowsep, hline?, %tabrow)*, caption?) > <!attlist tabular ca cdata #required> <!element rowsep - o empty> <!element colsep - o empty> <!element hline - o empty> <!entity rowsep "<rowsep>"> <!entity colsep "<colsep>"> <!shortref tabmap "&#RE;" null "&#RS;&#RE;" null "&#RS;B&#RE;" null "&#RS;B" null "B&#RE;" null "BB" space "@" rowsep "|" colsep "[" ftag -- '"' qtag -- "_" thinsp "~" nbsp "#" num "%" percnt "^" circ "{" lcub "}" rcub > <!usemap tabmap tabular> <!element table - - (tabular, caption?) > <!attlist table loc cdata "tbp"> <!element code - - rcdata> <!element verb - - rcdata> <!shortref ttmap -- also on one-line -- "B&#RE;" space "&#RS;&#RE;" null "&#RS;B&#RE;" null "&#RS;B" null '#' num '%' percnt '~' tilde '_' lowbar '^' circ '{' lcub '}' rcub '|' verbar > <!usemap ttmap tt> <!element mc - - cdata > <!entity % sppos "tu" > <!entity % fcs "%sppos;|phr" > <!entity % fcstxt "#pcdata|mc|%fcs;" > <!entity % fscs "rf|v|fi" > <!entity % limits "pr|in|sum" > <!entity % fbu "fr|lim|ar|root" > <!entity % fph "unl|ovl|sup|inf" > <!entity % fbutxt "(%fbu;) | (%limits;) | (%fcstxt;)|(%fscs;)|(%fph;)" > <!entity % fphtxt "p|#pcdata" > <!element f - - ((%fbutxt;)*) > <!entity fendtag '</f>' -- formula end -- > <!shortref fmap "&#RS;B" null "&#RS;B&#RE;" null "&#RS;&#RE;" null "_" thinsp "~" nbsp "]" rsqb "#" num "%" percnt "^" circ "{" lcub "}" rcub "|" verbar> <!usemap fmap f > <!element dm - - ((%fbutxt;)*)> <!element eq - - ((%fbutxt;)*)> <!shortref dmmap "&#RE;" space "_" thinsp "~" nbsp "]" rsqb "#" num "%" percnt "^" circ "{" lcub "}" rcub "|" verbar> <!usemap dmmap (dm,eq)> <!element fr - - (nu,de) > <!element nu o o ((%fbutxt;)*) > <!element de o o ((%fbutxt;)*) > <!element ll o o ((%fbutxt;)*) > <!element ul o o ((%fbutxt;)*) > <!element opd - o ((%fbutxt;)*) > <!element pr - - (ll,ul,opd?) > <!element in - - (ll,ul,opd?) > <!element sum - - (ll,ul,opd?) > <!element lim - - (op,ll,ul,opd?) > <!element op o o (%fcstxt;|rf|%fph;) -(tu) > <!element root - - ((%fbutxt;)*) > <!attlist root n cdata ""> <!element col o o ((%fbutxt;)*) > <!element row o o (col, (arc, col)*) > <!element ar - - (row, (arr, row)*) > <!attlist ar ca cdata #required > <!element arr - o empty > <!element arc - o empty > <!entity arr "<arr>" > <!entity arc "<arc>" > <!shortref arrmap "&#RE;" space "@" arr "|" arc "_" thinsp "~" nbsp "#" num "%" percnt "^" circ "{" lcub "}" rcub > <!usemap arrmap ar > <!element sup - - ((%fbutxt;)*) -(tu) > <!element inf - - ((%fbutxt;)*) -(tu) > <!element unl - - ((%fbutxt;)*) > <!element ovl - - ((%fbutxt;)*) > <!element rf - o (#pcdata) > <!element phr - o ((%fphtxt;)*) > <!element v - o ((%fcstxt;)*) -(tu|%limits;|%fbu;|%fph;) > <!element fi - o (#pcdata) > <!element tu - o empty > <!usemap global (rf,phr)> <!element def - - (thtag?, p+) > <!element prop - - (thtag?, p+) > <!element lemma - - (thtag?, p+) > <!element coroll - - (thtag?, p+) > <!element proof - - (p+) > <!element theorem - - (thtag?, p+) > <!element thtag - - (%inline)> <!usemap global (def,prop,lemma,coroll,proof,theorem)> <!usemap oneline thtag> <!entity qtag '<sq>' > <!shortref global "&#RS;B" null -- delete leading blanks -- -- '"' qtag -- "[" ftag "~" nbsp "_" lowbar "#" num "%" percnt "^" circ "{" lcub "}" rcub "|" verbar> <!usemap global linuxdoc> <!element label - o empty> <!attlist label id cdata #required> <!-- ref modified to have an optional name field HG --> <!element ref - o empty> <!attlist ref id cdata #required name cdata "&refnam"> <!-- url entity added to have direct url references HG --> <!element url - o empty> <!attlist url url cdata #required name cdata "&urlnam" > <!-- htmlurl entity added to have quieter url references esr --> <!element htmlurl - o empty> <!attlist htmlurl url cdata #required name cdata "&urlnam" > <!element pageref - o empty> <!attlist pageref id cdata #required> <!element comment - - (%inline)> <!element x - - ((#pcdata | mc)*) > <!usemap #empty x > <!-- Hacked by mdw to exclude abstract; abstract now part of titlepag --> <!element article - - (titlepag, header?, toc?, lof?, lot?, p*, sect*, (appendix, sect+)?, biblio?) +(footnote)> <!attlist article opts cdata "null"> <!-- Hacked by mdw to exclude abstract; abstract now part of titlepag --> <!element report - - (titlepag, header?, toc?, lof?, lot?, p*, chapt*, (appendix, chapt+)?, biblio?) +(footnote)> <!attlist report opts cdata "null"> <!element book - - (titlepag, header?, toc?, lof?, lot?, p*, chapt*, (appendix, chapt+)?, biblio?) +(footnote) > <!attlist book opts cdata "null"> <!-- Hacked by mdw, abstract now part of titlepag --> <!element titlepag o o (title, author, date?, abstract?)> <!element title - o (%inline, subtitle?) +(newline)> <!element subtitle - o (%inline)> <!usemap oneline titlepag> <!element author - o (name, thanks?, inst?, (and, name, thanks?, inst?)*)> <!element name o o (%inline) +(newline)> <!element and - o empty> <!element thanks - o (%inline)> <!element inst - o (%inline) +(newline)> <!element date - o (#pcdata) > <!usemap global thanks> <!element newline - o empty > <!entity nl "<newline>"> <!-- Hacked by mdw --> <!element abstract - o (%inline)> <!usemap oneline abstract> <!element toc - o empty> <!element lof - o empty> <!element lot - o empty> <!element header - - (lhead, rhead) > <!element lhead - o (%inline)> <!element rhead - o (%inline)> <!entity % sect "heading, header?, p* " > <!element heading o o (%inline)> <!element chapt - o (%sect, sect*) +(footnote)> <!element sect - o (%sect, sect1*) +(footnote)> <!element sect1 - o (%sect, sect2*)> <!element sect2 - o (%sect, sect3*)> <!element sect3 - o (%sect, sect4*)> <!element sect4 - o (%sect)> <!usemap oneline (chapt,sect,sect1,sect2,sect3,sect4)> <!element appendix - o empty > <!element footnote - - (%inline)> <!usemap global footnote> <!element cite - o empty> <!attlist cite id cdata #required> <!element ncite - o empty> <!attlist ncite id cdata #required note cdata #required> <!element file - - (#pcdata)> <!element idx - - (#pcdata)> <!element cdx - - (#pcdata)> <!element nidx - - (#pcdata)> <!element ncdx - - (#pcdata)> <!element biblio - o empty> <!attlist biblio style cdata "linuxdoc" files cdata ""> <!element slides - - (slide*) > <!attlist slides opts cdata "null"> <!element slide - o (title?, p+) > <!entity % addr "(address?, email?, phone?, fax?)" > <!element letter - - (from, %addr, to, %addr, cc?, subject?, sref?, rref?, rdate?, opening, p+, closing, encl?, ps?)> <!attlist letter opts cdata "null"> <!element from - o (#pcdata) > <!element to - o (#pcdata) > <!usemap oneline (from,to)> <!element address - o (#pcdata) +(newline) > <!element email - o (#pcdata) > <!element phone - o (#pcdata) > <!element fax - o (#pcdata) > <!element subject - o (%inline;) > <!element sref - o (#pcdata) > <!element rref - o (#pcdata) > <!element rdate - o (#pcdata) > <!element opening - o (%inline;) > <!usemap oneline opening> <!element closing - o (%inline;) > <!element cc - o (%inline;) +(newline) > <!element encl - o (%inline;) +(newline) > <!element ps - o (p+) > <!element telefax - - (from, %addr, to, address, email?, phone?, fax, cc?, subject?, opening, p+, closing, ps?)> <!attlist telefax opts cdata "null" length cdata "2"> <!element notes - - (title?, p+) > <!attlist notes opts cdata "null" > <!element manpage - - (sect1*) -(sect2 | f | %mathpar | figure | tabular | table | %xref | %thrm )> <!attlist manpage opts cdata "null" title cdata "" sectnum cdata "1" > <!shortref manpage "&#RS;B" null -- '"' qtag -- "[" ftag "~" nbsp "_" lowbar "#" num "%" percnt "^" circ "{" lcub "}" rcub "|" verbar> <!usemap manpage manpage >