Introduzione a Mathematica

Gianluca Gorni
Università di Udine, Dipartimento di Matematica e Informatica

12. Scrittura di testi

Ultima modifica: 14 dicembre 2006

Questo file è concepito principalmente per essere letto interattivamente su schermo. Per questo, e anche per risparmiare spazio, gli output di solito sono omessi. L'utente che legge da schermo li deve rigenerare mandando in esecuzione le celle di input una alla volta.
Qualcuno vorrà stampare per leggere su carta: in tal caso apra i gruppi di celle ed esegua tutte le celle prima di stampare. Le celle si possono eseguire tutte in un sol colpo col menu Kernel>Evaluation>Evaluate Notebook

Celle di testo

Un file di Mathematica di solito non contiene soltanto input e output, ma anche del testo di commento e spiegazione. Si può usare l'interfaccia utente di Mathematica, senza il nòcciolo, come un word-processor scientifico per redarre testi destinati alla stampa, anche se per quello scopo ci sono soluzioni molto meno costose (il TEX è gratis). Il punto forte di Mathematica per quanto rigurarda l'editoria sono i documenti elettronici: un notebook fatto bene contiene testi esplicativi e figure che possono essere letti su carta, ma anche e soprattutto programmini eseguibili con cui il lettore può esperimentare seduta stante. Le figure possono a loro volta essere generate da programmini, ed essere modificabili dall'utente.
In questo capitolo vedremo le basi della scrittura di testi con Mathematica.

Una cella di testo si distingue da quelle di input e output in vari modi: ha una quadra al margine destro diversa, in margine sinistro comincia più vicino al bordo della finestra, il carattere normale è times, se si va al menu Format>Style si vede segnato "Text". La cella di testo non è eseguibile: l'interfaccia utente non la spedisce al nòcciolo anche se premiamo il tasto invio.

Per iniziare una cella di testo si posiziona si fa comparire la riga di inserzione delle celle, cliccando fuori dalle altre celle (come sapete si fa per le celle di input), si seleziona il menu Format>Style>Text e si comincia a scrivere. Su quello stesso menu sta anche scritta l'abbreviazione da tastiera, che velocizza la battitura agli esperti.

Sul menu Format ci sono molte opzioni per la scelta del tipo di carattere, della dimensione, del colore, dell'allineamento o centratura, eccetera. Il quadratino a sinistra di questa cella si ottiene con Format>Cell Dingbats>Filled Square.

Il rientro è più complicato: bisogna selezionare la cella, andare su Format>Option Inspector>Cell Options>Display Options>CellMargins>left, e poi risettare (qui ho messo 30).

Soprattutto per i testi destinati alla stampa, si consiglia di evitare pacchianate!

Stili per le formule fuori testo

Mathematica dà a disposizione quattro stili per le formule fuori testo. Potete provarli sulla seguente formula selezionando la cella e poi cambiando successivamente gli stili dal menu Cell>Convert To>...

Integrate[x/(1 + x^2), x]

InputForm (obsoleto)

InputForm: questo era lo stile delle versioni di Mathematica prima della 3.0, e come tale è obsoleto (anche nel nome, che non riflette più la funzione) e soppiantato dallo StandardForm. In InputForm si può scrivere solo in formato ascii:

Simplify[(a^2 - b^2)/(a + b)]

L'unico scopo che riesco a vedere per tenere in vita un tale formato è questo: se si ha una formula con formattazione bidimensionale, come questa:

Simplify[(((a^2) - (b^2))/(a + b))]

la si può tradurre in formato ascii usando il menu Cell>Convert To>InputForm. Il risultato è copiabile e incollabile in un altro programma.

OutputForm (obsoleto)

OutputForm: il formato di ouput di Mathematica prima della versione 3.0. È una imitazione ascii della formattazione tradizionale. La si ottiene da una cella in un altro formato col menu Cell>Convert To>OutputForm. Esempio di una formula in OutputForm:

