Il difficile arte delle espressioni regolari

La sfida è, in un documento Writer, trovare numeri tra 0 e 50 (compressi) ma non maggiori. Dovremo utilizzare espressioni regolari.

L’espressione

\b\d\b

troverà numeri di un digito tra 0 e 9. L’espressione

\b\d{1,2}\b

troverà numeri di uno o due digiti, dallo 0 fino al 99… sempre che non ci sia un carattere non numerico attaccato. Per esempio non troverà il numero in a29. Se doviamo trovare anche i numeri al interno di espressioni come a29 dovremo utilizzare alcune condizioni con le «look-ahead» e «Look-behind assertions» più la condizione logica «o» che si ottiene con la barra verticale. Qualcosa così

(?<=[^\d]|^)\d{1,2}(?=[^\d]|$)

Quest’espressione cerca uno o due digiti che si trovino tra qualcosa che non sia ne un digito ne un inizio di paragrafo e un altra cosa che non sia un digito ne un finale di paragrafo.

Quasi ci siamo. Per limitare i numeri dovremo applicare qualche «selezione» in più:

(?<=[^\d]|^)([1-5]?\d)(?=[^\d]|$)

Quest’espressione cerca tra 1 e 59, ma non 60 o più grande.

Guardate l’espressione definitiva:

(?<=[^\d]|^)([1-4]?\d)(?=[^\d]|$)|50

Lascio al lettore il compito d’interpretare l’espressione. Un ripasso al capitolo sulle espressioni regolari del mio libro su Writer può aiutare…


Questo interessante esercizio di espressioni regolari è stato presentato prima nella versione italiana di ask.libreoffice. Ci ho messo un bel po’ a risolverlo… e ancora di più a ricordarmi di lasciarlo per scritto nel blog. Ma qui ci siamo!

Annunci

Verso LibO 6.0: le prime versioni di sviluppo

In questi giorni ho presso qualche momento per scaricare la versione «archive» (niente di rpm o deb: il programma già compilato e semplicemente impacchettato in un tar.gz, pronto ad essere scompattato e utilizzato) della versione di sviluppo di LibreOffice 6.0. Ecco alcune delle novità che mi sono trovato.

Caratteri speciali

Lo strumento per inserire caratteri speciali ha dato un salto di qualità veramente importante. Il vecchio tasto per inserire caratteri speciali è diventato un menù che offre non solo l’aprire lo strumento di base per la funzione, ma anche una lista con i caratteri recentemente utilizzati e un altra lista con i «favoriti»

E non solo: all’aprire lo strumento principale ci troviamo con opzioni molto più potenti che oltre a permetterci di configurare i favoriti con un semplice clic destro ci offre informazione di valore sui caratteri e la possibilità di cercarli tramite i suoi nomi unicode

Menù di personalizzazione

Il menù di Strumenti → Personalizza è stato completamente riscritto, riorganizzando i suoi componenti e offrendo anche la possibilità di cercare quello che ci serve, semplificando la configurazione dei menù e tasti a scelta rapida

Barra degli stili

Ancora non ci da la possibilità di gestire gli stili di carattere, ma comunque in questa versione aggiunge dei miglioramenti molto utili. Per esempio, i tasti degli stili di carattere «sanno» (e «lo commentano» illuminandosi) qual è lo stile di carattere applicato al testo sul quale si trova il cursore, perciò il tasto dello stile di carattere «predefinito» viene illuminato soltanto quando non ci sono stili di carattere applicati al testo

Navigare tra oggetti

Nella barra degli strumenti di «cerca» (Ctrl-F) troviamo un menù che ci permette di scegliere tra diversi oggetti, quali pagine, titoli, tabelle, disegni… quello che serva, per poi «saltare» da uno all’altro con i due tasti a destra

Qualche problema

LibreOffice usa un sistema chiamato VCL per «disegnare» la sua interfaccia grafica. Questo sistema ha dei «plug-in» per collegarsi con gtk2, gtk3 e KDE4. Quest’ultimo plug-in sembra avere un problema nella versione di sviluppo che ho provato: non è possibile inserire caratteri con accenti utilizzando i «dead-keys». Non un problema per l’italiano, ma certamente una grande difficoltà per chi utilizza una tastiera spagnola. Sicuramente questo verrà risolto in tempo per la versione finale, ma mentre si atende risulta più semplice lanciare LibreOffice con la sua interfaccia gtk3 anche in un sistema Plasma: dal terminale virtuale aperto nella cartella dove si trova lo script per l’inizio del programma, si può lanciare Writer con

