Il mio problema è stato risolto. Da qui in poi si tratta solo di chicche.
Nessuna obiezione sostanziale eccetto che forse, invece di una sezione per esercizio, andrebbe meglio un ambiente, che potrebbe chiamare \clearpage alla fine (se si vuole lasciare spazio) oppure niente se si vogliono stampare tutti gli esercizi uno in fila all’altro.
Molto bene. E allora in stampa.sty elimino le righe
`\setcounter{tocdepth}{0}
\setcounter{secnumdepth}{0}`
che non servono più a nulla, ed elimino pure la ridefinizione di \section. Al suo posto introduco l’ambiente “esercizio”, che definisco nel seguente modo (perdonatemi la sintassi, mi sa che è il primo ambiente che scrivo da zero):
`\newenvironment{esercizio}[1]{% L'ambiente prende un parametro: il titolo
% dell'esercizio.
\noindent% L'ambiente non e` preceduto da alcuna
% indentazione.
\normalfont% I caratteri sono scritti normalmente, in
% romano.
\normalsize% I caratteri hanno un corpo normale.
{\bfseries#1}% *Solo* il primo argomento (il titolo) e` in
% grassetto.
\hspace{.575em}% Vi e` una distanza orizzontale che separa il
% titolo dal resto della consegna.
}
{%
\clearpage% Alla fine dell'esercizio vi e` un salto pagina.
}`
L’ambiente verrà poi utilizzato nel file LaTeX come illustrato di seguito:
`\begin{esercizio}{Esercizio 14 del 21 luglio 2000}
L'esercizio richiede di bla, bla, bla\dots
\end{esercizio}`
Cerco di spiegare alla buona cosa ho fatto: nella versione per la stampa, mi faceva piacere che l’ambiente per l’esercizio fosse uguale a \paragraph; guardo quindi la definizione di \paragraph in book.cls (modifico solo l’indentazione per leggibilità, ma il contenuto è inalterato):
`\newcommand\paragraph{\@startsection
{paragraph}% Il nome.
{4}% Il livello.
{\z@}% L'indentazione.
{3.25ex \@plus1ex \@minus.2ex}% Lo spazio prima.
{-1em}% Lo spazio dopo.
{\normalfont\normalsize\bfseries}}% Lo stile.`
nella definizione del mio ambiente ho cercato di essere il più fedele possibile a \paragraph, a parte qualcosina che non ho capito; apro un post a parte per discutere di ciò, in modo da non divagare troppo nei dettagli tecnici.
Purtroppo questo ambiente, non tanto in modalità “stampa” quanto in modalità “raccolta”, deve fare tutto quello che faceva \section, e quindi la sua definizione in realtà sarebbe molto più complicata di quella che ho proposto io. In particolare, in raccolta.sty:
-
l’ambiente deve essere numerato, e la numerazione deve seguire il modello di \section, ovvero
. ; spulciando un po’ nel forum, forse questo lo so fare:
`% Viene introdotto un nuovo contatore, che fa dipendere la numerazione
% dell'ambiente da definirsi da quella del capitolo.\newcounter{esercizio}[chapter]
% La numerazione viene impostata nella forma
. . \renewcommand{\theesercizio}{\thechapter.\arabic{esercizio}}
`
ovviamente, anche l’ambiente deve essere aggiornato di conseguenza:
`\newenvironment{esercizio}[1]{% L'ambiente prende un parametro: il titolo
% dell'esercizio.
\refstepcounter{esercizio}% Il contatore viene aggiornato.
\noindent% L'ambiente non e` preceduto da alcuna
% indentazione.
\normalfont% I caratteri sono scritti normalmente, in
% romano.
\normalsize% I caratteri hanno un corpo normale.
{\bfseries\theesercizio\ #1}% *Solo* il primo argomento (il titolo) e` in
% grassetto.
\hspace{.575em}% Vi e` una distanza orizzontale che separa il
% titolo dal resto della consegna.
}
{%
\clearpage% Alla fine dell'esercizio vi e` un salto pagina.
}` -
i singoli esercizi devono essere aggiunti all’indice dei contenuti (come \section), quindi direi che nell’ambiente, per esempio dopo \refstepcounter{esercizio}, ci potrei mettere
`\addcontentsline{toc}{section}{\theesercizio\ #1}`
(pare che funzioni); -
i singoli esercizi dovranno essere scritti in delle marche che potranno essere usate da fancyhdr per gestire le intestazioni (per esempio, nelle pagine pari il capitolo e nelle dispari l’esercizio, e qui mi vengono già i brividi perché per me le marche sono arabo), come \section;
-
il corpo dovrà essere un po’ più in grande, quindi al posto di
`\normalfont\normalsize\bfseries`
ci andrà
`\normalfont\Large\bfseries`
e penso che basti; -
sarebbe da implementare anche la versione con asterisco e il fatto di permettere di mandare nell’indice dei contenuti un titolo (opzionale) più corto (non sono in grado di farlo).
Ho quindi paura che per via delle mie scarse conoscenze TeXniche, tutti questi propositi (bellissimi e interessanti, davvero) li si potrà mettere in atto solo col tempo. Ho idea che userò la tecnica divide et impera :-), eventualmente con nuovi topic, se necessario (uno sulle marche, di sicuro, noi due non andiamo molto d’accordo 😉
Il prossimo passo è di fornire opzioni a stampa.sty in modo da scegliere tra le varie possibilità.
Cosa vorresti dire? Che non dovrei usare due pacchetti (raccolta.sty e stampa.sty) ma uno solo (es. formattazione.sty) da chiamare così
`\usepackage[raccolta]{formattazione}`
oppure così?
`\usepackage[stampa]{formattazione}`
Sarebbe fantastico, ma ho idea che sia un po’ aldilà delle mie possibilità…
Nel frattempo, ringrazio tutti quanti per la pazienza e l’interesse (wow! Questo topic sta diventando tosto e stimolante (almeno per me… 😉