- Questo topic ha 15 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 19 anni, 2 mesi fa da
lorenzo.pantieri.
-
CreatoreTopic
-
1 Luglio 2007 alle 7:41 #15684::
Ciao a tutti. Ho la necessità di un ambiente “example” per riportare del codice sorgente LaTeX con a fianco il corrispondente typeset che
1. vada bene con ClassicThesis;
2. si appoggi su listings (con le relative impostazioni di default di ClassicThesis);
3. faccia uso, preferibilmente, di un pacchetto appositamente progettato (come examplep).In questo topic Andrea mi aveva suggerito un ambiente, che però su ClassicThesis non funziona.
Fra l’altro, non so nemmeno bene come realizzare questo ambiente “di esempio”: un riquadro che contenga il codice LaTeX con di fianco il risultato senza riquadro? O è più logico che ad essere riquadrato sia il risultato finale (per distinguerlo dal resto del testo)?
Il mio documento è di questo tipo:
`\documentclass[10pt,a4paper,twoside,openright,titlepage,fleqn,
cleardoubleempty,abstractoff,pointlessnumbers,
headinclude,footinclude,BCOR5mm]{scrreprt}\usepackage[applemac]{inputenc}
\usepackage[italian]{babel}
\usepackage{classicthesis-ldpkg}
\usepackage[eulerchapternumbers,subfigure,beramono,
eulermath,pdfspacing,parts]{classicthesis}
\usepackage{lipsum}\addto\captionsitalian{\renewcommand{\lstlistingname}{Codice}}
\addto\captionsitalian{\renewcommand{\lstlistlistingname}{Codici}}\captionsetup{format=hang,font=small}
\lstset{captionpos=b}\makeatletter
\let\@parskipfalse\relax
\let\@parskip@indent\relax
\makeatother\begin{document}
\lipsum[1]
\begin{lstlisting}
…
\end{lstlisting}\lipsum[2]
\begin{lstlisting}
…
\end{lstlisting}\lipsum[2]
\end{document}
`
Ho letto la documentazione di examplep (che mi aveva consigliato Enrico), ma, forse per la mancanza di esempi esplicativi, non ci capisco niente. 😳Vi prego di aiutarmi. Ho in animo (con la lentezza e la maniacale cura maniacale per i dettagli con cui scrivo di solito) di realizzare una mini-guida a LaTeX, e se non supero questo ostacolo non posso neanche partire… 😥
Grazie anticipate,
Lorenzo
-
CreatoreTopic
-
AutoreRisposte
-
-
1 Luglio 2007 alle 8:07 #15685::
Allora tu vuoi il sorgente in una framebox ed il risultato normale.
O Usi il paccheddo boxedminipage oppure prova questo codice.
Ho usato \framebox, se puoi puoi sostituirlo con \fbox o ancora meglio con gli ambienti di fancybox.Metto solo il preambolo:
`
\documentclass[12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[applemac]{inputenc}
\usepackage[writefile]{listings}
\usepackage[italian]{babel}
\usepackage{xcolor}\lstset{extendedchars} % important
\makeatletter
\lstnewenvironment{sidebyside}{%
\global\let\lst@intname\@empty
\setbox\z@=\hbox\bgroup
\setkeys{lst}{language={},style={},basewidth=0.51em,%
basicstyle=\small\ttfamily,%backgroundcolor=\color{lightgray}
} %
\lst@BeginAlsoWriteFile{\jobname.tmp}%
}{%
\lst@EndWriteFile\egroup
\ifdim \wd\z@>.5\linewidth %%% alternative?
\begin{center}%
\framebox{\hbox to\linewidth{\box\z@\hss}}
\end{center}%
\leavevmode \catcode`\^^M=10\relax
\input{\jobname.tmp}%
\else
\begin{center}%
\begin{minipage}{0.45\linewidth}%
\framebox{\hbox to\linewidth{\box\z@\hss}}
\end{minipage}%
\qquad
\begin{minipage}{0.45\linewidth}%
\leavevmode \catcode`\^^M=10\relax
\input{\jobname.tmp}%
\end{minipage}%
\end{center}%
\fi
}
\makeatother`Per quanto riguarda il fatto di Classicthesis, non posso aiutarti, non ne sono capace.
Vediamo se ti può rispondere il Prof.Comunque indica l’errore che ti dà il compilatore.
Ciao
Andrea
-
1 Luglio 2007 alle 8:31 #15686::
Allora tu vuoi il sorgente in una framebox ed il risultato normale.
Ciao Andrea, in realtà non lo so neppure io quale sia il modo “giusto” o “migliore” per farlo. Di solito LaTeX toglie da questi imbarazzi, perché c’è spesso una soluzione “di alto livello” già studiata ad hoc: proprio per questo speravo in examplep.
Il tuo codice, pur non producendo errori in compilazione, non funziona bene con ClassicThesis perché a volte il codice sborda e ci sono sovrapposizioni indesiderate tra il sorgente e il typest. Neppure le impostazioni di listings che ClassicThesis usa di default sono rispettate.
Vediamo se ti può rispondere il Prof.
Incrocio le dita! 😉
Grazie mille,
L.
-
1 Luglio 2007 alle 8:52 #15687::
Allora tu vuoi il sorgente in una framebox ed il risultato normale.
Ciao Andrea, in realtà non lo so neppure io quale sia il modo “giusto” o “migliore” per farlo. Di solito LaTeX toglie da questi imbarazzi, perché c’è spesso una soluzione “di alto livello” già studiata ad hoc: proprio per questo speravo in examplep.
Il tuo codice, pur non producendo errori in compilazione, non funziona bene con ClassicThesis perché a volte il codice sborda e ci sono sovrapposizioni indesiderate tra il sorgente e il typest. Neppure le impostazioni di listings che ClassicThesis usa di default sono rispettate.
Vediamo se ti può rispondere il Prof.
Incrocio le dita! 😉
Grazie mille,
L.Quindi il problema è il solito, i margini di classicthesis.
Una soluzione è quella di rimpicciolire l’ambiente typeset.
Prova questo codice, al posto del solito:
`
….
\lstset{extendedchars}
\makeatletter
\lstnewenvironment{sidebyside}{%
\global\let\lst@intname\@empty
\setbox\z@=\hbox\bgroup
\setkeys{lst}{language={},style={},basewidth=0.51em,%
basicstyle=\scriptsize\ttfamily,%backgroundcolor=\color{lightgray} % aggiunto qui
} %
\lst@BeginAlsoWriteFile{\jobname.tmp}%
}{%
\lst@EndWriteFile\egroup
\ifdim \wd\z@>.5\linewidth
\begin{center}%
\framebox{\hbox to\linewidth{\box\z@\hss}}%oppure fbox oppure fancybox o bexedminipage
\end{center}%
\leavevmode \catcode`\^^M=10\relax
\scriptsize\input{\jobname.tmp}% aggiunto qui
\else
\begin{center}%
\begin{minipage}{0.35\linewidth}%
\framebox{\hbox to\linewidth{\box\z@\hss}}
\end{minipage}%
\qquad
\begin{minipage}{0.35\linewidth}%
\leavevmode \catcode`\^^M=10\relax
\scriptsize\input{\jobname.tmp}% aggiunto qui
\end{minipage}%
\end{center}%
\fi
}
\makeatother`
Ho rimpicciolito entrambe le “scritte” aggiungendo \scriptsize nell’opzione basicstyle, (prima c’era \small) e poi l’ho aggiunto nell’altra parte dopo \relax. Vedi i commenti %.Attenzione che ho diminuto anche la larghezza della minipage da 0.45 a 0.35\linewidth.
Ciao
Andrea
Ps: prova a mettere \small al posto di \scriptsize e vedi se va bene.
-
1 Luglio 2007 alle 9:10 #15688::
Quindi il problema è il solito, i margini di classicthesis.
No, non credo che il problema sia quello. Il codice (anche questo secondo che mi hai inviato) produce un box “esterno” che sborda, anche con un testo di prova minuscolo. Poi c’è un altro box che circonda il codice, che si sovrappone (sgradevolmente) all’altro. Se il codice è appena un po’ lungo, poi, i due ambienti non vengono neppure messi uno di fianco all’altro, ma uno sotto l’altro. Le impostazioni di listings che ClassicThesis usa di default continuano a non essere rispettate…
In pratica, purtroppo il codice è inutilizzabile. 😥
Grazie comunque,
L.P.S. Che il problema non possa stare nei margini si capisce anche da altre cose. Innanzitutto i margini di ClassicThesis sono sì piuttosto stretti, ma non esageratamente. E poi credo che sia l’ambiente “di esempio” che debba adattarsi ai margini che ci sono (soddividendo lo spazio a disposizione, eventualmente andando più volte a capo), e non il contrario!
-
1 Luglio 2007 alle 9:36 #15689::
Quindi il problema è il solito, i margini di classicthesis.
No, non credo che il problema sia quello. Il codice (anche questo secondo che mi hai inviato) produce un box “esterno” che sborda, anche con un testo di prova minuscolo. Poi c’è un altro box che circonda il codice, che si sovrappone (sgradevolmente) all’altro. Se il codice è appena un po’ lungo, poi, i due ambienti non vengono neppure messi uno di fianco all’altro, ma uno sotto l’altro. Le impostazioni di listings che ClassicThesis usa di default continuano a non essere rispettate…
In pratica, purtroppo il codice è inutilizzabile. 😥
Grazie comunque,
L.P.S. Che il problema non possa stare nei margini si capisce anche da altre cose. Innanzitutto i margini di ClassicThesis sono sì piuttosto stretti, ma non esageratamente. E poi credo che sia l’ambiente “di esempio” che debba adattarsi ai margini che ci sono (soddividendo lo spazio a disposizione, eventualmente andando più volte a capo), e non il contrario!
No, l’ambiente fa questo:
Se il codice supera 0.5\linewidth, mette uno sull’altro altrimenti uno fianco l’altro.
Infatti c’è una condizione
`
\ifdim \wd\z@>.5\linewidth
….`Prova in questo modo, di più non posso fare:
`
\documentclass[12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[writefile]{listings}
\usepackage[italian]{babel}
\usepackage{xcolor,fancybox}\lstset{extendedchars}
\makeatletter
\lstnewenvironment{sidebyside}{%
\global\let\lst@intname\@empty
\setbox\z@=\hbox\bgroup
\setkeys{lst}{language={},style={},basewidth=0.51em,breaklines=true,%
linewidth=0.45\linewidth, frame=single, breakindent=0pt,%
basicstyle=\small\ttfamily
} %
\lst@BeginAlsoWriteFile{\jobname.tmp}%
}{%
\lst@EndWriteFile\egroup
\begin{center}%
\begin{minipage}{0.45\linewidth}%
\hbox to\linewidth{\box\z@\hss}
\end{minipage}%
\qquad
\begin{minipage}{0.45\linewidth}%
\leavevmode \catcode`\^^M=10\relax
\small\input{\jobname.tmp}%
\end{minipage}%
\end{center}%
}
\makeatother %al posto di \small prova \scriptsize
\begin{document}
Testo Testo Testo Testo Testo Testo Testo Testo Testo Testo Testo
Testo Testo Testo Testo Testo Testo Testo Testo Testo Testo Testo
\begin{sidebyside}
\LaTeX è il nostro programma preferito. Esempio con il pacchetto listings.
\LaTeX è il nostro programma preferito. Esempio con il pacchetto listings.
\LaTeX è il nostro programma preferito. Esempio con il pacchetto listings.
\begin{itemize}
\item 23
\item 12
\end{itemize}
\begin{equation}
1+2=9-6=3
\end{equation}
\end{sidebyside}
Testo Testo Testo Testo Testo Testo Testo Testo Testo Testo Testo
Testo Testo Testo Testo Testo Testo Testo Testo Testo Testo Testo
\end{document}
`Ciao
Andrea
-
1 Luglio 2007 alle 10:09 #15690::
Prova in questo modo, di più non posso fare:
Ciao Andrea, quest’ultima versione dell’ambiente è un nettissimo miglioramento, adesso ci siamo quasi! Per la perfezione, mancherebbero:
1. Il supporto alle impostazioni di default di listings da parte di ClassicThesis, che sono riportate nel preambolo:
`\lstset{language=[LaTeX]Tex,%C++,
keywordstyle=\color{RoyalBlue},%\bfseries,
basicstyle=\small\ttfamily,
%identifierstyle=\color{NavyBlue},
commentstyle=\color{Green}\ttfamily,
stringstyle=\rmfamily,
numbers=none,%left,%
numberstyle=\scriptsize,%\tiny
stepnumber=5,
numbersep=8pt,
showstringspaces=false,
breaklines=true,
frameround=ftff,
frame=single
%frame=L
} `
Per ora, le ho semplicemente copiate nella definizione del tuo ambiente, ma forse c’è qualcosa di più elegante (che permetta di far sì che eventuali modifiche delle impostazioni del preambolo si riflettano immediatamente sull’ambiente, senza fare la modifica due volte)2. Nella definizione del tuo ambiente, il pacchetto listings deve essere chiamato con l’opzione writefile. Purtroppo ClassicThesis richiama di suo listings senza questa opzione, e se si aggiunge semplicemente nel preambolo
`\usepackage[writefile]{listings}`
c’è un errore in compilazione:
`! LaTeX Error: Option clash for package listings.`
Ovviamente si può rimediare modificando il file originale classicthesis-ldpkg.sty, ma modificare “a mano” i file originali .sty dei pacchetti non è mai una buona prassi. Esistono soluzioni più ortodosse?3. Il codice LaTeX non viene distribuito benissimo nel suo riquadro, in particolare ci sono (piccole) indentazioni extra che non dovrebbero esserci. Sapresti come rimediare?
4. Sapresti suggerirmi come modificare il tuo ambiente per inserire un riquadro anche nel typeset? Infatti, come ti dicevo, non so se sia eventualmente più logico riquadrare il typeset, per distinguerlo dal resto del testo, piuttosto che riquadrare il codice LaTeX, che è già distinguibile dal resto del testo perché p scritto con un font diverso. O riquadrarli tutti e due? Mah… sono davvero incerto e in attesa di illuminanti suggerimenti tipografici! 💡
Grazie mille, non ce la farei mai da solo!
L.
-
1 Luglio 2007 alle 10:23 #15691::
Prova in questo modo, di più non posso fare:
Ciao Andrea, quest’ultima versione dell’ambiente è un nettissimo miglioramento, adesso ci siamo quasi! Per la perfezione, mancherebbero:
1. Il supporto alle impostazioni di default di listings da parte di ClassicThesis, che sono riportate nel preambolo:
`\lstset{language=[LaTeX]Tex,%C++,
keywordstyle=\color{RoyalBlue},%\bfseries,
basicstyle=\small\ttfamily,
%identifierstyle=\color{NavyBlue},
commentstyle=\color{Green}\ttfamily,
stringstyle=\rmfamily,
numbers=none,%left,%
numberstyle=\scriptsize,%\tiny
stepnumber=5,
numbersep=8pt,
showstringspaces=false,
breaklines=true,
frameround=ftff,
frame=single
%frame=L
} `
Per ora, le ho semplicemente copiate nella definizione del tuo ambiente, ma forse c’è qualcosa di più elegante (che permetta di far sì che eventuali modifiche delle impostazioni del preambolo si riflettano immediatamente sull’ambiente, senza fare la modifica due volte)2. Nella definizione del tuo ambiente, il pacchetto listings deve essere chiamato con l’opzione writefile. Purtroppo ClassicThesis richiama di suo listings senza questa opzione, e se si aggiunge semplicemente nel preambolo
`\usepackage[writefile]{listings}`
c’è un errore in compilazione:
`! LaTeX Error: Option clash for package listings.`
Ovviamente si può rimediare modificando il file originale classicthesis-ldpkg.sty, ma modificare “a mano” i file originali .sty dei pacchetti non è mai una buona prassi. Esistono soluzioni più ortodosse?3. Il codice LaTeX non viene distribuito benissimo nel suo riquadro, in particolare ci sono (piccole) indentazioni extra che non dovrebbero esserci. Sapresti come rimediare?
4. Sapresti suggerirmi come modificare il tuo ambiente per inserire un riquadro anche nel typeset? Infatti, come ti dicevo, non so se sia eventualmente più logico riquadrare il typeset, per distinguerlo dal resto del testo, piuttosto che riquadrare il codice LaTeX, che è già distinguibile dal resto del testo perché p scritto con un font diverso. O riquadrarli tutti e due? Mah… sono davvero incerto e in attesa di illuminanti suggerimenti tipografici! 💡
Grazie mille, non ce la farei mai da solo!
L.
per togliere l’indentazione devi aggiungere breakindent=0pt dopo breaklines=true, in pratica così a me va:
`\lstnewenvironment{sidebyside}{%
\global\let\lst@intname\@empty
\setbox\z@=\hbox\bgroup
\setkeys{lst}{language={},style={},basewidth=0.51em,breaklines=true,%
linewidth=0.45\linewidth, frame=single, breakindent=0pt,boxpos=t,%
basicstyle=\small\ttfamily
} %
….`se vuoi allineare tutto in alto puoi mettere
`
\begin{minipage}[t]{0.45\linewidth}`
al posto delle due
`
\begin{minipage}{0.45\linewidth}`se vuoi un frame globale prova così
`\makeatletter
\lstnewenvironment{sidebyside}{%
\global\let\lst@intname\@empty
\setbox\z@=\hbox\bgroup
\setkeys{lst}{language={},style={},basewidth=0.51em,breaklines=true,%
linewidth=0.45\linewidth, frame=single, breakindent=0pt,boxpos=t,%
basicstyle=\small\ttfamily
} %
\lst@BeginAlsoWriteFile{\jobname.tmp}%
}{%
\lst@EndWriteFile\egroup
\begin{center}%
\framebox{\begin{minipage}[t]{0.45\linewidth}%
\hbox to\linewidth{\box\z@\hss}
\end{minipage}%
\qquad
\begin{minipage}[t]{0.45\linewidth}%
\leavevmode \catcode`\^^M=10\relax
\small\input{\jobname.tmp}%
\end{minipage}}%
\end{center}%
}
\makeatother`naturalmente per togliere il frame al codice togli frame=single.
Io sceglierei di riquadrare solo il codice, secondo me è la soluzione migliore, cioè
`
\makeatletter
\lstnewenvironment{sidebyside}{%
\global\let\lst@intname\@empty
\setbox\z@=\hbox\bgroup
\setkeys{lst}{language={},style={},basewidth=0.51em,breaklines=true,%
linewidth=0.45\linewidth, frame=single, breakindent=0pt,boxpos=t,%
basicstyle=\small\ttfamily
} %
\lst@BeginAlsoWriteFile{\jobname.tmp}%
}{%
\lst@EndWriteFile\egroup
\begin{center}%
\begin{minipage}[t]{0.45\linewidth}%
\hbox to\linewidth{\box\z@\hss}
\end{minipage}%
\qquad
\begin{minipage}[t]{0.45\linewidth}%
\leavevmode \catcode`\^^M=10\relax
\small\input{\jobname.tmp}%
\end{minipage}%
\end{center}%
}
\makeatother`Per quanto riguarda passare le opzioni di listings a classicthesis non so come farlo. Magari il prof conosce qualche comando specifico tipo PassOption che si vede in molti pacchetti e che faccia una cosa simile.
Ciao
Andrea
-
1 Luglio 2007 alle 10:46 #15692::
per togliere l’indentazione devi aggiungere breakindent=0pt dopo breaklines=true
Fatto. Noto però una cosa un po’ strana: se scrivo
`
\begin{sidebyside}
\LaTeX è il nostro programma preferito. Esempio con il pacchetto
listings.
\end{sidebyside}
`
lo spazio prima di “listings” non c’è; se scrivo invece
`
\begin{sidebyside}
\LaTeX è il nostro programma preferito. Esempio con il pacchetto listings.
\end{sidebyside}
`
quello spazio c’è. Misteri.Io sceglierei di riquadrare solo il codice, secondo me è la soluzione migliore
Mi hai convinto, anch’io ero di quest’avviso. In mancanza di altri interventi che mi facciano eventualmente cambiare idea, farò così.
Per quanto riguarda passare le opzioni di listings a classicthesis non so come farlo. Magari il prof conosce qualche comando specifico tipo PassOption che si vede in molti pacchetti e che faccia una cosa simile.
In effetti il problema non sembra impossibile (per Enrico!): ClassicThesis richiama il pacchetto listings senza alcuna opzione:
`\RequirePackage{listings}`
A noi serve l’opzione writefile. Come si può dare a listings questa opzione senza modificare a mano il file .sty originale di ClassiThesis?Apsettiamo la soluzione del Professore…
Ad ogni modo Andrea, userò senz’altro il tuo ambiente e riprenderò questa discussione se avrò problemi!
Grazie infinite,
L.
-
1 Luglio 2007 alle 11:09 #15693::
il fatto non è strano, è che per la fretta ho messo basicstyle alla fine.
Così:
`
\setkeys{lst}{language={},style={},basicstyle=\small\ttfamily,%
linewidth=0.45\linewidth,frame=single,%
basewidth=0.51em,breaklines=true,%
breakindent=0pt,boxpos=t}%`non dà più problemi.
________________________________________________________________
seconda parte:e mi raccomando usa microtype o non esce un gran bel vedere.
ciao
Andrea
-
1 Luglio 2007 alle 15:01 #15694::
Se devo essere sincero, il problema c’è ancora. Se compilo il minimale
`\documentclass[10pt,a4paper,twoside,openright,titlepage,fleqn,
cleardoubleempty,abstractoff,pointlessnumbers,
headinclude,footinclude,BCOR5mm]{scrreprt}\newcommand{\myTitle}{…}
\newcommand{\myName}{…}
\newcommand{\myUni}{…}
\newcommand{\myFaculty}{…}\usepackage{classicthesis-ldpkg} % ATTENZIONE: VERSIONE MODIFICATA CON L'OPZIONE WRITEFILE DI LISTINGS!
\usepackage[eulerchapternumbers,subfigure,beramono,
eulermath,pdfspacing,parts]{classicthesis}\lstset{extendedchars}
\makeatletter
\lstnewenvironment{sidebyside}{%
\global\let\lst@intname\@empty
\setbox\z@=\hbox\bgroup
\setkeys{lst}{language={},style={},basicstyle=\small\ttfamily,%
linewidth=0.45\linewidth,frame=single,%
basewidth=0.51em,breaklines=true,%
breakindent=0pt,boxpos=t}%
\lst@BeginAlsoWriteFile{\jobname.tmp}%
}{%
\lst@EndWriteFile\egroup
\begin{center}%
\begin{minipage}{0.45\linewidth}%
\hbox to\linewidth{\box\z@\hss}
\end{minipage}%
\qquad
\begin{minipage}{0.45\linewidth}%
\leavevmode \catcode`\^^M=10\relax
\small\input{\jobname.tmp}%
\end{minipage}%
\end{center}%
}
\makeatother\begin{document}
\begin{sidebyside}
\LaTeX è il nostro programma preferito. Esempio con il pacchetto
listings.
\end{sidebyside}\begin{sidebyside}
\LaTeX è il nostro programma preferito. Esempio con il pacchetto listings.
\end{sidebyside}\end{document}`
la differenza c’è ancora.Ok per microtype: è sempre presente (caricato in automatico da ClassicThesis)!
Ciao,
L.
-
1 Luglio 2007 alle 20:12 #15695::
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
-
1 Luglio 2007 alle 21:35 #15696
-
1 Luglio 2007 alle 21:51 #15697
-
2 Luglio 2007 alle 7:26 #15698::
Ironia della sorte, se con la classe book o article metti
`
\setkeys{lst}{language={},style={},basicstyle=\small\ttfamily,columns=fullflexible,%
linewidth=0.45\linewidth,frame=single,%
breaklines=true,%
breakindent=0pt,boxpos=t}%`si ha il problema. Mentre se si usa
`
\setkeys{lst}{language={},style={},basicstyle=\small\ttfamily,%
linewidth=0.45\linewidth,frame=single,%
basewidth=0.51em,breaklines=true,%
breakindent=0pt,boxpos=t}%
`Il problema non c’è. Con classicthesis è l’opposto, ho provato ed è così.
Ed il problema non è in
`
\catcode`\^^M=5\relax % oppure 10`Almeno, a me succede questo.
Ciao
Andrea
-
4 Luglio 2007 alle 7:55 #15699::
Innanzitutto, un ringraziamento gigante ad Enrico e Andrea.Quanto al caricamento di listings con un’opzione in più, basta caricarlo con l’opzione “writefiles” prima di classicthesis-ldpkg;
Fatto: funziona!
è uno dei problemi dei pacchetti che vogliono fare “tutto”.
È vero, questo è un inconveniente di ClassicThesis, anche se, IMHO, questo svantaggio viene compensato dal fatto che l’utente ha a disposizione un layout sofisticato ed elegante, senza fare nulla.
Si potrebbe ovviare alla ristrettezza della colonna prevedendo che gli esempi sbordino sul margine esterno.
Ecco, a me questa era una cosa che non piaceva dell’ambiente “example” che viene usato nella Mica tanto breve intro, ma sicuramente deve essere una questione di gusti.
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.
Completamente d’accordo!
Ironia della sorte, se con la classe book o article metti
`
\setkeys{lst}{language={},style={},basicstyle=\small\ttfamily,columns=fullflexible,%
linewidth=0.45\linewidth,frame=single,%
breaklines=true,%
breakindent=0pt,boxpos=t}%`si ha il problema. Mentre se si usa
`
\setkeys{lst}{language={},style={},basicstyle=\small\ttfamily,%
linewidth=0.45\linewidth,frame=single,%
basewidth=0.51em,breaklines=true,%
breakindent=0pt,boxpos=t}%
`Il problema non c’è. Con classicthesis è l’opposto, ho provato ed è così.
…
Almeno, a me succede questo.Anche a me succede la stessa cosa. Con la Tua ultima modifica, l’ambiente è andato a posto magicamente. Lo riporto per completezza:
`\lstset{language=[LaTeX]Tex,%C++,
keywordstyle=\color{RoyalBlue},%\bfseries,
basicstyle=\small\ttfamily,
%identifierstyle=\color{NavyBlue},
commentstyle=\color{webbrown}\ttfamily,
stringstyle=\rmfamily,
numbers=none,%left,%
numberstyle=\scriptsize,%\tiny
stepnumber=5,
numbersep=8pt,
showstringspaces=false,
breaklines=true,
frameround=ftff,
frame=single
%frame=L
}\lstset{extendedchars}
\makeatletter
\lstnewenvironment{sidebyside}{%
\global\let\lst@intname\@empty
\setbox\z@=\hbox\bgroup
\setkeys{lst}{columns=fullflexible,%
linewidth=0.45\linewidth,
breaklines=true,%
breakindent=0pt,boxpos=t,%
}%
\lst@BeginAlsoWriteFile{\jobname.tmp}%
}{%
\lst@EndWriteFile\egroup
\begin{center}%
\begin{minipage}{0.45\linewidth}%
\hbox to\linewidth{\box\z@\hss}
\end{minipage}%
\qquad
\begin{minipage}{0.45\linewidth}%
\leavevmode \catcode`\^^M=10\relax
\small\input{\jobname.tmp}%
\end{minipage}%
\end{center}%
}
\makeatother %al posto di \small proverò \footnotesize
`Con l’uso, magari troverò aspetti che possono essere migliorati, ma sono tranquillo: saprò a chi rivolgermi! 😀 😉
Ciao e ancora grazie,
L.
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.