SAL_USE_VCLPLUGIN=gtk3 ./swriter

Con l’interfaccia  in gtk3 tutto sembra funzionare perfettamente.

Conclusioni

La versione 6.0 di LibreOffice sta prendendo buona forma, con delle caratteristiche veramente interessanti. L’interfaccia gtk3 funziona perfettamente e, scegliendo il tema giusto, si combina con un sistema Plasma persino meglio che l’interfaccia KDE4. Veramente 6.0 ha tutto in regola per diventare uno degli aggiornamenti più interessanti nella storia del progetto.

Per più informazione: LibreOffice 6.0: Release Notes (in inglese e in fase di composizione).

Nuovo in LibO 5.4: inserire filigrane

Cioè, più che il fatto di aggiungere la filigrana quello che risulta nuovo è «l’elegante hack» con il quale viene implementato.

Mi spiego: sempre è stato possibile aggiungere un oggetto Fontwork, ancorarlo alla intestazione pagina e inviarlo «al fondo», quello che è nuovo in 5.4 è che tutta questa lunga procedura manuale è stata elegantemente impacchettata nel menu Inserisci → Watermark (manca ancora finire la traduzione):

L’oggetto si presenterà in tutti gli stili di pagina in uso senza più lavoro da parte dello scrittore. Per modificare una filigrana così creata sarà sufficiente tornare al menù indicato. Addirittura se si cancella il contenuto della casella «text» la filigrana sarà eliminata.

È vero, non è ancora uno strumento dedicato alle filigrane, è un «hack», ma così ingegnoso che non te ne rendi nemmeno conto!

Eliminare paragrafi vuoti in Writer

A volte ci complichiamo la vita senza renderci conto. Per anni ho utilizzato delle espressioni regolari (parlo di loro nel mio libro) per eliminare paragrafi vuoti (tra altre cose, che sempre mi sorprendo di quello che la gente è capace di fare contro i suoi documenti) senza pensare tropo in quello che facevo.

Errore! Esiste una forma molto più semplice di farlo!

Strumenti → Correzione automatica → Opzioni di correzione automatica → scheda Opzioni e si attiva l’opzione Elimina paragrafi vuoti:

Dopo cliccare su OK si va a Strumenti → Correzione automatica → Applica e tutto pronto!

Quest’opzione di correzione automatica elimina tanto i paragrafi completamente vuoti come quelli che contengono soltanto spazi.

EPS a PDF a SVG

Sempre che si può scegliere è meglio utilizzare nei nostri documenti immagini vettoriali perché si presentano nel modo giusto ad ogni scala. I formati vettoriali per immagini più famosi sono, in ordine decrescente di anzianità: EPS, PDF (singola pagina) e SVG

Writer ha un supporto ottimo per il formatto SVG, un supporto problematico per PDF (migliora in ogni versione, ma risulta ancora limitato) e un quasi inesistente supporto per EPS. Cosa fare se non si ha a disposizione un file SVG?

Conversioni di formatti!

Esistono diversi strumenti di conversione di immagini vettoriali (ad esempio UniConvertor, parte del progetto sK1), però nella maggior parte dei casi questi strumenti ci offrono troppe possibilità. Perciò oggi parleremo del più semplice dei metodi da utilizzare in sistemi Linux.

Prima di tutto si devono istallare due utilità: epstopdf e pdf2svg.

Dalla terminale virtuale si usa:

epstopdf originale.eps --outfile=Il-PDF.pdf

per convertire un file EPS in uno PDF di una pagina. Dopo per convertire da PDF a SVG:

pdf2svg Il-PDF.pdf SVG-definitivo.svg

Ho provato con vecchi file EPS della mia tesi di dottorato (scritta in LaTeX) e la conversione risulta perfetta.

Entrambi istruzioni offrono più opzioni ma non entrerò in dettagli.

Due novità che arriveranno con LibreOffice 5.4

Ho «giocato» un po’ con LibO 5.4 beta 1 (scaricato da qui e «istallato in parallelo» come commentato qui) perciò in questo breve articolo vi mostrerò in un unica schermata due delle novità più interessanti:

Una di loro è già «completa» mentre per l’altra mancano ancora alcuni dettagli. Vediamo:

