Il font typewriter type impedisce la sillabazione, perché viene usato, appunto, nei listati dei programmi, oppure anche in mezzo al testo scritto in altro font per inserire alcune parole del linguaggio di programmazione di cui si sta parlando. È voluto, non è un difetto di LaTeX. Sarebbe improponibile parare di un linguaggio di programmazione con le parole del programma divise in sillabe quando il segno – può avere, e in effetti ha, altri significati in quel linguaggio; sarebbe una confusione completa.
Per i listings il tuo linguaggio di programmazione consente certamente di spezzare gli statement su può righe, quindi rimaneggia il file sorgente affinché nessuna riga si più lunga di una settantina di battute, compresi gli spazi. Eventualmente specifica il corpo \small in listings usando le opzioni opportune e specifiche di quel pacchetto.
Per il testo, o cambi fraseggio, oppure metti fuori corpo le parti scritte in tt, magari con un \begin{flushleft}…\end{flushleft}. Ricordati che il testo normale è abbastanza flessibile per essere modificato in maniera “creativa”; anche semplicemente scambiare un nome con il suo aggettivo, non cambia il significato della frase (se la lingua lo consente, e l’italiano lo consente) ma dando altre possibilità di elaborazione al programma di composizione per trovare i giusti fine riga di un capoverso difficile.
Infine, ma questa è una soluzione estrema a cui ricorrere quando non si sa più a che santo votarsi, usa l’ambiente sloppypar specificando al suo inizio che accetti una \tolerance pari a 9999 (che per TeX è molto grande, ma non infinita):
`
\begin{sloppypar}\tolerance=9999\relax
Capoverso con righe in tt che sforerebbero
\end{sloppypar}
`
Il capoverso avrà degli spazi interparola molto maggiori degli altri capoversi, ma le righe verosimilmente non sforeranno più.
Ovviamente la scelta di usare sloppypar è tua 🙂 ! Io ti ho dato la pistola, ma sei tu che la usi; io non c’entro se i risultati sono tipograficamente brutti, ti ho solo avvisato. 🙁