\PassOptionsToPackage{pdftex}{graphics}
\PassOptionsToPackage{pdftex}{color}
\PassOptionsToPackage{pdftex}{xcolor}
\documentclass{beamer}
\usetheme{Metropolis}
\renewcommand{\footnotesize}{\scriptsize}
\title{Setup LaTeX}
\author{Domipoke}
\date{\today}

\begin{document}

\frame{\titlepage}

\begin{frame}
\frametitle{Outline}
\tableofcontents
\end{frame}

\section{Introduction}

\begin{frame}{LaTeX 1/2}
  LaTeX è un linguaggio di \textbf{marcatura} (non di programmazione), ovvero un linguaggio che delinea delle regole per la formattazione di testo.\\
  Generalmente trova la sua applicazione nella scrittura di libri e paper di ricerca. \\
  LaTeX divenne negli anni successivi un po' "complesso" dato l'evolversi delle interfacce grafiche e soluzioni come word furono all'inizio solo wrap\footnote{Per wrap si fa riferimento a un programma che nasconde la complessità di un qualcosa sotto istruzioni più semplici. Nell'esempio di word è nascosto da un'interfaccia grafica. Il cliccare un pulsante all'atto pratico scrive il testo nel formato "codice LaTeX" corrispondente a quell'azione. Ad oggi word è un linguaggio assestante chiamato docx} di LaTeX o simili.  
\end{frame}

\begin{frame}{LaTeX 2/2}
  LaTeX è abbastanza intuitivo una volta capite le basi del linguaggio ed è anche ricchissimo di funzionalità. \\ 
  LaTeX puro permette un insieme molto limitato di azioni e queste forse non giustificano nemmeno la sua "complessità" nell'uso; pertanto useremo anche molte librerie distribuite da CTAN. 
\end{frame}

\begin{frame}{Requisiti 1/2}
  Prima di iniziare ci serve fare delle scelte:\\
  \begin{table}[htbp]
    \centering
    \begin{tabular}{|X|X|X|X}
      & Overleaf & Overleaf-toolkit & VS Code \\
      {LaTeX$\rightarrow$Pdf} & Media & Media & Veloce* \\
      Peso & 0 & 0** & 200MB - 2GB \\ 
      Limite & Imposto dal sito & Nessuno** & Nessuno*
    \end{tabular}
    \caption{* Dipende dal vostro pc, generalmente quanto ho scritto}
    \caption{** Dipende dal carico del mio server, la potenza viene divisa su tutti coloro che lo usano}
  \end{table}
\end{frame}

\begin{frame}{Overleaf 1/2}
  Più nello specifico Overleaf è un tool online che divide lo spazio in due metà, a sinistra il codice, a destra il pdf risultante.\\
  Overleaf ha il limite nel tempo di compilazione, se il nostro file usa varie librerie, ha delle immagini o ha tanto testo come può accadere con degli appunti per un esame allora non compilerà.\\
  \capitalgrave{E} possibile maneggiare tanti più piccoli file (es. uno per capitolo) per garantire che ognuno di questi sia elaborato senza problemi dal sito ma potrebbe risultare noioso. \\
  Inoltre i tuoi file sono online e accessibili solo tramite internet essendo un sito web.
\end{frame}
\begin{frame}{Overleaf toolkit 2/2}
  Overleaf toolkit è la versione "Selfhosted" di Overleaf. Permette di far girare il sito in una pseudo versione locale dando al proprietario del server l'opzione di regolare alcuni limiti e volendo rimuoverli.\\
  I lati negativi di avere un sito online sono gli stessi, inoltre si aggiunge il fatto che non possa distribuirvi overleaf se non tramite wireguard.\\
  \capitalgrave{E} necessario wireguard in quanto Overleaf spinge a comprare il piano premium e priva di ogni misura di sicurezza il piano base (anche quello selfhosted).
\end{frame}

\begin{frame}{Visual Studio Code}
  Visual Studio Code è un ambiente di sviluppo che supporta il download di varie estensioni per la gestione di codice.\\
  Mi rendo conto possa essere un po' troppo per quello che dobbiamo fare ma è anche il migliore dal punto di vista delle integrazioni. \\
  Visual Studio Code di per se è solo un ambiente di lavoro. Pesa relativamente poco, qualche centinaio di megabyte. \\
  Necessità però di avere una LaTeX installato localmente.