È possibile configurare una «distanza al contenuto» anche se non vengono scelti dei bordi: Bug 41542 FORMATTING: Allow “Spacing to contents” for edges without a line [RESOLVED FIXED]. Questo funziona per pagine, paragrafi, intestazioni di pagina, cornici, quello che serva, e funziona perfettamente.

Finalmente si ha una barra degli strumenti per gli stili! Bug 106781 (Style-Formatting-Writer-Toolbar) – Addition of a style-focused formatting toolbar. Questa nuova caratteristica non è ancora completa, però: gli stili di carattere e di elenco non possono applicarsi da li perché manca ancora lavoro in altre aree del codice sorgente (le segnalazioni 88512 y 107000).

Se la barra degli strumenti di stili viene completata in tempo risulterà certamente un miglioramento importante per Writer. Ma se non arriva per 5.4 sicuramente ci sarà per 6.0: quello che importa è che sta arrivando!

Estensioni per Writer: Creative Commons Clipart Gallery

In questo breve articolo vi presento una estensione che semplifica enormemente il lavoro di creare documenti con licenza Creative Commons:

Creative Commons Clipart Gallery – 2.0

Questa estensione raccoglie in una galleria tutte le immagini, aggiornate ad aprile 2017, relazionate con le licenze CC e ci permette di inserirle velocemente dove sia necessario.

Le immagini, importate dai file svg originali, si presentano nitide e sono semplici da gestire. Qualche documento Writer da condividere?

Più sul supporto OpenType in LibreOffice 5.3+

Un paio di messi fa ho commentato che LibO 5.3ci ha regalato il supporto OpenType completo. Questo certamente vuol dire che la prossima edizione di certo libro (quando arrivi) verrà con il capitolo sulla tipografia completamente riscritto… E beh, mentre aspettiamo ho pensato che sarebbe una buona idea scrivere un articolo più dettagliato sull’argomento.

Per utilizzare le specialità OpenType in LibO 5.3+ si deve aggiungere una «etichetta» al nome del font. Per esempio, per attivare simultaneamente i set stilistici 1 e 11 in Vollkorn, quando viene selezionato il font per il testo doviamo scrivere

Vollkorn:ss01&ss11

I due punti iniziano la «sezione delle etichette» nel nome del font e il segno & separa le etichette utilizzate.

Però c’è di più. Si può anche disabilitare qualche opzione del font. Per esempio, il font Sukhumala ha delle strane legature contestuali che sostituiscono aa con ā, ii con ī e uu con ū. Per disabilitare le legature contestuali in Sukhumala è sufficiente chiamare l’etichetta corrispondente a quella caratteristica, «clig», con un meno davanti:

Sukhumala:-clig

Tutto lì. Certamente non è un sistema user friendly, specialmente considerando che la casella per il nome del font può risultare un tanto piccolo per presentare il nome completo del font con tutte le etichette… ma funziona! E questo è molto meglio di quello che (non) c’era prima: un passo alla volta, che così si arriva!

Come sempre, per una lista delle etichette OpenType disponibili la pagina di Dario Taraborelli risulta un magnifico punto di riferimento.

Solo una cosa da considerare: non tutti i font presentano queste specialità! Dunque, se dopo aver aggiunto un’etichetta niente è cambiato molto probabilmente il problema sia del font e non di LibO 😉

Testo verticale in Writer

A volte risulta necessario presentare testo verticale, per esempio nella intestazione di una tabella. Purtroppo Writer non ci aiuta molto in questo lavoro e tutte le soluzioni presentano dei problemi. Vediamo quali sono i metodi disponibili e le loro difficoltà.

Testo verticale da su in giù

Questa situazione è la più semplice da risolvere.

Con delle cornici

Inserendo una cornice (Inserisci → Cornice → Cornice), nella scheda Opzioni risulta possibile definire diverse proprietà della cornice. Lì si deve scegliere, sotto Proprietà → Direzione del testo «Da destra a sinistra (verticale)» (vi lascio giocare con le altre opzioni… non è che servano a un gran ché 😉 ).

Questa opzione da controllo completo del testo, perché rispetta tutto ciò che viene definito nello stile di paragrafo, compresa l’interlinea… ma, come potete comprovare, solo serve per testo da su in giù, mai nella direzione opposta.

Con delle tabelle

Si procede in modo simile a quello commentato per le cornici, con la differenza che prima doviamo selezionare le celle e poi con un clic destro → Proprietà tabella → scheda Flusso di testo per Orientazione del testo si sceglie Da destra a sinitra (verticale). Questo metodo ha le medesime limitazioni delle cornici.

