Se devo essere sincero, il problema c’è ancora. Se compilo il minimale
…
Il problema è nell’istruzione \catcode`\^^M=10\relax, che dovrebbe essere
`\catcode`\^^M=5\relax`
Altrimenti accadono un sacco di pasticci, ma ne nascono di nuovi, perché listings manda a capo le righe per farle stare nello spazio, rispettando in ogni caso gli a capo espliciti. Preparati a parecchi aggiustamenti manuali, ma non c’è altro da fare. Oppure tieni quell’istruzione e adattati a non mettere mai \[…\] o \begin{equation} negli esempi. 🙂
Quanto al caricamento di listings con un’opzione in più, basta caricarlo con l’opzione “writefiles” prima di classicthesis-ldpkg; è uno dei problemi dei pacchetti che vogliono fare “tutto”.
Si potrebbe ovviare alla ristrettezza della colonna prevedendo che gli esempi sbordino sul margine esterno, ciò che li rende anche più visibili. Carica anche ifthen e poi
`\makeatletter
\newcounter{sidecounter}
\lstnewenvironment{sidebyside}{%
\medskip
\global\let\lst@intname\@empty
\setbox\z@=\hbox\bgroup
\setkeys{lst}{language={},style={},basicstyle=\footnotesize\ttfamily,%
linewidth=0.45\linewidth,frame=single,%
basewidth=0.51em,breaklines=true,%
breakindent=0pt,boxpos=t}%
\lst@BeginAlsoWriteFile{\jobname.tmp}%
}{%
\lst@EndWriteFile\egroup
\refstepcounter{sidecounter}
\hbox to \hsize{\label{side-\thesidecounter}%
\ifthenelse{\isodd{\pageref{side-\thesidecounter}}}{\quad}{\hss}%
\begin{minipage}{0.45\linewidth}%
\hbox to\linewidth{\box\z@\hss}
\end{minipage}%
\quad
\begin{minipage}{0.6\linewidth}%
\leavevmode \catcode`\^^M=5\relax
\small\input{\jobname.tmp}%
\end{minipage}%
\ifthenelse{\isodd{\pageref{side-\thesidecounter}}}{\hss}{\quad}%
}%
\medskip
}
\makeatother`
Io non riquadrerei niente, guarda un po’. 🙂 Ma ho lasciato il riquadrino attorno al codice perché non so come si faccia a toglierlo e non ho voglia di leggermi la documentazione di listings. 😉 E userei \footnotesize per il codice, questo invece sapevo come fare. 😀
Spiegazione degli arcani misteri: ogni volta che si chiama l’ambiente sidebyside il contatore sidecounter scatta e definisce un riferimento al quale associo un’etichetta; poi uso \pageref per sapere se l’esempio è su una pagina pari o dispari. Ovviamente può capitare che durante la stesura del documento ci si trovi sfasati, alla fine si dovrebbero avere gli esempi al posto giusto. C’è qualche rischio, perché per motivi che mi rimangono oscuri il comando \refstepcounter non può essere dato all’interno della \hbox to \hsize e questo potrebbe far scattare il contatore quando si è ancora nella pagina precedente. La revisione finale sarà un poco più complicata.
Infine una parola su examplep: è molto promettente, ma in realtà mancano gli esempi e la documentazione è “leggermente” imprecisa; dicono che si può usare un’opzione “listings” per passare a listings la composizione dei sorgenti: l’opzione non è definita. 🙁
Ciao
Enrico