(a^2 - b^2)/(a + b) 2    2
a  - b
-------
 a + b

Copiando una cella come questa e incollandola viene qualcosa del tipo
 2    2
a  - b
-------
 a + b

Forse qualcuno trova ancora degli usi per questo formato.

StandardForm

StandardForm: è un formato dal nome veritiero. In StandardForm si può scrivere sia in stile ascii che in stile bidimensionale. Entrambe le celle seguenti sono in StandardForm

Simplify[(a^2 - b^2)/(a + b)]

Simplify[(((a^2) - (b^2))/(a + b))]

Il menu Cell>Convert To>StandardForm trasforma lo stile ascii in stile bidimensionale. Provare con la prima delle celle qui sopra, o con la seguente:

Integrate[x/(1 + x^2), x]

TraditionalForm

TraditionalForm: è il formato che imita da vicino quello della notazione matematica tradizionale. Partiamo da una cella in formato ascii:

Integrate[Log[x]/(1 + x^2), x]

e applichiamo il menu Cell>Convert To>TraditionalForm:

∫((log(x))/((x^2) + 
              1)) \[DifferentialD]x

Le celle in forma tradizionale si distinguono dalle altre in diversi modi: la quadra a margine è dentellata, le variabili il cui nome è una lettera singola, come x, sono in corsivo, i nomi delle funzioni cominciano con lettera minuscola, gli argomenti delle funzioni sono fra parentesi tonda, i polinomi sono messi in ordine di potenza decrescente. Confrontate con la stessa cella in ottenuta con Cell>Convert To>StandardForm:

∫Log[x]/(1 + (x^2)) \[DifferentialD]x

La TraditionalForm non aderisce alle convenzioni sintattiche di Mathematica. Si raccomanda di non scrivere niente direttamente in TraditionalForm, ma di battere le formule in StandardForm e poi di tradurle col menu. In questo modo Mathematica dietro le quinte tiene la versione originale sintatticamente corretta e usa quella per i calcoli. La seguente è una cella scritta direttamente nella sintassi della TraditionalForm: ∫((log(x))/((x^2) + 
                1)) dx

∫((log (x))/((x^2) + 
              1)) \[DifferentialD]x

Traduciamola in TraditionalForm col menu

∫((log x)/((x^2) + 
              1)) \[DifferentialD]x

Notate che è sparita la parentesi attorno alla x. Provate ora ad eseguirla: se compare una finestra di dialogo cliccare OK:

∫((log x)/((x^2) + 
              1)) \[DifferentialD]x

Mathematica ha interpretato il numeratore log x come il prodotto della costante"log" con la variabile x. Aggiungendo la parentesi tonda attorno alla x viene un altro risultato:

∫((log( x))/((x^2) + 
              1)) \[DifferentialD]x

che è lo stesso che si ricava dalla forma ascii:

risultato = Integrate[Log[x]/(1 + x^2), x]

ed è giusto:

D[risultato, x]

D[risultato, x] // Simplify

Insomma, è meglio diffidare della TraditionalForm per i calcoli.

Si può avere anche un output in TraditionalForm mettendolo come comando:

Integrate[Log[x]/(1 + x^2), x] // TraditionalForm

Formule nel testo ("inline cells")

Una formula matematica all'interno del testo, per esempio (x^2) - x + 1, ha il suo ambiente, chiamato "inline formula", che si attiva con Edit>Expression Input>Start Inline Cell (notate l'abbreviazione da tastiera: Ctrl[(]  o  Ctrl[9] per aprire e Ctrl[)]  o  Ctrl[0] per chiudere). Certi costrutti tipicamente matematici, come esponenti (a^2) o frazioni (a/b) iniziano una formula nel testo automaticamente. Quando il cursore è in una formula nel testo lo sfondo della formula si colora di rosa. Ricordarsi di chiudere la formula con Edit>Expression Input>End Inline Cell.
Notate le differenze di formattazione fra formule fuori e dentro l'inline cell:

formula scritta senza l'inline cell: x+y+sen x

la stessa formula ma scritta dentro una inline cell: x + y + sen x

una formula metà dentro e metà fuori una inline cell: x+y+(c^2) (riuscite a distinguere le due parti?).

il prodotto di tre numeri a, b, c fatto in 4 modi:
abc, a b c, abc, a b c
Soltanto l'ultimo è quello giusto!

Le formule nel testo hanno una loro convenzione tipografica: una singola lettera (esempio: x) è scritta in corsivo, mentre più lettere di seguito senza spazio sono scritte in carattere romano (esempio cos). Per avere più lettere in corsivo basta separarle con uno spazio: a cos x. Si può selezionare il contenuto di una formula nel testo, copiarla e incollarlo come input, però viene considerata TraditionalForm, e quindi bisogna fare attenzione alla sintassi.

Si può battere una formula nel testo in forma ascii o standard, come Integrate[Log[x]/(1 + x^2), x], e poi tradurla in TraditionalForm con Cell>Convert To>TraditionalForm: ∫((log(x))/((x^2) + 
                1)) dx. Attenzione: pare che sia importante avere chiuso bene la formula prima di convertire.

Si può anche valutare in loco una formula nel testo (anche fuori testo). Basta selezionarla e applicare il menu Kernel>Evaluation>Evaluate in Place. Per esempio la formula Integrate[Log[x]/(1 + x^2), x], quando valutata in loco diventa (1/2) i (log(1 - i x) log(x)+(Subscript[Li, 2])(i x))-(1/2) i (log(i x + 1) log(x)+(Subscript[Li, 2])(-i x)).

Come "nascondere" una cella

A volte si desidera "nascondere" una cella all'utente, senza cancellarla. Per esempio si vuole che l'utente veda una figura senza il codice che l'ha generata. Per questo vengono utili le "celle chiuse". Considerate la figura che segue:

Show[Graphics[Line[{{0, 0}, {1, 1}}]]];

Ebbene, il codice che l'ha generata è ancora presente! Osservate una minuscola quadra a margine subito sopra la quadra della figura. Selezionate la quadra piccola e andate su menu Cell>Cell Properties>Cell Open. Il contenuto della cella torna visibile!
Le celle chiuse lasciano comunque uno spazio verticale che può dare fastidio al momento della stampa...

Salvare un notebook come LATEX

Un notebook può essere salvato in formato LATEX usando il menu File>Save As Special: TeX. Le eventuali figure saranno automaticamente convertite in file eps. Per compilare il file LATEX risultante bisogna mettere a disposizione dell'installazione TEX le font di Mathematica e alcuni file di stile. I dettagli per il MikTeX sono spiegati in questa pagina.

Ambienti di stile per schermo e per stampa

Normalmente Mathematica formatta per lo schermo. Se si ridimensiona la finestra il testo viene riorganizzato. Se si vuole invece vedere come verrebbe il testo se stampato, scegliere il menu Format>Screen Style Environment>Printout.
Io consiglio di scrivere la prima versione del testo con lo stile per schermo. Soltanto verso la fine passare a Printout e fare gli aggiustamenti che servissero.

Fogli di stile

Lo stesso documento può essere visto con diversi "fogli di stile". Provare a giocare col menu Format>Style Sheet>...

Sezioni

Mathematica offre 6 livelli di sezionamento, che si scelgono col menu Format>Style>... o coi loro equivalenti da tastiera. Le quadre a margine abbracciano automaticamente il contenuto dei vari sezionamenti. Eccoi vari livelli insieme per un confronto:

titolo (Alt1)

sottotitolo (Alt2)

sotto-sottotitolo (Alt3)

sezione (Alt4)

sottosezione (Alt5)

sottosottosezione (Alt6)

testo normale (Alt7)

testo piccolo (Alt8)

input (\[AltKey]9,  default)