- Questo topic ha 6 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 17 anni, 5 mesi fa da .
-
Topic
-
Ciao a tutti,
avrei due domande in merito alla gestione delle opzioni all’interno di un file di classe personalizzato.Sto scrivendo una classe che consente di realizzare la dispensa di una lezione. Siccome una generica lezione alla quale faccio riferimento è solitamente abbastanza breve, la mia classe si basa fortemente su article.cls, alla quale aggiunge alcune piccole modifiche.
In realtà, vorrei che questa mia classe potesse servirmi anche per tenere traccia delle esercitazioni. Dal momento che un’esercitazione presenta la stessa struttura di una lezione di teoria (cambia solo il contenuto), la classe in questione può essere usata indifferentemente sia per una normale lezione, sia per un’esercitazione. L’unica differenza tra le due situazioni consiste nella ridefinizione di un comando interno, il cui valore viene modificato da «Lezione» a «Esercitazione».
Per spiegarmi meglio, allego il codice dei file che sto correntemente usando. Per semplicità, ho rimosso un sacco di righe, in modo da riportarmi ad un esempio minimale.
Il primo caso è quello che consente di scrivere una lezione; il file di classe:
`\NeedsTeXFormat{LaTeX2e}[1995/12/01]\ProvidesClass{lezione}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
\ProcessOptions\relax
\LoadClass{article}
\newcommand{\@tipologia}{Lezione} % <--- Viene definita la tipologia di dispensa corrente. \renewcommand{\@maketitle}{% \newpage \null \vskip 2em% \begin{center}% \let \footnote \thanks {\LARGE \@title \par}% \vskip 1.5em% {\large \lineskip .5em% \begin{tabular}[t]{c}% \@author \end{tabular}\par}% \vskip 1em% {\large Tipologia: \@tipologia} % <--- Viene stampata la tipologia di dispensa corrente. \end{center}% \par \vskip 1.5em} \endinput` Una prova d'uso: `\documentclass{lezione} \author{Autore} \title{Titolo} \begin{document} \maketitle \end{document}` Nel caso della lezione, tutto fila liscio. Per quanto riguarda l'esercitazione, il file di prova dovrebbe essere scritto in questo modo: `\documentclass[esercitazione]{lezione} \author{Autore} \title{Titolo} \begin{document} \maketitle \end{document}` La modifica che vorrei introdurre nel file di classe comporta la definizione di un'opzione di nome «esercitazione», la gestione della quale dovrebbe realizzare una delle due situazioni elencate di seguito (non so quale sia la migliore): [ul][li] in seguito al comando `\newcommand{\@tipologia}{Lezione}` un'istruzione if valuta se l'opzione «esercitazione» è stata specificata nel file principale, e in caso affermativo effettua un \renewcommand su \@tipologia assegnandole invece il valore «Esercitazione»; [li] rimuovo dalla classe l'istruzione `\newcommand{\@tipologia}{Lezione}` ed inserisco un'istruzione if la quale valuta se l'opzione «esercitazione» è stata specificata nel file principale; in caso affermativo, essa realizza il comando `\newcommand{\@tipologia}{Esercitazione}` altrimenti `\newcommand{\@tipologia}{Lezione}`[/ul]Purtroppo, non so come realizzare questa situazione. So che di certo devo inserire un'istruzione del tipo `\DeclareOption{esercitazione}{...}` presumibilmente sotto `\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}` e credo che servirà anche un'istruzione del tipo «\newif». A questo punto, aspetto qualche dritta anziché scrivere a vuoto. La seconda domanda, più semplice della prima, è più che altro una curiosità relativa all'istruzione `\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}` La presenza di questa istuzione consente di scrivere nel file principale una cosa del tipo `\documentclass[11pt,a4paper,italian]{lezione}` assicurandosi che queste opzioni verranno passate ad article.cls. Tuttavia, nel mio caso, viene dichiarata anche l'opzione «esercitazione». A questo punto, mi chiedo se sia valida la sintassi seguente: `\documentclass[11pt,a4paper,italian,esercitazione]{lezione}` Mi chiedo infatti se questa dichiarazione non faccia confusione a LaTeX, inducendolo a passare ad article.cls anche l'opzione sconosciuta «esercitazione», la quale deve invece essere presa in carico dalla mia classe personalizzata. È lecita o no? Grazie e a presto.
- Devi essere connesso per rispondere a questo topic.