\end{frame}
\begin{frame}{LaTeX installato localmente}
  LaTeX è scaricabile principalmente da due distribuzioni:
  \begin{itemize}
    \item Windows
    \begin{itemize}
      \item MikTex
      \item TexLive
    \end{itemize}
    \item Mac
    \begin{itemize}
      \item MacTex [Mai usata, spero sia intuitiva da scaricare]
    \end{itemize}
  \end{itemize}
\end{frame}
\begin{frame}{TexLive vs MikTex 1/2}
  TexLive è la distribuzione da me usata, non perchè sia meglio (anzi). Scarica tutte le librerie di LaTeX in locale o al più passando un filtro quelle che vuoi installare. Non è tanto il peso di tutte le librerie ad essere il lato negativo alla fine si parla di 1.6GB ma la velocità di download ad essere incredibilmente lenta perchè distribuita da migliaia di server differenti e vecchissimi. A me ha impiegato circa 6 ore. \\
  MikTex non l'ho mai usato ma si presenta come più nuovo e più veloce e leggero ma necessità del download di un'altra libreria di circa 200 MB chiamata pearl (è un linguaggio di programmazione). Rimane sempre più leggera ed è strutturata per scaricare le sole librerie che usate al momento della compilazione (quando trasformate i .tex in .pdf).
\end{frame}
\begin{frame}{TexLive vs MikTex 2/2}
  Un'altra soluzione sarebbe quella di scaricare la copia da me condivisa di quella che ho installato io, il che dovrebbe essere più veloce ma potrebbe portare a diversi errori. MikTex è sconsigliato da parte degli autori dell'estensioni ma non è mai troppo un problema
\end{frame}
\begin{frame}{Dunque cosa farei io?}
  Io userei overleaf per le prime settimane mentre si fa un po' di pratica, poi se ci piace installerei la completa e lenta versione di TexLive se vogliamo evitare problemi. Trovo infinitamente più comodo lavorare come sto scrivendo queste slide in locale rispetto che sul limitato overleaf.
\end{frame}
\begin{frame}{Alternative a LaTeX}
LaTeX ha dato vita a tanti piccoli linguaggi come per esempio KaTeX usato dai blocchi matematici di Notion. Una più semplice e leggera alternativa possono essere le note di Obsidian che ultimamente uso sul mio telefono al posto delle note di default, che per quanto mi piacciano sono leggermente più lente di obsidian. 
\end{frame}
\begin{frame}{Slide bonus 1/4}
Trovo utile insegnarvi un altro strumento di cui vi ho già parlato molte volte e qualcuno del gruppo lo ha anche già usato ma non se lo ricorderà. \capitalgrave{E} un programma che permette la sincronizzazione di file di testo, generalmente di codice ma non esclusivamente di quello, in repository (ovvero raccolte) online pubbliche o private. \\
\capitalgrave{E} uno strumento essenziale nello sviluppo ma ho relativamente da poco scoperto che è utilizzato in un modo più generale in qualsiasi ambiente di lavoro di gruppo per le sue comodità.
\end{frame}
\begin{frame}{Git 2/4}
  Stiamo parlando di Git che è il nome del tool. Siti come Github, GitLab e Gitea permetto la gestione e hostano questo servizio. Github è il più usato e diffuso. Gitea è la versione selfhosted che utilizzo sul mio server. Github è utile inoltre perchè permette a qualsiasi utente di pubblicare un sito web costruito da una repository in modo automatico purchè questo rispetti l'obbligo di non infrangere leggi e di essere non a fine commerciale. Github è il sito preferito da programmatori e artisti per un proprio portfolio. 
\end{frame}
\begin{frame}{Git 3/4}
  Immaginate un repository come una cartella di un cloud sul quale possiamo inviare e aggiornare i dati tramite un push o ricevere i dati aggiornati tramite un pull. \\
  Inoltre è possibile tornare indietro alle versioni precedenti (qualsiasi mai esistita) oppure eseguire azioni dopo l'invio o prima della ricezione dei dati (Actions). \\
  Le Actions sono generalmente usate per creare siti web da file di testo per chi vuole un sito semplice partendo da un semplice template ma esiste la possibilità di configurarla in modo che chi invia un .tex carichi effettivamente sia il .tex che il pdf automaticamente generato e che possa dunque dopo alcuni secondi scaricare il risultato.  
\end{frame}
\begin{frame}{Git 4/4}
  \capitalgrave{E} realisticamente usabile solo nel momento in cui non necessitiamo di controllare ogni secondo cosa stiamo scrivendo ma solo generare il file finale ma forse per progetti grandi è la scelta migliore, inoltre permette di salvarli in un ambiente online e all'occorrenza condiviso o pubblico.
\end{frame}
\end{document}