Compare commits
95 Commits
1c5b8c9d8a
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 4431e3af6e | |||
| b133f55f64 | |||
| 2d593cc8be | |||
| d7bdb7f972 | |||
| c029c11031 | |||
| a6047ee81a | |||
| 30b07a401f | |||
| 88671f5828 | |||
| e1a2bd6775 | |||
| 3297dedd68 | |||
| 2dd1bcf68f | |||
| 6b991b3adf | |||
| 536dd3e101 | |||
| e472fe92ef | |||
| 15a92544c6 | |||
| 380e6bbc32 | |||
| 870647cd62 | |||
| 8b024732b3 | |||
| 7da1b766f4 | |||
| 5c96b816f2 | |||
| 844978a8f3 | |||
| 53bbf81930 | |||
| 8897a39079 | |||
| 982647cce1 | |||
| 46e60c8a3e | |||
| 04c95f7af4 | |||
| 5deb063eb9 | |||
| a744239657 | |||
| 0e9701bbe7 | |||
| b77e1741d0 | |||
| d1e4fd05b9 | |||
| 03eadb303b | |||
| fc255c5e84 | |||
| 3d49033102 | |||
| 62d570739d | |||
| a24e5b8caa | |||
| 83ba6327b5 | |||
| 9e1bfa9c63 | |||
| cbd6faa837 | |||
| 2aff9d3e4c | |||
| 427f88a46c | |||
| eb8ed6b235 | |||
| 4bbd6d20cd | |||
| 831a581611 | |||
| d075dbb438 | |||
| 5914265dc5 | |||
| ebfb2ea8a3 | |||
| f02f12060a | |||
| 2fef536641 | |||
| 1a846aee7e | |||
| d61a9c0fca | |||
| 3688fb8f1c | |||
| 12e5e6e9e0 | |||
| 634a60df39 | |||
| cd15ad3b53 | |||
| 31a857fa3e | |||
| 4f73fb0d4f | |||
| 6fe325ecdc | |||
| 523bbceceb | |||
| 30c6f2c1d2 | |||
| 72d2c93eca | |||
| 98c793c69e | |||
| 7403df0746 | |||
| 269df25501 | |||
| 3e02e2647d | |||
| fd81a25ee1 | |||
| a68d6abc2b | |||
| 218005f263 | |||
| 645f51ac4b | |||
| 90e67aa129 | |||
| 84a6fddc0f | |||
| edf513b21b | |||
| 7a0afb620c | |||
| 71104867be | |||
| c998262abc | |||
| dad8039cb9 | |||
| 6da4911753 | |||
| 9f776d23a1 | |||
| 92d34f4876 | |||
| 14e644de34 | |||
| 92a674cdcc | |||
| 6bbef7b763 | |||
| 16078f6fc7 | |||
| dda302cb24 | |||
| 9704060041 | |||
| d36c1031d1 | |||
| 7612cd7f02 | |||
| 9fc35d6828 | |||
| 18f9b9ffa9 | |||
| 0f0faa79e1 | |||
| b036ca91dd | |||
| e89e577bb9 | |||
| c233e7dc61 | |||
| 9dc1aba064 | |||
| e49ee742cc |
@@ -45,7 +45,7 @@ jobs:
|
||||
run: |
|
||||
git config user.name "gitea-actions"
|
||||
git config user.email "actions@gitea.local"
|
||||
git remote set-url origin "https://Domipoke:${{ secrets.PUSH_TOKEN }}@gitea.egregge.eg/Domipoke/SharedLaTeX.git"
|
||||
git remote set-url origin "https://Domipoke:${{ secrets.PUSH_TOKEN }}@gitea.egregge.eg/Domipoke/LearnLaTeX.git"
|
||||
|
||||
BRANCH="${GITHUB_REF#refs/heads/}"
|
||||
echo "Pushing to branch: $BRANCH"
|
||||
|
||||
@@ -4,6 +4,7 @@ on:
|
||||
push:
|
||||
paths:
|
||||
- "**/*.tex"
|
||||
- "**/*.sty"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
@@ -18,7 +19,7 @@ jobs:
|
||||
- name: Find all root .tex files
|
||||
id: roots
|
||||
run: |
|
||||
ROOTS=$(grep -rl '\\documentclass' --include='*.tex' . | sed 's|^\./||' | tr '\n' ' ')
|
||||
ROOTS=$(cat rootfiles.txt | sed 's|^\./||' | tr -d '\r' | tr '\n' ' ')
|
||||
echo "roots=$ROOTS" >> "$GITHUB_OUTPUT"
|
||||
echo "Root files to build: $ROOTS"
|
||||
|
||||
@@ -32,9 +33,10 @@ jobs:
|
||||
with:
|
||||
entrypoint: sh
|
||||
args: >-
|
||||
-c "mkdir -p pdf aux .texcache/texmf-var .texcache/xdg && for f in ${{ steps.roots.outputs.roots }}; do
|
||||
echo Building $f;
|
||||
latexmk -xelatex -interaction=nonstopmode -halt-on-error -outdir=pdf -auxdir=aux \"$f\" || exit 1;
|
||||
-c "mkdir -p pdf aux .texcache/texmf-var .texcache/xdg &&
|
||||
for f in ${{ steps.roots.outputs.roots }}; do
|
||||
echo Building $f;
|
||||
latexmk -xelatex -shell-escape -interaction=nonstopmode -halt-on-error -outdir=pdf -auxdir=aux \"$f\" || exit 1;
|
||||
done && find pdf -type f ! -name '*.pdf' -delete"
|
||||
|
||||
- name: Upload built PDFs
|
||||
@@ -49,7 +51,7 @@ jobs:
|
||||
run: |
|
||||
git config user.name "gitea-actions"
|
||||
git config user.email "actions@gitea.local"
|
||||
git remote set-url origin "https://Domipoke:${{ secrets.PUSH_TOKEN }}@gitea.egregge.eg/Domipoke/SharedLaTeX.git"
|
||||
git remote set-url origin "https://Domipoke:${{ secrets.PUSH_TOKEN }}@gitea.egregge.eg/Domipoke/LearnLaTeX.git"
|
||||
|
||||
BRANCH="${GITHUB_REF#refs/heads/}"
|
||||
echo "Pushing to branch: $BRANCH"
|
||||
|
||||
+5
-3
@@ -1,6 +1,8 @@
|
||||
\documentclass{scrbook}
|
||||
%
|
||||
\usepackage{myformat}
|
||||
\title{LearnLaTeX}
|
||||
\author{Domipoke}
|
||||
% 6
|
||||
\begin{document}
|
||||
\input{./book/copertina.tex}
|
||||
\input{./book/00_premessa.tex}
|
||||
\include{./book.tex}
|
||||
\end{document}
|
||||
@@ -0,0 +1,8 @@
|
||||
\input{./book/copertina.tex}
|
||||
\input{./book/00_prefazione.tex}
|
||||
\input{./book/01_Latex.tex}
|
||||
\input{./book/02_basidiformattazione.tex}
|
||||
\input{./book/03_liste.tex}
|
||||
\input{./book/04_tabelle.tex}
|
||||
\input{./book/05_immagini.tex}
|
||||
\input{./book/06_math.tex}
|
||||
@@ -0,0 +1,31 @@
|
||||
\chapter{Prefazione}
|
||||
\section{Semplicità e accuratezza}
|
||||
Questa è una guida che scrivo per un pubblico di non programmatori in quanto penso che molto spesso si tende a voler usare tecnicismi per creare una bolla di conoscenze non "alla portata di tutti". Mi rendo conto spiegando spesso a "persone che non sanno programmare"\footnote{modo semplice e un po' uno scusante per indicare quelle persone che non sono "avezze" nell'uso del computer nonostante siano "nativi digitali"} che ci sono tantissimi termini loro sconosciuti che dò per scontato. In questa guida tratterò questi termini con piccole note a piè di pagina che spiegano nel modo più semplice e chiaro\footnote{Per chiarezza intendo lo speigare qualcosa a qualcuno nel migliore dei modi che ho di associare quel concetto a qualcosa che questa persona conosce anche se la mia spiegazione dovesse risultare non tecnicamente accurata.} a cosa faccio riferimento. Per essere più chiari e diretti, il commento sulle spiegazioni "Mi dicono che in realtà non funziona proprio così" o "Questa spiegazione è un po' riduttiva rispetto a quello che accade realmente" sono precisazioni talvolta inutili altre un po' sconsiderate. Sono ben felice di darvi qualsiasi tipo di spiegazione su ognuna delle cose che conosco e sulle quali metto mano quotidianamente ma spiegazioni del genere richiedono tempo e parole. Fidatevi di questi due punti, quando leggerete in questa prefazione non è altro che la sintesi estremamente accorciata di una registrazione audio di 40 minuti che ho fatto per ipotizzare ciò che avrei dovuto scrivere, 30 di questi ho parlato di git e Github, programmi che conosco e utilizzo da sempre\footnote{la data di creazione del mio account Github risale al 2018-08-11T14:13:22Z}.
|
||||
\section{{\LaTeX}: vita morte e miracoli}
|
||||
Prima di inizia poniamo delle premesse, {\LaTeX} è un linguaggio di marcatura il che vuol dire che nasce col fine di formattare testo. Nasce nel 1994 e si evolve in una miriade di sottolinguaggi come il KaTeX di notion che verticalizza e isola l'uso di {\LaTeX} rendendolo una comoda implementazione per scrivere equazioni. Un'altra evoluzione seguita da {\LaTeX} è stata quella di evolvere i propri compilatori\footnote{Un compilatore è un programma che si occupa di tradurre da codice a programma finito, nel nostro caso da .tex a pdf}, li vedremo più nello specifico in futuro ma vi basti sapere che ho scelto di usare XeLaTeX che è un implementazione più nuova e ottimizzata del compilatore base denominato PdfLaTeX.
|
||||
\section{Ai}
|
||||
Una premessa anche sull'uso dell'intelligenza artificiale è opportuna. Gemini, in quanto probabilmente sarà la vostra scelta, nella sua modalità pro in particolare, è brava a capire come usare piccoli e singoli blocchi di \LaTeX, tipo "come si crea una tabella su \LaTeX?", "come creo una lista?", "come aggiungo un'immagine". Più informazioni passiamo a Gemini, più questa risposta sarà precisa. Un'accortezza che dovrete avere o quantomeno un punto da tener in considerazione nell'uso di Gemini è lo specificare le librerie che volete usi o informarmi, anche conversando con Gemini e prendendo le sue informazioni con le pinze, di quali siano le librerie compatibili con la compilazione che abbiamo scelto. Attenzione però che Gemini usato senza controllo sbaglia, sbaglia spesso e porta a peggiorare gli errori commessi consigliando di apportare diverse modifiche, magari giuste in generale ma non per il vostro progetto. Il mio consiglio è di dare due possibilità a Gemini, se due modifiche di Gemini non sistemano il codice allora ritornate indietro a prima che Gemini ci mettesse mano. Un'altra alternativa sarebbe usare Claude per il quale valgono pur sempre le avvertenze ma è molto migliore di Gemini. Claude però ha un piano base con limiti piuttosto stringenti quindi usatelo "in caso di emergenza". Un uso utile di un'intelligenza artificiale è quando il vostro lavoro non compila e come errore vi dà un log immenso da leggere, copia incollatelo interamente su un ai e cercate di vedere che spiegazione vi dà, valutatene la correttezza delle sue affermazioni e corregete.
|
||||
\section{Dove scrivere in \LaTeX}
|
||||
L'ambiente in cui lavorare è alla fine una vostra scelta, posso al più darvi dei consigli e sconsigliarvi altri metodi.
|
||||
\subsection{Overleaf}
|
||||
Il tool web più usato si chiama Overleaf, è una piattaforma comoda da usare ma ha un piano base molto limitato che generalmente vieta di lavorare su grandi file o su file che contengono tante strutture più complesse del semplice testo. Altro punto negativo è che essendo un sito web si può accedere ai file solo se connessi a una rete wifi.
|
||||
\subsection{Overleaf Toolkit}
|
||||
\capitalgrave{E} la versione selfhosted\footnote{Il termine selfhosted vuol dire che si può installare localmente su un server o computer, nel mio caso userò selfhosted per indicare i programmi che posso scaricare sul mio server e rendere a voi accessibili} di Overleaf. Permette di alzare i limiti ma essendo il mio server non particolarmente potente non so che carico potrà effettivamente sostenere. Il carico inoltre scala in funzione di quanti di voi decideranno di utilizzarlo.
|
||||
\subsection{Download locale}
|
||||
Il download locale di {\LaTeX} necessita di 2 componenti:
|
||||
\begin{itemize}
|
||||
\item Ambiente di sviluppo
|
||||
\item Compilatore locale o remoto
|
||||
\end{itemize}
|
||||
\subsubsection{Ambiente di sviluppo}
|
||||
\paragraph{Visual Studio Code}
|
||||
L'ambiente di sviluppo locale che consiglio è Visual Studio Code. Mi rendo conto possa essere un troppo per quel poco di {\LaTeX} che dobbiamo fare in quanto nasce come ambiente per la programmazione ma proprio per questo risulta essere il più completo editor di testo che puoi desiderare. Possiede una miriade di estensioni installabili per migliorarne l'uso e permette di visualizzare nella stessa applicazione sia il codice che il pdf compilato. Visual Studio Code possiede una funzione denominata IntelliSense che suggerisce la completazione automatica del codice (non del testo) che stiamo scrivendo in funzione di ciò che abbiamo scritto. IntelliSense non è basata su intelligenza artificiale.
|
||||
\paragraph{TeXStudio}
|
||||
L'opzione più vecchia è altrimenti usare TeXStudio che nativamente supporta {\LaTeX} e che forse possiede un compilatore inegrato. Non l'ho mai usato. Sarà sicuramente comodo quanto vecchio. Lo penso perchè non sono nati molti altri programmi del genere.
|
||||
\subsubsection{Compilatore locale}
|
||||
\paragraph{Windows} Per quanto riguarda Windows abbiamo due possibilità: \textbf{TeX Live} e \textbf{MiKTeX}.
|
||||
\subparagraph{TeX Live} TeX Live installa la libreria completa di {\LaTeX} con tutte librerie e i compilatori ad esso associate. Si parla di $1.6$GB ma il problema non è tanto il peso quanto il fatto di essere distribuito da un server vecchio e che il download non è centralizzato, ovvero ogni singolo file ha una posizione differente, ciò rallenta maggiormente il download di questi file. A me ha impiegato circa $6$ ore. \capitalgrave{E} inoltre un download che non dovrebbe essere interrotto.
|
||||
\subparagraph{MiKTeX} MiKTeX è l'alternativa più veloce e più nuova, installa una minima parte delle librerie e dei compilatori necessari, necessita del download di una libreria in più denominata Pearl, un linguaggio di programmazione ($~200 MB$), per poter essere usata con l'estensione di Visual Studio Code per \LaTeX. MiKTeX scarica le ulteriori librerie solo quando compiliamo un progetto che le usa.
|
||||
\paragraph{MacOsX} L'opzione per MacOsX è una sola: MacTeX. Non l'ho mai usata.
|
||||
\subsubsection{Compilatore remoto}
|
||||
Questa è una soluzione che sto testando con i lavori degli ultimi giorni. Consiste nell'usare git insieme a Gitea (versione selfhosted del più famoso Github). Git gestisce il \verb|push| (upload) e \verb|pull| (download) dei progetti in una cartella remota definita come \verb|repository|. Possiede una funzione detta \verb|Action| che permette di eseguire in modo automatico su un docker\footnote{Un particolare programma di macchine virtuali} remoto delle azioni di compilazione e aggiungere al nostro upload il risultato finito. Gitea essendo selfhosted è priva di tempi di attesa a meno di più richieste simultanee e generalmente risolve la compilazione entro i due minuti. \capitalgrave{E} possibile scaricare il pdf in locale effettuando una \verb|pull|. Altro vantaggio di git il quale lo rende estremamente usato sia dai programmatori che più in generale per qualsiasi progetto di gruppo è la sua comoda gestione del lavoro simultaneo di più persone anche sullo stesso file.
|
||||
@@ -1,33 +0,0 @@
|
||||
\chapter{Prima di iniziare}
|
||||
\section{\LaTeX : vita morte e miracoli}
|
||||
Prima di inizia poniamo delle premesse, \LaTeX è un linguaggio di marcatura il che vuol dire che nasce col fine di formattare testo. Nasce nel 1994 e si evolve in una miriade di sottolinguaggi come il KaTeX di notion (quello dei blocchi matematici) che verticalizza e isola l'uso di \LaTeX rendendolo una comoda implementazione per scrivere equazioni. Un'altra evoluzione seguita da \LaTeX è stata quella di evolvere i propri compilatori\footnote{Un compilatore è un programma che si occupa di tradurre da codice a programma finito, nel nostro caso da .tex a pdf}, li vedremo più nello specifico in futuro ma vi basti sapere che ho scelto di usare XeLaTeX che è un implementazione più nuova e ottimizzata del compilatore base denominato PdfLaTeX.
|
||||
\section{Ai}
|
||||
Una premessa anche sull'uso dell'intelligenza artificiale è opportuna. Gemini, in quanto probabilmente sarà la vostra scelta, nella sua modalità pro in particolare, è brava a capire come usare piccoli e singoli blocchi di \LaTeX, tipo "come si crea una tabella su \LaTeX?", "come creo una lista?", "come aggiungo un'immagine". Più informazioni passiamo a Gemini, più questa risposta sarà precisa. Un'accortezza che dovrete avere o quantomeno un punto da tener in considerazione nell'uso di gemini è lo specificare le librerie che volete usi o informarmi anche conversando con Gemini e prendendo le sue informazioni con le pinze di quali siano le librerie compatibili con la compilazione che abbiamo scelto. Attenzione però che Gemini usato senza controllo sbaglia, sbaglia spesso e porta a peggiorare gli errori commessi consigliando di apportare diverse modifiche, magari giuste in generale ma non per il vostro progetto. Il mio consiglio è di dare due possibilità a Gemini, se due modifiche di Gemini non sistemano il codice allora ritornate indietro a prima che Gemini ci mettesse mano. Un'altra alternativa sarebbe usare Claude valgono pur sempre le avvertenze ma è molto migliore di Gemini. Claude però ha un piano base con limiti piuttosto stringenti quindi usatelo "in caso di emergenza". Un uso utile di un'intelligenza artificiale è quando il vostro lavoro non compila e come errore vi dà un log immenso da leggere, copia incollatelo interamente su un ai e cercate di vedere che spiegazione vi da, valutatene la correttezza delle sue affermazioni e corregete.
|
||||
\section{Dove scrivere in \LaTeX}
|
||||
L'ambiente in cui lavorare è alla fine una vostra scelta, posso al più darvi dei consiglie e sconsigliarvi altri metodi.
|
||||
\subsection{Overleaf}
|
||||
Il tool web più usato si chiama Overleaf, è una piattaforma comoda da usare ma ha un piano base molto limitato che generalmente vieta di lavorare su grandi file o su file che contengono tante strutture più complesse del semplice testo. Altro punto negativo è che essendo un sito web si può accedere ai file solo se connessi a una rete wifi.
|
||||
\subsection{Overleaf Toolkit}
|
||||
\capitalgrave{E} la versione selfhosted\footnote{Il termine selfhosted vuol dire che si può installare localmente su un server o computer, nel mio caso userò selfhosted per indicare i programmi che posso scaricare sul mio server e rendere a voi accessibili} di Overleaf. Permette di alzare i limiti ma essendo il mio server non particolarmente potente non so che carico potrà effettivamente sostenere. Il carico inoltre scala in funzione di quanti di voi decideranno di utilizzarlo.
|
||||
\subsection{Download locale}
|
||||
Il download locale di \LaTeX necessità di 2 componenti:
|
||||
\begin{itemize}
|
||||
\item Ambiente di sviluppo
|
||||
\item Compilatore locale o remoto
|
||||
\end{itemize}
|
||||
\subsubsection{Ambiente di sviluppo}
|
||||
\paragraph{Visual Studio Code}
|
||||
L'ambiente di sviluppo locale che consiglio è Visual Studio Code. Mi rendo conto possa essere un troppo per quel poco di LaTeX che dobbiamo fare in quanto nasce come ambiente per la programmazione ma proprio per questo risulta essere il più completo editor di testo che puoi desiderare. Possiede una miriade di estensioni installabili per migliorare il suo uso e permette di visualizzare nella stessa applicazione sia il codice che il pdf finito. Visual Studio Code possiede una funzione denominata IntelliSense che suggerisce la completazione automatica del codice (non del testo) che stiamo scrivendo in funzione di ciò che abbiamo scritto. IntelliSense non è basata su intelligenza artificiale.
|
||||
\paragraph{TeXStudio}
|
||||
L'opzione più vecchia è altrimenti usare TeXStudio che nativamente supporta \LaTeX e che forse possiede un compilatore inegrato. Non l'ho mai usato. Sarà sicuramente comodo quanto vecchio. Lo penso perchè non sono nati molti altri programmi del genere.
|
||||
\subsubsection{Compilatore locale}
|
||||
\paragraph{Windows}
|
||||
Per quanto riguarda Windows abbiamo due possibilità: \textbf{TeX Live} e \textbf{MiKTeX}.
|
||||
\subparagraph{TeX Live}
|
||||
TeX Live installa la libreria completa di LaTeX con tutte librerie e i compilatori ad esso associate . Si parla di 1.6GB ma il problema non è tanto il peso quanto il fatto di essere distribuito da un server vecchio e che il download non è centralizzato, ovvero ogni singolo file ha una posizione differente, che rallenta maggiormente il download di questi file. A me ha impiegato circa 6 ore. \capitalgrave{E} un download che non dovrebbe essere interrotto.
|
||||
\subparagraph{MiKTeX}
|
||||
MiKTeX è l'alternativa più veloce e più nuova, installa una minima parte delle librerie e dei compilatori necessari, necessità del download di una libreria in più denominata Pearl (un linguaggio di programmazione) per poter essere usata con l'estensione di Visual Studio Code per \LaTeX. MiKTeX scarica le ulteriori librerie solo quando compiliamo un progetto che le usa.
|
||||
\paragraph{MacOsX}
|
||||
L'opzione per MacOsX è una sola: MacTeX. Non l'ho mai usata.
|
||||
\subsubsection{Compilatore remoto}
|
||||
Questa è una soluzione che sto testando con i lavori degli ultimi giorni. Consiste nell'usare git insieme a Gitea (versione selfhosted del più famoso Github). Git gestisce il \verb|push| (upload) e \verb|pull| (download) dei progetti in una cartella remota definita come \verb|repository|. Possiede una funzione detta \verb|Action| che permette di eseguire in modo automatico su un docker\footnote{Un particolare programma di macchine virtuali} remoto delle azioni di compilazione e aggiungere al nostro upload il risultato finito. Gitea essendo selfhosted è priva di code a meno di più richieste simultanee e generalmente risolve la compilazione entro i due minuti. \capitalgrave{E} possibile scaricare il pdf in locale effettuando una \verb|pull|. Altro vantaggio di git il quale lo rende estremamente usato sia dai programmatori che più in generale per qualsiasi progetto di gruppo è la sua comoda gestione del lavoro simultaneo di più persone contemporaneamente anche sullo stesso file.
|
||||
@@ -0,0 +1,106 @@
|
||||
\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.
|
||||
@@ -0,0 +1,93 @@
|
||||
\chapter{Formattazione}
|
||||
\section{Bold, Italic, Underline}
|
||||
Il testo scritto all'interno di un ambiente documento viene normalmente visualizzato come testo regolare. Per decorare il testo trasformandolo in grassetto (bold), corsivo (italic) o sottolinearlo (underline) è richiesto includere il testo in uno dei rispettivi comandi.
|
||||
\paragraph{Bold} Per tasformare il testo in grassetto è necessario l'uso del comando \mintinline{latex}{\textbf{testo}}. Come dice il comando scrive il testo in "bold font". Si ottiene un effetto del genere \textbf{testo}.
|
||||
\paragraph{Italic} Per tasformare il testo in corsivo è necessario l'uso del comando \mintinline{latex}{\textit{testo}}. Si ottiene un effetto del genere \textit{testo}.
|
||||
\paragraph{Underline} Per sottolineare il testo si utilizza in {\LaTeX} base il comando \mintinline{latex}{\underline{testo}}. Si ottiene un effetto del genere \underline{testo}. Underline però ha un problema, se vogliamo sottolineare un testo particolarmente lungo allora underline non supporterà l'andata a capo automatica del testo. Ciò si risolve utilizzando la libreria ulem e utilizzando al posto di underline, \mintinline{latex}{\uline{a}}. Con una conoscenza più avanzata di {\LaTeX} potete usare il comando \mintinline{latex}{\renewcommand{cmd}{def}} per rinominare un comando. In questa guida io utilizzo queste due istruzioni. La prima per importare la libreria (necessario), la seconda per ridefinire il comando underline in modo che si comporti come uline.
|
||||
\begin{minted}{latex}
|
||||
\usepackage[normalem]{ulem}
|
||||
|
||||
% se pensate vi possa tornare utile, copia incollatelo nel vostro progetto
|
||||
\renewcommand{\underline}[1]{\uline{#1}}
|
||||
\end{minted}
|
||||
\section{Font}
|
||||
\begin{wrapfigure}{r}{0.5\textwidth}
|
||||
\centering
|
||||
\begin{tabularx}{\linewidth}{X c}
|
||||
\toprule
|
||||
\textbf{Name} & \textbf{Weight} \\
|
||||
\midrule
|
||||
Thin / Hairline & $100$ \\
|
||||
Ultra/Extra light & $200$ \\
|
||||
Light & $300$ \\
|
||||
Normal / regular & $400$ \\
|
||||
Medium & $500$ \\
|
||||
Semi/Demi bold & $600$ \\
|
||||
Bold & $700$ \\
|
||||
Extra/Ultra bold & $800$ \\
|
||||
Heavy / Black & $900$ \\
|
||||
Extra/Ultra black & $950$ \\
|
||||
\bottomrule
|
||||
\end{tabularx}
|
||||
\end{wrapfigure}
|
||||
Un font è un file che definisce lo stile generico di un insieme di caratteri. Esistono vari file descrittivi di un font, i più utilizzati sono i \texttt{ttf} e i \texttt{otf}.
|
||||
I \texttt{ttf} sono \texttt{otf} raggruppati. Un \texttt{ttf} possiede generalmente il raggruppamento degli stili Regular, Bold, Italic e BoldItalic, \texttt{ttf} più complessi possiedono varianti anche sul peso che possiedono associate a un valore generalmente da $1$ a $1000$.
|
||||
|
||||
Per ognuno dei pesi è generalmente necessario specificare le 4 varianti: Regular, Bold, italic e BoldItalic. Non è necessario che un font definisca tutti i pesi.
|
||||
|
||||
|
||||
\newpage % ! UNSAFE -> new page to get space from wrap figure
|
||||
\subsection{Definire un font}
|
||||
Usando il compilatore XeLaTeX è possibile utilizzare la libreria fontspec per definire un font da un file. Importata la libreria si utilizza \mintinline{latex}{\newfontfamily} che prende come primo argomento il nome del comando che lo identificherà e come secondo argomento il nome del font o il suo percorso e come terzo argomento (opzionale) un listato di opzioni in forma \texttt{key=value}. Tra le opzioni che possiamo passare vi è la specifica dei file \texttt{otf} che compongono il font. Nell'esempio cerca il file nella cartella \texttt{./fonts/} (è importante lo \textbackslash finale per la cartella) con il nome che finisce\footnote{Il simbolo \texttt{*} è un wildcard, generalmente in un pattern indica una serie di qualsiasi carattere, scrivere \texttt{*testo} vuol dire che si cerca qualcosa che finisce con "testo"} in \texttt{-Regular} per il regular (UprightFont), che finisce con \texttt{-Bold} per il bold e così via. Il comando che creiamo con \mintinline{latex}{\newfontfamily} necessita di iniziare con un solo \textbackslash. Il comando cambia il font da lì in poi quindi è utile usarlo includendo il comando e il testo in una coppia di parentesi graffe che crea un'insieme isolato dal resto del lavoro.
|
||||
\begin{minted}{latex}
|
||||
\usepackage{fontspec}
|
||||
\newfontfamily{\simplecustomfont}{./path/to/font}
|
||||
\newfontfamily{\extendedcustomfont}{nomefont}[
|
||||
Path = ./fonts/,
|
||||
Extension = .otf,
|
||||
UprightFont = *-Regular,
|
||||
BoldFont = *-Bold,
|
||||
ItalicFont = *-Italic,
|
||||
BoldItalicFont = *-BoldItalic,
|
||||
]
|
||||
\begin{document}
|
||||
{\simplecustomfont Regular text}
|
||||
{\extendedcustomfont Regular text}
|
||||
\end{document}
|
||||
\end{minted}
|
||||
|
||||
\subsection{Usare un font}
|
||||
Il metodo base per usare un font è quello visto nella sezione precedente che consiste nel chiamarlo utilizzando il comando definito. Il comando cambia il font in uso da lì in avanti ed è spesso utile porlo all'interno di un blocco di parentesi graffe.
|
||||
Per impostare un font che vale come default per l'intero documento usiamo \mintinline{latex}{\setmainfont{path/to/font}} o
|
||||
\begin{minted}{latex}
|
||||
\setmainfont{OpenDyslexic}[
|
||||
Path = fonts/OpenDyslexic/,
|
||||
Extension = .otf,
|
||||
UprightFont = *-Regular,
|
||||
BoldFont = *-Bold,
|
||||
ItalicFont = *-Italic,
|
||||
BoldItalicFont = *-BoldItalic
|
||||
]
|
||||
\end{minted}
|
||||
Inoltre la libreria fontspec ha una lunga lista di font preinstallati. Potete scaricare i file \texttt{ttf} o \texttt{otf} da siti come \href{https://fonts.google.com}{Google Fonts}, \href{https://www.dafont.com/it/}{DaFont} e \href{https://www.1001fonts.com}{1001fonts} oppure ricercare font simili a quello che desiderate usando siti come \href{https://www.myfonts.com/pages/whatthefont}{WhatTheFont}
|
||||
|
||||
\section{Colori}
|
||||
Il miglior modo di usare dei colori in {\LaTeX} è importare la libreria \texttt{xcolor}. Gli argomenti opzionali comma-separated\footnote{Gli argomenti sono passati come una lista di parole divise da una virgola. es. [a, b, c, d]} di questa libreria si possono raggruppare in due tipi: "nomi dei colori" e "tipo di colore". La libreria \texttt{xcolor} di base presenta 19 colori, aggiungendo un argomento opzionale del tipo "nomi dei colori", forziamo la libreria ad ampliare la lista di colori disponibili. Esempi di liste disponibili sono \texttt{svgnames}\footnote{SVG è un formato di file molto usato nei disegni vettoriali. Un disegno vettoriale ha la peculiarietà di essere facilmente scalabile in dimensione ed è la scelta preferita per la rappresentazione delle icone}, \texttt{dvipsnames}\footnote{dvi è un formato intermedio di latex, ps fa riferimento a un vecchio linguaggio di Adobe per la stampa di alcuni file. Alcune librerie potrebberlo richiederlo, tuttavia non è un obbligo importarlo} e \texttt{table}. Con l'argomento di "tipo di colore" definiamo come la libreria \texttt{xcolor} gestisce i colori. I "tipi di colore" disponibili sono: natural (non esegue alcuna modifica), rgb\footnote{Red Green Blue è il formato usato dai display. Ottimo per i pdf in formato digitale}, cmyk\footnote{Cyan Magenta Yellow Key è il formato usato dalle stampanti. Ottimo per i pdf da stampare}, gray (trasforma tutto in toni di grigio).
|
||||
\begin{minted}{latex}
|
||||
\usepackage[svgnames, dvipsnames, table, rgb]{xcolor}
|
||||
\end{minted}
|
||||
\subsection{Definire un colore}
|
||||
La libreria \texttt{xcolor} permette di definire un colore personalizzato nel formato che si desidera.
|
||||
\paragraph{RGB} Lo standard RGB prevede il definire un colore mediante la specifica di $3$ valori interi da $0$ a $255$ rispettivamente indicanti le intensità del rosso, del verde e del blu. Il comando da utilizzare è \mintinline{latex}{\definecolor{nome}{RGB}{0,100,200}}.
|
||||
\paragraph{rgb} Lo standard è lo stesso del RGB ma prevede l'uso di $3$ da $0$ a $1$ ottenuti come $valore_rgb = valore_RGB/255$. Il comando da utilizzare è \mintinline{latex}{\definecolor{nome}{RGB}{0,0.39,0.78}}.
|
||||
\paragraph{HTML} Lo standard di HTML\footnote{Linguaggio di marcatura per la creazione di pagine web statiche, ovvero prive di animazioni o interazioni} è una rappresentazione RGB in formato HEX\footnote{Esadecimale, ovvero base$16$. Base$16$ vuol dire che le cifre che abbiamo a disposizione non sono $10$ bensì $16$. Le cifre sono 0123456789ABCDEF. A volte si presenta con un hashtag iniziale o preceduto dalla sigla 0x, per latex né l'una né l'altra sono necessarie}. Ognuno dei $3$ valori è scritto come una coppia di cifre esadecimali\footnote{0123456789ABCDEF} da $0_{10}=00_{16}$ a $255_{10}=FF_{16}$. Il comando da utilizzare è \mintinline{latex}{\definecolor{nome}{HTML}{0064C8}}
|
||||
\paragraph{cmyk} Lo standard cmyk è quello delle stampanti, prevede l'uso di $4$ valori da $0$ a $1$ facenti riferimento alla quantità di colore ciano, magenta e giallo e, relativamente al parametro key, all'intesità dell'insieme. Non è molto usato per la definizione di colori. Il comando da utilizzare è \mintinline{latex}{\definecolor{nome}{cmyk}{1.000, 0.500, 0.000, 0.216}}
|
||||
\paragraph{gray} Lo standard gray è il monocromatico, prevede l'uso di un solo valore da $0$ a $1$ facente riferimento all'intensità del grigio. Il comando da utilizzare è \mintinline{latex}{\definecolor{nome}{cmyk}{0.39}}
|
||||
\paragraph{Mix di colori} La libreria \texttt{xcolor} permette la definizione di un colore sulla base della miscelazione di colori esistenti. Il comando da utilizzare è \mintinline{latex}{\colorlet{nome}{nomecolore!percentuale!nomecolore2!percentuale!nomecolore3}}. Come potete notare si alternano un nome del colore e una percentuale divisi da punti esclamativi, l'ultimo colore può non avere percentuale e verrà per differenza dal totale calcolata in automatico. Potete miscelare tra loro $n=1,2,3\dots$ colori. La percentuale è solo un numero, privo del simbolo \texttt{\%}.
|
||||
\begin{nota}
|
||||
Definire un colore secondo un formato è non correlato all'imposizione data nell'importazione della libreria. Qualora il tipo definito nell'importazione della libreria non dovesse coincidere con quello della definizione, sarà la libreria stessa a riadattare verso quanto definito dal formato definito nell'importazione. Ciò vuol dire che siete liberi di definire i colori come preferite, preferendo uno o l'altro formato o anche di definire differenti colori con differenti formati. Immaginate di avere un documento inizialmente pensato per solo formato digitale e di doverlo stampare, sarebbe impensabile dover andare a ridefinire tutti i colori usati ed infatti ciò non avviene, basterà invece modificare la sola specifica nell'argomento opzionale della libreria e dunque ricompilare.
|
||||
\end{nota}
|
||||
\subsection{Uso di un colore}
|
||||
La libreria \texttt{xcolor} permette di cambiare colore al testo, allo sfondo o di creare un riquadro intorno a quest'ultimo. Inoltre i colori definiti con la libreria \texttt{xcolor} sono compatibili con la maggiorparte delle librerie di {\LaTeX}.
|
||||
\paragraph{Cambiare colore al testo} Per scrivere del testo in un colore particolare si preferisce usare il comando \mintinline{latex}{\textcolor{nomecolore}{testo}}. Un'altra opzione è usare il comando \mintinline{latex}{\color{nomecolore}} che cambia il colore di default del testo dalla sua esecuzione in poi. \capitalgrave{E} possibile usare il comando \mintinline{latex}{\color{nomecolore}} all'interno di un blocco di parentesi graffe in modo da effettuare la modifica per il solo contenuto del blocco. La differenza tra il comando \mintinline{latex}{{\color{nomecolore} testo}} e \mintinline{latex}{\textcolor{nomecolore}{testo}} è che mentre il primo non dovrebbe avere problemi, il secondo si aspetta di avere come argomento "testo" perlappunto solo testo e potrebbe avere problemi di incompatibilità quando usato insieme a comandi più particolari come la creazione di una tabella, di una lista.
|
||||
\paragraph{Cambiare colore allo sfondo}
|
||||
@@ -0,0 +1 @@
|
||||
\chapter{Liste}
|
||||
@@ -0,0 +1 @@
|
||||
\chapter{Tabelle}
|
||||
@@ -0,0 +1,3 @@
|
||||
\chapter{Immagini}
|
||||
\section{Figure}
|
||||
\section{Tikz} % mappe concettuali, circuiti...
|
||||
@@ -0,0 +1 @@
|
||||
\chapter{Equazioni}
|
||||
@@ -0,0 +1,6 @@
|
||||
\begin{titlepage}
|
||||
\maketitle
|
||||
\end{titlepage}
|
||||
|
||||
\cleardoublepage
|
||||
\tableofcontents
|
||||
+5
-4
@@ -1,5 +1,5 @@
|
||||
\documentclass{scrbook}
|
||||
\usepackage{fontspec}
|
||||
\usepackage{myformat}
|
||||
\setmainfont{OpenDyslexic}[
|
||||
Path = fonts/OpenDyslexic/,
|
||||
Extension = .otf,
|
||||
@@ -8,8 +8,9 @@
|
||||
ItalicFont = *-Italic,
|
||||
BoldItalicFont = *-BoldItalic
|
||||
]
|
||||
%
|
||||
\title{LearnLaTeX}
|
||||
\author{Domipoke}
|
||||
% 8
|
||||
\begin{document}
|
||||
\input{./book/copertina.tex}
|
||||
\input{./book/00_premessa.tex}
|
||||
\include{./book.tex}
|
||||
\end{document}
|
||||
+131
@@ -0,0 +1,131 @@
|
||||
\ProvidesPackage{myformat}[2026/07/28 SrcBook styled]
|
||||
% This file change the behaviour of some commands such as:
|
||||
% \underline -> \uline
|
||||
%
|
||||
%
|
||||
\RequirePackage{fontspec}
|
||||
\RequirePackage[svgnames, dvipsnames, table, rgb]{xcolor}
|
||||
\RequirePackage{fontawesome5}
|
||||
|
||||
\KOMAoptions{
|
||||
paper=a4,
|
||||
fontsize=12pt,
|
||||
chapterprefix=true,
|
||||
twoside=semi,
|
||||
DIV=classic,
|
||||
parskip=half
|
||||
}
|
||||
|
||||
% JP Font
|
||||
% \RequirePackage{xeCJK}
|
||||
% \setCJKmainfont{HaranoAji_GothicMedium.otf}[Path=./fonts/]
|
||||
|
||||
% other package
|
||||
\RequirePackage{lmodern}
|
||||
\RequirePackage{microtype}
|
||||
\RequirePackage{tcolorbox}
|
||||
\RequirePackage{graphics}
|
||||
\RequirePackage{booktabs}
|
||||
\RequirePackage[normalem]{ulem}
|
||||
\renewcommand{\underline}[1]{\uline{#1}}
|
||||
|
||||
\RequirePackage{tabularx}
|
||||
\tcbuselibrary{minted,skins,breakable}
|
||||
|
||||
|
||||
\sffamily
|
||||
\linespread{1.25}
|
||||
\setfootnoterule{0.8\textwidth}
|
||||
|
||||
\RequirePackage{scrlayer-scrpage}
|
||||
\pagestyle{scrheadings}
|
||||
\automark[section]{chapter}
|
||||
\ofoot*{}
|
||||
\cfoot*{\pagemark}
|
||||
|
||||
\RequirePackage{imakeidx}
|
||||
\begin{filecontents}[overwrite]{myindexstyle.ist}
|
||||
headings_flag 1
|
||||
heading_prefix
|
||||
"\\bigskip\\par\\penalty-50\\textbf{"
|
||||
heading_suffix
|
||||
"}\\\\[\\medskipamount]"
|
||||
symhead_positive "Symbols"
|
||||
symhead_negative "symbols"
|
||||
numhead_positive "Numbers"
|
||||
numhead_negative "numbers"
|
||||
delim_0 ",\~"
|
||||
\end{filecontents}
|
||||
\makeindex[intoc, options=-s myindexstyle]
|
||||
|
||||
|
||||
\usepackage{hyperref}
|
||||
\hypersetup{
|
||||
colorlinks,
|
||||
linkcolor = black,
|
||||
urlcolor = blue!70!Red,
|
||||
citecolor = blue!70!Red,
|
||||
pdfauthor = Domipoke,
|
||||
pdftitle = LearnLATEX
|
||||
}
|
||||
|
||||
\RequirePackage[open,openlevel=1,atend,numbered]{bookmark}
|
||||
\RequirePackage{pdfpages}
|
||||
% Chapter Heading (and related)
|
||||
\renewcommand*{\chaptermarkformat}{\chapapp~\thechapter~--~}
|
||||
\addtokomafont{chapterprefix}{\itshape\color{white}}
|
||||
\renewcommand*{\chapterformat}{\raggedleft\colorbox{RoyalBlue}{\parbox[b][2.8em]{2.8em}{\vfill\centering{\large\chapapp}\\[-0.4em]\thechapter\vfill}}}
|
||||
\renewcommand*{\chapterheadstartvskip}{\addvspace{2em}}
|
||||
\RequirePackage{pgfornament}
|
||||
\renewcommand*{\chapterheadendvskip}{\pgfornament[width=\textwidth]{88}\par}
|
||||
% Section Heading
|
||||
\renewcommand*{\sectionformat}{\colorbox{black}{\textcolor{white}{\thesection\autodot}}\enskip}
|
||||
\renewcommand*{\sectionlinesformat}[4]{\makebox[0pt][l]{\rule[-\fboxsep-\fboxrule]{\textwidth}{\fboxrule}}#3\parbox[b]{0.85\textwidth}{\linespread{1}\selectfont#4}}
|
||||
|
||||
% minted
|
||||
\RequirePackage{minted}
|
||||
\setmonofont{JetBrains Mono}
|
||||
% \usemintedstyle{monokai}
|
||||
\definecolor{codeBg}{HTML}{282822} % Monokai's dark background color
|
||||
\setmintedinline{style=emacs, fontsize=\scriptsize, frame=single, framesep=2mm, bgcolor=none, formatcom={\color{black}}}
|
||||
\setminted{style=monokai, fontsize=\scriptsize, framesep=2mm, bgcolor=codeBg, formatcom={\color{white}}}
|
||||
\definecolor{lineNumColor}{HTML}{888888} % Gray numbers
|
||||
|
||||
% Override line number appearance
|
||||
\renewcommand{\theFancyVerbLine}{%
|
||||
\ttfamily
|
||||
\textcolor{lineNumColor}{\scriptsize\arabic{FancyVerbLine}}%
|
||||
}
|
||||
|
||||
|
||||
% Define purple colors
|
||||
\definecolor{notaDark}{RGB}{106, 27, 154} % Dark purple for header
|
||||
\definecolor{notaLight}{RGB}{243, 229, 245} % Light purple for content
|
||||
\definecolor{notaFrame}{RGB}{106, 27, 154} % Frame color matching header
|
||||
% Create the Nota environment
|
||||
\newtcolorbox{nota}{
|
||||
enhanced,
|
||||
breakable,
|
||||
colback = notaLight,
|
||||
colframe = notaFrame,
|
||||
colbacktitle = notaDark,
|
||||
coltitle = white,
|
||||
title = \textbf{Nota},
|
||||
fonttitle = \large\bfseries,
|
||||
attach boxed title to top left = {xshift=5mm, yshift=-2mm},
|
||||
boxed title style = {
|
||||
size = small,
|
||||
colback = notaDark,
|
||||
sharp corners,
|
||||
boxrule = 0pt,
|
||||
},
|
||||
sharp corners,
|
||||
boxrule = 1pt,
|
||||
left = 5mm,
|
||||
right = 5mm,
|
||||
top = 3mm,
|
||||
bottom = 3mm,
|
||||
}
|
||||
|
||||
|
||||
\RequirePackage{wrapfig}
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,2 @@
|
||||
./dyslexic.tex
|
||||
./LearnLatex.tex
|
||||
Reference in New Issue
Block a user