Greml: una semplice codifica per il greco antico

Paolo Caressa <www.caressa.it>

v.1.0, 2015

In questo documento si descrive il programma Greml (da Greek e HTML) e si spiega come usarlo per produrre semplici testi in greco attico da usare direttamente o da copia-incollare su altri file. Il programma è adatto particolarmente a chi è veloce a scrivere con la tastiera, consentendo di codificare un testo greco in caratteri ASCII e quindi di poterlo scrivere su qualsiasi editor di testi; il programma processerà poi il testo per produrre una versione HTML (quindi visualizzabile con qualsiasi browser) contenente il testo greco nella sua forma finale.

Sommario

1 Sui sistemi di scrittura digitale del greco antico
2 Come usare Greml
3 Come codificare un testo in greco con Greml
4 Future estensioni e modifiche
5 Messaggi di errore

1. Sui sistemi di scrittura digitale del greco antico

Da diversi anni i sistemi di memorizzazione digitale consentono di esprimere numerosi altri caratteri, oltre a quelli latini che un tempo figuravano sulle macchine da scrivere e che sostanzialmente sono quelli delle tastiere dei computer diffusi in occidente.

Il sistema di codifica Unicode consente di rappresentare testi in moltissime lingue del pianeta, comprese le lingue morte: infatti oltre alle esigenze di comunicazione di persone che usano lingue con sistemi ortografici non occidentali (si pensi al cinese, la lingua più parlata al mondo), molti hanno necessità di esprimere testi antichi nelle lingue originarie, preservandone per quanto possibile l'ortografia.

Il greco antico è forse il principale esempio, essendo una delle lingue fondamentali della cultura occidentale, e fra le più studiate non soltanto dagli specialisti.

Ovviamente Unicode supporta l'alfabeto greco, nelle sue varianti, e offre anche supporto per la rappresentazione di segni diacritici, etc. Per esempio, usando un comune programma di scrittura al computer (molti avranno a che fare con Microsoft Word®) è possibile selezionare caratteri di qualsiasi tipo e inserirli nel testo che si sta scrivendo.

Ma si tratta ovviamente di una operazione lunga e noiosa da fare col mouse: meglio sarebbe poter inserire speditamente da tastiera questi caratteri. Una soluzione, per il greco, è di impostare la tastiera sul layout per il greco, ma resta comunque il problema di inserire accenti e spiriti: per esempio sulla pagina della Prof. Carla Castelli si forniscono informazioni in proposito. Esistono layout di tastiera che consentono di farlo, un esempio si trova sulla pagina del Prof. Aurelio Brenna.

Un altro approccio al problema di rappresentare e rendere un testo greco è di usare sistemi nei quali la rappresentazione non coincide con la resa; questo vuol dire che mentre un documento Word®, per esempio, visualizza immediatamente il testo nella sua versione definitiva (sistemi WYSWYG), altri sistemi (WYSWYM) consentono di descrivere il testo e il suo contenuto che poi sarà visualizzato in un momento successivo.

Un esempio è l'HTML: quest'ultimo, come chiunque navighi su Internet dovrebbe sapere, è un formato testuale nel quale oltre al testo che si vuole rappresentare consente di inserire delle informazioni su come rappresentarlo. Va detto che andrebbe distinto fra rappresentazione interna dell'informazione e rappresentazione grafica di essa: HTML, a differenza del suo più nobile parente XML, serve a presentare informazioni su una pagina Web, laddove XML serve a memorizzare informazioni.

In ogni caso, è possibile scrivere un testo tanto in Word® quanto in HTML, ma mentre nel primo caso il programma di scrittura e il programma di visualizzazione coincidono, un testo HTML è un semplice file di testo, per esempio quale si può scrivere con un qualsiasi programma di text editing, che poi viene reso da un browser, come Firefox, Internet Explorer, etc.

In generale, per esigenze scientifiche, esiste un sistema “definitivo” di redazione documentale, che consente non solo di produrre documenti professionali ma anche di inserirvi testi in lingue qualsiasi, il mai troppo lodato TeX e la sua altrettanto benemerita variante LaTeX, opera di due giganti della computer science (Donald E. Knuth e Leslie Lamport) con i quali si può produrre qualsiasi tipo di testo con una qualità inarrivabile.

