Newsgroup: it.comp.software.tex
Titolo: Creare ambiente derivato da 'listings'

Salve NG,
Causa scrittura tesi mi sono avvicinato da poco al mondo LaTeX... e ne
sono veramente affascinato!!! Lo sto utilizzando sotto Windows tramite
WinEdit.
Vengo al dunque del mio problema... avrei bisogno di inserire nella
tesi porzioni di codice Java e XML. Per far ciň sto
utilizzando il package 'listings' nella seguente maniera:
  \begin{lstlisting}[frame=trBL, caption=Titolo, label=Etichetta]{}
  % qualche riga di codice...
  \end{lstlisting}
  \vspace*{0.3cm}  % Per distanziare il testo dal listato...
oppure:
  \lstinputlisting[frame=trBL, caption=Titolo,
label=Etichetta]{miofile.xml}
  \vspace*{0.3cm}  % Per distanziare il testo dal listato...
Adesso vorrei definire un ambiente in cui io possa scrivere
all'interno del documento:
  \begin{listato} \caption{Titolo} \label{Etichetta}
  % qualche riga di codice...
  \end{listato}
oppure:
  \mioInput{miofile.xml} \caption{Titolo} \label{Etichetta}
Come si puň fare?
Inoltre č possibile fare in modo che l'ambiente mi scriva il listato
con margini piů stretti rispetto al resto del documento. Ho provato a
mettere il listato all'interno di 'quote', ma stranamente LaTeX
sbaglia ad allinearmi la
cornice del listato!?! Come posso fare?
Ciao e grazie a tutti...

 WinEdit.
Meglio TeXnicCenter. E' gratis.  :-)
Dunque, io mi sono definito questo ambiente per inserire codice all'interno
dei documenti.
\renewcommand{\lstlistlistingname}{Elenco dei listati} % toc dei listati
\renewcommand{\lstlistingname}{Listato} % nome nella caption nella toc
\definecolor{gray}{gray}{0.9}
\lstset{
 language=XML,
 basicstyle=\small,
 stringstyle=\ttfamily,
 showstringspaces=false,
 captionpos=b,
 columns=flexible,
 aboveskip=10pt,
 backgroundcolor=\color{gray},
 frame=single,
 framerule=0pt,
 tabsize=3,
 numbers=left,
 numberstyle=\tiny}
\newcommand{\codice}[3]{
                        \lstinputlisting[caption=#2,label=#3]{#1}
                       }
Tutti i parametri li trovi nella documentazione del pacchetto listing.
Poi lo usi cosě:
\codice{nomefile.xml}{caption}{label}
Giusto un appunto sul layout finale. Nei miei settaggi inserisco un colore
grigio di sfondo al codice, cosa che rende tutto piů carino.
Tuttavia se compili in dvi (latex.exe) e poi in pdf (dvipdfm), lo sfondo non
viene renderizzato benissimo.
Per la stampa devi compilare in dvi (latex.exe), poi lo trasformi in ps
(dvips.exe) e tramite GSView lo converti in pdf.
E' un pň macchinoso ma l'output č perfetto per la stampa, perň perdi tutti
gli hyperref...
Ciao
Marco

 \codice{nomefile.xml}{caption}{label}
Veramente grazie per l'aiuto! Troppo buono!!!
Ho provato il tuo comando ma stranamente da me non va.
Per far riconoscere il colore ho nserito:
   \usepackage{color}
Poi ho inserito il tuo codice, ma LaTeX va in errore dicendo:
   ! Package Listings Error: Couldn't load requested language.
Ho cosě disinzerito la voce:
   language=XML,
ma LaTeX continua a dare errore dicendo:
   ! Package keyval Error: showstringspaces undefined.
Poi ho provato con un comando molto piů semplice:
   \lstset{%
    frameround=fttt,%
    frame=trBL,%
    basicstyle=\scriptsize\tt%
    }
   \newcommand{\codice}[3]%
     {%
       \vspace*{0.3cm}%
       \lstinputlisting[caption=#2,label=#3]{#1}%
       \vspace*{0.6cm}
     }
e cosě funziona, ma l'effetto visivo sicuramente non č paragonabile
con quello che ottieni tu.
Perché mai il tuo codice da me non funziona?
Forse non ho saputo installare correttamente il pacchetto listing...
Se č questo il problema potresti darmi una mano a installarlo
correttamente...
Ciao e grazie di nuovo...

 correttamente...
Molto volentieri.
Ma ne riparliamo la settimana prossima.
Domattina parto per una meritata settimana di mare.
Ciao
Marco

 > \codice{nomefile.xml}{caption}{label}
Ho appena capito come si installa correttamente il pacchetto listings.
Ho utilizzato un codice molto simile al tuo:
\definecolor{gray}{gray}{0.95}
\lstset{
 basicstyle=\scriptsize\tt,
 stringstyle=\scriptsize\tt\em,
 keywordstyle=\scriptsize\tt\bf,
 showstringspaces=false,
 captionpos=t,
 columns=flexible,
 aboveskip=10pt,
 backgroundcolor=\color{gray},
 frameround=fttt,
 frame=trBL,
 framerule=0pt,
 numbers=left,
 numberstyle=\tiny
 }
\newcommand{\codice}[4]%
  {%
    \vspace*{5mm}%
    \lstinputlisting[caption=#3,label=#4,language=#2]{#1}%
    \vspace*{5mm}%
  }%
Ho già mandato in stampa la tesi ed esteticamente è venuta molto
carina (soprattutto la doppia cornice ai listati che crea un effetto
molto bello).
Peccato solo che abbia scelto uno sfonddo grigio troppo chiaro (dopo
che l'ho stampato ho visto che era molto melgio il grigio che hai
definito tu, ma ormai era troppo tardi per ricompilare tutto) e che il
LaTeX non abbia i font corsivo e grassetto del \tt.
Ciao ed ancora grazie per l'aiuto!

> Ciao ed ancora grazie per l'aiuto!
Figurati.
LaTeX non smette mai di stupirmi.
Quando mi sono creato quell'impostazione e l'ho vista, non credevo ai miei
occhi.
Adesso voglio provare a mettere il bordo come dici tu, sono curioso.
Ciao
Marco