Non hai neanche lontanamente idea di quanto ti sia grato! Non ero riuscito in alcun modo a risolvere questo mio problema.
Non ci crederai, immagino; ma il problema è il \lstinline nel titolo della sezione.
Tra tutte le idee che mi erano passate per la mente c’era anche questa, ma l’avevo prontamente abbandonata non appena la composizione della versione depurata era filata liscia come l’olio.
Quando ci sono errori misteriosi, dipendono quasi sempre da comandi fragili non protetti.
Ne prendo atto. A questo punto, sembra che l’unica difficoltà sia quella di capire se un generico comando è fragile o meno 🙂
L’unico è quello. Se infatti lo si toglie, il problema sparisce. Con la “versione depurata” probabilmente rimanevi in una pagina sola.
Forse il file di output risultante aveva complessivamente due pagine, ma la pagina in cui compariva il comando \lstinline nella testatina non veniva effettivamente superata. Non ci sarei mai arrivato.
Non mi pare che serva una roba di quel genere:
`\section{\textsf{Pgm\_19.1 (ContenitoriIO)}}`
fa esattamente la stessa cosa.
Quasi. Credo invece che il codice di cui ho bisogno sia:
`\section[{\footnotesize\textsf{Pgm\_19.1 (ContenitoriIO)}}]{Pgm\_19.1 (ContenitoriIO)}`
È il caso di fornire una piccola spiegazione su quello che sto cercando di realizzare. Nell’incorporare i codici dei programmi, ho deciso di usare un carattere proporzionale senza grazie, come si capisce da:
`\lstset{basicstyle=\footnotesize\sffamily}`
La stessa riga evidenzia inoltre come il corpo risulti inferiore a quello del testo normale.
Aldilà dei codici importati dall esterno con \lstinputlisting, può capitare che venga richiamata nel flusso del testo normale qualche parola riservata, mediante \lstinline. Chiaramente, anche questa viene resa a corpo minore e senza grazie.
Quando però si è trattato di inserire i comandi di sezionamento, dove ogni sezione o sottosezione riporta il nome di una classe Java, non ho usato la sintassi
`\section{\lstinline!Pgm_19.1 (ContenitoriIO)!}`
non tanto per il fatto dei comandi fragili, che ignoravo, quanto piuttosto perché il corpo ridotto nel titolo della sezione mi sembrava di dubbio gusto; ho quindi optato per un più pratico
`\section{Pgm\_19.1 (ContenitoriIO)}`
mantenendo il corpo predefinito, dal momento che a rendere il carattere senza grazie ci pensava già l’istruzione
`\RequirePackage[bf,sf]{titlesec}`
nel file di classe. Al contrario, nelle testatine e nell’indice generale mi sembrava che la modifica al corpo fosse meno fastidiosa, cosa che mi ha spinto a scrivere
`\section[\lstinline!Pgm_19.1 (ContenitoriIO)!]{Pgm\_19.1 (ContenitoriIO)}`
modificata poi in
`\section[\texorpdfstring{\lstinline!Pgm_19.1 (ContenitoriIO)!}{Pgm\_19.1 (ContenitoriIO)}]{Pgm\_19.1 (ContenitoriIO)}`
per evitare problemi in merito al testo che andava a finire nei segnalibri del file PDF, ottenendo però gli errori di cui sopra.
Alla luce della tua risposta e delle mie esigenze, credo quindi che il codice di cui ho effettivamente bisogno sia quello che ho riportato sopra, e cioè
`\section[{\footnotesize\textsf{Pgm\_19.1 (ContenitoriIO)}}]{Pgm\_19.1 (ContenitoriIO)}`
visto che l’istruzione \textsf e la modifica al corpo non sembrano infastidire hyperref al punto tale da richiedere un’istruzione del tipo \texorpdfstring.
Grazie e a presto!