Per quanto riguarda invece la codifica e la memorizzazione di documenti di testo che rappresentino testi greci qualsiasi (compresi papiri, etc.) c'è una codifica che costituisce uno standard de facto, chiamata Beta utilizzata in particolare nelle insostituibili risorse on line indirizzate agli studiosi, come il Thesaurus Linguae Graecae® o il progetto Perseus.

Ma se si hanno esigenze meno impegnative, per esempio inserire brani in una tesi di laurea o svolgere tesine per il liceo classico, si può usare il programma Greml che metto a disposizione su questa mia pagina. La mia codifica non è compatibile con Beta (sebbene non sia difficile tradurla in quest'ultima), ma vi è ispirata: il fatto è che Greml è concepito per essere inglobato dentro l'HTML, laddove Beta definisce un proprio linguaggio di markup, e ha delle particolarità, come l'asterisco per le maiuscole, che lo rendono più difficile da usare per la stenografia.

In generale l'idea di scrivere documenti in HTML e non in programmi di scrittura ha i seguenti vantaggi:

Personalmente, ma come molti credo, ho più facilità a usare la tastiera che il mouse, e quindi è più comodo per me scrivere la descrizione di qualche cosa con la tastiera, piuttosto che farla col mouse o altri dispositivi di input.

2. Come usare Greml

Ci sono due modi di usare il programma: il primo è per tradurre brani in html, visualizzarli col browser e quindi copia-incollarli sul testo dove si vuole che appaiano, per esempio è possibile incollare un testo selezionato da browser su Microsoft Word®. Il secondo è di scrivere il proprio testo in HTML e utilizzare la sintassi di Greml e il programma stesso in modo da produrre la versione definitiva.

In ogni caso bisogna prima scaricare il programma: per i sistemi Windows® si può scaricare direttamente il file eseguibile, versione 32 bit o versione 64 bit; potete cambiare il nome al file (ma senza elidere l'estensione .exe).

Negli altri casi (in pratica su Linux e sistemi Apple®) è possibile scaricare il file sorgente del programma in C (un file unico!) greml.c, che è poi necessario compilare (lo si può fare anche nel caso dei sistemi Microsoft) per esempio con un comando come cc -pedantic greml.c -o greml (dall'interno di una shell di comando). Il programma eseguibile prodotto dalla compilazione, o scaricato da questo sito, va poi collocato in una cartella dove sia raggiungibile, o sempicemente messo nella cartella dove si metteranno i file da elaborare.

Una volta ottenuto o compilato il programma, per elaborare un file contenente il testo in greco, secondo la codifica specificata più sotto, se ne trascina l'icona sull'icona del programma, e a quel punto si dovrebbe aprire una finestra in cui compaiono i messaggi del programma: se l'elaborazione non ha problemi dovrebbe apparire la scritta Press <ENTER> to terminate... al che si premerà il tasto INVIO, l'esecuzione termina e nella cartella dove c'è il file orignale dovrebbe comparire il risultante file con estensione html.

Questo file si apre con un qualsiasi browser e il suo contenuto visualizzato dal browser si può copiare e incollare su altre finestre.

Si può anche lanciare il programma da una riga di comando, e in questo caso bisogna specificare il nome del file da elaborare, possono essercene diversi messi sulla stessa riga e separati da spazi, per esempio:

C:\>greml32.exe Platone "Sesto Empirico" Plotino

Lanciando il programma dalla riga di comando è anche possibile cambiare il carattere di escape che viene usato per delimitare le porzioni di testo all'interno delle quali è contenuta la codifica delle parti in greco e che, per default è il dollaro: $.

Per esempio lanciando il programma con

C:\>greml32.exe -e ! foo.txt

nel file foo.txt si assumerà che le porzioni di testo che contengono la codifica del greco siano delimitate da punti esclamativi invece che da dollari.

Attenzione alle estensioni dei file: spesso il sistema operativo le nasconde e probabilmente se scriverete il file con il blocco note o simili questo accluderà l'estensione .txt ma in ogni caso il programma funziona lo stesso, in quanto l'estensione .html del file di output viene aggiunta a un file il cui nome non abbia estensione, o va a sostituire l'estensione del file di input.

NOTA: è importante che l'editor che usate per comporre il file origine, da processare con Greml per produrre l'HTML finale, non inserisca altri caratteri se non quelli che potete visualizzare: per esempio il blocco note va bene ma Microsoft Word® no.

3. Come codificare un testo in greco con Greml

Il testo che dovete scrivere per farlo elaborare da Greml viene copiato carattere per carattere dal file di input al file di output, fino a che il carattere di escape $ non viene incontrato: infatti il carattere "dollaro" viene interpretato come l'inizio del testo greco (e in questo caso il segno del dollaro non viene copiato sul file di output) o, se seguito immediatamente da un altro dollaro, come un singolo segno del dollaro.

Per uscire dalla modalità greco e tornare alla copiatura verbatim si termina la sezione di testo greco con un altro $: poiché il carattere $ non ha grandi probabilità di essere usato all'interno di un testo in greco antico, e dato che non ha significato speciale in HTML, è stato scelto come carattere di escape, tuttavia è possibile cambiarlo lanciando Greml da riga di comando con l'opzione -e c, dove c è il carattere che si vuole adoperare come delimitatore del testo greco.

Nella regione di testo delimitata fra due dollari, il testo di input non viene copiato così com'è ma traslitterato in accordo con le seguenti regole:

  1. Le lettere dell'alfabeto latino (sia minuscole che maiuscole) sono tradotte nelle corrispondenti lettere greche, secondo la corrispondenza data dalla tabella 1 (una s viene automaticamente convertita in σ ovvero in ς finale a seconda del contesto in cui appare).
  2. Se a una lettera si devono applicare dei segni diacritici questi devono precedere (in qualsiasi ordine) immediatamente la lettera cui si applicano, e vanno codificati secondo quanto specificato nella tabella 2.
  3. Alcuni caratteri speciali danno luogo a delle azioni e non sono riportati nel file di output:

Per esempio ecco come il seguente testo (l'incipit del Vangelo di Giovanni) viene scritto con Greml e reso nel browser (a sinistra il testo da inserire nel file da processare, a destra l'HTML prodotto da Greml e visualizzato dal vostro browser in questo momento):

Codifica GremlRisultato finale
$[1] >En >arc^|h >^hn <o l/ogos, [1] Ἐν ἀρχῇ ἦν ὁ λόγος,
& <o l/ogos ^hn pr\os t\on qe/on καὶ ὁ λόγος ἦν πρὸς τὸν θεόν
& qe\os >^hn <o l/ogos καὶ θεὸς ἦν ὁ λόγος
[2] o^<utos ^>hn >en >arc^|h pr\os t\on qe/on [2] οὗτος ἦν ἐν ἀρχῇ πρὸς τὸν θεόν
p/anta di' a>uto^u >eg/eneto, πάντα δι᾿ αὐτοῦ ἐγένετο,
& cwr\is a>uto^u >eg/eneto o>ud\e </en. <\o g/egonen καὶ χωρὶς αὐτοῦ ἐγένετο οὐδὲ ἕν. ὃ γέγονεν
[4] >en a>ut^|w zw\h >^hn, & <h zw\h >^hn t\o f^ws [4] ἐν αὐτῷ ζωὴ ἦν, καὶ ἡ ζωὴ ἦν τὸ φῶς
t^wn >anqr/wpwn: τῶν ἀνθρώπων·
[5] & t\o f^ws >en t^|h skot/i|a fa/inei, [5] καὶ τὸ φῶς ἐν τῇ σκοτίᾳ φαίνει,
& <h skot/ia a>ut\o o>u kat/elaben.$ καὶ ἡ σκοτία αὐτὸ οὐ κατέλαβεν.

Ecco invece un testo HTML nel quale le parole greche sono intercalate a quelle italiane (un brano della Grammatica greca del Klodic (1870), nel pubblico dominio sul sito di archive.org):

Codifica GremlRisultato finale
<p>Spirito ($pne^uma$) significa aspirazione. I greci ne hanno due: lo spirito <b>lene</b> ($'$) ($yil/on$) e l'<b>aspro ($`$). Lo spirito lene non si fa udire nella pronunzia ; l'aspro corrisponde all' h aspirato dei Francesi. L'uno e l'altro segnasi unicamente sulle vocali in principio di parola, p. e. $>won, <ex$, e nei dittonghi viene collocato sulla seconda vocale, eccetto che nei dittonghi impropri, dei quali si debba scriver majuscola la prima vocale: p. e. $<Aidhs$. $r$ in principio di parola riceve lo spirito aspro: p. e. $>renma$, $r$ doppio si scrive così: $>r<r$.</p> Spirito (πνεῦμα) significa aspirazione. I greci ne hanno due: lo spirito lene (᾿) (ψιλόν) e l'aspro (῾). Lo spirito lene non si fa udire nella pronunzia ; l'aspro corrisponde all' h aspirato dei Francesi. L'uno e l'altro segnasi unicamente sulle vocali in principio di parola, p. e. ὠον, ἑξ, e nei dittonghi viene collocato sulla seconda vocale, eccetto che nei dittonghi impropri, dei quali si debba scriver majuscola la prima vocale: p. e. Ἁιδης. ρ in principio di parola riceve lo spirito aspro: p. e. ῤενμα, ρ doppio si scrive così: ῤῥ.

Il programma farà qualche controllo relativo ai segni diacritici, segnalando un errore, e bloccando l'elaborazione, se trova una combinazione non consentita o incoerente: per esempio due spiriti sulla stessa lettera, o anche segni diacritici non applicati a vocali o alla ρ.

In generale ogni errore segnalerà la posizione nel testo (numero di riga e numero di colonna) in cui si manifesta rendendo semplice la correzione.

La lista degli errori possibili è elencata al §5.

Lettera
greca
Carattere
da inserire
Lettera
greca
Carattere
da inserire
α a ΑA
β b Β B
γ g Γ G
δ d Δ D
ε e ΕE
ζ z Ζ Z
η h Η H
θ q Θ Q
ι i Ι I
κ k Κ K
λ l Λ L
μ m Μ M
ν n Ν N
ξ x Ξ X
ο o Ο O
π p Π P
ρ r Ρ R
σ/ς s Σ S
ς j
τ t Τ T
υ u Υ U
φ f Φ F
χ c Χ C
ψ y ΨY
ω w Ω W
ϝ v Ϝ V
Tabella 1. Lettere greche e come ottenerle con Greml.

DiacriticoPrefisso
῾  (spirito aspro) <
᾿  (spirito dolce) >
´  (accento acuto) /
`  (accento grave) \
῀  (accento circonflesso) ^
̈  (dieresi) =
ͅ  (iota muto) |
Tabella 2. Segni diacritici e come ottenerli con Greml.

Il simbolo... ... si ottiene con
{{
}}
[[
]]
“ e ” entrambi con "
᾿ '
`
· :
καὶ &
--
Tabella 3. Ulteriori traslitterazioni nella modalità greco.

4. Future estensioni e modifiche

Questa prima versione del programma, per quanto sia stata verificata e sia attualmente utilizzata dal suo autore, è chiaramente prona a miglioramenti di vario tipo: per esempio aggiungere anche le lettere arcaiche o quelle in uso nel Medioevo, consentire l'inserimento di numeri decimali automaticamente tradotti nella notazione attica, aggiungere segni filologici, etc.

Se avrò tempo e voglia potrò fornire queste estensioni, o magari qualche visitatore di questa pagina che conosca il C potrà apportarle egli stesso sulla base del mio sorgente; anche suggerimenti su ulteriori migliorìe o funzionalità che renderebbero il programma più usabile sono bene accette, i riferimenti per contattarmi sono alla pagina www.caressa.it.

5. Messaggi di errore

Se per qualche motivo il testo che si fornisce in input Greml non è formattato correttamente, o anche se si verifica un errore di input nell'apertura di file, etc., il programma si bloccherà segnalando il nome del file, il numero di riga e il numero di colonna in corrispondenza dell'errore, seguito da un breve messaggio di errore. Segue l'elenco dei messaggi possibili.

MessaggioPossibile causa
Cannot mix different accents Si stanno applicando più accenti alla stessa lettera.
Cannot mix different breathings Si stanno applicando sia lo spirito dolce che quello aspro alla stessa lettera.
Cannot open file Il file (del quale viene indicato il nome) non può essere aperto.
Invalid diacritic combination La combinazione di segni diacritici non è valida per la lettera cui è applicata, o è comunque incoerente e non supportata.
More than three diacritics together Si stanno applicando più di tre segni diacritici alla stessa lettera.

6. Disclaimer

The "Greml" software is provided "as is" and any expressed or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed.

In no event shall the regents or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage.

©2015 by Paolo Caressa <www.caressa.it>