Se non devi raccogliere i vari elementi qua e là per il documento e stamparli in modo ordinato all’inizio, non c’è bisogno di \addcontentsline o simili.
\addcontentsline era un esempio di “comportamento” che dovrebbe avere la mia funzione…
Il modo più semplice è di usare una lista di token.
Ecco, vedi. Non ho la più pallida idea di cosa sia un token (almeno il LaTeX)… cercherò, grazie (anche per il pezzo di codice)
Il fatto è che ancora non si capisce affatto che cosa ti serva.
Credevo di essermi spiegato meglio 🙁
Quello che dovrei poter fare è qualcosa di simile a:
`
\documentclass[a4paper]{miaclasse}
\begin{document}
\coordinatore{Prof. Tizio}
\cfu{10}
\modulo{Uno}{Prof. Uno}
\modulo{Due}{Prof. Due}
…
\sommario
\end{document}
`Dove \sommario sarebbe quello che ho scritto prima:
`
\newcommand\sommario{\begin{flushright}
\begin{minipage}{6cm}
\begin{tabular}{ll}
\textbf{Coordinatore} & \textit{\thecoordinatore} \\
\textbf{Crediti} & \textit{\thecfu}\\[10pt]
\listamoduli
\end{tabular}
\end{minipage}
\end{flushright}
}
`Qui ho cambiato un po’ il codice che ho postato in origine aggiungendo \listamoduli, che dovrebbe quindi elencare i moduli “aggiunti” con \modulo{}{}.
Una cosa del tipo (pseudo-codice non-LaTeX):
`
aggiungi(“Modulo1”, “Professore1”);
aggiungi(“Modulo2”, “Professore2”);
stampalista();
`
Adesso va meglio: la cosa comincia a chiarirsi. Che cosa siano una lista di token e un registro token non è così importante, se il codice funziona. 🙂
`\makeatletter
\newcommand\coordinatore[1]{\def\@coordinatore{#1}}
\newcommand\cfu[1]{\def\@cfu{#1}}
\newtoks\modtoks
\newcommand{\modulo}[2]{%
\addto@hook\modtoks{\@modulotit{#1}&\@moduloprof{#2}\\}
\newcommand\@modulotit[1]{Modulo #1}
\newcommand\@moduloprof[1]{#1}
\newcommand\sommario{%
\begin{flushright}
\begin{tabular}{ll@{}}
\textbf{Coordinatore} & \textit{\@coordinatore} \\
\textbf{Crediti} & \@cfu \\[10pt]
\the\modtoks
\end{tabular}
\end{flushright}}
\makeatother`
Puoi modificare le definizioni di \@moduloprof e \@modulotit come più ti aggrada. Naturalmente i \makeat… non servono se il codice sta in un file .cls; immagino che avrai anche un comando per cominciare la pagina di un corso; in quella definizione devi aggiungere “\modtoks={}”, in modo da azzerare il registro.
Noterai che ho eliminato la minipage che non serviva proprio a nulla; inoltre il preambolo della tabella è “ll@{}” in modo che la tabella sia a filo del margine destro (non lo sarebbe stata, altrimenti).
Prova con
`\coordinatore{Pinco Pallino}
\cfu{24}
\modulo{Uno}{A. Bcde}
\modulo{Due}{F. Ghil}
\modulo{Tre}{M. Nopq}
\sommario`
Ciao
Enrico