Avanti Indietro Indice

11. Appendice

11.1 Il vecchio problema con le sequenze di escape nell'output in testo semplice

Prima della versione 0.9.21-0.8 c'era un bug nell'output in formato di testo semplice. Per sgml2txt, era necessaria l'opzione --pass="-P-cbou" per ottenere l'output in puro testo dato che altrimenti, se si usava l'opzione -f, si otteneva un output di testo che metteva l'enfasi sulle parole e sulle lettere usando sequenze di escape e sovrascrittura. L'esempio di un pallino creato con la sovrascrittura è +^Ho che in una stampante stamperebbe "+", poi tornerebbe indietro di uno spazio (^H, backspace) e quindi stamperebbe "o" sopra al "+" esistente. Questo non sembra funzionare sui terminali (non possono sovrascrivere). Notare che anche se si ha la versione più recente, si ottiene sempre questo output non voluto se non si usa l'opzione -f.

In caso si sia interessati ai dettagli, --pass passa l'opzione -P-cbou al programma groff (usato da sgml2txt) e l'opzione -P di groff passa le opzioni -cbou a grotty (un post-elaboratore per groff), forzandolo a generare solamente output in puro testo. Vedere la pagina di manuale di grotty. In breve, -c evita le sequenze di escape, ma permette la sovrascrittura, -bou tuttavia proibisce la sovrascrittura quando è usata l'opzione -c. Il risultato è l'assenza di sovrascritture e di sequenze di escape nell'output. -b proibisce la sovrascrittura per far apparire un carattere in grassetto, -u previene l'uso della sovrascrittura per sottolineare e -o proibisce altri tipi di sovrascrittura quale l'esempio del pallino sopra citato. Un modo alternativo per eliminare la sovrascrittura è di usare l'opzione -f con sgml2txt, ma è sempre necessario passare l'opzione -c a grotty per eliminare le sequenze di escape, a meno che non si abbia la versione più recente.

Che confusione! L'opzione predefinita dovrebbe probabilmente essere il puro testo, così da rendere tutte queste opzioni non necessarie. Finalmente sono riuscito a far correggere tutto ciò, perciò da metà 2007 in poi, si può usare solamente l'opzione -f invece di --pass="-P-cbou". Se si ottengono queste sequenze di escape e sovrascritture nel proprio file di output, ma si usa il comando Linux "cat" per visualizzare il testo, il risultato è molto bello. L'uso di paginatori o di editor sul file output di testo tuttavia ha spesso come risultato danni ai caratteri di escape, così che si vedono nel proprio testo un mucchio di caratteri non desiderati, che avrebbero dovuto far parte delle sequenze di escape. In alcuni casi i paginatori possono mostrare alcune sovrascritture correttamente, ma gli editor (come vim) non lo fanno. Eliminare tutte le sovrascritture permette perciò di usare un qualsiasi editor o paginatore per leggere.


Avanti Indietro Indice