Testo verticale da giù in su

I metodi precedenti purtroppo non funzionano. Per avvicinarci a questa impostazione nell’intestazione di una tabella, doviamo modificare lo stile di paragrafo utilizzato nelle celle corrispondenti.

Prima di tutto, nella scheda Allineamento sotto Testo a testo si deve scegliere In basso. Questo risulta importante perché altrimenti il testo risulterà centrato nella cella.

Nella scheda Posizione, sotto Rotazione/scala si sceglie 90 gradi.

Tutto pronto.

Limitazioni

Dato che questo «effetto» di rotazione si applica sui caratteri, per avere più righe nella cella dovremo inserire un interruzione linea (Maiuscolo-Invio). Inoltre, modificare l’interlineato non avrà effetto sulla separazione tra le righe di testo.

Alternativa: casella di testo

Attivando la barra degli strumenti di disegno ci sarà l’opzione di inserire una casella di testo, ancorandola per esempio in una cella di una tabella. Se a continuazione utilizziamo la barra laterale per ruotare questo oggetto potremo darli un angolo arbitrario.

Limitazioni

Le caselle di testo non permettono l’utilizzo di stili di paragrafo: tutta la formattazione del testo dovrà realizzarsi tramite formattazione diretta.

Conclusioni

In realtà non è che si può dire molto di più di «è quello che c’è»… ma almeno funziona.

Schermata d’obbligo:

vertical

Writer: Tabelle vs. Tabulatori

Immaginiamo di dover scrivere un testo che sia una «definizione», cioè, un breve testo (forse anche una parola) «da definire» separato da un altro a destra che sia «la spiegazione». Ci sono due metodi per costruire questo in un documento Writer, entrambi presentati nella seguente schermata:

tab-tabla

Notate la differenza? Vero che no? E invece il modo in cui le due «definizioni» sono costruite è diverso.

Entrambi i metodi hanno pregi e difetti. Andiamo a vedere i dettagli.

Tabelle

È il metodo più evidente. Viene creata una tabella a due colonne senza bordi. La tabella viene configurata (clic destro → Proprietà tabella → scheda Bordi) per far si che la Distanza dal contenuto sia zero e si fissano le larghezze delle colonne (scheda Colonne) ai valori necessari.

Pro:

  • Risulta semplice da creare
  • È possibile utilizzare degli stili di paragrafo diversi per ogni colonna
  • Se il testo «da definire» è più lungo della colonna questo verrà distribuito in più righe automaticamente
  • Per più «definizioni» una dopo l’altra, semplicemente si aggiungono più righe alla tabella

Contro:

  • Con più «definizioni» (più righe) risulta difficile modificarne l’ordine
  • Non è così semplice muovere una tabella
  • Dato che il creare stili di tabelle continua ad essere difficile questo metodo non è proprio pratico se si deve utilizzare più volte nel documento

Tabulatori

Sia nella definizione di uno stile di paragrafo oppure come formattazione diretta di un paragrafo qualsiasi, nella scheda Tabulazioni si definisce un tabulatore a, per esempio, 3 cm. Nella scheda Rientri e spaziature si definisce un rientro Prima del testo di, continuando con l’esempio, 3 cm e un rientro di Prima riga di −3 cm (negativo). Quando viene scritto il paragrafo semplicemente si inserisce una tabulazione tra il testo «da definire» e la sua «definizione».

Pro:

  • Risulta più semplice di configurare che una tabella
  • Utilizzando stili si può ripetere la formattazione senza fatica
  • È molto semplice muovere il testo con i tasti rapidi Ctrl-Alt-Freccia in su / in giù, come con qualsiasi paragrafo in Writer

Contro:

  • Il testo «da definire» e la sua «definizione» formano parte di un unico paragrafo e perciò dovremo utilizzare stili di carattere oppure formattazione diretta (ouch!) per differenziarli
  • Il testo «da definire» non può trovarsi in più righe e se troppo lungo potrebbe «spingere» il tabulatore a destra dando problemi di formattazione

Conclusione

In questo articolo si confrontano i vantaggi e i problemi di utilizzare sia tabelle che tabulatori per creare una formattazione determinata. Nessuno dei due metodi è perfetto, ma entrambi funzionano.

Ognuno scelga il proprio veleno 😉