- Questo topic ha 3 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 17 anni, 5 mesi fa da .
-
Topic
-
Ciao a tutti,
mi ricollego alla discussione Realizzazione classe con opzione «binaria» (http://www.guit.sssup.it/phpBB2/viewtopic.php?t=5877), richiamando una situazione alla quale avevo pensato qualche tempo fa.La situazione è simile a quella del topic sopracitato, nel senso che vi è sempre un comando interno tipico della classe il quale può assumere uno tra due possibili valori. In questo caso, però, la differenza consiste nel fatto che il valore assunto dal comando interno non viene specificato da un’opzione, ma da un secondo comando fornito dalla classe, il quale è messo a disposizione dell’utente.
Cerco di spiegarmi meglio con un esempio: si immagini di dover realizzare il frontespizio di una tesi (sì, lo so già che ci sono ottimi strumenti per farlo, sto solo facendo un esempio 😉 ); un problema può essere quello di dover stampare la stringa “Laureando” oppure “Laureanda” a seconda che l’autore del documento sia un uomo oppure una donna.
Non volendo introdurre opzioni specifiche per ottenere questo risultato, il modo più semplice (a mio avviso) per farlo è il seguente: ecco la classe
`\NeedsTeXFormat{LaTeX2e}[1995/12/01]\ProvidesClass{lezione}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
\ProcessOptions\relax
\LoadClass{article}
\newcommand{\@qualificastudente}{} % <--- Può assumere i valori "Laureando" o "Laureanda" \newcommand{\@autore}{} % <--- Tiene traccia del nome dell'autore \newcommand{\laureando}[1]{% \renewcommand{\@qualificastudente}{Laureando}% \renewcommand{\@autore}{#1}% } \newcommand{\laureanda}[1]{% \renewcommand{\@qualificastudente}{Laureanda}% \renewcommand{\@autore}{#1}% } \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 \@qualificastudente: \@autore} % <--- Vengono stampati la qualifica e il nome \end{center}% \par \vskip 1.5em} \endinput` ed ecco il file di prova `\documentclass{lezione} \author{Autore} \title{Titolo} \laureanda{Elisa} \begin{document} \maketitle \end{document}` Per funzionare, funziona (si può provare a sostituire \laureando a \laureanda nel file di prova). Le mie domande sono: [ul][li] È questo il modo giusto di procedere o ci sono degli errori? [li] In caso contrario, che cosa c'è che non va e/o si può fare di meglio?[/ul]Alla luce delle risposte che ho ricevuto nel precedente topic, l'unica cosa che mi viene in mente in questo momento è di sostituire `\newcommand{\@qualificastudente}{} \newcommand{\@autore}{}` con `\def\@qualificastudente{} \def\@autore{}` ma nulla di più. Aspetto quindi di sentire l'opinione di qualcun altro. Grazie e a presto.
- Devi essere connesso per rispondere a questo topic.