Files
LearnLaTeX/book/01_Latex.tex
T
Domipoke 2dd1bcf68f
Build XeLaTeX to PDF / build (push) Failing after 21s
build
2026-07-29 21:14:40 +02:00

106 lines
9.5 KiB
TeX

\chapter{LaTeX}
\section{Le basi}
La base di un progetto in {\LaTeX} è un file con estensione\footnote{Ogni file possiede un'estensione che si divide dal nome del file utilizzando un punto (\texttt{.}). L'estensione generalmente è una sigla di massimo 4 caratteri. Esempi famosi sono: .exe, .mp3, .mp4, .png, .pdf.} \verb|.tex|. La generale struttura di un file \verb|.tex| è composto da:
\begin{itemize}
\item \verb|\commands[optionArgs]{Args}|
\item \verb|\begin{ambiente}...\end{ambiente}|: immaginatelo come una parentesi che si apre e si chiude e che ha un contenuto.
\item Testo normale
\item \verb|%| Commento: ciò che segue \verb|%| nella stessa riga viene ignorato
\end{itemize}
Lo scheletro di un file \verb|.tex| è il seguente:
\begin{minted}{latex}
\documentclass{article} % Definizione del tipo di documento
% Lista di librerie
...
% Inizio del documento
\begin{document}
% Testo del nostro documento
\end{document}
\end{minted}
La riga \verb|\documentclass| è necessaria per identificare il file e dovrebbe essere la prima chiamata. La lista delle librerie è buona norma elencarla all'inizio, subito dopo \verb|\documentclass| per assicurarci che il compilatore abbia già caricato tutte le librerie correttamente prima di iniziare a compilare il testo effettivamente.
Tutto ciò che appartiene al nostro documento va inserito all'interno dell'ambiente \verb|document|.
\section{\textbackslash documentclass\{\}}
La prima riga di un file \verb|.tex|, se rappresenta un root file, ovvero il file che dovrà essere compilato in pdf, deve delineare la classe del documento. Ognuna delle classi del documento delinea delle generali regole di formattazione che successivamente elencherò che possono subire leggere modifiche attraverso degli argomenti opzionali. La generica forma è \mintinline{latex}{\documentclass{classe}} ma è possibile modificare alcuni parametri utilizzando la forma \mintinline{latex}{\documentclass[key1=value1, key2=value2, key3=value3]{classe}}.
Tra le classi standard vi sono le seguenti:
\paragraph{article} Generalmente utilizzata per la scrittura di piccoli articoli. Non possiede una divisione in capitoli.
\paragraph{report} Generalmente utilizzato per la scrittura di documenti di media dimensione. Possiede una divisione in capitoli.
\paragraph{book} Ideale per la stesura di lunghi testi. Supporta una struttura articolata in capitoli, sezioni e sottosezioni. Generalmente il miglior formato per sistemare gli appunti in un unico file.
\paragraph{letter} Generalmente utilizzato per scrivere nel formato di lettera (circa A5). Formato utile quando bisogna scrivere corti testi o testi di cui c'è la necessità di fruire su un dispositivo mobile o su un ereader.
Altre classi sono:
\paragraph{scrbook} Come book ma con opzioni più avanzate, è quello che sto utilizzando per questo libro.
\paragraph{beamer} Il formato per la realizzazione di slide.
Le classi standard possiedono tra i loro argomenti opzionali i seguenti:
\paragraph{fontsize} Dimensione generica del font utilizzato. Es. \texttt{fontsize=10pt}
\paragraph{pagesize} Dimensione della pagina. Es. \texttt{pagesize=a4paper} o \texttt{pagesize=letterpaper}. Si può avere una letter impaginata in foglio a4 o un libro inpaginato in un foglio lettera
\paragraph{pagelayout} Layout delle pagine. Es. \texttt{pagelayout=onecolumn} o \texttt{pagelayout=twocolumn} o nel caso di article \texttt{pagelayout=oneside} o \texttt{pagelayout=twoside}
\section{Importare librerie}
Una libreria è un insieme di comandi di {\LaTeX} che vengono importati mediante l'uso di un determinato comando e che ha lo scopo di cambiare o introdurre nuove regole e istruzioni nel nostro progetto. Quando vogliamo importare una libreria necessitiamo di scrivere sotto \mintinline{latex}{\documentclass} l'istruzione \mintinline{latex}{\usepackage{libreria}}. \capitalgrave{E} possibile anche in questo caso passare degli argomenti opzionali mediante l'uso di \mintinline{latex}{\usepackage[key1=value1, key2=value2, key3=value3]{libreria}}.
\begin{nota}
Quando scriverò "dalla libreria \texttt{nome}", implico la necessità di avere nella parte iniziale del documento, dopo \mintinline{latex}{\documentclass} ma prima delle successive istruzioni una riga \mintinline{latex}{\usepackage{nome}}
\end{nota}
\capitalgrave{E} possibile creare proprie librerie da importare comodamente in diversi progetti creando un file \texttt{nome.sty} e chiamandolo nel file \texttt{.text} usando il comando \mintinline{latex}{\usepackage{nome}}. Sarà tra le ultime cose che vi spiegherò, ve lo dico in quanto ne faccio uso in questa guida.
\section{Metadati}
L'aggiunta di metadati\footnote{Un metadato è un dato aggiuntivo di un file. Un esempio di metadato è la posizione gps o le informazioni sulla telecamera nelle foto.} avviene dopo l'importazione delle librerie e prima dell'inizio del documento. \capitalgrave{E} possibile creare una pagina nel documento utilizzando il comando \mintinline{latex}{\maketitle} generata in automatico dalle informazioni definite come metadati.
\begin{minted}{latex}
\usepackage{book}
% Librerie
...
% Metadati
\title{Titolo}
\author{Nome}
\date{Data}
% Documento
\begin{document}
\maketitle
\end{document}
\end{minted}
Al posto di \texttt{Titolo}, \texttt{Nome}, \texttt{Data} è possibile inserire qualsiasi stringa\footnote{Per stringa si intende un insieme di caratteri e spazi che formano del testo} e i comandi che hanno come risultato una stringa. Un esempio particolare è l'uso del comando \mintinline{latex}{\today} per la data.
\section{document}
Il documento è il vero contenuto del nostro pdf. Qui ogni cosa che scriveremo sarà effettivamente visibile nel nostro pdf e formattato seguendo i comandi e gli ambienti che useremo.
\subsection{Comandi}
Un comando è sempre introdotto dal carattere \slash. Qualora volessimo inserire proprio il carattere \slash nel nostro testo possiamo usare il comando \mintinline{latex}{\slash}
Un comando può avere una delle seguenti strutture:
\paragraph{Senza argomenti} \mintinline{latex}{\comando}
\paragraph{Argomenti obbligatori} \mintinline{latex}{\comando{}} sono espressi all'interno di una coppia di parentesi graffe. Se il comando necessita di un numero $n$ di argomenti allora necessitiamo di inserire $n$ coppie di parentesi graffe concatenate. Esempio $n=3$ \mintinline{latex}{\comando{arg1}{arg2}{arg3}}
\paragraph{Argomenti facoltativi} \mintinline{latex}{\comando[]{}} sono espressi all'interno di una coppia di parentesi quadre. Se il comando necessita di un numero $m$ di argomenti allora necessitiamo di inserire $m$ coppie di parentesi quadre concatenate. Esempio $m=3, n=1$ \mintinline{latex}{\comando[arg1][arg2][arg3]{arg4}} o esempio $m=3, n=3$ \mintinline{latex}{\comando[arg1][arg2][arg3]{arg4}{arg5}{arg6}}.
\begin{nota}
Un comando termina all'inserimento di uno spazio al di fuori di una coppia di parentesi. \mintinline{latex}{\comando{arg1} {arg2}} è errato in quanto lo spazio spezza la definizione del comando. Scrivere nella forma precedente è come scrivere \mintinline{latex}{\comando{arg1} arg2} dove arg2 è testo normale visualizzato e non passato come argomento del comando.
A causa di questa regola capita spesso di avere errori di formattazione dovuti a comandi che necessitano di un doppio spazio, uno per essere interrotti e uno per separarli di uno spazio dalla lettera successiva. Un esempio di errore è il seguente: \mintinline{latex}{\LaTeX è un linguaggio di marcatura} (con un solo spazio dopo il comando) fornisce questo risultato {\LaTeX è un linguaggio di marcatura}.
Un escamotage che si può utilzzare è quello di scrivere il comando all'interno di una coppia di parentesi graffe \mintinline{latex}{{\LaTeX}} ma è un'operazione che può rallentare molto la scrittura.
Non tutti i comandi possiedono questa problematica, i comandi delle librerie più nuove possiedono una serie di regole che valutano quando lo spazio posto dopo deve essere effettivamente visualizzato come uno spazio.
\end{nota}
\subsection{Ambienti}
Un ambiente è un blocco che modifica la formattazione del testo per creare blocchi visuali. Si utilizzano anche per la creazione di tabelle, blocchi formattati, blocchi di codice trascritto o l'inserimento di immagini. Un ambiente si inizializza con begin e si termina con end passando come primo argomento obbligatorio per entrambi il nome dell'ambiente. Alcuni ambienti nel blocco di begin possono richiedere argomenti opzionali passati all'interno di parentesi quadre e più di un argomento obbligatorio passato dopo il nome dell'ambiente in parentesi graffe.
\begin{minted}{latex}
\begin{ambiente}
...
\end{ambiente}
\begin{ambiente}[ArgomentoOpzionale]
...
\end{ambiente}
\begin{ambiente}{ArgomentoObbligatorio}
...
\end{ambiente}
\begin{ambiente}[ArgomentoOpzionale]{ArgomentoObbligatorio}
...
\end{ambiente}
\end{minted}
\begin{nota}
A differenza dei comandi è necessario prima sempre esplicare il tipo di ambiente, seguono gli argomenti opzionali, seguono gli argomenti obbligatori.
\end{nota}
In generale un ambiente può contenere un altro ambiente in un rapporto gerarchico infinito\footnote{Può esistere un ambiente dentro un ambiente dentro un ambiente dentro un ambiente dentro un ambiente\dots}
\subsection{Parentesi}
Le parentesi graffe (\{\}) si utilizzano per creare un blocco o un insieme. Ciò che avviene in un blocco è isolato dal resto del testo, se invochiamo dei comandi che apportano modifiche questi esisteranno solo nel blocco. Un blocco può contenere un sottoblocco. Raggruppare un comando aiuta a renderizzarlo correttamente in caso di errori di visualizzazione.