Lezione 6

Caricare più di un pacchetto in una volta sola

Il comando \usepackage accetta un elenco di nomi di pacchetti separati con la virgola, così che se ne possono caricare più d’uno in una volta sola: per esempio, \usepackage{color,graphicx}. In questo caso, tieni presente che le opzioni passate a un pacchetto verranno applicate a tutti i pacchetti nell’elenco, cosa che potrebbe essere non sempre desiderabile. Inoltre, caricarli separatamente permette di commentarli più facilmente: quindi, continueremo a caricare ogni pacchetto su una riga a sé.

Il pacchetto babel

Nella lezione principale abbiamo descritto il pacchetto babel come uno strumento utile a impostare diversi schemi di sillabazione. A seconda della lingua o delle lingue in cui si prevede di scrivere, tuttavia, il pacchetto fa molto più di questo. Con il tedesco, per esempio, fornisce alcune scorciatoie per generare trattini ‘morbidi’ e anche un modo per digitare rapidamente la dieresi senza bisogno di avere una tastiera tedesca. Nota bene, inoltre, come il titolo inglese Table of Contents normalmente generato dal comando \tableofcontents cambi nel corrispondente tedesco Inhaltsverzeichnis.

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel} % Attenzione: il nome dell'opzione è 'ngerman'

\begin{document}

\tableofcontents

\section{"Uber "Apfel und Birnen}

\subsection{Äpfel}
Äpfel sind rot.

\subsection{Birnen}
Birnen sind gelb.

\end{document}

Altre impostazioni della lingua modificano l’aspetto del testo: per esempio, la tipografia francese tradizionale prevede uno spazio prima di alcuni segni di punteggiatura come i due punti: ad aggiungerlo automaticamente pensa l’opzione french di babel.

Opzioni globali

Quando si vuole passare un’opzione a tutti i pacchetti caricati, è sufficiente dichiararla tra quelle di \documentclass: in questo modo, ogni pacchetto può ‘vedere’ questa lista di opzioni. Quindi, per passare la lingua di un documento a tutti i pacchetti, potremmo scrivere:

\documentclass[ngerman]{article} % Attenzione: il nome dell'opzione è 'ngerman'
\usepackage[T1]{fontenc}
\usepackage{babel}

\begin{document}

\tableofcontents

\section{"Uber "Apfel und Birnen}

\subsection{Äpfel}
Äpfel sind rot.

\subsection{Birnen}
Birnen sind gelb.

\end{document}

Altre definizioni

Il comando \newcommand permette di definire comandi con un massimo di 9 argomenti, il primo dei quali può essere facoltativo.

Prendendo l’esempio dalla lezione principale, potremmo rendere facoltativo il colore, che per impostazione predefinita è il blu.

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{xcolor}

\newcommand\kw[2][blue]{\textcolor{#1}{\itshape #2}}

\begin{document}

Qualcosa a proposito di \kw{mele} e \kw[red]{arance}.

\end{document}

Gli argomenti facoltativi sono racchiusi tra parentesi quadre [...] e, se omessi, LaTeX adopera il valore predefinito specificato nella definizione.

Il comando \NewDocumentCommand

Dall’ottobre 2020 è disponibile un sistema di definizione esteso, che nelle versioni precedenti di LaTeX era permesso dal pacchetto xparse, che adoperiamo qui per una questione di compatibilità

Ripetiamo l’esempio precedente, adoperando questa volta \NewDocumentCommand.

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{xparse} % Solo se la versione di LaTeX è anteriore a ottobre 2020
\usepackage{xcolor}

\NewDocumentCommand\kw{O{blue} m}{\textcolor{#1}{\itshape #2}}

\begin{document}

Qualcosa a proposito di \kw{mele} e \kw[red]{arance}.

\end{document}

Esattamente come con \newcommand, \NewDocumentCommand accetta il comando che si sta definendo (\kw, in questo caso) e il corpo della definizione, indicando gli argomenti con la sintassi da #1 a #9. Tuttavia, c’è una differenza nel modo in cui gli argomenti vengono specificati.

A differenza di \newcommand, dove va indicato solo il numero degli argomenti, fornendo eventualmente un valore predefinito per il primo di essi, con \NewDocumentCommand ogni argomento è specificato da una lettera: quindi, un comando a due argomenti va specificato con {mm} anziché con [2]. Questo modo è leggermente più prolisso, ma permette di definire comandi di molte più forme diverse. Qui diamo solo questo semplice esempio, in cui il primo argomento è facoltativo, con valore predefinito blu (O{blue}) e il secondo argomento è obbligatorio (m).