--- title: Istruzioni per la compilazione della tesi tags: uniurb breaks: false --- # Istruzioni per la compilazione della tesi ## LaTeX: ambiente di scrittura Per prendere confidenza con il linguaggio, è consigliato leggere una delle innumerevoli guide online, come ad esempio quella di [ShareLatex](https://www.sharelatex.com/learn). La guida contiene anche la documentazione delle varie funzionalità che possono essere di interesse: tabelle, immagini, stile del testo, e così via. Il [portale Stackexchange dedicato a LaTeX](https://tex.stackexchange.com/) può essere una buona risorsa per risolvere eventuali dubbi e problemi. ### Installazione Volendo installare LaTeX sul proprio PC, si può: * Installare la [distribuzione MikTeX](https://miktex.org/) su Windows e MacOS, * Installare il pacchetto `texlive-full` su distribuzioni Linux derivate da Debian. La modifica del file sorgente `.tex` può avvenire con qualsiasi editor testuale, la maggior parte dei quali supportano perlomeno la sintassi del linguaggio. [Visual Studio Code](https://code.visualstudio.com/) dispone di alcune estensioni che rendono più semplice manipolare file LaTeX. Lavorando in locale sul proprio PC, è buona norma tracciare le modifiche alla tesi tramite un sistema di _source control_ (come ad esempio Git) e sfruttare una _repository_ remota per gestire il backup dei dati (ad esempio su GitHub). Un'altra opzione (consigliata) può essere quella di sfruttare un editor online: in questo caso uno strumento suggerito è [Overleaf](https://www.overleaf.com) (gratuito per utilizzo di base), che permette di creare un progetto online, caricare i file di stile, e modificare direttamente il testo sfruttando il proprio browser Web. Questa soluzione ha anche il vantaggio di offrire un backup automatico e trasparente del testo, oltre a permettere la condivisione del progetto con il relatore. ### Template Qualsiasi sia la soluzione scelta per la redazione della tesi, la tesi dovrà essere basata sul [template ufficiale del Corso di Laurea](https://informatica.uniurb.it/didattica/piano_studi/prova_finale/). Il template include un file di esempio `.tex` che può essere usato come base di partenza per il proprio lavoro. ## Struttura della tesi Un documento LaTeX è composto da una sequenza di capitoli (identificati dai comandi `\chapter`), a loro volta suddivisi in sezioni (`\section`) ed eventualmente sottosezioni (`\subsection`). Questi comandi vengono usati per dare una struttura organizzata al documento, indicando tra parentesi graffe il nome del capitolo o della sezione. Ad esempio: ``` \chapter{Analisi del progetto} ``` Una tesi di ricerca è comunemente strutturata nei seguenti capitoli: 1. **Introduzione** (un paio di pagine) Descrizione generale del progetto, eventuale introduzione dell'azienda di tirocinio, scopo e obiettivi del progetto, breve anticipazione dei risultati. Includere una sezione in coda al capitolo intitolata "Struttura della tesi" in cui si danno indicazioni della struttura e dei contenuti dei capitoli che seguono. 1. **Descrizione del contesto** (uno o più capitoli) Introduzione ai singoli concetti fondamentali, alle tecnologie utilizzate, contesto del progetto di ricerca o della problematica affrontata. 3. **Progetto** Delineazione degli obiettivi e dei requisiti del progetto software, architettura del sistema implementato, descrizione in dettaglio di eventuali sorgenti di dati utilizzati nel progetto, software esterni, _middleware_, _framework_ di sviluppo, e così via. Risultati attesi. 5. **Implementazione** Descrizione dei dettagli implementativi del progetto, scelte implementative adottate durante lo sviluppo (ed eventuali impatti su prestazioni o altri aspetti del progetto), strutture dati adottate, struttura di eventuali banche dati, scelte algoritmiche, complessità, etc... 7. **Risultati e discussione** Presentazione dei sistema finale, eventuali dettagli su pubblicazione, rilascio, licenza. Presentazione di risultati ottenuti dall'utilizzo del software, eventuale confronto con altri risultati o con altri dati in input. Valutazione di prestazioni, funzionalità, ecc... 9. **Conclusioni** (una o due pagine) Breve riassunto del lavoro svolto, ricapitolando introduzione, progetto e risultati. Eventuali sviluppi futuri e/o migliorie possibili. 11. **Bibliografia** Lista dei riferimenti bibliografici presenti nel testo. 13. **Eventuali ringraziamenti, appendici, etc.** Evitare di riportare il codice sorgente in appendice. Sezioni e sottosezioni possono essere usate liberamente all'interno di un capitolo. In generale è preferibile evitare di frastagliare troppo il testo, soprattutto se le sezioni e sottosezioni risultanti sono composte da pochi paragrafi. ## Consigli di LaTeX ### Paragrafi e spazi vuoti LaTeX ignora i singoli "a capo": esattamente come nel linguaggio HTML, i caratteri "a capo" vengono interpretati come spazi nel testo. Dunque, il seguente codice sorgente: ``` Prima riga. Seconda riga. Terza riga. ``` una volta compilato, diventerà: > Prima riga. Seconda riga. Terza riga. È buona norma sfruttare questo comportamento, andando a capo in periodi lunghi al termine di ogni frase. Questo permette di evitare righe molto lunghe e di avere una visione d'insieme del testo più chiara. Permette anche di spostare rapidamente frasi nel contesto di un periodo o di un paragrafo. (Questo approccio è stato sfruttato anche per la compilazione del codice Markdown di questo stesso documento, che si può consultare tramite l'editor integrato.) Un _doppio_ "a capo" invece identifica la fine di un paragrafo. Il seguente codice: ``` Prima riga. Ex optio vel accusantium. Seconda riga. Labore necessitatibus veritatis cumque. Terza riga. Quarta riga. Quis illo aliquam deserunt. Occaecati odit sit labore aut voluptas sed suscipit. Quinta riga. Magnam distinctio beatae repudiandae itaque ut numquam. Consequatur velit dignissimos rerum officia quo consequuntur. ``` si trasformerà quindi in: > Prima riga. Ex optio vel accusantium. Seconda riga. Labore necessitatibus veritatis cumque. >     Terza riga. Quarta riga. Quis illo aliquam deserunt. Occaecati odit sit labore aut voluptas sed suscipit. >     Quinta riga. Magnam distinctio beatae repudiandae itaque ut numquam. Consequatur velit dignissimos rerum officia quo consequuntur. Notare che l'inizio di un paragrafo successivo al primo viene automaticamente indentato da LaTeX. _Nota bene: la separazione in paragrafi è molto utile per dare struttura al documento e per dare a LaTeX l'opportunità di spaziare correttamente i blocchi di testo e di seguire le regole di buona tipografia. Se possibile, evitare del tutto gli "a capo" forzati (ossia il comando `\\`)._ ### Grassetto e corsivo Il testo che va visualizzato con un carattere grassetto può essere indicato nei seguenti modi: `La parola \textbf{importante} va in grassetto.` `Altrimenti è possibile includere il {\bf testo molto importante} dentro due parentesi graffe e usare un comando che fa da modificatore su tutto il blocco.` La stessa cosa vale per il corsivo, che si ottiene con il comando `\textit` e `\it` (come sopra, il primo comando prevede un argomento, il secondo modifica lo stile di un blocco compreso fra graffe). In genere, il **grassetto** si usa per indicare elementi particolarmente rilevanti all'interno di un discorso (è bene rendere in grassetto solanto una singola parola o una singola espressione) e quindi rendere il testo più facilmente navigabile ad una occhiata veloce. In genere è bene evitare di usare in maniera troppo generosa il grassetto. Il testo in **corsivo** in genere si usa in genere: * Sempre per i termini in lingua straniera (nel caso di una tesi informatica, i termini in lingua straniera sono molto frequenti, per cui a volte è meglio non eccedere), * Alla prima occorrenza nel testo di termini speciali o rilevanti, * È sconsigliato usare il corsivo in una tesi per indicare un cambio di tono ("questo può rendere l'operazione *molto* difficile"). ### Lettere accentate Normalmente LaTeX non mostra correttamente i caratteri al di fuori da quelli dell'alfabeto ASCII. Per poter utilizzare caratteri dell'alfabeto Unicode durante la scrittura, aggiungere i seguenti due comandi all'inizio del documento: ``` \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} ``` ### Spazio unificatore (*non-breaking space*) LaTeX gestisce automaticamente l'impaginazione del documento. Seguendo le indicazioni di questo documento e/o di altre guide di scrittura, in genere si riesce ad ottenere un buon risultato senza troppo impegno. In alcuni casi, tuttavia, è necessario fornire alcune informazioni supplementari a LaTeX perché possa effettuare le giuste scelte di impaginazione. Ad esempio, a volte è necessario usare uno **spazio unificatore** nel codice sorgente per indicare a LaTeX che due parole non vanno separate per nessun motivo. Lo spazio unificatore si indica con il carattere `~`, che nel PDF prodotto verrà visualizzato come un normale spazio di separazione. Alcuni esempi che richiedono solitamente lo spazio unificatore sono: * Nome e cognome (o parti di essi), soprattutto se il nome viene indicato dalla sola iniziale. _Ad esempio:_ `M.~Rossi`, `L.~Verdi`, `Gian~Marco Marroni`, `Paolo Di~Matteo`. * Particelle introduttive, che non devono essere separate dalla frase o dall'elenco successivo. _Ad esempio:_ ...`alcuni framework front-end (es.:~React, Angular o Flutter)`. * Elenchi numerati in linea nel testo. _Ad esempio:_ `Sono possibili le seguenti opzioni: a)~Tizio, b)~Caio e c)~Sempronio`. * Incisi con parentesi in un elenco, dove si vuole evitare che il testo vada a capo prima della parentesi separandola dunque dal testo che la introduce. _Ad esempio:_ ...`è possibile considerare la prima opzione~(inciso numero uno), la seconda~(numero due) oppure la terza~(inciso numero tre)`. * Piccole particelle testuali, parole o incisi che non vanno separati per questioni tipografiche o estetiche. _Ad esempio:_ `et~al.`, `ad~esempio`, `nel~2022`, `180~persone`, `ripetuto 8~volte`, `visibile nel grafico~(destra)`, `Intesa San~Paolo`. * Indicatori di sezione o di capitolo, per i quali è importante non separare il nome 'Capitolo' o 'Sezione' dal numero progressivo seguente. _Ad esempio:_ ...`l'approccio seguito viene descritto nel Capitolo~4`, ...`l'architettura del sistema è presa in esame nella Sezione~2.4`. * Indicatori di citazione, per i quali è importante non separare il numero progressivo della citazione (che compare come `[1]`, `[2]` etc. nel testo) dalla parola precedente. _Ad esempio:_ ...`lo studio di Rossi et~al. dimostra che è vero il contrario~\cite{rossi2022}.` ### Virgolette Nel testo in LaTeX _non_ vanno usate né gli apici normali (o gli apostrofi) né le virgolette per delimitare il testo. Questi caratteri non vengono trasformati da LaTeX e rimangono visibili nel PDF finale come apici o virgolette dritte, non tipografiche. Invece di apostrofi (`'`) e virgolette (`"`) si useranno delle coppie composte da un accento grave o _backtick_ (`` ` ``) e un apice singolo (`'`). La coppia può essere singola (ossia `` `...' ``, con cui si ottengono le virgolette alte singole o virgolette inglesi) oppure doppia (ossia ``` ``...'' ```, per ottenere le virgolette alte doppie o virgolette italiane). Ad esempio: ``` Mario disse: ``Questo è il contenuto del discorso diretto.'' Un booleano può assumere due valori, `vero' e `falso'. ``` Nel PDF il testo sopra verrà correttamente rappresentato con le virgolette italiane o le virgolette alte singole: ``` Mario disse: “Questo è il contenuto del discorso diretto.” Un booleano può assumere due valori, ‘vero’ e ‘falso’. ``` Per una disamina sulle virgolette tipografiche e sulla differenza tra virgolette singole e doppie, si rimanda al [relativo capitolo di “Practical Typography” di Matthew Butterick](https://practicaltypography.com/straight-and-curly-quotes.html). ### Bibliografia LaTeX gestisce automaticamente la bibliografia del testo, se si usa uno dei vari sistemi a disposizione per la gestione della stessa. Il sistema suggerito dai file sorgente di esempio del Corso di Laurea è quello integrato in LaTeX ed è anche il più semplice. In questo caso, la bibliografia viene dichiarata in fondo al file sorgente LaTeX, in questo modo: ``` \begin{thebibliography}{999} \bibitem{MathewsSicuranza} V.~J.~Mathews e G.~L.~Sicuranza, {\em Polynomial Signal Processing}, New York: Wiley, 2000, pp.100-120. \end{thebibliography} ``` In questo modo si ottiene automaticamente un elenco di riferimenti bibliografici, ognuno dei quali è identificato in maniera univoca dal codice usato nel comando `bibitem` (ossia, `MathewsSicuranza` nell'esempio qui sopra). Per fare riferimento al documento nel resto del testo, è sufficiente usare il comando `\cite` con il codice. Ossia: ` Cum molestias voluptatem quo voluptatem nisi dolorum necessitatibus et. Cum maxime et commodi aspernatur. Tempora sed est labore et alias qui quia. Totam in nisi tenetur quis aut molestiae~\cite{MathewsSicuranza}. ` Il testo sopra comparirà nel PDF come: ` Cum molestias voluptatem quo voluptatem nisi dolorum necessitatibus et. Cum maxime et commodi aspernatur. Tempora sed est labore et alias qui quia. Totam in nisi tenetur quis aut molestiae [1]. ` Nel caso in cui si volesse specificare due riferimenti bibliografici nello stesso punto, è possibile passare più parametri al comando `\cite`: ` Totam in nisi tenetur quis aut molestiae~\cite{MathewsSicuranza, MarioRossi}. `